[gnome-control-center] Initial import of sound panel



commit 6638e984ca743a7da842617346425b162bc1bb5d
Author: William Jon McCann <jmccann redhat com>
Date:   Sat Oct 30 12:16:58 2010 -0400

    Initial import of sound panel
    
    Copied from gnome-media.  See that module for git history.

 configure.ac                                       |   45 +-
 panels/Makefile.am                                 |    1 +
 panels/sound/Makefile.am                           |  120 +
 panels/sound/applet-main.c                         |  110 +
 panels/sound/cc-sound-panel.c                      |  136 +
 panels/sound/cc-sound-panel.h                      |   60 +
 panels/sound/data/Makefile.am                      |   44 +
 panels/sound/data/gnome-sound-applet.desktop.in    |   16 +
 panels/sound/data/gnome-sound-panel.desktop.in.in  |   15 +
 panels/sound/data/icons/16x16/Makefile.am          |    4 +
 panels/sound/data/icons/16x16/apps/Makefile.am     |   19 +
 .../icons/16x16/apps/multimedia-volume-control.png |  Bin 0 -> 917 bytes
 .../icons/16x16/apps/multimedia-volume-control.svg |  585 +
 panels/sound/data/icons/16x16/status/Makefile.am   |   21 +
 .../16x16/status/audio-input-microphone-high.png   |  Bin 0 -> 1015 bytes
 .../16x16/status/audio-input-microphone-low.png    |  Bin 0 -> 1031 bytes
 .../16x16/status/audio-input-microphone-medium.png |  Bin 0 -> 1040 bytes
 .../16x16/status/audio-input-microphone-muted.png  |  Bin 0 -> 855 bytes
 panels/sound/data/icons/22x22/Makefile.am          |    4 +
 panels/sound/data/icons/22x22/apps/Makefile.am     |   19 +
 .../icons/22x22/apps/multimedia-volume-control.png |  Bin 0 -> 1424 bytes
 .../icons/22x22/apps/multimedia-volume-control.svg |  595 +
 panels/sound/data/icons/22x22/status/Makefile.am   |   21 +
 .../22x22/status/audio-input-microphone-high.png   |  Bin 0 -> 1411 bytes
 .../22x22/status/audio-input-microphone-low.png    |  Bin 0 -> 1336 bytes
 .../22x22/status/audio-input-microphone-medium.png |  Bin 0 -> 1342 bytes
 .../22x22/status/audio-input-microphone-muted.png  |  Bin 0 -> 1284 bytes
 panels/sound/data/icons/24x24/Makefile.am          |    4 +
 panels/sound/data/icons/24x24/apps/Makefile.am     |   18 +
 .../icons/24x24/apps/multimedia-volume-control.png |  Bin 0 -> 1431 bytes
 panels/sound/data/icons/24x24/status/Makefile.am   |   21 +
 .../24x24/status/audio-input-microphone-high.png   |  Bin 0 -> 1441 bytes
 .../24x24/status/audio-input-microphone-low.png    |  Bin 0 -> 1365 bytes
 .../24x24/status/audio-input-microphone-medium.png |  Bin 0 -> 1369 bytes
 .../24x24/status/audio-input-microphone-muted.png  |  Bin 0 -> 1349 bytes
 panels/sound/data/icons/32x32/Makefile.am          |    4 +
 panels/sound/data/icons/32x32/apps/Makefile.am     |   19 +
 .../icons/32x32/apps/multimedia-volume-control.png |  Bin 0 -> 2308 bytes
 .../icons/32x32/apps/multimedia-volume-control.svg |  633 ++
 panels/sound/data/icons/32x32/status/Makefile.am   |   21 +
 .../32x32/status/audio-input-microphone-high.png   |  Bin 0 -> 1906 bytes
 .../32x32/status/audio-input-microphone-low.png    |  Bin 0 -> 2002 bytes
 .../32x32/status/audio-input-microphone-medium.png |  Bin 0 -> 2011 bytes
 .../32x32/status/audio-input-microphone-muted.png  |  Bin 0 -> 1998 bytes
 panels/sound/data/icons/48x48/Makefile.am          |    4 +
 panels/sound/data/icons/48x48/apps/Makefile.am     |   18 +
 .../icons/48x48/apps/multimedia-volume-control.png |  Bin 0 -> 3755 bytes
 .../48x48/status/audio-input-microphone-high.png   |  Bin 0 -> 3261 bytes
 .../48x48/status/audio-input-microphone-low.png    |  Bin 0 -> 3388 bytes
 .../48x48/status/audio-input-microphone-medium.png |  Bin 0 -> 3406 bytes
 .../48x48/status/audio-input-microphone-muted.png  |  Bin 0 -> 3135 bytes
 panels/sound/data/icons/Makefile.am                |   12 +
 panels/sound/data/icons/render-icon-theme.py       |  169 +
 panels/sound/data/icons/scalable/Makefile.am       |    4 +
 panels/sound/data/icons/scalable/apps/Makefile.am  |   18 +
 .../scalable/apps/multimedia-volume-control.svg    |  554 +
 .../sound/data/icons/scalable/devices/Makefile.am  |   35 +
 .../devices/audio-speaker-center-back-testing.svg  |  539 +
 .../scalable/devices/audio-speaker-center-back.svg |  506 +
 .../devices/audio-speaker-center-testing.svg       |  537 +
 .../scalable/devices/audio-speaker-center.svg      |  504 +
 .../devices/audio-speaker-left-back-testing.svg    |  537 +
 .../scalable/devices/audio-speaker-left-back.svg   |  504 +
 .../devices/audio-speaker-left-side-testing.svg    |  537 +
 .../scalable/devices/audio-speaker-left-side.svg   |  504 +
 .../devices/audio-speaker-left-testing.svg         |  537 +
 .../icons/scalable/devices/audio-speaker-left.svg  |  504 +
 .../devices/audio-speaker-right-back-testing.svg   |  537 +
 .../scalable/devices/audio-speaker-right-back.svg  |  504 +
 .../devices/audio-speaker-right-side-testing.svg   |  537 +
 .../scalable/devices/audio-speaker-right-side.svg  |  504 +
 .../devices/audio-speaker-right-testing.svg        |  913 ++
 .../icons/scalable/devices/audio-speaker-right.svg |  504 +
 .../scalable/devices/audio-speaker-testing.svg     |  913 ++
 .../scalable/devices/audio-subwoofer-testing.svg   |  240 +
 .../icons/scalable/devices/audio-subwoofer.svg     |  325 +
 panels/sound/data/icons/src/microphone-levels.svg  |11448 ++++++++++++++++++++
 panels/sound/data/sounds/Makefile.am               |   29 +
 panels/sound/data/sounds/bark.ogg                  |  Bin 0 -> 13322 bytes
 panels/sound/data/sounds/drip.ogg                  |  Bin 0 -> 8495 bytes
 panels/sound/data/sounds/glass.ogg                 |  Bin 0 -> 18999 bytes
 .../data/sounds/gnome-sounds-default.xml.in.in     |   27 +
 panels/sound/data/sounds/sonar.ogg                 |  Bin 0 -> 20011 bytes
 panels/sound/data/symbolic-icons/Makefile.am       |   10 +
 panels/sound/data/symbolic-icons/r.rb              |   73 +
 .../sound/data/symbolic-icons/scalable/Makefile.am |    3 +
 .../symbolic-icons/scalable/status/Makefile.am     |   14 +
 .../audio-input-microphone-high-symbolic.svg       |   37 +
 .../status/audio-input-microphone-low-symbolic.svg |   37 +
 .../audio-input-microphone-medium-symbolic.svg     |   37 +
 .../audio-input-microphone-muted-symbolic.svg      |   37 +
 .../sound/data/symbolic-icons/src/gnome-media.svg  |  990 ++
 panels/sound/gvc-applet.c                          |  311 +
 panels/sound/gvc-applet.h                          |   55 +
 panels/sound/gvc-balance-bar.c                     |  550 +
 panels/sound/gvc-balance-bar.h                     |   69 +
 panels/sound/gvc-channel-bar.c                     |  963 ++
 panels/sound/gvc-channel-bar.h                     |   89 +
 panels/sound/gvc-channel-map-private.h             |   39 +
 panels/sound/gvc-channel-map.c                     |  254 +
 panels/sound/gvc-channel-map.h                     |   73 +
 panels/sound/gvc-combo-box.c                       |  395 +
 panels/sound/gvc-combo-box.h                       |   67 +
 panels/sound/gvc-level-bar.c                       |  747 ++
 panels/sound/gvc-level-bar.h                       |   75 +
 panels/sound/gvc-log.c                             |   62 +
 panels/sound/gvc-log.h                             |   35 +
 panels/sound/gvc-mixer-card-private.h              |   35 +
 panels/sound/gvc-mixer-card.c                      |  506 +
 panels/sound/gvc-mixer-card.h                      |   83 +
 panels/sound/gvc-mixer-control-private.h           |   35 +
 panels/sound/gvc-mixer-control.c                   | 2232 ++++
 panels/sound/gvc-mixer-control.h                   |   96 +
 panels/sound/gvc-mixer-dialog.c                    | 2091 ++++
 panels/sound/gvc-mixer-dialog.h                    |   56 +
 panels/sound/gvc-mixer-event-role.c                |  250 +
 panels/sound/gvc-mixer-event-role.h                |   57 +
 panels/sound/gvc-mixer-sink-input.c                |  199 +
 panels/sound/gvc-mixer-sink-input.h                |   57 +
 panels/sound/gvc-mixer-sink.c                      |  231 +
 panels/sound/gvc-mixer-sink.h                      |   57 +
 panels/sound/gvc-mixer-source-output.c             |  137 +
 panels/sound/gvc-mixer-source-output.h             |   57 +
 panels/sound/gvc-mixer-source.c                    |  231 +
 panels/sound/gvc-mixer-source.h                    |   57 +
 panels/sound/gvc-mixer-stream-private.h            |   34 +
 panels/sound/gvc-mixer-stream.c                    |  944 ++
 panels/sound/gvc-mixer-stream.h                    |  125 +
 panels/sound/gvc-pulseaudio-fake.h                 |   34 +
 panels/sound/gvc-sound-theme-chooser.c             | 1145 ++
 panels/sound/gvc-sound-theme-chooser.h             |   54 +
 panels/sound/gvc-sound-theme-editor.c              | 1397 +++
 panels/sound/gvc-sound-theme-editor.h              |   54 +
 panels/sound/gvc-speaker-test.c                    |  500 +
 panels/sound/gvc-speaker-test.h                    |   57 +
 panels/sound/gvc-stream-status-icon.c              |  822 ++
 panels/sound/gvc-stream-status-icon.h              |   63 +
 panels/sound/sound-theme-file-utils.c              |  305 +
 panels/sound/sound-theme-file-utils.h              |   37 +
 po/POTFILES.in                                     |   16 +
 po/POTFILES.skip                                   |    2 +
 141 files changed, 42114 insertions(+), 3 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 83a30cb..72f60a1 100644
--- a/configure.ac
+++ b/configure.ac
@@ -75,13 +75,19 @@ dnl ==============================================
 dnl Check that we meet the  dependencies
 dnl ==============================================
 
-COMMON_MODULES="gtk+-3.0 >= 2.90.0
- glib-2.0 >= 2.25.11
+GLIB_REQUIRED_VERSION=2.25.11
+GTK_REQUIRED_VERSION=2.91.0
+DESKTOP_SCHEMAS_REQUIRED_VERSION=0.0.2
+PA_REQUIRED_VERSION=0.9.16
+CANBERRA_REQUIRED_VERSION=0.13
+
+COMMON_MODULES="gtk+-3.0 >= $GTK_REQUIRED_VERSION
+ glib-2.0 >= $GLIB_REQUIRED_VERSION
  gthread-2.0
  gio-2.0
  gconf-2.0
  libxml-2.0
- gsettings-desktop-schemas >= 0.0.2"
+ gsettings-desktop-schemas >= $DESKTOP_SCHEMAS_REQUIRED_VERSION"
 PKG_CHECK_MODULES(CAPPLET, $COMMON_MODULES)
 PKG_CHECK_MODULES(GNOMECC_SHELL, $COMMON_MODULES libgnome-menu gio-unix-2.0)
 PKG_CHECK_MODULES(DBUS, dbus-1 dbus-glib-1)
@@ -90,6 +96,14 @@ PKG_CHECK_MODULES(DEFAULT_APPLICATIONS_CAPPLET, libxml-2.0)
 PKG_CHECK_MODULES(GSD_DBUS, gnome-settings-daemon)
 PKG_CHECK_MODULES(GIO, gio-2.0)
 PKG_CHECK_MODULES(XML, libxml-2.0)
+PKG_CHECK_MODULES(CANBERRA, libcanberra-gtk3 >= $CANBERRA_REQUIRED_VERSION)
+AC_SUBST(CANBERRA_CFLAGS)
+AC_SUBST(CANBERRA_LIBS)
+PKG_CHECK_MODULES(PULSEAUDIO,
+          libpulse >= $PA_REQUIRED_VERSION
+          libpulse-mainloop-glib >= $PA_REQUIRED_VERSION)
+AC_SUBST(PULSEAUDIO_CFLAGS)
+AC_SUBST(PULSEAUDIO_LIBS)
 
 gtk_lib_dir=`$PKG_CONFIG --variable libdir gtk+-3.0`
 gtk_binary_version=`$PKG_CONFIG --variable gtk_binary_version gtk+-3.0`
@@ -320,6 +334,31 @@ panels/mouse/Makefile
 panels/mouse/gnome-mouse-panel.desktop.in
 panels/network/Makefile
 panels/network/gnome-network-panel.desktop.in
+panels/sound/Makefile
+panels/sound/data/Makefile
+panels/sound/data/gnome-sound-panel.desktop.in
+panels/sound/data/symbolic-icons/Makefile
+panels/sound/data/symbolic-icons/scalable/Makefile
+panels/sound/data/symbolic-icons/scalable/status/Makefile
+panels/sound/data/icons/Makefile
+panels/sound/data/icons/16x16/Makefile
+panels/sound/data/icons/16x16/apps/Makefile
+panels/sound/data/icons/16x16/status/Makefile
+panels/sound/data/icons/22x22/Makefile
+panels/sound/data/icons/22x22/apps/Makefile
+panels/sound/data/icons/22x22/status/Makefile
+panels/sound/data/icons/24x24/Makefile
+panels/sound/data/icons/24x24/apps/Makefile
+panels/sound/data/icons/24x24/status/Makefile
+panels/sound/data/icons/32x32/Makefile
+panels/sound/data/icons/32x32/apps/Makefile
+panels/sound/data/icons/32x32/status/Makefile
+panels/sound/data/icons/48x48/Makefile
+panels/sound/data/icons/48x48/apps/Makefile
+panels/sound/data/icons/scalable/Makefile
+panels/sound/data/icons/scalable/apps/Makefile
+panels/sound/data/icons/scalable/devices/Makefile
+panels/sound/data/sounds/Makefile
 panels/universal-access/Makefile
 panels/universal-access/gnome-universal-access-panel.desktop.in
 po/Makefile.in
diff --git a/panels/Makefile.am b/panels/Makefile.am
index 09814ee..225fcbc 100644
--- a/panels/Makefile.am
+++ b/panels/Makefile.am
@@ -4,6 +4,7 @@ SUBDIRS= \
 	mouse \
 	keyboard \
 	network \
+	sound \
 	default-applications \
 	keybindings \
 	universal-access \
diff --git a/panels/sound/Makefile.am b/panels/sound/Makefile.am
new file mode 100644
index 0000000..c1ec3a7
--- /dev/null
+++ b/panels/sound/Makefile.am
@@ -0,0 +1,120 @@
+SUBDIRS = data
+
+# This is used in GNOMECC_CAPPLETS_CFLAGS
+cappletname = sound
+NULL =
+
+ccpanelsdir = $(PANELS_DIR)
+ccpanels_LTLIBRARIES = libsound.la
+
+bin_PROGRAMS =					\
+	gnome-sound-applet			\
+	$(NULL)
+
+AM_CPPFLAGS =					\
+	$(GNOMECC_CAPPLETS_CFLAGS) 		\
+	$(WARN_CFLAGS)				\
+	$(CANBERRA_CFLAGS)			\
+	$(PANEL_CFLAGS)				\
+	$(DISABLE_DEPRECATED)			\
+	$(PULSEAUDIO_CFLAGS)			\
+	-DLOCALE_DIR=\""$(datadir)/locale"\"	\
+	-DLIBEXECDIR=\"$(libexecdir)\"		\
+	-DGLADEDIR=\""$(pkgdatadir)"\"		\
+        -DSOUND_DATA_DIR="\"$(datadir)/sounds\""	\
+        -DSOUND_SET_DIR="\"$(pkgdatadir)/sounds\""	\
+	-DICON_DATA_DIR="\"$(pkgdatadir)/icons\"" \
+	$(NULL)
+
+noinst_LTLIBRARIES = libgnomevolumecontrol.la
+libgnomevolumecontrol_la_SOURCES =		\
+	gvc-mixer-card.h			\
+	gvc-mixer-card.c			\
+	gvc-mixer-card-private.h		\
+	gvc-mixer-stream.h			\
+	gvc-mixer-stream.c			\
+	gvc-mixer-stream-private.h		\
+	gvc-channel-map.h			\
+	gvc-channel-map.c			\
+	gvc-channel-map-private.h		\
+	gvc-mixer-sink.h			\
+	gvc-mixer-sink.c			\
+	gvc-mixer-source.h			\
+	gvc-mixer-source.c			\
+	gvc-mixer-sink-input.h			\
+	gvc-mixer-sink-input.c			\
+	gvc-mixer-source-output.h		\
+	gvc-mixer-source-output.c		\
+	gvc-mixer-event-role.h			\
+	gvc-mixer-event-role.c			\
+	gvc-mixer-control.h			\
+	gvc-mixer-control.c			\
+	gvc-mixer-control-private.h		\
+	gvc-channel-bar.h			\
+	gvc-channel-bar.c			\
+	gvc-log.h				\
+	gvc-log.c				\
+	gvc-pulseaudio-fake.h			\
+	$(NULL)
+
+gnome_sound_applet_LDADD =			\
+	-lm					\
+	libgnomevolumecontrol.la		\
+	$(CANBERRA_LIBS)			\
+	$(PULSEAUDIO_LIBS)			\
+	$(NULL)
+
+gnome_sound_applet_SOURCES =			\
+	gvc-stream-status-icon.h		\
+	gvc-stream-status-icon.c		\
+	gvc-applet.h				\
+	gvc-applet.c				\
+	applet-main.c				\
+	$(NULL)
+
+libsound_la_LIBADD =				\
+	-lm					\
+	libgnomevolumecontrol.la		\
+	$(PANEL_LIBS)				\
+	$(PULSEAUDIO_LIBS)			\
+	$(NULL)
+
+libsound_la_LDFLAGS =				\
+	$(PANEL_LDFLAGS)			\
+	$(CANBERRA_LIBS)			\
+	$(PULSEAUDIO_LIBS)			\
+	$(NULL)
+
+libsound_la_SOURCES =				\
+	gvc-balance-bar.h			\
+	gvc-balance-bar.c			\
+	gvc-mixer-dialog.h			\
+	gvc-mixer-dialog.c			\
+	gvc-level-bar.h				\
+	gvc-level-bar.c				\
+	gvc-combo-box.h				\
+	gvc-combo-box.c				\
+	gvc-speaker-test.h			\
+	gvc-speaker-test.c			\
+	gvc-sound-theme-chooser.c		\
+	gvc-sound-theme-chooser.h		\
+	sound-theme-file-utils.c		\
+	sound-theme-file-utils.h		\
+	cc-sound-panel.c			\
+	cc-sound-panel.h			\
+	$(NULL)
+
+EXTRA_DIST = gvc-sound-theme-editor.c gvc-sound-theme-editor.h
+
+BUILT_SOURCES =				\
+	$(NULL)
+
+CLEANFILES =				\
+	$(BUILT_SOURCES)		\
+	$(NULL)
+
+MAINTAINERCLEANFILES =                  \
+        *~                              \
+        Makefile.in
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/applet-main.c b/panels/sound/applet-main.c
new file mode 100644
index 0000000..0335fa1
--- /dev/null
+++ b/panels/sound/applet-main.c
@@ -0,0 +1,110 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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
+ * Lesser 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 "config.h"
+
+#include <libintl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include <glib/gi18n.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <gio/gio.h>
+
+#include "gvc-applet.h"
+#include "gvc-log.h"
+
+#define GVCA_DBUS_NAME "org.gnome.VolumeControlApplet"
+
+static gboolean show_version = FALSE;
+static gboolean debug = FALSE;
+
+int
+main (int argc, char **argv)
+{
+        GError             *error;
+        GvcApplet          *applet;
+        GApplication       *app = NULL;
+        static GOptionEntry entries[] = {
+                { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable debugging code"), NULL },
+                { "version", 0, 0, G_OPTION_ARG_NONE, &show_version, N_("Version of this application"), NULL },
+                { NULL, 0, 0, 0, NULL, NULL, NULL }
+        };
+
+        bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
+        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+        textdomain (GETTEXT_PACKAGE);
+
+        gvc_log_init ();
+
+        error = NULL;
+        gtk_init_with_args (&argc, &argv,
+                            (char *) _(" â?? GNOME Volume Control Applet"),
+                            entries, GETTEXT_PACKAGE,
+                            &error);
+
+        if (error != NULL) {
+                g_warning ("%s", error->message);
+                exit (1);
+        }
+
+        if (show_version) {
+                g_print ("%s %s\n", argv [0], VERSION);
+                exit (1);
+        }
+
+        gvc_log_set_debug (debug);
+
+        if (debug == FALSE) {
+                GError *error = NULL;
+
+                app = g_application_new (GVCA_DBUS_NAME,
+                                         G_APPLICATION_FLAGS_NONE);
+                if (!g_application_register (app, NULL, &error)) {
+                       g_warning ("%s", error->message);
+                       g_error_free (error);
+                       return 1;
+                }
+                if (g_application_get_is_remote (app)) {
+                        g_warning ("Applet is already running, exiting");
+                        return 0;
+                }
+        }
+
+        gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+                                           ICON_DATA_DIR);
+
+        applet = gvc_applet_new ();
+        gvc_applet_start (applet);
+
+        gtk_main ();
+
+        if (applet != NULL) {
+                g_object_unref (applet);
+        }
+        if (app != NULL) {
+                g_object_unref (app);
+        }
+
+        return 0;
+}
diff --git a/panels/sound/cc-sound-panel.c b/panels/sound/cc-sound-panel.c
new file mode 100644
index 0000000..1ec93c8
--- /dev/null
+++ b/panels/sound/cc-sound-panel.c
@@ -0,0 +1,136 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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
+ * Lesser 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 "config.h"
+
+#include <libintl.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include <glib/gi18n-lib.h>
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "cc-sound-panel.h"
+#include "gvc-mixer-dialog.h"
+#include "gvc-log.h"
+
+G_DEFINE_DYNAMIC_TYPE (CcSoundPanel, cc_sound_panel, CC_TYPE_PANEL)
+
+static void cc_sound_panel_finalize (GObject *object);
+
+static void
+cc_sound_panel_class_init (CcSoundPanelClass *klass)
+{
+        GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->finalize = cc_sound_panel_finalize;
+}
+
+static void
+cc_sound_panel_class_finalize (CcSoundPanelClass *klass)
+{
+}
+
+static void
+cc_sound_panel_finalize (GObject *object)
+{
+        CcSoundPanel *panel = CC_SOUND_PANEL (object);
+
+        if (panel->dialog != NULL)
+                panel->dialog = NULL;
+        if (panel->connecting_label != NULL)
+                panel->connecting_label = NULL;
+        if (panel->control != NULL) {
+                g_object_unref (panel->control);
+                panel->control = NULL;
+        }
+
+        G_OBJECT_CLASS (cc_sound_panel_parent_class)->finalize (object);
+}
+
+static void
+on_control_ready (GvcMixerControl *control,
+                  CcSoundPanel    *panel)
+{
+        if (panel->dialog != NULL)
+                return;
+
+        if (panel->connecting_label) {
+                gtk_widget_destroy (panel->connecting_label);
+                panel->connecting_label = NULL;
+        }
+
+        panel->dialog = gvc_mixer_dialog_new (control);
+        gtk_container_add (GTK_CONTAINER (panel),
+                           GTK_WIDGET (panel->dialog));
+        gtk_widget_show (GTK_WIDGET (panel->dialog));
+}
+
+static void
+cc_sound_panel_init (CcSoundPanel *self)
+{
+        gvc_log_init ();
+        gvc_log_set_debug (TRUE);
+
+        gtk_icon_theme_append_search_path (gtk_icon_theme_get_default (),
+                                           ICON_DATA_DIR);
+        gtk_window_set_default_icon_name ("multimedia-volume-control");
+
+        self->control = gvc_mixer_control_new ("GNOME Volume Control Dialog");
+        g_signal_connect (self->control,
+                          "ready",
+                          G_CALLBACK (on_control_ready),
+                          self);
+        gvc_mixer_control_open (self->control);
+
+        self->connecting_label = gtk_label_new (_("Waiting for sound system to respond"));
+        gtk_container_add (GTK_CONTAINER (self), self->connecting_label);
+        gtk_widget_show (self->connecting_label);
+}
+
+void
+cc_sound_panel_register (GIOModule *module)
+{
+        cc_sound_panel_register_type (G_TYPE_MODULE (module));
+        g_io_extension_point_implement (CC_SHELL_PANEL_EXTENSION_POINT,
+                                        CC_TYPE_SOUND_PANEL,
+                                        "sound", 0);
+}
+
+/* GIO extension stuff */
+void
+g_io_module_load (GIOModule *module)
+{
+        bindtextdomain (GETTEXT_PACKAGE, LOCALE_DIR);
+        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+
+        /* register the panel */
+        cc_sound_panel_register (module);
+}
+
+void
+g_io_module_unload (GIOModule *module)
+{
+}
+
diff --git a/panels/sound/cc-sound-panel.h b/panels/sound/cc-sound-panel.h
new file mode 100644
index 0000000..fda5fb7
--- /dev/null
+++ b/panels/sound/cc-sound-panel.h
@@ -0,0 +1,60 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2010 Red Hat, Inc.
+ *
+ * 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
+ * Lesser 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.
+ */
+
+#ifndef _CC_SOUND_PANEL_H
+#define _CC_SOUND_PANEL_H
+
+#include <libgnome-control-center/cc-panel.h>
+#include "gvc-mixer-control.h"
+#include "gvc-mixer-dialog.h"
+
+G_BEGIN_DECLS
+
+#define CC_TYPE_SOUND_PANEL cc_sound_panel_get_type()
+#define CC_SOUND_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CC_TYPE_SOUND_PANEL, CcSoundPanel))
+#define CC_SOUND_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), CC_TYPE_SOUND_PANEL, CcSoundPanelClass))
+#define CC_IS_SOUND_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), CC_TYPE_SOUND_PANEL))
+#define CC_IS_SOUND_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), CC_TYPE_SOUND_PANEL))
+#define CC_SOUND_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), CC_TYPE_SOUND_PANEL, CcSoundPanelClass))
+
+typedef struct _CcSoundPanel CcSoundPanel;
+typedef struct _CcSoundPanelClass CcSoundPanelClass;
+typedef struct _CcSoundPanelPrivate CcSoundPanelPrivate;
+
+struct _CcSoundPanel {
+	CcPanel parent;
+
+	GvcMixerControl *control;
+	GvcMixerDialog  *dialog;
+	GtkWidget       *connecting_label;
+};
+
+struct _CcSoundPanelClass {
+	CcPanelClass parent_class;
+};
+
+GType cc_sound_panel_get_type (void) G_GNUC_CONST;
+
+void  cc_sound_panel_register (GIOModule *module);
+
+G_END_DECLS
+
+#endif /* _CC_SOUND_PANEL_H */
+
diff --git a/panels/sound/data/Makefile.am b/panels/sound/data/Makefile.am
new file mode 100644
index 0000000..d5522b2
--- /dev/null
+++ b/panels/sound/data/Makefile.am
@@ -0,0 +1,44 @@
+NULL =
+
+SUBDIRS =			\
+	icons			\
+	symbolic-icons		\
+	sounds			\
+	$(NULL)
+
+ INTLTOOL_DESKTOP_RULE@
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = gnome-sound-applet.desktop.in
+autostart_DATA = $(autostart_in_files:.desktop.in=.desktop)
+
+appsdir = $(datadir)/applications
+apps_in_files = gnome-sound-panel.desktop.in
+apps_DATA = $(apps_in_files:.desktop.in=.desktop)
+
+EXTRA_DIST =					\
+	$(autostart_in_files)			\
+	gnome-sound-panel.desktop.in.in		\
+	$(NULL)
+
+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor
+
+install-data-hook: update-icon-cache
+uninstall-hook: update-icon-cache
+update-icon-cache:
+	@-if test -z "$(DESTDIR)"; then \
+		echo "Updating Gtk icon cache."; \
+		$(gtk_update_icon_cache); \
+	else \
+		echo "*** Icon cache not updated.  After (un)install, run this:"; \
+		echo "***   $(gtk_update_icon_cache)"; \
+	fi
+
+CLEANFILES =					\
+	gnome-sound-panel.desktop		\
+	$(NULL)
+
+DISTCLEANFILES =				\
+	gnome-sound-applet.desktop		\
+	$(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/gnome-sound-applet.desktop.in b/panels/sound/data/gnome-sound-applet.desktop.in
new file mode 100644
index 0000000..2979256
--- /dev/null
+++ b/panels/sound/data/gnome-sound-applet.desktop.in
@@ -0,0 +1,16 @@
+[Desktop Entry]
+_Name=Volume Control
+_Comment=Show desktop volume control
+Icon=multimedia-volume-control
+Exec=gnome-sound-applet
+Terminal=false
+Type=Application
+Categories=
+NoDisplay=true
+OnlyShowIn=GNOME;XFCE;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-control-center
+X-GNOME-Bugzilla-Component=sound
+# See http://bugzilla.gnome.org/show_bug.cgi?id=568320
+#X-GNOME-Autostart-Phase=Panel
+X-GNOME-Autostart-Notify=true
diff --git a/panels/sound/data/gnome-sound-panel.desktop.in.in b/panels/sound/data/gnome-sound-panel.desktop.in.in
new file mode 100644
index 0000000..af1ab07
--- /dev/null
+++ b/panels/sound/data/gnome-sound-panel.desktop.in.in
@@ -0,0 +1,15 @@
+[Desktop Entry]
+_Name=Sound
+_Comment=Change sound volume and sound events
+Exec=gnome-control-center sound
+Icon=multimedia-volume-control
+Terminal=false
+Type=Application
+StartupNotify=true
+Categories=GNOME;GTK;Settings;HardwareSettings;X-GNOME-Settings-Panel;
+OnlyShowIn=GNOME;
+X-GNOME-Bugzilla-Bugzilla=GNOME
+X-GNOME-Bugzilla-Product=gnome-control-center
+X-GNOME-Bugzilla-Component=sound
+X-GNOME-Bugzilla-Version= VERSION@
+X-GNOME-Settings-Panel=sound
diff --git a/panels/sound/data/icons/16x16/Makefile.am b/panels/sound/data/icons/16x16/Makefile.am
new file mode 100644
index 0000000..9ed74c7
--- /dev/null
+++ b/panels/sound/data/icons/16x16/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = status apps
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/16x16/apps/Makefile.am b/panels/sound/data/icons/16x16/apps/Makefile.am
new file mode 100644
index 0000000..613c6b2
--- /dev/null
+++ b/panels/sound/data/icons/16x16/apps/Makefile.am
@@ -0,0 +1,19 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = 16x16
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	multimedia-volume-control.png		\
+	multimedia-volume-control.svg
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/16x16/apps/multimedia-volume-control.png b/panels/sound/data/icons/16x16/apps/multimedia-volume-control.png
new file mode 100644
index 0000000..13b4b7f
Binary files /dev/null and b/panels/sound/data/icons/16x16/apps/multimedia-volume-control.png differ
diff --git a/panels/sound/data/icons/16x16/apps/multimedia-volume-control.svg b/panels/sound/data/icons/16x16/apps/multimedia-volume-control.svg
new file mode 100644
index 0000000..f8014bf
--- /dev/null
+++ b/panels/sound/data/icons/16x16/apps/multimedia-volume-control.svg
@@ -0,0 +1,585 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://web.resource.org/cc/";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="16"
+   height="16"
+   id="svg2"
+   inkscape:label="Pozadí"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\16x16"
+   sodipodi:docname="gnome-sound-properties.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\16x16\gnome-sound-properties.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="TRUE">
+  <defs
+     id="defs3">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3973">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3975" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop3977" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6304"
+       inkscape:collect="always">
+      <stop
+         id="stop6306"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1" />
+      <stop
+         id="stop6308"
+         offset="1"
+         style="stop-color:#80827d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6296">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6298" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6300" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6117">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6119" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6121" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6105">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="0"
+         id="stop6107" />
+      <stop
+         id="stop6113"
+         offset="0.45209709"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6109" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6091">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6093" />
+      <stop
+         style="stop-color:#81837e;stop-opacity:0.98648649"
+         offset="1"
+         id="stop6095" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6077">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop6079" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop6081" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6041"
+       inkscape:collect="always">
+      <stop
+         id="stop6043"
+         offset="0"
+         style="stop-color:#729fcf;stop-opacity:1" />
+      <stop
+         id="stop6045"
+         offset="1"
+         style="stop-color:#235195;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6017">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6019" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="1"
+         id="stop6021" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6003">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6005" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop6007" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5995">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop5997" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop5999" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5995"
+       id="linearGradient6001"
+       x1="28.203571"
+       y1="25.09193"
+       x2="21.583036"
+       y2="35.983383"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6003"
+       id="linearGradient6009"
+       x1="15.741923"
+       y1="33.116215"
+       x2="36.696983"
+       y2="22.224764"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient6033"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6017"
+       id="radialGradient6037"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="23.597727"
+       cy="19.792301"
+       fx="23.597727"
+       fy="19.792301"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6077"
+       id="radialGradient6049"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="32.09296"
+       cy="33.488297"
+       fx="32.09296"
+       fy="33.488297"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient6097"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient6111"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3364103,0,0,0.3372732,-0.6774362,0.1274337)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient6123"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient6290"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.1930651,0,0,9.3410036e-2,2.1701348,6.6135966)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient6302"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.3541113,0,0,0.3635233,-0.7432896,-1.8035221)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient5028"
+       gradientUnits="userSpaceOnUse"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient5030"
+       gradientUnits="userSpaceOnUse"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient5032"
+       gradientUnits="userSpaceOnUse"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient5034"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient5036"
+       gradientUnits="userSpaceOnUse"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient5038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4228001,0,0,0.3113668,-47.60226,19.545318)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3973"
+       id="radialGradient6066"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="32.217553"
+     inkscape:cx="12.505516"
+     inkscape:cy="11.160076"
+     inkscape:document-units="px"
+     inkscape:current-layer="g6029"
+     width="16px"
+     height="16px"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="973"
+     inkscape:window-height="849"
+     inkscape:window-x="150"
+     inkscape:window-y="57"
+     showborder="true" />
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Sound CC applet</dc:title>
+        <dc:date>17.02.2007</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:identifier>http://blog.vybiral.info</dc:identifier>
+        <dc:source>http://blog.vybiral.info</dc:source>
+        <dc:coverage>sound, reproductor, note</dc:coverage>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"; />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Repros"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <path
+       transform="matrix(0.208749,0,0,0.1304682,1.8789228,9.6383004)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6051"
+       style="opacity:1;color:#000000;fill:url(#linearGradient6097);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:6.05948067;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:7.82422543;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6099"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.1565028,0,0,0.1043745,3.2846495,9.8106402)" />
+    <path
+       style="opacity:0.56768559;fill:url(#linearGradient6111);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 4.2234611,13.618367 C 4.2234611,13.618367 5.0415386,14.96746 7.396411,14.96746 L 7.396411,12.943819 L 4.2311244,12.943819 L 4.2234611,13.618367 z"
+       id="path6103" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2.95696092;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6011"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.3652519,0,0,0.3131236,-2.3364281,-0.5680786)" />
+    <path
+       transform="matrix(0.3652519,0,0,0.28597,-2.3364279,-0.3887379)"
+       d="M 46.089207 25.766438 A 19.161766 19.161766 0 1 1  7.7656746,25.766438 A 19.161766 19.161766 0 1 1  46.089207 25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6013"
+       style="opacity:1;color:#000000;fill:url(#radialGradient6066);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.09416509;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.5753541;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.27477477;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6015"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.3131236,0,0,0.2498308,-0.9316158,0.8499497)" />
+    <path
+       style="fill:url(#linearGradient6302);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 5.288702,12.37359 C 7.1369466,13.339783 12.937407,12.9293 14.003827,8.0640329 C 14.003827,8.0640329 11.452841,13.318809 5.288702,12.37359 z"
+       id="path6039"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.26576574;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 11.5,9.2396488 C 11.5,10.189213 9.9869494,11.092769 8.339297,11.092769 C 6.6916436,11.092769 5.6570637,10.322106 5.6570637,9.3725413 C 5.6570637,8.4229746 6.9942902,7.2700418 8.6419435,7.2700418 C 10.289597,7.2700418 11.5,8.2900852 11.5,9.2396488 z"
+       id="path6055"
+       sodipodi:nodetypes="csssc" />
+    <path
+       style="color:#000000;fill:url(#radialGradient6290);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 10.436247,9.150001 C 10.436247,9.8952003 9.1065272,10.500001 7.4681246,10.500001 C 5.8297202,10.500001 4.5000003,9.8952003 4.5000003,9.150001 C 4.5000003,8.4048002 5.8297202,7.5000007 7.4681246,7.5000007 C 9.1065272,7.5000007 10.436247,8.4048002 10.436247,9.150001 z"
+       id="path6047"
+       sodipodi:nodetypes="csssc" />
+    <g
+       id="g6029"
+       transform="matrix(0.4907271,0,0,0.4910531,3.9572021e-2,0.6295285)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:6.1113472;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 29.479615,9.1193715 L 29.479615,1.8976116"
+         id="path5052"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6023"
+         d="M 17.240597,8.1228714 L 17.240597,2.9873851"
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:6.11134768;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:6.11134768;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.232473,1.8009824 L 29.459229,1.7943871"
+         id="path6025"
+         sodipodi:nodetypes="cc" />
+      <path
+         transform="matrix(1.0394076,0,0,1.0793564,-17.878825,-8.7313604)"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6125"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.92327011;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.92326987;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6127"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         transform="matrix(1.0394077,0,0,1.0793564,-5.6520722,-8.7313603)" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:2.03711605;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 17.232473,10.050765 L 17.232473,1.8275403"
+         id="path6163" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6165"
+         d="M 29.467352,9.8622978 L 29.467352,1.5938"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:2.03711605;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:2.03711605;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 17.19717,1.8126936 L 29.499999,1.7643486"
+         id="path6167"
+         sodipodi:nodetypes="cc" />
+      <path
+         transform="matrix(0.7630495,0,0,0.5396781,3.2062471,0.5964946)"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6190"
+         style="color:#000000;fill:#ffffff;fill-opacity:0.32941176;fill-rule:evenodd;stroke:none;stroke-width:3.64232254;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6192"
+         d="M 17.22586,1.7943885 L 29.500001,1.7643483"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.03711557;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         id="path6212"
+         d="M 17.232473,8.2177037 L 17.232473,1.8711502"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.0371151;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.03711534;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 29.467352,7.9859064 L 29.467352,1.7943879"
+         id="path6214"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:#ffffff;fill-opacity:0.32941176;fill-rule:evenodd;stroke:none;stroke-width:3.64232254;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6069"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         transform="matrix(0.7630495,0,0,0.5396781,-9.1499501,0.5964943)" />
+    </g>
+    <path
+       transform="matrix(2.6334455e-2,0,0,1.557043e-2,6.2594829,7.8971624)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6206"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6208"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(3.9259173e-2,0,0,2.6213758e-2,5.695126,8.8222629)" />
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/16x16/status/Makefile.am b/panels/sound/data/icons/16x16/status/Makefile.am
new file mode 100644
index 0000000..9ca7ba0
--- /dev/null
+++ b/panels/sound/data/icons/16x16/status/Makefile.am
@@ -0,0 +1,21 @@
+NULL =
+
+themedir = $(pkgdatadir)/icons/hicolor
+size = 16x16
+context = status
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	audio-input-microphone-high.png		\
+	audio-input-microphone-low.png		\
+	audio-input-microphone-medium.png	\
+	audio-input-microphone-muted.png	\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/16x16/status/audio-input-microphone-high.png b/panels/sound/data/icons/16x16/status/audio-input-microphone-high.png
new file mode 100644
index 0000000..fc2c114
Binary files /dev/null and b/panels/sound/data/icons/16x16/status/audio-input-microphone-high.png differ
diff --git a/panels/sound/data/icons/16x16/status/audio-input-microphone-low.png b/panels/sound/data/icons/16x16/status/audio-input-microphone-low.png
new file mode 100644
index 0000000..20f7211
Binary files /dev/null and b/panels/sound/data/icons/16x16/status/audio-input-microphone-low.png differ
diff --git a/panels/sound/data/icons/16x16/status/audio-input-microphone-medium.png b/panels/sound/data/icons/16x16/status/audio-input-microphone-medium.png
new file mode 100644
index 0000000..7f782bb
Binary files /dev/null and b/panels/sound/data/icons/16x16/status/audio-input-microphone-medium.png differ
diff --git a/panels/sound/data/icons/16x16/status/audio-input-microphone-muted.png b/panels/sound/data/icons/16x16/status/audio-input-microphone-muted.png
new file mode 100644
index 0000000..9643476
Binary files /dev/null and b/panels/sound/data/icons/16x16/status/audio-input-microphone-muted.png differ
diff --git a/panels/sound/data/icons/22x22/Makefile.am b/panels/sound/data/icons/22x22/Makefile.am
new file mode 100644
index 0000000..9ed74c7
--- /dev/null
+++ b/panels/sound/data/icons/22x22/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = status apps
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/22x22/apps/Makefile.am b/panels/sound/data/icons/22x22/apps/Makefile.am
new file mode 100644
index 0000000..84943a4
--- /dev/null
+++ b/panels/sound/data/icons/22x22/apps/Makefile.am
@@ -0,0 +1,19 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = 22x22
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	multimedia-volume-control.png		\
+	multimedia-volume-control.svg
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/22x22/apps/multimedia-volume-control.png b/panels/sound/data/icons/22x22/apps/multimedia-volume-control.png
new file mode 100644
index 0000000..8d55f04
Binary files /dev/null and b/panels/sound/data/icons/22x22/apps/multimedia-volume-control.png differ
diff --git a/panels/sound/data/icons/22x22/apps/multimedia-volume-control.svg b/panels/sound/data/icons/22x22/apps/multimedia-volume-control.svg
new file mode 100644
index 0000000..7636a75
--- /dev/null
+++ b/panels/sound/data/icons/22x22/apps/multimedia-volume-control.svg
@@ -0,0 +1,595 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://web.resource.org/cc/";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="22"
+   height="22"
+   id="svg2"
+   inkscape:label="Pozadí"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\22x22"
+   sodipodi:docname="gnome-sound-properties.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\22x22\gnome-sound-properties.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true">
+  <defs
+     id="defs3">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3744">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop3746" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop3748" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6304"
+       inkscape:collect="always">
+      <stop
+         id="stop6306"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1" />
+      <stop
+         id="stop6308"
+         offset="1"
+         style="stop-color:#80827d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6296">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6298" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6300" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6117">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6119" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6121" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6105">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="0"
+         id="stop6107" />
+      <stop
+         id="stop6113"
+         offset="0.45209709"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6109" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6091">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6093" />
+      <stop
+         style="stop-color:#81837e;stop-opacity:0.98648649"
+         offset="1"
+         id="stop6095" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6077">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop6079" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop6081" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6041"
+       inkscape:collect="always">
+      <stop
+         id="stop6043"
+         offset="0"
+         style="stop-color:#729fcf;stop-opacity:1" />
+      <stop
+         id="stop6045"
+         offset="1"
+         style="stop-color:#235195;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6017">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6019" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="1"
+         id="stop6021" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6003">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6005" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop6007" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5995">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop5997" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop5999" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5995"
+       id="linearGradient6001"
+       x1="28.203571"
+       y1="25.09193"
+       x2="21.583036"
+       y2="35.983383"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6003"
+       id="linearGradient6009"
+       x1="15.741923"
+       y1="33.116215"
+       x2="36.696983"
+       y2="22.224764"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient6033"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6017"
+       id="radialGradient6037"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="23.597727"
+       cy="19.792301"
+       fx="23.597727"
+       fy="19.792301"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6077"
+       id="radialGradient6049"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="32.09296"
+       cy="33.488297"
+       fx="32.09296"
+       fy="33.488297"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient6097"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient6111"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4566304,0,0,0.4578007,-9.82064e-2,-0.1950787)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient6123"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient6290"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2235424,0,0,0.1245467,4.9289984,8.3181279)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient6302"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.480657,0,0,0.4934313,-0.1875933,-2.8160779)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient5028"
+       gradientUnits="userSpaceOnUse"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient5030"
+       gradientUnits="userSpaceOnUse"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient5032"
+       gradientUnits="userSpaceOnUse"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient5034"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient5036"
+       gradientUnits="userSpaceOnUse"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient5038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4228001,0,0,0.3113668,-47.60226,19.545318)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3744"
+       id="radialGradient6066"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="34.171876"
+     inkscape:cx="10.729483"
+     inkscape:cy="17.062453"
+     inkscape:document-units="px"
+     inkscape:current-layer="g6029"
+     width="22px"
+     height="22px"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="757"
+     inkscape:window-height="575"
+     inkscape:window-x="221"
+     inkscape:window-y="374"
+     showborder="false" />
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Sound CC applet</dc:title>
+        <dc:date>17.02.2007</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:identifier>http://blog.vybiral.info</dc:identifier>
+        <dc:source>http://blog.vybiral.info</dc:source>
+        <dc:coverage>sound, reproductor, note</dc:coverage>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"; />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Repros"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <path
+       transform="matrix(0.5218726,0,0,0.3914044,-3.0526925,4.4149024)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6115"
+       style="opacity:0.78165935;color:#000000;fill:url(#radialGradient6123);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04187703;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(0.2870299,0,0,0.1637207,3.2710188,13.144325)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6051"
+       style="opacity:1;color:#000000;fill:url(#linearGradient6097);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:4.61301279;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:5.82070923;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6099"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.2348426,0,0,0.1256814,4.6762892,13.853362)" />
+    <path
+       style="opacity:0.56768559;fill:url(#linearGradient6111);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 6.5540829,18.116953 C 6.5540829,18.116953 7.66451,19.948156 10.860923,19.948156 L 10.860923,17.20135 L 6.5644849,17.20135 L 6.5540829,18.116953 z"
+       id="path6103" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2.16422367;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6011"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207 25.766438 A 19.161766 19.161766 0 1 1  7.7656746,25.766438 A 19.161766 19.161766 0 1 1  46.089207 25.766438 z"
+       transform="matrix(0.4957789,0,0,0.430633,-2.3500582,-1.34419)" />
+    <path
+       transform="matrix(0.4957789,0,0,0.4174981,-2.3500579,-1.2574379)"
+       d="M 46.089207 25.766438 A 19.161766 19.161766 0 1 1  7.7656746,25.766438 A 19.161766 19.161766 0 1 1  46.089207 25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6013"
+       style="opacity:1;color:#000000;fill:url(#radialGradient6066);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2.19800472;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.48414516;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35675675;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6015"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.4435917,0,0,0.3653108,-0.9447891,8.72424e-2)" />
+    <path
+       style="fill:url(#linearGradient6302);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 8,16.427344 C 10.508736,17.738814 18.382058,17.181643 19.829575,10.577731 C 19.829575,10.577731 16.366965,17.710345 8,16.427344 z"
+       id="path6039"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.26576574;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 14.500001,12.076181 C 14.500001,13.318181 12.946278,14.5 11.254335,14.5 C 9.5623909,14.5 8.5000002,13.491999 8.5000002,12.25 C 8.5000002,11.007998 9.873173,9.4999998 11.565117,9.4999998 C 13.257061,9.4999998 14.500001,10.834183 14.500001,12.076181 z"
+       id="path6055"
+       sodipodi:nodetypes="csssc" />
+    <path
+       style="color:#000000;fill:url(#radialGradient6290);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 14.5,11.7 C 14.5,12.693599 12.96037,13.5 11.063329,13.5 C 9.1662861,13.5 7.6266566,12.693599 7.6266566,11.7 C 7.6266566,10.706399 9.1662861,9.5 11.063329,9.5 C 12.96037,9.5 14.5,10.706399 14.5,11.7 z"
+       id="path6047"
+       sodipodi:nodetypes="csssc" />
+    <g
+       id="g6029"
+       transform="matrix(0.6660941,0,0,0.6678303,0.8804439,0.4696392)">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:4.4980092;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 29.5,8.6499115 L 29.5,1.4935517"
+         id="path5052"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6023"
+         d="M 18.945615,7.5049013 L 18.945615,1.567109"
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:4.49801016;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:4.4980092;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 18.945606,1.5722642 L 29.500001,1.4999998"
+         id="path6025"
+         sodipodi:nodetypes="cc" />
+      <path
+         transform="matrix(0.9571947,0,0,1.186958,-13.763854,-10.748001)"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6125"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.40663421;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.40319479;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6127"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         transform="matrix(0.957195,0,0,1.1927835,-3.2548378,-10.837719)" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1.49933648;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 18.945606,9.0297806 L 18.945606,0.93297361"
+         id="path6163" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6165"
+         d="M 29.5,9.596807 L 29.5,1.5"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1.49933648;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1.4993366;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 19.5,1.5797955 L 29.499999,1.5"
+         id="path6167"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.13763928;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6188"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638 17.284103 A 3.9210651 1.8830575 0 1 1  27.898507,17.284103 A 3.9210651 1.8830575 0 1 1  35.740638 17.284103 z"
+         transform="matrix(0.574317,0,0,0.3975944,-1.5808514,2.9064109)" />
+      <path
+         transform="matrix(0.574317,0,0,0.3975946,8.9281769,2.9064074)"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6190"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:3.13763881;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6192"
+         d="M 18.945606,1.5722642 L 29.500001,1.4999998"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.49933612;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         id="path6212"
+         d="M 18.945605,9.0297805 L 18.945605,0.97658404"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.49933589;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.499336;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 29.454632,9.0773723 L 29.454632,1.4952556"
+         id="path6214"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <path
+       transform="matrix(3.5745376e-2,0,0,2.1134654e-2,9.7316574,9.798915)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6206"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6208"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(5.3288892e-2,0,0,3.5581465e-2,8.2339412,10.513453)" />
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/22x22/status/Makefile.am b/panels/sound/data/icons/22x22/status/Makefile.am
new file mode 100644
index 0000000..d855c38
--- /dev/null
+++ b/panels/sound/data/icons/22x22/status/Makefile.am
@@ -0,0 +1,21 @@
+NULL =
+
+themedir = $(pkgdatadir)/icons/hicolor
+size = 22x22
+context = status
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	audio-input-microphone-high.png		\
+	audio-input-microphone-low.png		\
+	audio-input-microphone-medium.png	\
+	audio-input-microphone-muted.png	\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/22x22/status/audio-input-microphone-high.png b/panels/sound/data/icons/22x22/status/audio-input-microphone-high.png
new file mode 100644
index 0000000..d04854b
Binary files /dev/null and b/panels/sound/data/icons/22x22/status/audio-input-microphone-high.png differ
diff --git a/panels/sound/data/icons/22x22/status/audio-input-microphone-low.png b/panels/sound/data/icons/22x22/status/audio-input-microphone-low.png
new file mode 100644
index 0000000..f0a7f2d
Binary files /dev/null and b/panels/sound/data/icons/22x22/status/audio-input-microphone-low.png differ
diff --git a/panels/sound/data/icons/22x22/status/audio-input-microphone-medium.png b/panels/sound/data/icons/22x22/status/audio-input-microphone-medium.png
new file mode 100644
index 0000000..4148dc2
Binary files /dev/null and b/panels/sound/data/icons/22x22/status/audio-input-microphone-medium.png differ
diff --git a/panels/sound/data/icons/22x22/status/audio-input-microphone-muted.png b/panels/sound/data/icons/22x22/status/audio-input-microphone-muted.png
new file mode 100644
index 0000000..6d14cc0
Binary files /dev/null and b/panels/sound/data/icons/22x22/status/audio-input-microphone-muted.png differ
diff --git a/panels/sound/data/icons/24x24/Makefile.am b/panels/sound/data/icons/24x24/Makefile.am
new file mode 100644
index 0000000..9ed74c7
--- /dev/null
+++ b/panels/sound/data/icons/24x24/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = status apps
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/24x24/apps/Makefile.am b/panels/sound/data/icons/24x24/apps/Makefile.am
new file mode 100644
index 0000000..d59fb5a
--- /dev/null
+++ b/panels/sound/data/icons/24x24/apps/Makefile.am
@@ -0,0 +1,18 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = 24x24
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	multimedia-volume-control.png		\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/24x24/apps/multimedia-volume-control.png b/panels/sound/data/icons/24x24/apps/multimedia-volume-control.png
new file mode 100644
index 0000000..3b873fa
Binary files /dev/null and b/panels/sound/data/icons/24x24/apps/multimedia-volume-control.png differ
diff --git a/panels/sound/data/icons/24x24/status/Makefile.am b/panels/sound/data/icons/24x24/status/Makefile.am
new file mode 100644
index 0000000..6b9b71c
--- /dev/null
+++ b/panels/sound/data/icons/24x24/status/Makefile.am
@@ -0,0 +1,21 @@
+NULL =
+
+themedir = $(pkgdatadir)/icons/hicolor
+size = 24x24
+context = status
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	audio-input-microphone-high.png		\
+	audio-input-microphone-low.png		\
+	audio-input-microphone-medium.png	\
+	audio-input-microphone-muted.png	\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/24x24/status/audio-input-microphone-high.png b/panels/sound/data/icons/24x24/status/audio-input-microphone-high.png
new file mode 100644
index 0000000..0da5af3
Binary files /dev/null and b/panels/sound/data/icons/24x24/status/audio-input-microphone-high.png differ
diff --git a/panels/sound/data/icons/24x24/status/audio-input-microphone-low.png b/panels/sound/data/icons/24x24/status/audio-input-microphone-low.png
new file mode 100644
index 0000000..73e5c11
Binary files /dev/null and b/panels/sound/data/icons/24x24/status/audio-input-microphone-low.png differ
diff --git a/panels/sound/data/icons/24x24/status/audio-input-microphone-medium.png b/panels/sound/data/icons/24x24/status/audio-input-microphone-medium.png
new file mode 100644
index 0000000..4d64ee1
Binary files /dev/null and b/panels/sound/data/icons/24x24/status/audio-input-microphone-medium.png differ
diff --git a/panels/sound/data/icons/24x24/status/audio-input-microphone-muted.png b/panels/sound/data/icons/24x24/status/audio-input-microphone-muted.png
new file mode 100644
index 0000000..85893d1
Binary files /dev/null and b/panels/sound/data/icons/24x24/status/audio-input-microphone-muted.png differ
diff --git a/panels/sound/data/icons/32x32/Makefile.am b/panels/sound/data/icons/32x32/Makefile.am
new file mode 100644
index 0000000..9ed74c7
--- /dev/null
+++ b/panels/sound/data/icons/32x32/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = status apps
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/32x32/apps/Makefile.am b/panels/sound/data/icons/32x32/apps/Makefile.am
new file mode 100644
index 0000000..e209d40
--- /dev/null
+++ b/panels/sound/data/icons/32x32/apps/Makefile.am
@@ -0,0 +1,19 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = 32x32
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	multimedia-volume-control.png		\
+	multimedia-volume-control.svg
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/32x32/apps/multimedia-volume-control.png b/panels/sound/data/icons/32x32/apps/multimedia-volume-control.png
new file mode 100644
index 0000000..3a6c791
Binary files /dev/null and b/panels/sound/data/icons/32x32/apps/multimedia-volume-control.png differ
diff --git a/panels/sound/data/icons/32x32/apps/multimedia-volume-control.svg b/panels/sound/data/icons/32x32/apps/multimedia-volume-control.svg
new file mode 100644
index 0000000..d1e308d
--- /dev/null
+++ b/panels/sound/data/icons/32x32/apps/multimedia-volume-control.svg
@@ -0,0 +1,633 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://web.resource.org/cc/";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="32"
+   height="32"
+   id="svg2"
+   inkscape:label="Pozadí"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\32x32"
+   sodipodi:docname="gnome-sound-properties.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\32x32\gnome-sound-properties.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="TRUE">
+  <defs
+     id="defs3">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3478">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop3480" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop3482" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6304"
+       inkscape:collect="always">
+      <stop
+         id="stop6306"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1" />
+      <stop
+         id="stop6308"
+         offset="1"
+         style="stop-color:#80827d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6296">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6298" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6300" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6117">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6119" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6121" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6105">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="0"
+         id="stop6107" />
+      <stop
+         id="stop6113"
+         offset="0.45209709"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6109" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6091">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6093" />
+      <stop
+         style="stop-color:#81837e;stop-opacity:0.98648649"
+         offset="1"
+         id="stop6095" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6077">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop6079" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop6081" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6041"
+       inkscape:collect="always">
+      <stop
+         id="stop6043"
+         offset="0"
+         style="stop-color:#729fcf;stop-opacity:1" />
+      <stop
+         id="stop6045"
+         offset="1"
+         style="stop-color:#235195;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6017">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6019" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="1"
+         id="stop6021" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6003">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6005" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop6007" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5995">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop5997" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop5999" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5995"
+       id="linearGradient6001"
+       x1="28.203571"
+       y1="25.09193"
+       x2="21.583036"
+       y2="35.983383"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6003"
+       id="linearGradient6009"
+       x1="15.741923"
+       y1="33.116215"
+       x2="36.696983"
+       y2="22.224764"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3478"
+       id="radialGradient6033"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6017"
+       id="radialGradient6037"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="23.597727"
+       cy="19.792301"
+       fx="23.597727"
+       fy="19.792301"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6077"
+       id="radialGradient6049"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="32.09296"
+       cy="33.488297"
+       fx="32.09296"
+       fy="33.488297"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient6097"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient6111"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6707857,0,0,0.6714555,0.1522499,-0.5175596)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient6123"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient6290"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.2927078,0,0,0.1868201,7.9676686,12.727192)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient6302"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6707857,0,0,0.6714555,0.2643719,-0.8007536)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient5028"
+       gradientUnits="userSpaceOnUse"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient5030"
+       gradientUnits="userSpaceOnUse"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient5032"
+       gradientUnits="userSpaceOnUse"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient5034"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient5036"
+       gradientUnits="userSpaceOnUse"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientTransform="translate(-60,0)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient5038"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4228001,0,0,0.3113668,-47.60226,19.545318)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.390625"
+     inkscape:cx="4.3711817"
+     inkscape:cy="8.9010469"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="32px"
+     height="32px"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="973"
+     inkscape:window-height="575"
+     inkscape:window-x="137"
+     inkscape:window-y="364"
+     showborder="true" />
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Sound CC applet</dc:title>
+        <dc:date>17.02.2007</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:identifier>http://blog.vybiral.info</dc:identifier>
+        <dc:source>http://blog.vybiral.info</dc:source>
+        <dc:coverage>sound, reproductor, note</dc:coverage>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"; />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Repros"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <path
+       transform="matrix(0.7306216,0,0,0.550649,-3.6737696,7.2603278)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6115"
+       style="opacity:0.78165935;color:#000000;fill:url(#radialGradient6123);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04187703;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(0.3675679,0,0,0.2313647,6.3534448,19.105201)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6051"
+       style="opacity:1;color:#000000;fill:url(#linearGradient6097);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:3.4291203;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:4.00196743;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6099"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.3325614,0,0,0.1877503,7.2960798,20.064714)" />
+    <path
+       style="opacity:0.56768559;fill:url(#linearGradient6111);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 9.9244001,26.34066 C 9.9244001,26.34066 11.555607,29.026482 16.251108,29.026482 L 16.251108,24.997749 L 9.9396806,24.997749 L 9.9244001,26.34066 z"
+       id="path6103" />
+    <path
+       transform="matrix(0.704528,0,0,0.6001535,-2.9711354,0.536183)"
+       d="M 46.089207 25.766438 A 19.161766 19.161766 0 1 1  7.7656746,25.766438 A 19.161766 19.161766 0 1 1  46.089207 25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6216"
+       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.53786957;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.53786969;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6011"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.704528,0,0,0.6001535,-2.9711354,-0.4638168)" />
+    <path
+       transform="matrix(0.6001535,0,0,0.5218726,-0.1605969,2.0532033)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6013"
+       style="opacity:1;color:#000000;fill:url(#radialGradient6033);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.78684342;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.37387384;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6089"
+       sodipodi:cx="19.378376"
+       sodipodi:cy="17.854717"
+       sodipodi:rx="0.44991162"
+       sodipodi:ry="0.72862023"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       transform="matrix(1.4909278,0,0,0.9215439,-11.969865,6.5294779)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.67257559;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.27477477;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6015"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.6523407,0,0,0.5479662,-1.5658662,0.8808633)" />
+    <path
+       style="fill:url(#linearGradient6302);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 11.690651,25.385463 C 14.622182,26.899688 25.803902,26.716115 28.437373,18 C 28.437373,18 24.656592,27.536969 11.690651,25.385463 z"
+       id="path6039"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.9999997;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.26576574;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 21.499999,18.106655 C 21.499999,19.845455 19.185416,21.5 16.664922,21.5 C 14.144429,21.5 12.561783,20.088799 12.561783,18.35 C 12.561783,16.611199 14.607402,14.5 17.127895,14.5 C 19.648389,14.5 21.499999,16.367856 21.499999,18.106655 z"
+       id="path6055"
+       sodipodi:nodetypes="csssc" />
+    <path
+       style="color:#000000;fill:url(#radialGradient6290);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 20.500001,17.800001 C 20.500001,19.290401 18.484,20.500001 16.000001,20.500001 C 13.516001,20.500001 11.5,19.290401 11.5,17.800001 C 11.5,16.3096 13.516001,14.500001 16.000001,14.500001 C 18.484,14.500001 20.500001,16.3096 20.500001,17.800001 z"
+       id="path6047"
+       sodipodi:nodetypes="csssc" />
+    <path
+       transform="matrix(1.4909278,0,0,0.9215439,-13.982223,6.5294779)"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       sodipodi:ry="0.72862023"
+       sodipodi:rx="0.44991162"
+       sodipodi:cy="17.854717"
+       sodipodi:cx="19.378376"
+       id="path6087"
+       style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.37387384;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6083"
+       sodipodi:cx="19.378376"
+       sodipodi:cy="17.854717"
+       sodipodi:rx="0.44991162"
+       sodipodi:ry="0.72862023"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       transform="matrix(1.1113294,0,0,0.9215439,-6.0357588,6.8746387)" />
+    <path
+       transform="matrix(1.1113294,0,0,0.9215439,-4.0357588,6.8746387)"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       sodipodi:ry="0.72862023"
+       sodipodi:rx="0.44991162"
+       sodipodi:cy="17.854717"
+       sodipodi:cx="19.378376"
+       id="path6085"
+       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <g
+       id="g6029">
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 29.5,9.596807 L 29.5,1.5"
+         id="path5052"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6023"
+         d="M 19.5,10.596807 L 19.5,2.5"
+         style="fill:none;fill-rule:evenodd;stroke:#ce5c00;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:1"
+         d="M 19.5,2.5000002 L 29.5,1.4999998"
+         id="path6025"
+         sodipodi:nodetypes="cc" />
+      <path
+         transform="matrix(0.7698254,0,0,1.0621027,-7.0140504,-6.8574932)"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6125"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.10591173;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:1.10932291;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6127"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         transform="matrix(0.7650983,0,0,1.0621027,3.1548997,-7.8574931)" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 19.5,10.548403 L 19.5,2.4515964"
+         id="path6163" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6165"
+         d="M 29.5,9.596807 L 29.5,1.5"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 19.5,2.5 L 29.499999,1.5"
+         id="path6167"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.91454017;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6188"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         transform="matrix(0.5100655,0,0,0.5348658,1.269933,2.2481411)" />
+      <path
+         transform="matrix(0.5100655,0,0,0.5348658,11.269932,1.2481419)"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6190"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.91454005;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6192"
+         d="M 19.5,2.5000002 L 29.5,1.4999998"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         id="path6212"
+         d="M 19.5,10.550799 L 19.5,2.4976027"
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999952;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 29.5,9.596807 L 29.5,1.4999998"
+         id="path6214"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <path
+       transform="matrix(5.2509619e-2,0,0,3.0998156e-2,14.592227,15.607309)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6206"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6208"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(7.8280879e-2,0,0,5.2187263e-2,12.392096,16.65532)" />
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/32x32/status/Makefile.am b/panels/sound/data/icons/32x32/status/Makefile.am
new file mode 100644
index 0000000..24d4e98
--- /dev/null
+++ b/panels/sound/data/icons/32x32/status/Makefile.am
@@ -0,0 +1,21 @@
+NULL =
+
+themedir = $(pkgdatadir)/icons/hicolor
+size = 32x32
+context = status
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	audio-input-microphone-high.png		\
+	audio-input-microphone-low.png		\
+	audio-input-microphone-medium.png	\
+	audio-input-microphone-muted.png	\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/32x32/status/audio-input-microphone-high.png b/panels/sound/data/icons/32x32/status/audio-input-microphone-high.png
new file mode 100644
index 0000000..dc72881
Binary files /dev/null and b/panels/sound/data/icons/32x32/status/audio-input-microphone-high.png differ
diff --git a/panels/sound/data/icons/32x32/status/audio-input-microphone-low.png b/panels/sound/data/icons/32x32/status/audio-input-microphone-low.png
new file mode 100644
index 0000000..467fff6
Binary files /dev/null and b/panels/sound/data/icons/32x32/status/audio-input-microphone-low.png differ
diff --git a/panels/sound/data/icons/32x32/status/audio-input-microphone-medium.png b/panels/sound/data/icons/32x32/status/audio-input-microphone-medium.png
new file mode 100644
index 0000000..8291c5c
Binary files /dev/null and b/panels/sound/data/icons/32x32/status/audio-input-microphone-medium.png differ
diff --git a/panels/sound/data/icons/32x32/status/audio-input-microphone-muted.png b/panels/sound/data/icons/32x32/status/audio-input-microphone-muted.png
new file mode 100644
index 0000000..fda01ac
Binary files /dev/null and b/panels/sound/data/icons/32x32/status/audio-input-microphone-muted.png differ
diff --git a/panels/sound/data/icons/48x48/Makefile.am b/panels/sound/data/icons/48x48/Makefile.am
new file mode 100644
index 0000000..237e209
--- /dev/null
+++ b/panels/sound/data/icons/48x48/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = apps
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/48x48/apps/Makefile.am b/panels/sound/data/icons/48x48/apps/Makefile.am
new file mode 100644
index 0000000..8c80e3c
--- /dev/null
+++ b/panels/sound/data/icons/48x48/apps/Makefile.am
@@ -0,0 +1,18 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = 48x48
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			 	      	\
+	multimedia-volume-control.png		\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/48x48/apps/multimedia-volume-control.png b/panels/sound/data/icons/48x48/apps/multimedia-volume-control.png
new file mode 100644
index 0000000..61dd43b
Binary files /dev/null and b/panels/sound/data/icons/48x48/apps/multimedia-volume-control.png differ
diff --git a/panels/sound/data/icons/48x48/status/audio-input-microphone-high.png b/panels/sound/data/icons/48x48/status/audio-input-microphone-high.png
new file mode 100644
index 0000000..e26b9d9
Binary files /dev/null and b/panels/sound/data/icons/48x48/status/audio-input-microphone-high.png differ
diff --git a/panels/sound/data/icons/48x48/status/audio-input-microphone-low.png b/panels/sound/data/icons/48x48/status/audio-input-microphone-low.png
new file mode 100644
index 0000000..4de2d5b
Binary files /dev/null and b/panels/sound/data/icons/48x48/status/audio-input-microphone-low.png differ
diff --git a/panels/sound/data/icons/48x48/status/audio-input-microphone-medium.png b/panels/sound/data/icons/48x48/status/audio-input-microphone-medium.png
new file mode 100644
index 0000000..7cae08a
Binary files /dev/null and b/panels/sound/data/icons/48x48/status/audio-input-microphone-medium.png differ
diff --git a/panels/sound/data/icons/48x48/status/audio-input-microphone-muted.png b/panels/sound/data/icons/48x48/status/audio-input-microphone-muted.png
new file mode 100644
index 0000000..ba3ddf9
Binary files /dev/null and b/panels/sound/data/icons/48x48/status/audio-input-microphone-muted.png differ
diff --git a/panels/sound/data/icons/Makefile.am b/panels/sound/data/icons/Makefile.am
new file mode 100644
index 0000000..35e2de2
--- /dev/null
+++ b/panels/sound/data/icons/Makefile.am
@@ -0,0 +1,12 @@
+NULL =
+
+SUBDIRS = \
+	scalable	\
+	16x16		\
+	22x22		\
+	24x24		\
+	32x32		\
+	48x48		\
+	$(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/render-icon-theme.py b/panels/sound/data/icons/render-icon-theme.py
new file mode 100755
index 0000000..9e6a476
--- /dev/null
+++ b/panels/sound/data/icons/render-icon-theme.py
@@ -0,0 +1,169 @@
+#!/usr/bin/env python
+
+import os
+import sys
+import xml.sax
+import subprocess
+
+INKSCAPE = '/usr/bin/inkscape'
+OPTIPNG = '/usr/bin/optipng'
+SRC = os.path.join('.', 'src')
+
+inkscape_process = None
+
+def optimize_png(png_file):
+    if os.path.exists(OPTIPNG):
+        process = subprocess.Popen([OPTIPNG, '-quiet', '-o7', png_file])
+        process.wait()
+
+def wait_for_prompt(process, command=None):
+    if command is not None:
+        process.stdin.write(command+'\n')
+
+    # This is kinda ugly ...
+    # Wait for just a '>', or '\n>' if some other char appearead first
+    output = process.stdout.read(1)
+    if output == '>':
+        return
+
+    output += process.stdout.read(1)
+    while output != "\n>":
+        output += process.stdout.read(1)
+        output = output[1:]
+
+def start_inkscape():
+    process = subprocess.Popen([INKSCAPE, '--shell'], bufsize=0, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
+    wait_for_prompt(process)
+    return process
+
+def inkscape_render_rect(icon_file, rect, output_file):
+    global inkscape_process
+    if inkscape_process is None:
+        inkscape_process = start_inkscape()
+    wait_for_prompt(inkscape_process, '%s -i %s -e %s' % (icon_file, rect, output_file))
+    optimize_png(output_file)
+
+class ContentHandler(xml.sax.ContentHandler):
+    ROOT = 0
+    SVG = 1
+    LAYER = 2
+    OTHER = 3
+    TEXT = 4
+    def __init__(self, path, force=False, filter=None):
+        self.stack = [self.ROOT]
+        self.inside = [self.ROOT]
+        self.path = path
+        self.rects = []
+        self.state = self.ROOT
+        self.chars = ""
+        self.force = force
+        self.filter = filter
+
+    def endDocument(self):
+        pass
+
+    def startElement(self, name, attrs):
+        if self.inside[-1] == self.ROOT:
+            if name == "svg":
+                self.stack.append(self.SVG)
+                self.inside.append(self.SVG)
+                return
+        elif self.inside[-1] == self.SVG:
+            if (name == "g" and attrs.has_key('inkscape:groupmode') and attrs.has_key('inkscape:label')
+               and attrs['inkscape:groupmode'] == 'layer' and attrs['inkscape:label'].startswith('baseplate')):
+                self.stack.append(self.LAYER)
+                self.inside.append(self.LAYER)
+                self.context = None
+                self.icon_name = None
+                self.rects = []
+                return
+        elif self.inside[-1] == self.LAYER:
+            if name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'context':
+                self.stack.append(self.TEXT)
+                self.inside.append(self.TEXT)
+                self.text='context'
+                self.chars = ""
+                return
+            elif name == "text" and attrs.has_key('inkscape:label') and attrs['inkscape:label'] == 'icon-name':
+                self.stack.append(self.TEXT)
+                self.inside.append(self.TEXT)
+                self.text='icon-name'
+                self.chars = ""
+                return
+            elif name == "rect":
+                self.rects.append(attrs)
+
+        self.stack.append(self.OTHER)
+
+
+    def endElement(self, name):
+        stacked = self.stack.pop()
+        if self.inside[-1] == stacked:
+            self.inside.pop()
+
+        if stacked == self.TEXT and self.text is not None:
+            assert self.text in ['context', 'icon-name']
+            if self.text == 'context':
+                self.context = self.chars
+            elif self.text == 'icon-name':
+                self.icon_name = self.chars
+            self.text = None
+        elif stacked == self.LAYER:
+            assert self.icon_name
+            assert self.context
+
+            if self.filter is not None and not self.icon_name in self.filter:
+                return
+
+            print '%s %s' % (self.context, self.icon_name)
+            for rect in self.rects:
+                width = rect['width']
+                height = rect['height']
+                id = rect['id']
+
+                dir = os.path.join("%sx%s" % (width, height), self.context)
+                outfile = os.path.join(dir, self.icon_name+'.png')
+                if not os.path.exists(dir):
+                    os.makedirs(dir)
+                # Do a time based check!
+                if self.force or not os.path.exists(outfile):
+                    inkscape_render_rect(self.path, id, outfile)
+                    sys.stdout.write('.')
+                else:
+                    stat_in = os.stat(self.path)
+                    stat_out = os.stat(outfile)
+                    if stat_in.st_mtime > stat_out.st_mtime:
+                        inkscape_render_rect(self.path, id, outfile)
+                        sys.stdout.write('.')
+                    else:
+                        sys.stdout.write('-')
+                sys.stdout.flush()
+            sys.stdout.write('\n')
+            sys.stdout.flush()
+
+    def characters(self, chars):
+        self.chars += chars.strip()
+
+if len(sys.argv) == 1:
+    if not os.path.exists('gnome'):
+        os.mkdir('gnome')
+    print 'Rendering from SVGs in %s' % SRC
+    for file in os.listdir(SRC):
+        if file[-4:] == '.svg':
+            file = os.path.join(SRC, file)
+            handler = ContentHandler(file)
+            xml.sax.parse(open(file), handler)
+else:
+    file = os.path.join(SRC, sys.argv[1] + '.svg')
+    if len(sys.argv) > 2:
+        icons = sys.argv[2:]
+    else:
+        icons = None
+    if os.path.exists(os.path.join(file)):
+        handler = ContentHandler(file, True, filter=icons)
+        xml.sax.parse(open(file), handler)
+    else:
+        print "Error: No such file %s" % file
+        sys.exit(1)
+
+
diff --git a/panels/sound/data/icons/scalable/Makefile.am b/panels/sound/data/icons/scalable/Makefile.am
new file mode 100644
index 0000000..eb00566
--- /dev/null
+++ b/panels/sound/data/icons/scalable/Makefile.am
@@ -0,0 +1,4 @@
+SUBDIRS = apps devices
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/scalable/apps/Makefile.am b/panels/sound/data/icons/scalable/apps/Makefile.am
new file mode 100644
index 0000000..3c97ab1
--- /dev/null
+++ b/panels/sound/data/icons/scalable/apps/Makefile.am
@@ -0,0 +1,18 @@
+NULL =
+
+themedir = $(datadir)/icons/hicolor
+size = scalable
+context = apps
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA = 			        	\
+	multimedia-volume-control.svg		\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/scalable/apps/multimedia-volume-control.svg b/panels/sound/data/icons/scalable/apps/multimedia-volume-control.svg
new file mode 100644
index 0000000..b22a954
--- /dev/null
+++ b/panels/sound/data/icons/scalable/apps/multimedia-volume-control.svg
@@ -0,0 +1,554 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://web.resource.org/cc/";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2"
+   inkscape:label="Pozadí"
+   sodipodi:version="0.32"
+   inkscape:version="0.45"
+   version="1.0"
+   sodipodi:docbase="C:\Documents and Settings\nevim\Plocha\gnome-sound-properties\scalable"
+   sodipodi:docname="gnome-sound-properties.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="C:\Documents and Settings\nevim\Plocha\git-sound.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true">
+  <defs
+     id="defs3">
+    <linearGradient
+       id="linearGradient6304"
+       inkscape:collect="always">
+      <stop
+         id="stop6306"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1" />
+      <stop
+         id="stop6308"
+         offset="1"
+         style="stop-color:#80827d;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6296">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop6298" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6300" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6117">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop6119" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop6121" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6105">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="0"
+         id="stop6107" />
+      <stop
+         id="stop6113"
+         offset="0.45209709"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop6109" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6091">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6093" />
+      <stop
+         style="stop-color:#81837e;stop-opacity:0.98648649"
+         offset="1"
+         id="stop6095" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6077">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop6079" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop6081" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6041"
+       inkscape:collect="always">
+      <stop
+         id="stop6043"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop6045"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6017">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6019" />
+      <stop
+         style="stop-color:#3465a4;stop-opacity:1"
+         offset="1"
+         id="stop6021" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6003">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop6005" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop6007" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5995">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1"
+         offset="0"
+         id="stop5997" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop5999" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5995"
+       id="linearGradient6001"
+       x1="28.203571"
+       y1="25.09193"
+       x2="21.583036"
+       y2="35.983383"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6003"
+       id="linearGradient6009"
+       x1="15.741923"
+       y1="33.116215"
+       x2="36.696983"
+       y2="22.224764"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6041"
+       id="radialGradient6033"
+       cx="29.922518"
+       cy="32.704834"
+       fx="29.922518"
+       fy="32.704834"
+       r="19.736389"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0244195,0,0,1.014266,-0.5092741,0.685707)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6017"
+       id="radialGradient6037"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="23.597727"
+       cy="19.792301"
+       fx="23.597727"
+       fy="19.792301"
+       r="19.736389" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6077"
+       id="radialGradient6049"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2463993,0,0,1.3258525,-7.2755971,-10.235034)"
+       cx="32.09296"
+       cy="33.488297"
+       fx="32.09296"
+       fy="33.488297"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6091"
+       id="linearGradient6097"
+       x1="10.602306"
+       y1="35.894798"
+       x2="47.001671"
+       y2="35.690231"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6105"
+       id="linearGradient6111"
+       x1="15.551565"
+       y1="41"
+       x2="23.73423"
+       y2="41"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6117"
+       id="radialGradient6123"
+       cx="26.927441"
+       cy="25.766438"
+       fx="26.927441"
+       fy="25.766438"
+       r="19.161766"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6304"
+       id="radialGradient6290"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4228001,0,0,0.3113668,12.39774,19.545318)"
+       cx="17.831682"
+       cy="18.914896"
+       fx="17.831682"
+       fy="18.914896"
+       r="19.736389" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6296"
+       id="linearGradient6302"
+       x1="34.825703"
+       y1="42.345951"
+       x2="28.763092"
+       y2="32.737347"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.0625"
+     inkscape:cx="66.935794"
+     inkscape:cy="36.523345"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     width="48px"
+     height="48px"
+     inkscape:showpageshadow="false"
+     showgrid="true"
+     inkscape:window-width="973"
+     inkscape:window-height="849"
+     inkscape:window-x="0"
+     inkscape:window-y="26"
+     showborder="false" />
+  <metadata
+     id="metadata6">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Sound CC applet</dc:title>
+        <dc:date>17.02.2007</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>Josef vybíral</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:identifier>http://blog.vybiral.info</dc:identifier>
+        <dc:source>http://blog.vybiral.info</dc:source>
+        <dc:coverage>sound, reproductor, note</dc:coverage>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/"; />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/";>
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice"; />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike"; />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode"; />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Repros"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <path
+       transform="matrix(1.0959323,0,0,0.8089025,-5.5106536,11.657465)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6115"
+       style="opacity:0.78165935;color:#000000;fill:url(#radialGradient6123);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.04187703;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       transform="matrix(0.5479662,0,0,0.3392172,9.2446732,29.259582)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6051"
+       style="opacity:1;color:#000000;fill:url(#linearGradient6097);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:2.31944561;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:2.65089345;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6099"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.4957789,0,0,0.2870299,10.649943,30.604261)" />
+    <path
+       style="opacity:0.56768559;fill:url(#linearGradient6111);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 14.568214,40 C 14.568214,40 17,44 24,44 L 24,38 L 14.590994,38 L 14.568214,40 z"
+       id="path6103" />
+    <path
+       transform="matrix(1.0176515,0,0,0.8871834,-3.4027508,1.6404446)"
+       d="M 46.089207 25.766438 A 19.161766 19.161766 0 1 1  7.7656746,25.766438 A 19.161766 19.161766 0 1 1  46.089207 25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6216"
+       style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.05243087;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.05243087;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6011"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(1.0176515,0,0,0.8871834,-3.4027508,0.6404459)" />
+    <path
+       transform="matrix(0.9230621,0,0,0.8089025,-0.6682001,3.1574644)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6013"
+       style="opacity:1;color:#000000;fill:url(#radialGradient6033);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.15727437;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.37387384;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6089"
+       sodipodi:cx="19.378376"
+       sodipodi:cy="17.854717"
+       sodipodi:rx="0.44991162"
+       sodipodi:ry="0.72862023"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       transform="matrix(2.2226587,0,0,1.3724571,-18.071516,10.495167)" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1150111;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.27477477;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6015"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.9632898,0,0,0.8349961,-1.9805954,1.985125)" />
+    <path
+       style="fill:url(#linearGradient6302);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 17.034171,38.999185 C 21.404465,41.254322 38.074051,40.980927 42,28 C 42,28 36.363653,42.203426 17.034171,38.999185 z"
+       id="path6039"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:0.26576574;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 31.223824,28.652367 C 31.223824,31.136367 27.928944,33.500002 24.340943,33.500002 C 20.752943,33.500002 18.499998,31.484001 18.499998,29.000001 C 18.499998,26.516 21.411999,23.5 24.999999,23.5 C 28.588,23.5 31.223824,26.168366 31.223824,28.652367 z"
+       id="path6055"
+       sodipodi:nodetypes="csssc" />
+    <path
+       style="color:#000000;fill:url(#radialGradient6290);fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:0.99999988;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 30.5,28.000001 C 30.5,30.484001 27.588,32.500002 23.999999,32.500002 C 20.411999,32.500002 17.499998,30.484001 17.499998,28.000001 C 17.499998,25.516 20.411999,22.5 23.999999,22.5 C 27.588,22.5 30.5,25.516 30.5,28.000001 z"
+       id="path6047"
+       sodipodi:nodetypes="csssc" />
+    <path
+       transform="matrix(2.2226587,0,0,1.3724571,-21.071516,10.495167)"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       sodipodi:ry="0.72862023"
+       sodipodi:rx="0.44991162"
+       sodipodi:cy="17.854717"
+       sodipodi:cx="19.378376"
+       id="path6087"
+       style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.37387384;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6083"
+       sodipodi:cx="19.378376"
+       sodipodi:cy="17.854717"
+       sodipodi:rx="0.44991162"
+       sodipodi:ry="0.72862023"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       transform="matrix(1.1113294,0,0,1.3724571,0.9642417,11.495167)" />
+    <path
+       transform="matrix(1.1113294,0,0,1.3724571,3.9642417,11.495167)"
+       d="M 19.828288,17.854717 A 0.44991162,0.72862023 0 1 1 18.928464,17.854717 A 0.44991162,0.72862023 0 1 1 19.828288,17.854717 z"
+       sodipodi:ry="0.72862023"
+       sodipodi:rx="0.44991162"
+       sodipodi:cy="17.854717"
+       sodipodi:cx="19.378376"
+       id="path6085"
+       style="opacity:1;color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999976;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.35585584;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <g
+       id="g6194"
+       transform="translate(1,-1)">
+      <path
+         sodipodi:nodetypes="cccssssccssccccssccssssssc"
+         id="path6129"
+         d="M 43.46875,1.96875 C 43.341028,1.9713959 43.211505,1.998755 43.09375,2.03125 L 29.625,3 C 29.574046,2.9958278 29.520341,2.9676689 29.46875,2.96875 C 29.027926,2.9778822 28.643139,3.1915368 28.375,3.5 C 28.202199,3.6987874 28.080462,3.9184764 28.03125,4.1875 C 28.010332,4.2875967 27.999825,4.3942071 28,4.5 C 28.000051,4.5307141 27.998058,4.562684 28,4.59375 L 28,18.5 C 27.99235,19.040954 28.282754,19.53979 28.75,19.8125 C 29.217247,20.085209 29.782753,20.085209 30.25,19.8125 C 30.717246,19.53979 31.00765,19.040954 31,18.5 L 31,7.90625 L 42,7.125 L 42,17.5 C 41.99235,18.040954 42.282754,18.53979 42.75,18.8125 C 43.217247,19.085209 43.782753,19.085209 44.25,18.8125 C 44.717246,18.53979 45.00765,18.040954 45,17.5 L 45,3.71875 C 45.009715,3.6495233 45.000118,3.5716662 45,3.5 C 45.000636,3.4696526 45.001192,3.4364034 45,3.40625 C 44.993528,3.3026966 44.963584,3.1901475 44.9375,3.09375 C 44.91387,3.0012937 44.884391,2.9299172 44.84375,2.84375 C 44.80019,2.7563932 44.746
 4,2.670181 44.6875,2.59375 C 44.644141,2.5354224 44.614528,2.4582776 44.5625,2.40625 C 44.273456,2.1172076 43.877428,1.960186 43.46875,1.96875 z"
+         style="fill:#ce5c00;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         transform="matrix(1.1476473,0,0,1.3276281,-10.517647,-3.9468619)"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6125"
+         style="opacity:1;color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.81013507;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="opacity:1;color:#000000;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.81013507;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6127"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         transform="matrix(1.1476473,0,0,1.3276281,3.4823534,-4.9468619)" />
+      <path
+         sodipodi:nodetypes="cc"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 29.5,19.5 L 29.5,4.5"
+         id="path6163" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6165"
+         d="M 43.5,18.5 L 43.5,3.5"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="M 29.5,4.5 L 43.5,3.5"
+         id="path6167"
+         sodipodi:nodetypes="cc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6186"
+         d="M 29.5,6.5 L 43.5,5.5"
+         style="fill:none;fill-rule:evenodd;stroke:#f57900;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+      <path
+         sodipodi:type="arc"
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1859163;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6188"
+         sodipodi:cx="31.819572"
+         sodipodi:cy="17.284103"
+         sodipodi:rx="3.9210651"
+         sodipodi:ry="1.8830575"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         transform="matrix(0.8926147,0,0,0.7965768,-2.4026189,5.2318838)" />
+      <path
+         transform="matrix(0.8926146,0,0,0.7965769,11.597384,4.2318822)"
+         d="M 35.740638,17.284103 A 3.9210651,1.8830575 0 1 1 27.898507,17.284103 A 3.9210651,1.8830575 0 1 1 35.740638,17.284103 z"
+         sodipodi:ry="1.8830575"
+         sodipodi:rx="3.9210651"
+         sodipodi:cy="17.284103"
+         sodipodi:cx="31.819572"
+         id="path6190"
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.18591619;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="cc"
+         id="path6192"
+         d="M 29.5,4.5 L 43.5,3.5"
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         id="path6212"
+         d="M 29.5,19.5 L 29.5,4.5"
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:nodetypes="cc" />
+      <path
+         style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999964;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0.32882882;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 43.5,18.5 L 43.5,3.5"
+         id="path6214"
+         sodipodi:nodetypes="cc" />
+    </g>
+    <path
+       transform="matrix(7.8280762e-2,0,0,4.6165615e-2,23.392097,23.925862)"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       sodipodi:ry="19.161766"
+       sodipodi:rx="19.161766"
+       sodipodi:cy="25.766438"
+       sodipodi:cx="26.927441"
+       id="path6206"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       sodipodi:type="arc" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:#000000;fill:#eeeeee;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:3.54301095;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path6208"
+       sodipodi:cx="26.927441"
+       sodipodi:cy="25.766438"
+       sodipodi:rx="19.161766"
+       sodipodi:ry="19.161766"
+       d="M 46.089207,25.766438 A 19.161766,19.161766 0 1 1 7.7656746,25.766438 A 19.161766,19.161766 0 1 1 46.089207,25.766438 z"
+       transform="matrix(0.1043744,0,0,7.828089e-2,19.189462,25.48298)" />
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/Makefile.am b/panels/sound/data/icons/scalable/devices/Makefile.am
new file mode 100644
index 0000000..404f6e5
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/Makefile.am
@@ -0,0 +1,35 @@
+NULL =
+
+themedir = $(pkgdatadir)/icons/hicolor
+size = 48x48
+context = devices
+
+iconsdir = $(themedir)/$(size)/$(context)
+
+icons_DATA =					\
+	audio-speaker-center.svg		\
+	audio-speaker-center-testing.svg	\
+	audio-speaker-left-back.svg		\
+	audio-speaker-left-back-testing.svg	\
+	audio-speaker-left.svg			\
+	audio-speaker-left-side.svg		\
+	audio-speaker-left-side-testing.svg	\
+	audio-speaker-left-testing.svg		\
+	audio-speaker-right-back.svg		\
+	audio-speaker-right-back-testing.svg	\
+	audio-speaker-right.svg			\
+	audio-speaker-right-side.svg		\
+	audio-speaker-right-side-testing.svg	\
+	audio-speaker-right-testing.svg		\
+	audio-speaker-center-back-testing.svg	\
+	audio-speaker-center-back.svg		\
+	audio-subwoofer.svg			\
+	audio-subwoofer-testing.svg		\
+	$(NULL)
+
+EXTRA_DIST =		\
+	$(icons_DATA)	\
+	$(NULL)
+
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-center-back-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-center-back-testing.svg
new file mode 100644
index 0000000..6b067d6
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-center-back-testing.svg
@@ -0,0 +1,539 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   version="1.0"
+   sodipodi:docname="audio-speaker-center-back-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-side-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="977"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-center-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(1,0,0,-1,-50.334601,47.958369)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="m 64.325669,10.506413 c 6.07143,-3.4821397 13.14286,-3.3928497 19.39286,0 l 2,4.39286 -23.39286,0 2,-4.39286 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="m 95.897099,27.934983 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.50204,-0.36286 -1.00946,-0.68239 -1.51919,-0.94787 -0.56896,-0.29634 -1.14078,-0.52533 -1.71117,-0.67205 -3.88321,-1.01934 -11.71652,-1.06249 -15.58966,-0.04613 -0.83989,0.21914 -1.6816,0.61173 -2.51203,1.13191 -0.62524,0.39166 -1.24409,0.85564 -1.85095,1.37236 -1.87112,1.5932 -3.628309,3.68784 -5.107769,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875"
+         style="fill:none;stroke:none"
+         id="path8494" />
+      <path
+         style="fill:none;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 62.827469,15.979023 2.18704,-4.766 c 5.261057,-2.7432797 11.220313,-3.3671697 17.939063,-0.0056 l 1.96851,4.2035"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="m 95.001579,28.523883 c 0,0 -6.30803,-12.92857 -13.07068,-14.66816 -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613 -6.84412,1.78572 -11.839659,12.46429 -11.839659,12.46429"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="m 43.214285,32.24107 c 0,2.736768 -9.374038,4.955357 -20.9375,4.955357 -11.563462,0 -20.9375001,-2.218589 -20.9375001,-4.955357 0,-2.736768 9.3740381,-4.955357 20.9375001,-4.955357 11.563462,0 20.9375,2.218589 20.9375,4.955357 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="m 95.16001,29.859216 c 0.1894,4.408221 -8.80985,9.066057 -20.909493,9.066057 -12.099643,0 -21.130461,-4.594701 -20.90949,-9.066057 -0.189403,-4.566056 8.809847,-9.034489 20.90949,-9.034489 12.099643,0 20.941063,4.37373 20.909493,9.034489 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 82.142459,27.943913 c -0.67407,2.18776 -3.2897,3.38538 -7.80786,3.38538 -4.51815,0 -7.3487,-1.37717 -7.80786,-3.38538 -0.07073,-1.70502 3.28971,-3.37359 7.80786,-3.37359 4.51816,0 7.81965,1.63321 7.80786,3.37359 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 67.476989,27.764793 c 0.9704,3.07926 3.66898,5.29604 6.84343,5.29605 3.19412,0 5.90648,-2.24438 6.86128,-5.35345 -0.90064,-1.50063 -4.28117,-2.23685 -6.89061,-2.19358 -3.30434,-0.08574 -5.85648,0.85968 -6.8141,2.25098 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 62.722179,14.847493 c -0.12704,0.1026 -0.3786,0.39515 -0.50465,0.50248 -1.87112,1.5932 -3.628309,3.68784 -5.107769,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875 m 43.124999,0 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.10052,-0.07265 -0.648157,-0.29253 -0.749077,-0.36162"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 81.930899,13.855723 c -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-center-back.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-center-back.svg
new file mode 100644
index 0000000..2d162c4
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-center-back.svg
@@ -0,0 +1,506 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.47 r22583"
+   version="1.0"
+   sodipodi:docname="audio-speaker-center-back.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-53.025818"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="977"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     showguides="false"
+     inkscape:guide-bbox="true"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>center</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-center</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(1,0,0,-1,-0.04163061,47.958369)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="m 14.032699,10.506413 c 6.07143,-3.4821397 13.14286,-3.3928497 19.39286,0 l 2,4.39286 -23.39286,0 2,-4.39286 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="m 45.604129,27.934983 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.50204,-0.36286 -1.00946,-0.68239 -1.51919,-0.94787 -0.56896,-0.29634 -1.14078,-0.52533 -1.71117,-0.67205 -3.88321,-1.01934 -11.71652,-1.06249 -15.58966,-0.04613 -0.83989,0.21914 -1.6816,0.61173 -2.51203,1.13191 -0.62524,0.39166 -1.24409,0.85564 -1.85095,1.37236 -1.87112,1.5932 -3.6283094,3.68784 -5.1077694,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none"
+         id="path5367" />
+      <path
+         style="fill:none;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 12.534499,15.979023 2.18704,-4.766 c 5.261057,-2.7432797 11.220313,-3.3671697 17.939063,-0.0056 l 1.96851,4.2035"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="m 44.708609,28.523883 c 0,0 -6.30803,-12.92857 -13.07068,-14.66816 -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613 -6.8441198,1.78572 -11.8396594,12.46429 -11.8396594,12.46429"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="m 43.214285,32.24107 c 0,2.736768 -9.374038,4.955357 -20.9375,4.955357 -11.563462,0 -20.9375001,-2.218589 -20.9375001,-4.955357 0,-2.736768 9.3740381,-4.955357 20.9375001,-4.955357 11.563462,0 20.9375,2.218589 20.9375,4.955357 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 44.951119,29.943913 c 0.18941,4.40822 -8.80985,9.06606 -20.90949,9.06606 -12.09964,0 -21.1304594,-4.5947 -20.9094894,-9.06606 -0.1894,-4.56606 8.8098494,-9.03449 20.9094894,-9.03449 12.09964,0 20.94106,4.37373 20.90949,9.03449 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 31.849489,27.943913 c -0.67407,2.18776 -3.2897,3.38538 -7.80786,3.38538 -4.51815,0 -7.3487,-1.37717 -7.80786,-3.38538 -0.07073,-1.70502 3.28971,-3.37359 7.80786,-3.37359 4.51816,0 7.81965,1.63321 7.80786,3.37359 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="m 17.184019,27.764793 c 0.9704,3.07926 3.66898,5.29604 6.84343,5.29605 3.19412,0 5.90648,-2.24438 6.86128,-5.35345 -0.90064,-1.50063 -4.28117,-2.23685 -6.89061,-2.19358 -3.30434,-0.08574 -5.85648,0.85968 -6.8141,2.25098 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 12.429209,14.847493 c -0.12704,0.1026 -0.3786,0.39515 -0.50465,0.50248 -1.87112,1.5932 -3.6283094,3.68784 -5.1077694,5.71001 -2.59659,3.54911 -4.33766,6.875 -4.33766,6.875 m 43.1249994,0 c 0,0 -4.54743,-8.68677 -9.8613,-12.93926 -0.21063,-0.16856 -0.42247,-0.33016 -0.63527,-0.48397 -0.10052,-0.07265 -0.648157,-0.29253 -0.749077,-0.36162"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 31.637929,13.855723 c -3.88321,-1.01933 -11.18527,-1.06248 -15.05841,-0.04613"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-center-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-center-testing.svg
new file mode 100644
index 0000000..544384a
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-center-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-center-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-side-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>center</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-center-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="translate(-50.334601,4.1631076e-2)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-center.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-center.svg
new file mode 100644
index 0000000..77426fd
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-center.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-center.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-53.025818"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="25"
+     inkscape:window-y="21"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>center</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-center</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="translate(-4.1630606e-2,4.1631076e-2)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left-back-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left-back-testing.svg
new file mode 100644
index 0000000..4ab4a37
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left-back-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left-back-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left-back</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left-b-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,57.052876,95.851156)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left-back.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left-back.svg
new file mode 100644
index 0000000..f82c536
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left-back.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left-back.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-53.376308"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left-back</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left-back</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,21.490375,60.288654)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left-side-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left-side-testing.svg
new file mode 100644
index 0000000..1d06aa9
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left-side-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left-side-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-right-side-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left-side</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left-side-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(0,-1,1,0,4.1631076e-2,98.334601)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left-side.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left-side.svg
new file mode 100644
index 0000000..bfbd3a3
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left-side.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left-side.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-side.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-15.988037"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left-side</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left-side</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(0,-1,1,0,4.1631076e-2,48.041631)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left-testing.svg
new file mode 100644
index 0000000..947c2e8
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-back-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(-0.7071068,0.7071068,0.7071068,0.7071068,57.052876,-47.851155)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-left.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-left.svg
new file mode 100644
index 0000000..a908044
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-left.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-left.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-right.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-53.376308"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>left</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-left</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(-0.7071068,0.7071068,0.7071068,0.7071068,21.490375,-12.288654)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right-back-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right-back-testing.svg
new file mode 100644
index 0000000..a641a4a
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right-back-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right-back-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-back-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right-back</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-back-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,-9.0528759,95.851156)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right-back.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right-back.svg
new file mode 100644
index 0000000..0512464
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right-back.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right-back.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-left-back.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-53.376308"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right-back</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-back</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(0.7071068,-0.7071068,-0.7071068,-0.7071068,26.509625,60.288654)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right-side-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right-side-testing.svg
new file mode 100644
index 0000000..a15a08f
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right-side-testing.svg
@@ -0,0 +1,537 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right-side-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-right-back-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right-side</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-side-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(0,-1,-1,0,47.958369,98.334601)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right-side.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right-side.svg
new file mode 100644
index 0000000..1419c02
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right-side.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right-side.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-right-back.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-15.988037"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right-side</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-side</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(0,-1,-1,0,47.958369,48.041631)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right-testing.svg
new file mode 100644
index 0000000..9d84820
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right-testing.svg
@@ -0,0 +1,913 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker-right-testing.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5941"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(11.322482,0,0,3.7410569,-790.12434,122.56351)"
+       cx="14.790665"
+       cy="29.860626"
+       fx="14.790665"
+       fy="29.860626"
+       r="1.1399525" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5939"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(10.171038,0,0,5.2502725,-797.43964,77.21735)"
+       cx="17.797972"
+       cy="29.948833"
+       fx="17.797972"
+       fy="29.948833"
+       r="1.945146" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6377">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6379" />
+      <stop
+         style="stop-color:#204a87;stop-opacity:1"
+         offset="1"
+         id="stop6381" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5937"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(15.4058,0,0,6.5714191,-930.81786,37.58535)"
+       cx="20.818829"
+       cy="29.948536"
+       fx="20.818829"
+       fy="29.948536"
+       r="2.5451017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5935"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)"
+       x1="21.875"
+       y1="9.6335878"
+       x2="20.5"
+       y2="41.744865" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5933"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)"
+       x1="20.087172"
+       y1="6.6629219"
+       x2="20.91938"
+       y2="38.337017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6831088,0,0,1.0329054,-652.67404,212.26374)"
+       x1="4.5961943"
+       y1="14.456622"
+       x2="4.5961943"
+       y2="30.313524" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5929"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7679166,0,0,1.687933,-652.72155,185.35433)"
+       x1="2.6850162"
+       y1="24.367676"
+       x2="2.9248238"
+       y2="35.053852" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient21582">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop21584" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop21586" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21582"
+       id="linearGradient5927"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.2565202,-654.12827,206.16954)"
+       x1="21.875"
+       y1="26.625"
+       x2="18.187626"
+       y2="26" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient21598">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop21600" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop21602" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21598"
+       id="linearGradient5925"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7830101,0,0,0.9810567,-652.01527,212.32101)"
+       x1="12.25"
+       y1="19.75"
+       x2="10.875"
+       y2="33.125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="radialGradient5923"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
+       cx="7.001297"
+       cy="22.470087"
+       fx="7.001297"
+       fy="22.470087"
+       r="6.4940691" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10872"
+       id="linearGradient5921"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.0172401,-654.21562,212.46274)"
+       x1="3.8890872"
+       y1="18.937069"
+       x2="3.8890872"
+       y2="25.947107" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5919"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)"
+       x1="11.875"
+       y1="20.375"
+       x2="13.125"
+       y2="34.13559" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6371"
+       id="linearGradient5917"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)"
+       x1="14.241117"
+       y1="26.996773"
+       x2="15.125"
+       y2="20.976084" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21608"
+       id="linearGradient5915"
+       gradientUnits="userSpaceOnUse"
+       x1="23.272787"
+       y1="18.525478"
+       x2="23.272787"
+       y2="22.811184" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15341"
+       id="radialGradient5913"
+       gradientUnits="userSpaceOnUse"
+       cx="22.624176"
+       cy="20.880224"
+       fx="22.624176"
+       fy="20.880224"
+       r="3.3177083" />
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3529"
+       id="radialGradient5911"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)"
+       cx="7.9549513"
+       cy="19.436747"
+       fx="7.9549513"
+       fy="19.436747"
+       r="6.4523492" />
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3529"
+       id="radialGradient5708"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)"
+       cx="7.9549513"
+       cy="19.436747"
+       fx="7.9549513"
+       fy="19.436747"
+       r="6.4523492" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15341"
+       id="radialGradient5710"
+       gradientUnits="userSpaceOnUse"
+       cx="22.624176"
+       cy="20.880224"
+       fx="22.624176"
+       fy="20.880224"
+       r="3.3177083" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21608"
+       id="linearGradient5712"
+       gradientUnits="userSpaceOnUse"
+       x1="23.272787"
+       y1="18.525478"
+       x2="23.272787"
+       y2="22.811184" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="radialGradient5720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
+       cx="7.001297"
+       cy="22.470087"
+       fx="7.001297"
+       fy="22.470087"
+       r="6.4940691" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5744"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-8.0062038,8.0062038,-2.6453267,-2.6453267,292.61535,-42.156174)"
+       cx="14.790665"
+       cy="29.860626"
+       fx="14.790665"
+       fy="29.860626"
+       r="1.1399525" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5747"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-7.1920099,7.1920099,-3.7125033,-3.7125033,329.85262,-15.264295)"
+       cx="17.797972"
+       cy="29.948833"
+       fx="17.797972"
+       fy="29.948833"
+       r="1.945146" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5750"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-10.893546,10.893546,-4.646695,-4.646695,452.18932,-81.552883)"
+       cx="20.818829"
+       cy="29.948536"
+       fx="20.818829"
+       fy="29.948536"
+       r="2.5451017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5753"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)"
+       x1="20.087172"
+       y1="6.6629219"
+       x2="20.91938"
+       y2="38.337017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5755"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)"
+       x1="21.875"
+       y1="9.6335878"
+       x2="20.5"
+       y2="41.744865" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5758"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7679166,0,0,1.687933,56.52845,-48.50785)"
+       x1="2.6850162"
+       y1="24.367676"
+       x2="2.9248238"
+       y2="35.053852" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5760"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6831088,0,0,1.0329054,56.57596,-21.59844)"
+       x1="4.5961943"
+       y1="14.456622"
+       x2="4.5961943"
+       y2="30.313524" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21582"
+       id="linearGradient5763"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.2565202,55.12173,-27.69264)"
+       x1="21.875"
+       y1="26.625"
+       x2="18.187626"
+       y2="26" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21598"
+       id="linearGradient5766"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7830101,0,0,0.9810567,57.23473,-21.54117)"
+       x1="12.25"
+       y1="19.75"
+       x2="10.875"
+       y2="33.125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10872"
+       id="linearGradient5770"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.0172401,55.03438,-21.39944)"
+       x1="3.8890872"
+       y1="18.937069"
+       x2="3.8890872"
+       y2="25.947107" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6371"
+       id="linearGradient5773"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)"
+       x1="14.241117"
+       y1="26.996773"
+       x2="15.125"
+       y2="20.976084" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5775"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)"
+       x1="11.875"
+       y1="20.375"
+       x2="13.125"
+       y2="34.13559" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5928"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,-9.0528759,-47.851156)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-right.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-right.svg
new file mode 100644
index 0000000..04b30a0
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-right.svg
@@ -0,0 +1,504 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-right.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-speaker.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient7260"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.516569,40.378763)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="5.6568542"
+     inkscape:cx="-90.590866"
+     inkscape:cy="20.556657"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1601"
+     inkscape:window-height="942"
+     inkscape:window-x="5"
+     inkscape:window-y="1"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g7248"
+       transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,26.509625,-12.288654)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path5365"
+         d="M 14.032699,10.506413 C 20.104129,7.0242733 27.175559,7.1135633 33.425559,10.506413 L 35.425559,14.899273 L 12.032699,14.899273 L 14.032699,10.506413 z"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 34.605519,14.148893 34.098099,13.829363 33.588369,13.563883 C 33.019409,13.267543 32.447589,13.038553 31.877199,12.891833 C 27.993989,11.872493 20.160679,11.829343 16.287539,12.845703 C 15.447649,13.064843 14.605939,13.457433 13.775509,13.977613 C 13.150269,14.369273 12.531419,14.833253 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983"
+         style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5367" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#888a83;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 12.534499,15.979023 L 14.721539,11.213023 C 19.982596,8.4697433 25.941852,7.8458533 32.660602,11.207463 L 34.629112,15.410963"
+         id="path5369"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 44.708609,28.523883 C 44.708609,28.523883 38.400579,15.595313 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593 C 9.7353992,15.595313 4.7398596,26.273883 4.7398596,26.273883"
+         style="fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path5371" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,0.7198796,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path5373"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:url(#radialGradient7260);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 44.951119,29.943913 C 45.140529,34.352133 36.141269,39.009973 24.041629,39.009973 C 11.941989,39.009973 2.9111696,34.415273 3.1321396,29.943913 C 2.9427396,25.377853 11.941989,20.909423 24.041629,20.909423 C 36.141269,20.909423 44.982689,25.283153 44.951119,29.943913 z"
+         id="path5375"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 31.849489,27.943913 C 31.175419,30.131673 28.559789,31.329293 24.041629,31.329293 C 19.523479,31.329293 16.692929,29.952123 16.233769,27.943913 C 16.163039,26.238893 19.523479,24.570323 24.041629,24.570323 C 28.559789,24.570323 31.861279,26.203533 31.849489,27.943913 z"
+         id="path5377"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 17.184019,27.764793 C 18.154419,30.844053 20.852999,33.060833 24.027449,33.060843 C 27.221569,33.060843 29.933929,30.816463 30.888729,27.707393 C 29.988089,26.206763 26.607559,25.470543 23.998119,25.513813 C 20.693779,25.428073 18.141639,26.373493 17.184019,27.764793 z"
+         id="path5379"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path5381"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 12.429209,14.847493 C 12.302169,14.950093 12.050609,15.242643 11.924559,15.349973 C 10.053439,16.943173 8.2962496,19.037813 6.8167896,21.059983 C 4.2201996,24.609093 2.4791296,27.934983 2.4791296,27.934983 M 45.604129,27.934983 C 45.604129,27.934983 41.056699,19.248213 35.742829,14.995723 C 35.532199,14.827163 35.320359,14.665563 35.107559,14.511753 C 35.007039,14.439103 34.459402,14.219223 34.358482,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path5383"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 31.637929,13.855723 C 27.754719,12.836393 20.452659,12.793243 16.579519,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-speaker-testing.svg b/panels/sound/data/icons/scalable/devices/audio-speaker-testing.svg
new file mode 100644
index 0000000..79b1ff2
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-speaker-testing.svg
@@ -0,0 +1,913 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-speaker-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_speaker.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5941"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(11.322482,0,0,3.7410569,-790.12434,122.56351)"
+       cx="14.790665"
+       cy="29.860626"
+       fx="14.790665"
+       fy="29.860626"
+       r="1.1399525" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5939"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(10.171038,0,0,5.2502725,-797.43964,77.21735)"
+       cx="17.797972"
+       cy="29.948833"
+       fx="17.797972"
+       fy="29.948833"
+       r="1.945146" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient6377">
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1"
+         offset="0"
+         id="stop6379" />
+      <stop
+         style="stop-color:#204a87;stop-opacity:1"
+         offset="1"
+         id="stop6381" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5937"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(15.4058,0,0,6.5714191,-930.81786,37.58535)"
+       cx="20.818829"
+       cy="29.948536"
+       fx="20.818829"
+       fy="29.948536"
+       r="2.5451017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5935"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)"
+       x1="21.875"
+       y1="9.6335878"
+       x2="20.5"
+       y2="41.744865" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5933"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,-677.47231,206.91558)"
+       x1="20.087172"
+       y1="6.6629219"
+       x2="20.91938"
+       y2="38.337017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5931"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6831088,0,0,1.0329054,-652.67404,212.26374)"
+       x1="4.5961943"
+       y1="14.456622"
+       x2="4.5961943"
+       y2="30.313524" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5929"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7679166,0,0,1.687933,-652.72155,185.35433)"
+       x1="2.6850162"
+       y1="24.367676"
+       x2="2.9248238"
+       y2="35.053852" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient21582">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop21584" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop21586" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21582"
+       id="linearGradient5927"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.2565202,-654.12827,206.16954)"
+       x1="21.875"
+       y1="26.625"
+       x2="18.187626"
+       y2="26" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient21598">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop21600" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop21602" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21598"
+       id="linearGradient5925"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7830101,0,0,0.9810567,-652.01527,212.32101)"
+       x1="12.25"
+       y1="19.75"
+       x2="10.875"
+       y2="33.125" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="radialGradient5923"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
+       cx="7.001297"
+       cy="22.470087"
+       fx="7.001297"
+       fy="22.470087"
+       r="6.4940691" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10872"
+       id="linearGradient5921"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.0172401,-654.21562,212.46274)"
+       x1="3.8890872"
+       y1="18.937069"
+       x2="3.8890872"
+       y2="25.947107" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5919"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)"
+       x1="11.875"
+       y1="20.375"
+       x2="13.125"
+       y2="34.13559" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6371"
+       id="linearGradient5917"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,-655.42965,207.54612)"
+       x1="14.241117"
+       y1="26.996773"
+       x2="15.125"
+       y2="20.976084" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21608"
+       id="linearGradient5915"
+       gradientUnits="userSpaceOnUse"
+       x1="23.272787"
+       y1="18.525478"
+       x2="23.272787"
+       y2="22.811184" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15341"
+       id="radialGradient5913"
+       gradientUnits="userSpaceOnUse"
+       cx="22.624176"
+       cy="20.880224"
+       fx="22.624176"
+       fy="20.880224"
+       r="3.3177083" />
+    <linearGradient
+       id="linearGradient3529">
+      <stop
+         id="stop3531"
+         offset="0"
+         style="stop-color:#fefefe;stop-opacity:1;" />
+      <stop
+         id="stop3533"
+         offset="1"
+         style="stop-color:#e8e7e6;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3529"
+       id="radialGradient5911"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)"
+       cx="7.9549513"
+       cy="19.436747"
+       fx="7.9549513"
+       fy="19.436747"
+       r="6.4523492" />
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4325">
+      <stop
+         id="stop4327"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4329" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient21608">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop21610" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="1"
+         id="stop21612" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient15341">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop15343" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop15345" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient6371">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop6373" />
+      <stop
+         style="stop-color:#d3d7cf;stop-opacity:1;"
+         offset="1"
+         id="stop6375" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10872">
+      <stop
+         id="stop10874"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         style="stop-color:#9e9e92;stop-opacity:1;"
+         offset="0.25301206"
+         id="stop10876" />
+      <stop
+         id="stop10878"
+         offset="1"
+         style="stop-color:#555753;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5254">
+      <stop
+         id="stop5256"
+         offset="0"
+         style="stop-color:#707469;stop-opacity:1;" />
+      <stop
+         id="stop5258"
+         offset="1"
+         style="stop-color:#2e3335;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient10055">
+      <stop
+         style="stop-color:#bebebe;stop-opacity:1;"
+         offset="0"
+         id="stop10057" />
+      <stop
+         id="stop10061"
+         offset="0.375"
+         style="stop-color:#e8e8e8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#5c5c5c;stop-opacity:1;"
+         offset="1"
+         id="stop10059" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4841">
+      <stop
+         id="stop4843"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#fcaf3e;stop-opacity:0.94117647;"
+         offset="0"
+         id="stop4845" />
+      <stop
+         id="stop4847"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop4849" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4809">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop4811" />
+      <stop
+         id="stop4813"
+         offset="0"
+         style="stop-color:#ad7fa8;stop-opacity:1;" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop4815" />
+      <stop
+         id="stop4817"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3223">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop3225" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="1"
+         id="stop3227" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop3239" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3501"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3500"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2366258,0,24.617945)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient3232"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,47.474934,42.420392)"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138"
+       spreadMethod="reflect" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5689"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0469084,0,0,0.4796469,270.37856,38.427671)"
+       cx="22.276291"
+       cy="32.248856"
+       fx="22.276291"
+       fy="32.248856"
+       r="20.319138" />
+    <inkscape:perspective
+       id="perspective3474"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient4359"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-52.447261,-106.14795)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5015"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,42.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5062"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4325"
+       id="radialGradient5064"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,98.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5110"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,142.72007,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3863"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3865"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient3906"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,92.720075,-107.89847)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3345"
+       id="radialGradient5554"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.725459,40.419065)"
+       spreadMethod="pad"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient8512"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3529"
+       id="radialGradient5708"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.2876712,0,13.845354)"
+       cx="7.9549513"
+       cy="19.436747"
+       fx="7.9549513"
+       fy="19.436747"
+       r="6.4523492" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient15341"
+       id="radialGradient5710"
+       gradientUnits="userSpaceOnUse"
+       cx="22.624176"
+       cy="20.880224"
+       fx="22.624176"
+       fy="20.880224"
+       r="3.3177083" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21608"
+       id="linearGradient5712"
+       gradientUnits="userSpaceOnUse"
+       x1="23.272787"
+       y1="18.525478"
+       x2="23.272787"
+       y2="22.811184" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="radialGradient5720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.433087,-0.596698,0.798238,1.917124,-20.96864,-16.43019)"
+       cx="7.001297"
+       cy="22.470087"
+       fx="7.001297"
+       fy="22.470087"
+       r="6.4940691" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5744"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-8.0062038,8.0062038,-2.6453267,-2.6453267,292.61535,-42.156174)"
+       cx="14.790665"
+       cy="29.860626"
+       fx="14.790665"
+       fy="29.860626"
+       r="1.1399525" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5747"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-7.1920099,7.1920099,-3.7125033,-3.7125033,329.85262,-15.264295)"
+       cx="17.797972"
+       cy="29.948833"
+       fx="17.797972"
+       fy="29.948833"
+       r="1.945146" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6377"
+       id="radialGradient5750"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-10.893546,10.893546,-4.646695,-4.646695,452.18932,-81.552883)"
+       cx="20.818829"
+       cy="29.948536"
+       fx="20.818829"
+       fy="29.948536"
+       r="2.5451017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5753"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)"
+       x1="20.087172"
+       y1="6.6629219"
+       x2="20.91938"
+       y2="38.337017" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5755"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.0714931,0,0,1.2212999,31.77769,-26.9466)"
+       x1="21.875"
+       y1="9.6335878"
+       x2="20.5"
+       y2="41.744865" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10055"
+       id="linearGradient5758"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7679166,0,0,1.687933,56.52845,-48.50785)"
+       x1="2.6850162"
+       y1="24.367676"
+       x2="2.9248238"
+       y2="35.053852" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5760"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.6831088,0,0,1.0329054,56.57596,-21.59844)"
+       x1="4.5961943"
+       y1="14.456622"
+       x2="4.5961943"
+       y2="30.313524" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21582"
+       id="linearGradient5763"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.2565202,55.12173,-27.69264)"
+       x1="21.875"
+       y1="26.625"
+       x2="18.187626"
+       y2="26" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient21598"
+       id="linearGradient5766"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7830101,0,0,0.9810567,57.23473,-21.54117)"
+       x1="12.25"
+       y1="19.75"
+       x2="10.875"
+       y2="33.125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10872"
+       id="linearGradient5770"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0102994,0,0,1.0172401,55.03438,-21.39944)"
+       x1="3.8890872"
+       y1="18.937069"
+       x2="3.8890872"
+       y2="25.947107" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6371"
+       id="linearGradient5773"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)"
+       x1="14.241117"
+       y1="26.996773"
+       x2="15.125"
+       y2="20.976084" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5254"
+       id="linearGradient5775"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99664,0,0,1.1932745,53.82035,-26.31606)"
+       x1="11.875"
+       y1="20.375"
+       x2="13.125"
+       y2="34.13559" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient5928"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,97.72545,40.294064)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="126.80533"
+     inkscape:cy="41.532441"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="-12"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="-14.142136,73.185552"
+       id="guide3490" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-21,-23.25"
+       id="guide5857" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="-49.5,-22.625"
+       id="guide5859" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>speaker</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>right</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-speaker-right-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g8490"
+       transform="matrix(0.7071068,0.7071068,-0.7071068,0.7071068,-9.0528759,-47.851156)">
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8492"
+         d="M 64.325669,10.506413 C 70.397099,7.0242733 77.468529,7.1135633 83.718529,10.506413 L 85.718529,14.899273 L 62.325669,14.899273 L 64.325669,10.506413 z"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="csssccsssc"
+         d="M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 84.898489,14.148893 84.391069,13.829363 83.881339,13.563883 C 83.312379,13.267543 82.740559,13.038553 82.170169,12.891833 C 78.286959,11.872493 70.453649,11.829343 66.580509,12.845703 C 65.740619,13.064843 64.898909,13.457433 64.068479,13.977613 C 63.443239,14.369273 62.824389,14.833253 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8494" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.827469,15.979023 L 65.014509,11.213023 C 70.275566,8.4697433 76.234822,7.8458533 82.953572,11.207463 L 84.922082,15.410963"
+         id="path8496"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         d="M 95.001579,28.523883 C 95.001579,28.523883 88.693549,15.595313 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593 C 60.028369,15.595313 55.03283,26.273883 55.03283,26.273883"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         id="path8498" />
+      <path
+         transform="matrix(1.0469083,0,0,2.027027,51.01285,-35.409607)"
+         d="M 43.214285,32.24107 A 20.9375,4.9553571 0 1 1 1.3392849,32.24107 A 20.9375,4.9553571 0 1 1 43.214285,32.24107 z"
+         sodipodi:ry="4.9553571"
+         sodipodi:rx="20.9375"
+         sodipodi:cy="32.24107"
+         sodipodi:cx="22.276785"
+         id="path8500"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:0.68646109;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path8502"
+         d="M 95.16001,29.859216 C 95.34941,34.267437 86.35016,38.925273 74.250517,38.925273 C 62.150874,38.925273 53.120056,34.330572 53.341027,29.859216 C 53.151624,25.29316 62.150874,20.824727 74.250517,20.824727 C 86.35016,20.824727 95.19158,25.198457 95.16001,29.859216 z"
+         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 82.142459,27.943913 C 81.468389,30.131673 78.852759,31.329293 74.334599,31.329293 C 69.816449,31.329293 66.985899,29.952123 66.526739,27.943913 C 66.456009,26.238893 69.816449,24.570323 74.334599,24.570323 C 78.852759,24.570323 82.154249,26.203533 82.142459,27.943913 z"
+         id="path8504"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:0.96596354;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 67.476989,27.764793 C 68.447389,30.844053 71.145969,33.060833 74.320419,33.060843 C 77.514539,33.060843 80.226899,30.816463 81.181699,27.707393 C 80.281059,26.206763 76.900529,25.470543 74.291089,25.513813 C 70.986749,25.428073 68.434609,26.373493 67.476989,27.764793 z"
+         id="path8506"
+         sodipodi:nodetypes="csccc"
+         inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_Test.png"
+         inkscape:export-xdpi="67.489998"
+         inkscape:export-ydpi="67.489998" />
+      <path
+         id="path8508"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#2e3436;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 62.722179,14.847493 C 62.595139,14.950093 62.343579,15.242643 62.217529,15.349973 C 60.346409,16.943173 58.58922,19.037813 57.10976,21.059983 C 54.51317,24.609093 52.7721,27.934983 52.7721,27.934983 M 95.897099,27.934983 C 95.897099,27.934983 91.349669,19.248213 86.035799,14.995723 C 85.825169,14.827163 85.613329,14.665563 85.400529,14.511753 C 85.300009,14.439103 84.752372,14.219223 84.651452,14.150133"
+         sodipodi:nodetypes="cssccsss" />
+      <path
+         id="path8510"
+         style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#bfd8f3;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="M 81.930899,13.855723 C 78.047689,12.836393 70.745629,12.793243 66.872489,13.809593"
+         sodipodi:nodetypes="cc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-subwoofer-testing.svg b/panels/sound/data/icons/scalable/devices/audio-subwoofer-testing.svg
new file mode 100644
index 0000000..2e1dd78
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-subwoofer-testing.svg
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-subwoofer-testing.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/audio-subwoofer-testing.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient6718">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop6720" />
+      <stop
+         id="stop6724"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         id="stop3505"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6984"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="2.8284271"
+     inkscape:cx="-48.821714"
+     inkscape:cy="66.867859"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="0"
+     inkscape:window-y="0"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>subwoofer</rdf:li>
+            <rdf:li>output</rdf:li>
+            <rdf:li>testing</rdf:li>
+            <rdf:li>highlighted</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-subwoofer-testing</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g6973"
+       transform="translate(-51.375,9.0155254e-8)">
+      <path
+         style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 94.217316,39.045143 C 93.839661,41.471941 92.789441,43.219015 91.55403,43.219015 C 90.310955,43.219015 89.255378,41.450202 88.883794,38.999908 C 89.234301,37.817247 90.549918,37.23702 91.565441,37.271125 C 92.851403,37.203551 93.844629,37.948644 94.217316,39.045143 z"
+         id="path6730"
+         sodipodi:nodetypes="csccc" />
+      <path
+         sodipodi:nodetypes="csccc"
+         id="path6732"
+         d="M 62.393985,39.045143 C 62.016329,41.471941 60.96611,43.219015 59.730698,43.219015 C 58.487624,43.219015 57.432046,41.450202 57.060462,38.999908 C 57.410969,37.817247 58.726586,37.23702 59.742109,37.271125 C 61.028072,37.203551 62.021297,37.948644 62.393985,39.045143 z"
+         style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:#204a87;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1.28661346;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 62.953967,6.9788731 C 73.409478,4.1293728 77.293929,4.3517447 87.917557,6.9788731 L 95.317117,13.152471 L 55.554408,13.152471 L 62.953967,6.9788731 z"
+         id="path6734"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 55.289577,13.137135 C 67.861736,9.7856746 82.504598,9.8716096 95.446529,13.137135 L 95.389975,39.76734 C 82.177445,42.114593 68.287824,42.159732 55.346132,39.902758 L 55.289577,13.137135 z"
+         id="path6736"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:url(#radialGradient6984);fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:2.05839419;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6738"
+         sodipodi:cx="84.365685"
+         sodipodi:cy="64.927307"
+         sodipodi:rx="21.396112"
+         sodipodi:ry="21.396112"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         transform="matrix(0,0.4858156,-0.4858156,0,100.43255,-14.78506)" />
+      <path
+         transform="matrix(0,0.2827849,-0.2827849,0,105.0933,2.3437637)"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         sodipodi:ry="21.396112"
+         sodipodi:rx="21.396112"
+         sodipodi:cy="64.927307"
+         sodipodi:cx="84.365685"
+         id="path6740"
+         style="fill:#bfd8f3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.53625679;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6742"
+         sodipodi:cx="84.365685"
+         sodipodi:cy="64.927307"
+         sodipodi:rx="21.396112"
+         sodipodi:ry="21.396112"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         transform="matrix(0,0.1973419,-0.1973419,0,99.523923,9.5522206)" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path6744"
+         d="M 56.321159,13.950789 C 67.82398,10.961669 81.161179,10.935259 94.415609,13.950789 L 94.359059,38.893489 C 81.01047,40.978079 68.381909,41.160879 56.377709,39.028909 L 56.321159,13.950789 z"
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#bfd8f3;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         transform="matrix(0,0.1973419,-0.1973419,0,81.702733,9.5522212)"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         sodipodi:ry="21.396112"
+         sodipodi:rx="21.396112"
+         sodipodi:cy="64.927307"
+         sodipodi:cx="84.365685"
+         id="path6746"
+         style="fill:#729fcf;fill-opacity:1;fill-rule:nonzero;stroke:#204a87;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/scalable/devices/audio-subwoofer.svg b/panels/sound/data/icons/scalable/devices/audio-subwoofer.svg
new file mode 100644
index 0000000..fb36468
--- /dev/null
+++ b/panels/sound/data/icons/scalable/devices/audio-subwoofer.svg
@@ -0,0 +1,325 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="48"
+   height="48"
+   id="svg2643"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="audio-subwoofer.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/Users/eve/Documents/GNOME/SpeakerIcon_subwoofer.png"
+   inkscape:export-xdpi="67.489998"
+   inkscape:export-ydpi="67.489998">
+  <defs
+     id="defs2645">
+    <linearGradient
+       id="linearGradient6718">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop6720" />
+      <stop
+         id="stop6724"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3345">
+      <stop
+         id="stop3347"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#729fcf;stop-opacity:1;"
+         offset="0"
+         id="stop3351" />
+      <stop
+         id="stop3355"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3349" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4389">
+      <stop
+         style="stop-color:#555753;stop-opacity:1;"
+         offset="0"
+         id="stop4391" />
+      <stop
+         id="stop4393"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient5385"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-1.0538312,-6.3027391e-8,1.2877417e-8,-0.7232676,-9.0519739,70.961132)"
+       spreadMethod="pad"
+       cx="22.276297"
+       cy="21.099283"
+       fx="22.276297"
+       fy="21.099283"
+       r="20.319138" />
+    <linearGradient
+       id="linearGradient3503">
+      <stop
+         id="stop3505"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop3507"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective2651" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6516"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6612"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6645"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3503"
+       id="radialGradient6705"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7451713,-0.7451712,0.5114274,0.5114274,10.506623,78.557248)"
+       spreadMethod="reflect"
+       cx="22.276291"
+       cy="21.520338"
+       fx="22.276291"
+       fy="21.520338"
+       r="20.319138" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6718"
+       id="radialGradient6716"
+       gradientUnits="userSpaceOnUse"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578"
+       gradientTransform="matrix(0.8545182,0,0,0.753115,12.273671,16.029579)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6728"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6748"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4389"
+       id="radialGradient6781"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.7191227,0,0,0.7191227,23.696408,18.236608)"
+       cx="84.365685"
+       cy="64.927307"
+       fx="84.365685"
+       fy="64.927307"
+       r="22.334578" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="-397.88007"
+     inkscape:cy="205.69941"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:snap-global="false"
+     inkscape:window-width="1680"
+     inkscape:window-height="1028"
+     inkscape:window-x="20"
+     inkscape:window-y="20"
+     showguides="false"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2653"
+       visible="true"
+       enabled="true"
+       color="#ff00ff"
+       opacity="0.1254902"
+       empcolor="#0000f2"
+       empopacity="0.25098039" />
+    <sodipodi:guide
+       orientation="1,0"
+       position="23.969062,28.50558"
+       id="guide3488" />
+    <sodipodi:guide
+       orientation="0,1"
+       position="17.401268,34.125445"
+       id="guide3490" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata2648">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>audio</rdf:li>
+            <rdf:li>device</rdf:li>
+            <rdf:li>subwoofer</rdf:li>
+            <rdf:li>output</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:title>audio-subwoofer</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Evangeline McGlynn</dc:title>
+          </cc:Agent>
+        </dc:creator>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g6770">
+      <path
+         sodipodi:nodetypes="csccc"
+         id="path3286"
+         d="M 42.842316,39.045143 C 42.464661,41.471941 41.414441,43.219015 40.17903,43.219015 C 38.935955,43.219015 37.880378,41.450202 37.508794,38.999908 C 37.859301,37.817247 39.174918,37.23702 40.190441,37.271125 C 41.476403,37.203551 42.469629,37.948644 42.842316,39.045143 z"
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 11.018985,39.045143 C 10.641329,41.471941 9.5911095,43.219015 8.3556983,43.219015 C 7.1126243,43.219015 6.0570463,41.450202 5.6854623,38.999908 C 6.0359693,37.817247 7.3515863,37.23702 8.3671093,37.271125 C 9.6530715,37.203551 10.646297,37.948644 11.018985,39.045143 z"
+         id="path3288"
+         sodipodi:nodetypes="csccc" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path3264"
+         d="M 11.578967,6.9788731 C 22.034478,4.1293728 25.918929,4.3517447 36.542557,6.9788731 L 43.942117,13.152471 L 4.1794077,13.152471 L 11.578967,6.9788731 z"
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1.28661346;stroke-linecap:butt;stroke-linejoin:bevel;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         sodipodi:nodetypes="ccccc"
+         id="path3266"
+         d="M 3.9145768,13.137135 C 16.486736,9.7856746 31.129598,9.8716096 44.071529,13.137135 L 44.014975,39.76734 C 30.802445,42.114593 16.912824,42.159732 3.9711319,39.902758 L 3.9145768,13.137135 z"
+         style="fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+      <path
+         transform="matrix(0,0.4858156,-0.4858156,0,49.057554,-14.78506)"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         sodipodi:ry="21.396112"
+         sodipodi:rx="21.396112"
+         sodipodi:cy="64.927307"
+         sodipodi:cx="84.365685"
+         id="path3238"
+         style="fill:url(#radialGradient6781);fill-opacity:1;fill-rule:nonzero;stroke:#555753;stroke-width:2.05839419;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.53625679;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path3260"
+         sodipodi:cx="84.365685"
+         sodipodi:cy="64.927307"
+         sodipodi:rx="21.396112"
+         sodipodi:ry="21.396112"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         transform="matrix(0,0.2827849,-0.2827849,0,53.7183,2.3437637)" />
+      <path
+         transform="matrix(0,0.1973419,-0.1973419,0,48.148923,9.5522206)"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         sodipodi:ry="21.396112"
+         sodipodi:rx="21.396112"
+         sodipodi:cy="64.927307"
+         sodipodi:cx="84.365685"
+         id="path6518"
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         style="fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#babdb6;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         d="M 4.9461591,13.950789 C 16.44898,10.961669 29.786179,10.935259 43.040609,13.950789 L 42.984059,38.893489 C 29.63547,40.978079 17.006909,41.160879 5.0027091,39.028909 L 4.9461591,13.950789 z"
+         id="path6561"
+         sodipodi:nodetypes="ccccc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:#2e3436;stroke-width:5.06734753;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path6581"
+         sodipodi:cx="84.365685"
+         sodipodi:cy="64.927307"
+         sodipodi:rx="21.396112"
+         sodipodi:ry="21.396112"
+         d="M 105.7618,64.927307 A 21.396112,21.396112 0 1 1 62.969572,64.927307 A 21.396112,21.396112 0 1 1 105.7618,64.927307 z"
+         transform="matrix(0,0.1973419,-0.1973419,0,30.327733,9.5522212)" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/icons/src/microphone-levels.svg b/panels/sound/data/icons/src/microphone-levels.svg
new file mode 100644
index 0000000..c6b7222
--- /dev/null
+++ b/panels/sound/data/icons/src/microphone-levels.svg
@@ -0,0 +1,11448 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:xlink="http://www.w3.org/1999/xlink";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   height="348"
+   id="svg11300"
+   inkscape:export-filename="/home/jimmac/Desktop/wi-fi.png"
+   inkscape:export-xdpi="90.000000"
+   inkscape:export-ydpi="90.000000"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="microphone-levels.svg"
+   sodipodi:version="0.32"
+   style="display:inline;enable-background:new"
+   version="1.0"
+   width="672">
+  <sodipodi:namedview
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     fill="#f57900"
+     gridtolerance="12"
+     guidetolerance="13"
+     height="300px"
+     id="base"
+     inkscape:current-layer="layer2"
+     inkscape:cx="270.77412"
+     inkscape:cy="104.07692"
+     inkscape:document-units="px"
+     inkscape:grid-bbox="true"
+     inkscape:guide-bbox="true"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:showpageshadow="false"
+     inkscape:snap-bbox="true"
+     inkscape:snap-nodes="false"
+     inkscape:window-height="876"
+     inkscape:window-width="968"
+     inkscape:window-x="132"
+     inkscape:window-y="8"
+     inkscape:zoom="1"
+     objecttolerance="7"
+     pagecolor="#ffffff"
+     showgrid="false"
+     showguides="true"
+     stroke="#ef2929"
+     width="400px">
+    <inkscape:grid
+       visible="true"
+       type="xygrid"
+       spacingy="0.5px"
+       spacingx="0.5px"
+       id="grid5883"
+       enabled="true"
+       empspacing="2"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <title
+     id="title8836">Optical Drive</title>
+  <metadata
+     id="metadata154">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Optical Drive</dc:title>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:contributor>
+        <dc:source />
+        <cc:license
+           rdf:resource="" />
+        <dc:subject>
+          <rdf:Bag />
+        </dc:subject>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418" />
+    </linearGradient>
+    <inkscape:path-effect
+       is_visible="true"
+       id="path-effect20273"
+       effect="spiro" />
+    <linearGradient
+       id="linearGradient20265"
+       inkscape:collect="always">
+      <stop
+         id="stop20267"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop20269"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient20205"
+       inkscape:collect="always">
+      <stop
+         id="stop20207"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop20209"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient20041"
+       inkscape:collect="always">
+      <stop
+         id="stop20043"
+         offset="0"
+         style="stop-color:#606060;stop-opacity:1;" />
+      <stop
+         id="stop20045"
+         offset="1"
+         style="stop-color:#a8a8a8;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient19969">
+      <stop
+         id="stop19971"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop19973"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13655"
+       inkscape:collect="always">
+      <stop
+         id="stop13657"
+         offset="0"
+         style="stop-color:#ffffff;stop-opacity:1;" />
+      <stop
+         id="stop13659"
+         offset="1"
+         style="stop-color:#ffffff;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11071"
+       inkscape:collect="always">
+      <stop
+         id="stop11073"
+         offset="0"
+         style="stop-color:#000000;stop-opacity:1;" />
+      <stop
+         id="stop11075"
+         offset="1"
+         style="stop-color:#000000;stop-opacity:0;" />
+    </linearGradient>
+    <inkscape:perspective
+       id="perspective171"
+       inkscape:persp3d-origin="200 : 100 : 1"
+       inkscape:vp_z="400 : 150 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 150 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2920">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2922" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2924" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2904">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop2906" />
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0.21551724"
+         id="stop2910" />
+      <stop
+         style="stop-color:#c3c4c2;stop-opacity:1;"
+         offset="0.70243758"
+         id="stop2912" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop2908" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2877">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2879" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2881" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2867">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2869" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2871" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2981">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop2983" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop2985" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2965">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2967" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2969" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2943">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop2945" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="1"
+         id="stop2947" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4499">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop4501" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop4503" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4481">
+      <stop
+         style="stop-color:#3e403d;stop-opacity:1"
+         offset="0"
+         id="stop4483" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop4485" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4475">
+      <stop
+         style="stop-color:black;stop-opacity:1"
+         offset="0"
+         id="stop4477" />
+      <stop
+         style="stop-color:black;stop-opacity:0"
+         offset="1"
+         id="stop4479" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4465">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0"
+         id="stop4467" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0"
+         offset="1"
+         id="stop4469" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3815">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3817" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3819" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3795">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop3797" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop3799" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3779">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3781" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3783" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3734">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3736" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop3738" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3726">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop3728" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3730" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3711">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3713" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3715" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3703">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3705" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3707" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3579">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3581" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3583" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3228">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3230" />
+      <stop
+         style="stop-color:black;stop-opacity:0.42857143;"
+         offset="0.06770357"
+         id="stop3573" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0.29894069"
+         id="stop3569" />
+      <stop
+         style="stop-color:black;stop-opacity:0.49803922;"
+         offset="0.77437174"
+         id="stop3571" />
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="1"
+         id="stop3232" />
+    </linearGradient>
+    <linearGradient
+       y2="10.081399"
+       y1="10.081399"
+       xlink:href="#linearGradient3228"
+       x2="30"
+       x1="17.999674"
+       inkscape:collect="always"
+       id="linearGradient3567"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,3)" />
+    <linearGradient
+       y2="25.991137"
+       y1="3.4711361"
+       xlink:href="#linearGradient3579"
+       x2="28.357954"
+       x1="20.483149"
+       inkscape:collect="always"
+       id="linearGradient3585"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" />
+    <radialGradient
+       xlink:href="#linearGradient3711"
+       r="13.08399"
+       inkscape:collect="always"
+       id="radialGradient3691"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       fy="40.578671"
+       fx="18.753521"
+       cy="40.578671"
+       cx="18.753521" />
+    <linearGradient
+       y2="28.590008"
+       y1="41.836731"
+       xlink:href="#linearGradient3703"
+       x2="27.272261"
+       x1="23.8125"
+       inkscape:collect="always"
+       id="linearGradient3709"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       y2="30.421146"
+       y1="36.722809"
+       xlink:href="#linearGradient3726"
+       x2="23.640165"
+       x1="25.606806"
+       inkscape:collect="always"
+       id="linearGradient3732"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)" />
+    <linearGradient
+       y2="28.617105"
+       y1="36.75"
+       xlink:href="#linearGradient3734"
+       x2="24.6875"
+       x1="24.6875"
+       inkscape:collect="always"
+       id="linearGradient3740"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)" />
+    <linearGradient
+       y2="32.355263"
+       y1="37.835339"
+       xlink:href="#linearGradient3779"
+       x2="29.74268"
+       x1="23.997437"
+       inkscape:collect="always"
+       id="linearGradient3785"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)" />
+    <linearGradient
+       y2="19.231655"
+       y1="18.432873"
+       xlink:href="#linearGradient3795"
+       x2="13.567612"
+       x1="13.567612"
+       inkscape:collect="always"
+       id="linearGradient3801"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)" />
+    <linearGradient
+       y2="19.231655"
+       y1="18.432873"
+       xlink:href="#linearGradient3795"
+       x2="13.567612"
+       x1="13.567612"
+       inkscape:collect="always"
+       id="linearGradient3805"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(20,-1)" />
+    <linearGradient
+       y2="5.5441942"
+       y1="13.794194"
+       xlink:href="#linearGradient4465"
+       x2="32.864544"
+       x1="32.864544"
+       inkscape:collect="always"
+       id="linearGradient4460"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.25,12.5)" />
+    <linearGradient
+       y2="5.5441942"
+       y1="13.794194"
+       xlink:href="#linearGradient4475"
+       x2="32.864544"
+       x1="32.864544"
+       inkscape:collect="always"
+       id="linearGradient4473"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.25,13.5)" />
+    <linearGradient
+       y2="5.125"
+       y1="20.814491"
+       xlink:href="#linearGradient4481"
+       x2="17.625"
+       x1="17.625"
+       inkscape:collect="always"
+       id="linearGradient4487"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       xlink:href="#linearGradient4499"
+       r="12.59534"
+       inkscape:collect="always"
+       id="radialGradient4505"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066" />
+    <linearGradient
+       y2="20.381033"
+       y1="16.14632"
+       xlink:href="#linearGradient2943"
+       x2="16.65625"
+       x1="16.65625"
+       inkscape:collect="always"
+       id="linearGradient2949"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       y2="20.381033"
+       y1="16.14632"
+       xlink:href="#linearGradient2943"
+       x2="16.65625"
+       x1="16.65625"
+       inkscape:collect="always"
+       id="linearGradient2953"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)" />
+    <radialGradient
+       xlink:href="#linearGradient2965"
+       r="12.59534"
+       inkscape:collect="always"
+       id="radialGradient2971"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066" />
+    <linearGradient
+       y2="25.229111"
+       y1="19.452076"
+       xlink:href="#linearGradient2981"
+       x2="21.649811"
+       x1="23.374121"
+       inkscape:collect="always"
+       id="linearGradient2987"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)" />
+    <radialGradient
+       xlink:href="#linearGradient4499"
+       r="12.59534"
+       inkscape:collect="always"
+       id="radialGradient3012"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066" />
+    <linearGradient
+       y2="10.76408"
+       y1="10.76408"
+       xlink:href="#linearGradient2867"
+       x2="23.176371"
+       x1="19.583334"
+       inkscape:collect="always"
+       id="linearGradient2890"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)" />
+    <linearGradient
+       y2="15.94703"
+       y1="24.761473"
+       xlink:href="#linearGradient3815"
+       x2="23.246162"
+       x1="23.246162"
+       inkscape:collect="always"
+       id="linearGradient2892"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       y2="10.75"
+       y1="6.3608937"
+       xlink:href="#linearGradient2877"
+       x2="24.508121"
+       x1="21.961548"
+       inkscape:collect="always"
+       id="linearGradient2894"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       y2="13.351768"
+       y1="13.351768"
+       xlink:href="#linearGradient2904"
+       x2="30.230837"
+       x1="18.737373"
+       inkscape:collect="always"
+       id="linearGradient2902"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       xlink:href="#linearGradient2920"
+       r="6.46875"
+       inkscape:collect="always"
+       id="radialGradient2926"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       fy="10.432782"
+       fx="22.553526"
+       cy="10.432782"
+       cx="22.553526" />
+    <linearGradient
+       y2="5.125"
+       x2="17.625"
+       y1="15.314491"
+       x1="17.375"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10904"
+       xlink:href="#linearGradient4481"
+       inkscape:collect="always" />
+    <radialGradient
+       r="12.59534"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient10966"
+       xlink:href="#linearGradient4499"
+       inkscape:collect="always" />
+    <radialGradient
+       r="12.59534"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient10968"
+       xlink:href="#linearGradient4499"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="5.5441942"
+       x2="32.864544"
+       y1="13.794194"
+       x1="32.864544"
+       gradientTransform="translate(-0.25,13.5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10970"
+       xlink:href="#linearGradient4475"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="5.5441942"
+       x2="32.864544"
+       y1="13.794194"
+       x1="32.864544"
+       gradientTransform="translate(-0.25,12.5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10972"
+       xlink:href="#linearGradient4465"
+       inkscape:collect="always" />
+    <radialGradient
+       r="13.08399"
+       fy="40.578671"
+       fx="18.753521"
+       cy="40.578671"
+       cx="18.753521"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient10974"
+       xlink:href="#linearGradient3711"
+       inkscape:collect="always" />
+    <radialGradient
+       r="12.59534"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient10976"
+       xlink:href="#linearGradient2965"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="32.355263"
+       x2="29.74268"
+       y1="37.835339"
+       x1="23.997437"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10978"
+       xlink:href="#linearGradient3779"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="28.590008"
+       x2="27.272261"
+       y1="41.836731"
+       x1="23.8125"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10980"
+       xlink:href="#linearGradient3703"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="18.992922"
+       x2="16.365026"
+       y1="27.198471"
+       x1="16.396276"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10982"
+       xlink:href="#linearGradient3726"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10984"
+       xlink:href="#linearGradient3795"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="translate(18.59884,-0.923861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10986"
+       xlink:href="#linearGradient3795"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.229111"
+       x2="21.649811"
+       y1="19.452076"
+       x1="23.374121"
+       gradientTransform="matrix(0.93365598,0,0,0.94630428,0.1070789,1.560429)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10988"
+       xlink:href="#linearGradient2981"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="20.381033"
+       x2="16.65625"
+       y1="16.14632"
+       x1="16.65625"
+       gradientTransform="matrix(1.2486592,0,0,1.0113615,11.508715,-0.56075794)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10990"
+       xlink:href="#linearGradient2943"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.98788104,0,0,1.0113615,-0.23976961,-0.56075794)"
+       y2="20.381033"
+       x2="16.65625"
+       y1="16.14632"
+       x1="16.65625"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10992"
+       xlink:href="#linearGradient2943"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)"
+       y2="13.351768"
+       x2="30.230837"
+       y1="13.351768"
+       x1="18.737373"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10994"
+       xlink:href="#linearGradient2904"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)"
+       y2="5.125"
+       x2="17.625"
+       y1="15.314491"
+       x1="17.375"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10996"
+       xlink:href="#linearGradient4481"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="28.617105"
+       x2="24.6875"
+       y1="36.75"
+       x1="24.6875"
+       gradientTransform="matrix(1.0625002,0,0,0.76351725,-1.5382359,3.9735816)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10998"
+       xlink:href="#linearGradient3734"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="10.76408"
+       x2="23.176371"
+       y1="10.76408"
+       x1="19.583334"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11000"
+       xlink:href="#linearGradient2867"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="15.94703"
+       x2="23.246162"
+       y1="24.761473"
+       x1="23.246162"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11002"
+       xlink:href="#linearGradient3815"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="10.75"
+       x2="24.508121"
+       y1="6.3608937"
+       x1="21.961548"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11004"
+       xlink:href="#linearGradient2877"
+       inkscape:collect="always" />
+    <radialGradient
+       r="6.46875"
+       fy="10.432782"
+       fx="22.553526"
+       cy="10.432782"
+       cx="22.553526"
+       gradientTransform="matrix(1.580773,0,0,0.75692381,-14.17818,0.21133448)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient11006"
+       xlink:href="#linearGradient2920"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.991137"
+       x2="28.357954"
+       y1="3.4711361"
+       x1="20.483149"
+       gradientTransform="matrix(0.9517316,0,0,0.94372518,-0.44251773,3.1419782)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11008"
+       xlink:href="#linearGradient3579"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective11018" />
+    <linearGradient
+       y2="18.305422"
+       x2="16.271276"
+       y1="23.729721"
+       x1="16.271276"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient10982-1"
+       xlink:href="#linearGradient3726-4"
+       inkscape:collect="always" />
+    <linearGradient
+       id="linearGradient3726-4">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop3728-9" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3730-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4"
+       id="linearGradient11027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-13.271278,-18.305421)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective11057" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.5,0,75.8125)"
+       r="1.875"
+       fy="151.625"
+       fx="317.625"
+       cy="151.625"
+       cx="317.625"
+       id="radialGradient11077"
+       xlink:href="#linearGradient11071"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="23.652916"
+       x2="9.249608"
+       y1="23.530848"
+       x1="14.547704"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11083"
+       xlink:href="#linearGradient3726"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="23.518084"
+       x2="12.968358"
+       y1="23.530848"
+       x1="14.547704"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient11093"
+       xlink:href="#linearGradient3726"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="18.305422"
+       x2="16.271276"
+       y1="23.729721"
+       x1="16.271276"
+       gradientTransform="matrix(0.85553658,0,0,0.77385304,0.52441214,2.4879707)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13115"
+       xlink:href="#linearGradient3726-4"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13117"
+       xlink:href="#linearGradient3795"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="matrix(0.86359943,0,0,1,16.977403,-0.923861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13119"
+       xlink:href="#linearGradient3795"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.229111"
+       x2="21.649811"
+       y1="19.452076"
+       x1="23.374121"
+       gradientTransform="matrix(0.79373266,0,0,0.7916132,1.1565043,3.4403526)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13121"
+       xlink:href="#linearGradient2981"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="20.381033"
+       x2="16.65625"
+       y1="16.14632"
+       x1="16.65625"
+       gradientTransform="matrix(0.98788104,0,0,0.98347786,-0.23976961,-0.44878866)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13125"
+       xlink:href="#linearGradient2943"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="13.351768"
+       x2="30.230837"
+       y1="13.351768"
+       x1="18.737373"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13127"
+       xlink:href="#linearGradient2904"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="5.125"
+       x2="17.625"
+       y1="15.314491"
+       x1="17.375"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13129"
+       xlink:href="#linearGradient4481"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="10.76408"
+       x2="23.176371"
+       y1="10.76408"
+       x1="19.583334"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13131"
+       xlink:href="#linearGradient2867"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="15.94703"
+       x2="23.246162"
+       y1="24.761473"
+       x1="23.246162"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13133"
+       xlink:href="#linearGradient3815"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="10.75"
+       x2="24.508121"
+       y1="6.3608937"
+       x1="21.961548"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13135"
+       xlink:href="#linearGradient2877"
+       inkscape:collect="always" />
+    <radialGradient
+       r="6.46875"
+       fy="10.432782"
+       fx="22.553526"
+       cy="10.432782"
+       cx="22.553526"
+       gradientTransform="matrix(1.3831764,0,0,0.73605512,-11.304892,0.24124002)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient13137"
+       xlink:href="#linearGradient2920"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.991137"
+       x2="28.357954"
+       y1="3.4711361"
+       x1="20.483149"
+       gradientTransform="matrix(0.95796767,0,0,0.91036433,-1.6428678,3.1920195)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13139"
+       xlink:href="#linearGradient3579"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective13158" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4499-8">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop4501-6" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop4503-4" />
+    </linearGradient>
+    <radialGradient
+       xlink:href="#linearGradient4499-8"
+       r="12.59534"
+       inkscape:collect="always"
+       id="radialGradient4505-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient4465-6">
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1"
+         offset="0"
+         id="stop4467-8" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:0"
+         offset="1"
+         id="stop4469-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3711-6">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3713-6" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3715-7" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2965-7">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1;"
+         offset="0"
+         id="stop2967-3" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:0;"
+         offset="1"
+         id="stop2969-9" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3779-9">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3781-5" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3783-3" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3726-0">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop3728-1" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop3730-6" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3795-5">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop3797-0" />
+      <stop
+         style="stop-color:#c1c1c1;stop-opacity:1"
+         offset="1"
+         id="stop3799-6" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13206">
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="0"
+         id="stop13208" />
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="1"
+         id="stop13210" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2981-9">
+      <stop
+         style="stop-color:#eeeeec;stop-opacity:1;"
+         offset="0"
+         id="stop2983-8" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop2985-4" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2943-2">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop2945-0" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="1"
+         id="stop2947-4" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13221">
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="0"
+         id="stop13223" />
+      <stop
+         style="stop-color:#2e3436;stop-opacity:1;"
+         offset="1"
+         id="stop13225" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2904-5">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop2906-7" />
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0.21551724"
+         id="stop2910-2" />
+      <stop
+         style="stop-color:#c3c4c2;stop-opacity:1;"
+         offset="0.70243758"
+         id="stop2912-6" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop2908-9" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4481-3">
+      <stop
+         style="stop-color:#3e403d;stop-opacity:1"
+         offset="0"
+         id="stop4483-2" />
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="1"
+         id="stop4485-8" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3734-1">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop3736-6" />
+      <stop
+         style="stop-color:white;stop-opacity:1"
+         offset="1"
+         id="stop3738-0" />
+    </linearGradient>
+    <linearGradient
+       y2="15.94703"
+       y1="24.761473"
+       xlink:href="#linearGradient3815-9"
+       x2="23.246162"
+       x1="23.246162"
+       inkscape:collect="always"
+       id="linearGradient2892-7"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3815-9">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3817-7" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop3819-9" />
+    </linearGradient>
+    <linearGradient
+       y2="10.75"
+       y1="6.3608937"
+       xlink:href="#linearGradient2877-7"
+       x2="24.508121"
+       x1="21.961548"
+       inkscape:collect="always"
+       id="linearGradient2894-7"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2877-7">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2879-9" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2881-3" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient2920-3">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop2922-4" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop2924-1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3228-3">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3230-8" />
+      <stop
+         style="stop-color:black;stop-opacity:0.42857143;"
+         offset="0.06770357"
+         id="stop3573-3" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0.29894069"
+         id="stop3569-6" />
+      <stop
+         style="stop-color:black;stop-opacity:0.49803922;"
+         offset="0.77437174"
+         id="stop3571-6" />
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="1"
+         id="stop3232-4" />
+    </linearGradient>
+    <linearGradient
+       y2="25.991137"
+       y1="3.4711361"
+       xlink:href="#linearGradient3579-9"
+       x2="28.357954"
+       x1="20.483149"
+       inkscape:collect="always"
+       id="linearGradient3585-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3579-9">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3581-9" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3583-0" />
+    </linearGradient>
+    <radialGradient
+       r="6.46875"
+       fy="10.432782"
+       fx="22.553526"
+       cy="10.432782"
+       cx="22.553526"
+       gradientTransform="matrix(7.8522058,0,0,4.7763119,-42.877754,26.136979)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient13575"
+       xlink:href="#linearGradient2920-3"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="28.617105"
+       x2="24.6875"
+       y1="36.75"
+       x1="24.6875"
+       gradientTransform="matrix(4.9673203,0,0,4.9673203,21.300648,38.398692)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13586"
+       xlink:href="#linearGradient3734-1"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientTransform="matrix(4.9673203,0,0,4.9673203,21.589798,42.679612)"
+       y2="13.351768"
+       x2="30.230837"
+       y1="13.351768"
+       x1="18.737373"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13589"
+       xlink:href="#linearGradient2904-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="20.381033"
+       x2="16.65625"
+       y1="16.14632"
+       x1="16.65625"
+       gradientTransform="matrix(2.7646499,0,0,2.196487,129.67901,95.617106)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13598"
+       xlink:href="#linearGradient2943-2"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="25.229111"
+       x2="21.649811"
+       y1="19.452076"
+       x1="23.374121"
+       gradientTransform="matrix(4.9673203,0,0,4.6739851,21.589798,50.452937)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13601"
+       xlink:href="#linearGradient2981-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="matrix(4.9673203,0,0,4.7202881,120.9362,46.715632)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13604"
+       xlink:href="#linearGradient3795-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="32.355263"
+       x2="29.74268"
+       y1="37.835339"
+       x1="23.997437"
+       gradientTransform="matrix(1.5330832,0,0,1.5232424,106.26355,166.38059)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13615"
+       xlink:href="#linearGradient3779-9"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="5.5441942"
+       x2="32.864544"
+       y1="13.794194"
+       x1="32.864544"
+       gradientTransform="matrix(4.9673203,0,0,4.1857158,20.347968,125.94353)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13620"
+       xlink:href="#linearGradient4465-6"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="20.381033"
+       x2="16.65625"
+       y1="16.14632"
+       x1="16.65625"
+       gradientTransform="matrix(2.6339873,0,0,2.092677,-154.04079,97.485687)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient13649"
+       xlink:href="#linearGradient2943-2"
+       inkscape:collect="always" />
+    <radialGradient
+       r="12.59534"
+       fy="36.907261"
+       fx="23.82066"
+       cy="36.907261"
+       cx="23.82066"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient13651"
+       xlink:href="#linearGradient2965-7"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.5836547,0,0,0.81072247,-82.339489,27.071966)"
+       r="59.41787"
+       fy="276.92752"
+       fx="141.0757"
+       cy="276.92752"
+       cx="141.0757"
+       id="radialGradient13661"
+       xlink:href="#linearGradient13655"
+       inkscape:collect="always" />
+    <radialGradient
+       r="59.41787"
+       fy="276.92752"
+       fx="141.0757"
+       cy="276.92752"
+       cx="141.0757"
+       gradientTransform="matrix(1.5836547,0,0,0.81072247,-82.339489,27.071966)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient13665"
+       xlink:href="#linearGradient13655"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.5672045,-0.00538496,0.00169719,0.80911626,-224.49175,22.131973)"
+       r="34.296837"
+       fy="181.54195"
+       fx="143.04683"
+       cy="181.54195"
+       cx="143.04683"
+       id="radialGradient19975"
+       xlink:href="#linearGradient19969"
+       inkscape:collect="always" />
+    <clipPath
+       id="clipPath20033"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="50.130592"
+         x="108.51788"
+         width="69.542503"
+         style="fill:url(#linearGradient20037);fill-opacity:1;stroke:none"
+         ry="34.825241"
+         rx="34.771252"
+         id="rect20035"
+         height="119.21573" />
+    </clipPath>
+    <linearGradient
+       y2="13.351768"
+       x2="30.230837"
+       y1="13.351768"
+       x1="18.737373"
+       gradientTransform="matrix(4.9673203,0,0,4.9673203,21.589798,42.679612)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20037"
+       xlink:href="#linearGradient2904-5"
+       inkscape:collect="always" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       y2="133.52888"
+       x2="192.89699"
+       y1="137.15388"
+       x1="192.90271"
+       id="linearGradient20047"
+       xlink:href="#linearGradient20041"
+       inkscape:collect="always" />
+    <clipPath
+       id="clipPath20059"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="132.7654"
+         x="179.02771"
+         width="17.119282"
+         style="fill:url(#linearGradient20063);fill-opacity:1;stroke:url(#linearGradient20065);stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+         id="rect20061"
+         height="4.7769966" />
+    </clipPath>
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="matrix(4.9673203,0,0,4.7202881,120.9362,46.715632)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20063"
+       xlink:href="#linearGradient3795-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="133.52888"
+       x2="192.89699"
+       y1="137.15388"
+       x1="192.90271"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20065"
+       xlink:href="#linearGradient20041"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="19.231655"
+       x2="13.567612"
+       y1="18.432873"
+       x1="13.567612"
+       gradientTransform="matrix(4.9673203,0,0,4.7202881,120.9362,46.715632)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20069"
+       xlink:href="#linearGradient3795-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="133.52888"
+       x2="192.89699"
+       y1="137.15388"
+       x1="192.90271"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20071"
+       xlink:href="#linearGradient20041"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       id="perspective20081" />
+    <linearGradient
+       id="linearGradient3228-3-3">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop3230-8-6" />
+      <stop
+         style="stop-color:black;stop-opacity:0.42857143;"
+         offset="0.06770357"
+         id="stop3573-3-2" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0.29894069"
+         id="stop3569-6-8" />
+      <stop
+         style="stop-color:black;stop-opacity:0.49803922;"
+         offset="0.77437174"
+         id="stop3571-6-3" />
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="1"
+         id="stop3232-4-9" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3228-3-3"
+       id="linearGradient20093"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.2750126,0,0,2.2750126,-40.95023,0)"
+       x1="17.999674"
+       y1="10.081399"
+       x2="30"
+       y2="10.081399" />
+    <clipPath
+       id="clipPath20163"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         height="119.21573"
+         id="rect20165"
+         rx="34.771252"
+         ry="34.825241"
+         style="fill:none;stroke:#000000;stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+         width="69.542503"
+         x="108.51788"
+         y="50.130592" />
+    </clipPath>
+    <clipPath
+       id="clipPath20193"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="56.130592"
+         x="-278.98212"
+         width="69.542503"
+         style="fill:url(#linearGradient20197);fill-opacity:1;stroke:none"
+         ry="34.825241"
+         rx="34.771252"
+         id="rect20195"
+         height="119.21573" />
+    </clipPath>
+    <linearGradient
+       y2="13.351768"
+       x2="30.230837"
+       y1="13.351768"
+       x1="18.737373"
+       gradientTransform="matrix(4.9673203,0,0,4.9673203,-365.9102,48.679612)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20197"
+       xlink:href="#linearGradient2904-5"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="85.685379"
+       x2="14.61547"
+       y1="85.685379"
+       x1="-26.835243"
+       gradientTransform="matrix(1.8870302,0,0,1.8776146,-235.67019,7.1456846)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20199"
+       xlink:href="#linearGradient3228-3-3"
+       inkscape:collect="always" />
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.99978338,0.02081323,-0.09005515,4.3258853,8.3120531,-320.05743)"
+       r="34.771252"
+       fy="92.905838"
+       fx="-252.0392"
+       cy="92.905838"
+       cx="-252.0392"
+       id="radialGradient20211"
+       xlink:href="#linearGradient20205"
+       inkscape:collect="always" />
+    <radialGradient
+       r="13.08399"
+       fy="38.343433"
+       fx="19.558981"
+       cy="38.343433"
+       cx="19.558981"
+       gradientTransform="matrix(1.1812972,0,0,0.62268269,-3.4824832,13.649379)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient20239"
+       xlink:href="#linearGradient3711-6"
+       inkscape:collect="always" />
+    <clipPath
+       id="clipPath20245"
+       clipPathUnits="userSpaceOnUse">
+      <path
+         d="m 36.415999,36.907261 a 12.59534,6.4081554 0 1 1 -25.190679,0 12.59534,6.4081554 0 1 1 25.190679,0 z"
+         id="path20247"
+         sodipodi:cx="23.82066"
+         sodipodi:cy="36.907261"
+         sodipodi:rx="12.59534"
+         sodipodi:ry="6.4081554"
+         sodipodi:type="arc"
+         style="fill:none;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    </clipPath>
+    <radialGradient
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.3491052,0,0,1.1951588,-32.399717,-15.770463)"
+       r="12.59534"
+       fy="49.389561"
+       fx="24.015709"
+       cy="49.389561"
+       cx="24.015709"
+       id="radialGradient20271"
+       xlink:href="#linearGradient20265"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="5.5441942"
+       x2="32.864544"
+       y1="13.794194"
+       x1="32.864544"
+       gradientTransform="matrix(4.9673203,0,0,4.1857158,20.347968,126.94353)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20277"
+       xlink:href="#linearGradient4465-6"
+       inkscape:collect="always" />
+    <linearGradient
+       y2="30.421146"
+       x2="23.640165"
+       y1="36.722809"
+       x1="25.606806"
+       gradientTransform="matrix(4.8418564,0,0,5.4752157,24.446802,19.661954)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient20291"
+       xlink:href="#linearGradient3726-0"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective13771"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       id="linearGradient3726-4-1">
+      <stop
+         id="stop3728-9-8"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-2-5"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3795-9">
+      <stop
+         id="stop3797-07"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop3799-60"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13784">
+      <stop
+         id="stop13786"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop13788"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2981-3">
+      <stop
+         id="stop2983-2"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2985-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2943-7">
+      <stop
+         id="stop2945-1"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop2947-3"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2904-7">
+      <stop
+         id="stop2906-6"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop2910-3"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2912-9"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop2908-6"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4481-5">
+      <stop
+         id="stop4483-9"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop4485-81"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2867-5"
+       inkscape:collect="always">
+      <stop
+         id="stop2869-3"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2871-8"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3815-7"
+       inkscape:collect="always">
+      <stop
+         id="stop3817-73"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3819-4"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2877-5"
+       inkscape:collect="always">
+      <stop
+         id="stop2879-5"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2881-5"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2920-9"
+       inkscape:collect="always">
+      <stop
+         id="stop2922-3"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2924-9"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3579-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3581-4"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3583-1"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0"
+       id="radialGradient10966-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient4499-0"
+       inkscape:collect="always">
+      <stop
+         id="stop4501-7"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop4503-6"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8"
+       id="linearGradient10982-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.396276"
+       y1="27.198471"
+       x2="16.365026"
+       y2="18.992922" />
+    <linearGradient
+       id="linearGradient3726-8">
+      <stop
+         id="stop3728-16"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-8"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13837">
+      <stop
+         id="stop13839"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop13841"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13844">
+      <stop
+         id="stop13846"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop13848"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient10986-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(18.59884,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient13851">
+      <stop
+         id="stop13853"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop13855"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3"
+       id="linearGradient10988-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93365598,0,0,0.94630428,0.1070789,1.560429)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient13858">
+      <stop
+         id="stop13860"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop13862"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7"
+       id="linearGradient10990-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2486592,0,0,1.0113615,11.508715,-0.56075794)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient13865">
+      <stop
+         id="stop13867"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop13869"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7"
+       id="linearGradient10992-5"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033"
+       gradientTransform="matrix(0.98788104,0,0,1.0113615,-0.23976961,-0.56075794)" />
+    <linearGradient
+       id="linearGradient13872">
+      <stop
+         id="stop13874"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop13876"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7"
+       id="linearGradient10994-5"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient13879">
+      <stop
+         id="stop13881"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop13883"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop13885"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop13887"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5"
+       id="linearGradient10996-1"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient13890">
+      <stop
+         id="stop13892"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop13894"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5"
+       id="linearGradient11000-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7"
+       id="linearGradient11002-1"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5"
+       id="linearGradient11004-7"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9"
+       id="radialGradient11006-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.75692381,-14.17818,0.21133448)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6"
+       id="linearGradient11008-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9517316,0,0,0.94372518,-0.44251773,3.1419782)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8"
+       id="linearGradient11093-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       x1="14.547704"
+       y1="23.530848"
+       x2="12.968358"
+       y2="23.518084" />
+    <linearGradient
+       id="linearGradient13932">
+      <stop
+         id="stop13934"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop13936"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7"
+       id="linearGradient10998-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0625002,0,0,0.76351725,-1.5382359,3.9735816)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient3734-7">
+      <stop
+         id="stop3736-7"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3738-3"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3012-3"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4505-3"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0" />
+    <linearGradient
+       id="linearGradient4475-7"
+       inkscape:collect="always">
+      <stop
+         id="stop4477-8"
+         offset="0"
+         style="stop-color:black;stop-opacity:1" />
+      <stop
+         id="stop4479-9"
+         offset="1"
+         style="stop-color:black;stop-opacity:0" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4465-4"
+       inkscape:collect="always">
+      <stop
+         id="stop4467-6"
+         offset="0"
+         style="stop-color:#2e3436;stop-opacity:1" />
+      <stop
+         id="stop4469-4"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:0" />
+    </linearGradient>
+    <radialGradient
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3691-5"
+       inkscape:collect="always"
+       r="13.08399"
+       xlink:href="#linearGradient3711-4" />
+    <linearGradient
+       id="linearGradient3711-4"
+       inkscape:collect="always">
+      <stop
+         id="stop3713-2"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3715-0"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2965-77"
+       inkscape:collect="always">
+      <stop
+         id="stop2967-5"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1;" />
+      <stop
+         id="stop2969-4"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3785-4"
+       inkscape:collect="always"
+       x1="23.997437"
+       x2="29.74268"
+       xlink:href="#linearGradient3779-6"
+       y1="37.835339"
+       y2="32.355263" />
+    <linearGradient
+       id="linearGradient3779-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3781-56"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3783-5"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11071-4"
+       id="radialGradient11077-1"
+       cx="317.625"
+       cy="151.625"
+       fx="317.625"
+       fy="151.625"
+       r="1.875"
+       gradientTransform="matrix(1,0,0,0.5,0,75.8125)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient11071-4">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop11073-9" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop11075-5" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3709-2"
+       inkscape:collect="always"
+       x1="23.8125"
+       x2="27.272261"
+       xlink:href="#linearGradient3703-7"
+       y1="41.836731"
+       y2="28.590008" />
+    <linearGradient
+       id="linearGradient3703-7"
+       inkscape:collect="always">
+      <stop
+         id="stop3705-1"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3707-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3732-0"
+       inkscape:collect="always"
+       x1="25.606806"
+       x2="23.640165"
+       xlink:href="#linearGradient3726-8"
+       y1="36.722809"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient13985">
+      <stop
+         id="stop13987"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop13989"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient13992">
+      <stop
+         id="stop13994"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop13996"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(20,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3805-6"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient13999">
+      <stop
+         id="stop14001"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop14003"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2987-1"
+       inkscape:collect="always"
+       x1="23.374121"
+       x2="21.649811"
+       xlink:href="#linearGradient2981-3"
+       y1="19.452076"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient14006">
+      <stop
+         id="stop14008"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop14010"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(14,0)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2953-0"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient14013">
+      <stop
+         id="stop14015"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop14017"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2949-2"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient14020">
+      <stop
+         id="stop14022"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop14024"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2902-5"
+       inkscape:collect="always"
+       x1="18.737373"
+       x2="30.230837"
+       xlink:href="#linearGradient2904-7"
+       y1="13.351768"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient14027">
+      <stop
+         id="stop14029"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop14031"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop14033"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop14035"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5"
+       id="linearGradient10904-8"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient14038">
+      <stop
+         id="stop14040"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop14042"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient14045">
+      <stop
+         id="stop14047"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop14049"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2890-3"
+       inkscape:collect="always"
+       x1="19.583334"
+       x2="23.176371"
+       xlink:href="#linearGradient2867-5"
+       y1="10.76408"
+       y2="10.76408" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2892-2"
+       inkscape:collect="always"
+       x1="23.246162"
+       x2="23.246162"
+       xlink:href="#linearGradient3815-7"
+       y1="24.761473"
+       y2="15.94703" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2894-0"
+       inkscape:collect="always"
+       x1="21.961548"
+       x2="24.508121"
+       xlink:href="#linearGradient2877-5"
+       y1="6.3608937"
+       y2="10.75" />
+    <radialGradient
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2926-3"
+       inkscape:collect="always"
+       r="6.46875"
+       xlink:href="#linearGradient2920-9" />
+    <linearGradient
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3585-1"
+       inkscape:collect="always"
+       x1="20.483149"
+       x2="28.357954"
+       xlink:href="#linearGradient3579-6"
+       y1="3.4711361"
+       y2="25.991137" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient14086"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient14094"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0" />
+    <linearGradient
+       gradientTransform="translate(-0.25,13.5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14102"
+       inkscape:collect="always"
+       x1="32.864544"
+       x2="32.864544"
+       xlink:href="#linearGradient4475-7"
+       y1="13.794194"
+       y2="5.5441942" />
+    <linearGradient
+       gradientTransform="translate(-0.25,12.5)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14110"
+       inkscape:collect="always"
+       x1="32.864544"
+       x2="32.864544"
+       xlink:href="#linearGradient4465-4"
+       y1="13.794194"
+       y2="5.5441942" />
+    <radialGradient
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient14118"
+       inkscape:collect="always"
+       r="13.08399"
+       xlink:href="#linearGradient3711-4" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient14126"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient2965-77" />
+    <linearGradient
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14134"
+       inkscape:collect="always"
+       x1="23.997437"
+       x2="29.74268"
+       xlink:href="#linearGradient3779-6"
+       y1="37.835339"
+       y2="32.355263" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14142"
+       inkscape:collect="always"
+       x1="23.8125"
+       x2="27.272261"
+       xlink:href="#linearGradient3703-7"
+       y1="41.836731"
+       y2="28.590008" />
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14150"
+       inkscape:collect="always"
+       x1="25.606806"
+       x2="23.640165"
+       xlink:href="#linearGradient3726-8"
+       y1="36.722809"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient14152">
+      <stop
+         id="stop14154"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop14156"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14158"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient14160">
+      <stop
+         id="stop14162"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop14164"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(20,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14166"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient14168">
+      <stop
+         id="stop14170"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop14172"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14174"
+       inkscape:collect="always"
+       x1="23.374121"
+       x2="21.649811"
+       xlink:href="#linearGradient2981-3"
+       y1="19.452076"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient14176">
+      <stop
+         id="stop14178"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop14180"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(14,0)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14182"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient14184">
+      <stop
+         id="stop14186"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop14188"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14190"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient14192">
+      <stop
+         id="stop14194"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop14196"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14198"
+       inkscape:collect="always"
+       x1="18.737373"
+       x2="30.230837"
+       xlink:href="#linearGradient2904-7"
+       y1="13.351768"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient14200">
+      <stop
+         id="stop14202"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop14204"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop14206"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop14208"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4487-9"
+       inkscape:collect="always"
+       x1="17.625"
+       x2="17.625"
+       xlink:href="#linearGradient4481-5"
+       y1="20.814491"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient14211">
+      <stop
+         id="stop14213"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop14215"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14217"
+       inkscape:collect="always"
+       x1="24.6875"
+       x2="24.6875"
+       xlink:href="#linearGradient3734-7"
+       y1="36.75"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient14219">
+      <stop
+         id="stop14221"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop14223"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14225"
+       inkscape:collect="always"
+       x1="19.583334"
+       x2="23.176371"
+       xlink:href="#linearGradient2867-5"
+       y1="10.76408"
+       y2="10.76408" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14233"
+       inkscape:collect="always"
+       x1="23.246162"
+       x2="23.246162"
+       xlink:href="#linearGradient3815-7"
+       y1="24.761473"
+       y2="15.94703" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14241"
+       inkscape:collect="always"
+       x1="21.961548"
+       x2="24.508121"
+       xlink:href="#linearGradient2877-5"
+       y1="6.3608937"
+       y2="10.75" />
+    <radialGradient
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient14249"
+       inkscape:collect="always"
+       r="6.46875"
+       xlink:href="#linearGradient2920-9" />
+    <linearGradient
+       gradientTransform="translate(0,3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3567-2"
+       inkscape:collect="always"
+       x1="17.999674"
+       x2="30"
+       xlink:href="#linearGradient3228-6"
+       y1="10.081399"
+       y2="10.081399" />
+    <linearGradient
+       id="linearGradient3228-6">
+      <stop
+         id="stop3230-6"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3573-7"
+         offset="0.06770357"
+         style="stop-color:black;stop-opacity:0.42857143;" />
+      <stop
+         id="stop3569-4"
+         offset="0.29894069"
+         style="stop-color:black;stop-opacity:0;" />
+      <stop
+         id="stop3571-1"
+         offset="0.77437174"
+         style="stop-color:black;stop-opacity:0.49803922;" />
+      <stop
+         id="stop3232-3"
+         offset="1"
+         style="stop-color:black;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient14264"
+       inkscape:collect="always"
+       x1="20.483149"
+       x2="28.357954"
+       xlink:href="#linearGradient3579-6"
+       y1="3.4711361"
+       y2="25.991137" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0"
+       id="radialGradient16183"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0"
+       id="radialGradient16185"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3711-4"
+       id="radialGradient16191"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       r="13.08399" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77"
+       id="radialGradient16193"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3779-6"
+       id="linearGradient16195"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       x1="23.997437"
+       y1="37.835339"
+       x2="29.74268"
+       y2="32.355263" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3703-7"
+       id="linearGradient16197"
+       gradientUnits="userSpaceOnUse"
+       x1="23.8125"
+       y1="41.836731"
+       x2="27.272261"
+       y2="28.590008" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8"
+       id="linearGradient16199"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="25.606806"
+       y1="36.722809"
+       x2="23.640165"
+       y2="30.421146" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient16201"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient16203"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(20,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3"
+       id="linearGradient16205"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7"
+       id="linearGradient16207"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7"
+       id="linearGradient16209"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7"
+       id="linearGradient16211"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7"
+       id="linearGradient16213"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5"
+       id="linearGradient16215"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7"
+       id="linearGradient16217"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5"
+       id="linearGradient16219"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9"
+       id="radialGradient16221"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6"
+       id="linearGradient16223"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77"
+       id="radialGradient16225"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient16227"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7"
+       id="linearGradient16229"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6"
+       id="linearGradient16231"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1"
+       id="linearGradient16233"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient16235"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <inkscape:perspective
+       id="perspective16278"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-3"
+       id="radialGradient16183-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient4499-0-3"
+       inkscape:collect="always">
+      <stop
+         id="stop4501-7-4"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop4503-6-1"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-3"
+       id="radialGradient16185-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3711-4-6"
+       id="radialGradient16191-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       r="13.08399" />
+    <linearGradient
+       id="linearGradient3711-4-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3713-2-8"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3715-0-7"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-1"
+       id="radialGradient16193-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient2965-77-1"
+       inkscape:collect="always">
+      <stop
+         id="stop2967-5-9"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1;" />
+      <stop
+         id="stop2969-4-3"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3779-6-3"
+       id="linearGradient16195-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       x1="23.997437"
+       y1="37.835339"
+       x2="29.74268"
+       y2="32.355263" />
+    <linearGradient
+       id="linearGradient3779-6-3"
+       inkscape:collect="always">
+      <stop
+         id="stop3781-56-9"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3783-5-4"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3703-7-5"
+       id="linearGradient16197-2"
+       gradientUnits="userSpaceOnUse"
+       x1="23.8125"
+       y1="41.836731"
+       x2="27.272261"
+       y2="28.590008" />
+    <linearGradient
+       id="linearGradient3703-7-5"
+       inkscape:collect="always">
+      <stop
+         id="stop3705-1-9"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3707-7-4"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-8"
+       id="linearGradient16199-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="25.606806"
+       y1="36.722809"
+       x2="23.640165"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient3726-8-8">
+      <stop
+         id="stop3728-16-4"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-8-1"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient16201-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient3795-9-7">
+      <stop
+         id="stop3797-07-9"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop3799-60-4"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient16203-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(20,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16318">
+      <stop
+         id="stop16320"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16322"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-7"
+       id="linearGradient16205-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient2981-3-7">
+      <stop
+         id="stop2983-2-5"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2985-7-4"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-9"
+       id="linearGradient16207-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient2943-7-9">
+      <stop
+         id="stop2945-1-2"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop2947-3-8"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-9"
+       id="linearGradient16209-0"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient16333">
+      <stop
+         id="stop16335"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16337"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-3"
+       id="linearGradient16211-0"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient2904-7-3">
+      <stop
+         id="stop2906-6-1"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop2910-3-1"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2912-9-6"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop2908-6-2"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4487-9-6"
+       inkscape:collect="always"
+       x1="17.625"
+       x2="17.625"
+       xlink:href="#linearGradient4481-5-6"
+       y1="20.814491"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient4481-5-6">
+      <stop
+         id="stop4483-9-6"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop4485-81-8"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-7"
+       id="linearGradient16213-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient3734-7-7">
+      <stop
+         id="stop3736-7-5"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3738-3-4"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-1"
+       id="linearGradient16215-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       id="linearGradient2867-5-1"
+       inkscape:collect="always">
+      <stop
+         id="stop2869-3-7"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2871-8-3"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-9"
+       id="linearGradient16217-8"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       id="linearGradient3815-7-9"
+       inkscape:collect="always">
+      <stop
+         id="stop3817-73-9"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3819-4-9"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-8"
+       id="linearGradient16219-9"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <linearGradient
+       id="linearGradient2877-5-8"
+       inkscape:collect="always">
+      <stop
+         id="stop2879-5-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2881-5-3"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-8"
+       id="radialGradient16221-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       id="linearGradient2920-9-8"
+       inkscape:collect="always">
+      <stop
+         id="stop2922-3-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2924-9-6"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3567-2-8"
+       inkscape:collect="always"
+       x1="17.999674"
+       x2="30"
+       xlink:href="#linearGradient3228-6-8"
+       y1="10.081399"
+       y2="10.081399" />
+    <linearGradient
+       id="linearGradient3228-6-8">
+      <stop
+         id="stop3230-6-2"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3573-7-1"
+         offset="0.06770357"
+         style="stop-color:black;stop-opacity:0.42857143;" />
+      <stop
+         id="stop3569-4-1"
+         offset="0.29894069"
+         style="stop-color:black;stop-opacity:0;" />
+      <stop
+         id="stop3571-1-8"
+         offset="0.77437174"
+         style="stop-color:black;stop-opacity:0.49803922;" />
+      <stop
+         id="stop3232-3-3"
+         offset="1"
+         style="stop-color:black;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-6"
+       id="linearGradient16223-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       id="linearGradient3579-6-6"
+       inkscape:collect="always">
+      <stop
+         id="stop3581-4-0"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3583-1-8"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3012-3-0"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-3" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4505-3-7"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-3" />
+    <radialGradient
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3691-5-3"
+       inkscape:collect="always"
+       r="13.08399"
+       xlink:href="#linearGradient3711-4-6" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-1"
+       id="radialGradient16225-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3785-4-5"
+       inkscape:collect="always"
+       x1="23.997437"
+       x2="29.74268"
+       xlink:href="#linearGradient3779-6-3"
+       y1="37.835339"
+       y2="32.355263" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11071-4-6"
+       id="radialGradient11077-1-5"
+       cx="317.625"
+       cy="151.625"
+       fx="317.625"
+       fy="151.625"
+       r="1.875"
+       gradientTransform="matrix(1,0,0,0.5,0,75.8125)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient11071-4-6">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop11073-9-9" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop11075-5-3" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3709-2-5"
+       inkscape:collect="always"
+       x1="23.8125"
+       x2="27.272261"
+       xlink:href="#linearGradient3703-7-5"
+       y1="41.836731"
+       y2="28.590008" />
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3732-0-0"
+       inkscape:collect="always"
+       x1="25.606806"
+       x2="23.640165"
+       xlink:href="#linearGradient3726-8-8"
+       y1="36.722809"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient16427">
+      <stop
+         id="stop16429"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16431"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient16227-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16434">
+      <stop
+         id="stop16436"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16438"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(20,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3805-6-4"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9-7"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16441">
+      <stop
+         id="stop16443"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16445"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2987-1-9"
+       inkscape:collect="always"
+       x1="23.374121"
+       x2="21.649811"
+       xlink:href="#linearGradient2981-3-7"
+       y1="19.452076"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient16448">
+      <stop
+         id="stop16450"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop16452"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(14,0)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2953-0-3"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-9"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient16455">
+      <stop
+         id="stop16457"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16459"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2949-2-7"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-9"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient16462">
+      <stop
+         id="stop16464"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16466"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2902-5-7"
+       inkscape:collect="always"
+       x1="18.737373"
+       x2="30.230837"
+       xlink:href="#linearGradient2904-7-3"
+       y1="13.351768"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient16469">
+      <stop
+         id="stop16471"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop16473"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop16475"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop16477"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-6"
+       id="linearGradient10904-8-1"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient16480">
+      <stop
+         id="stop16482"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop16484"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-7"
+       id="linearGradient16229-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient16487">
+      <stop
+         id="stop16489"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop16491"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2890-3-6"
+       inkscape:collect="always"
+       x1="19.583334"
+       x2="23.176371"
+       xlink:href="#linearGradient2867-5-1"
+       y1="10.76408"
+       y2="10.76408" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2892-2-9"
+       inkscape:collect="always"
+       x1="23.246162"
+       x2="23.246162"
+       xlink:href="#linearGradient3815-7-9"
+       y1="24.761473"
+       y2="15.94703" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2894-0-3"
+       inkscape:collect="always"
+       x1="21.961548"
+       x2="24.508121"
+       xlink:href="#linearGradient2877-5-8"
+       y1="6.3608937"
+       y2="10.75" />
+    <radialGradient
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2926-3-8"
+       inkscape:collect="always"
+       r="6.46875"
+       xlink:href="#linearGradient2920-9-8" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-6"
+       id="linearGradient16231-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-3"
+       id="radialGradient10966-5-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-8"
+       id="linearGradient10982-6-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.396276"
+       y1="27.198471"
+       x2="16.365026"
+       y2="18.992922" />
+    <linearGradient
+       id="linearGradient16536">
+      <stop
+         id="stop16538"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16540"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-5"
+       id="linearGradient16233-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient3726-4-1-5">
+      <stop
+         id="stop3728-9-8-5"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-2-5-8"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient16235-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16547">
+      <stop
+         id="stop16549"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16551"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient10986-3-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(18.59884,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16554">
+      <stop
+         id="stop16556"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16558"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-7"
+       id="linearGradient10988-7-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93365598,0,0,0.94630428,0.1070789,1.560429)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient16561">
+      <stop
+         id="stop16563"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop16565"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-9"
+       id="linearGradient10990-3-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2486592,0,0,1.0113615,11.508715,-0.56075794)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient16568">
+      <stop
+         id="stop16570"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16572"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-9"
+       id="linearGradient10992-5-1"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033"
+       gradientTransform="matrix(0.98788104,0,0,1.0113615,-0.23976961,-0.56075794)" />
+    <linearGradient
+       id="linearGradient16575">
+      <stop
+         id="stop16577"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16579"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-3"
+       id="linearGradient10994-5-3"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient16582">
+      <stop
+         id="stop16584"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop16586"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop16588"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop16590"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-6"
+       id="linearGradient10996-1-4"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient16593">
+      <stop
+         id="stop16595"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop16597"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-1"
+       id="linearGradient11000-8-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-9"
+       id="linearGradient11002-1-4"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-8"
+       id="linearGradient11004-7-9"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-8"
+       id="radialGradient11006-6-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.75692381,-14.17818,0.21133448)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-6"
+       id="linearGradient11008-8-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9517316,0,0,0.94372518,-0.44251773,3.1419782)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-8"
+       id="linearGradient11093-2-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       x1="14.547704"
+       y1="23.530848"
+       x2="12.968358"
+       y2="23.518084" />
+    <linearGradient
+       id="linearGradient16635">
+      <stop
+         id="stop16637"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16639"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-7"
+       id="linearGradient10998-4-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0625002,0,0,0.76351725,-1.5382359,3.9735816)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient16642">
+      <stop
+         id="stop16644"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop16646"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-5"
+       id="linearGradient16237-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.85553658,0,0,0.77385304,0.52441214,2.4879707)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient16649">
+      <stop
+         id="stop16651"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16653"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient16239-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16656">
+      <stop
+         id="stop16658"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16660"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-7"
+       id="linearGradient13119-0-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86359943,0,0,1,16.977403,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient16663">
+      <stop
+         id="stop16665"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop16667"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-7"
+       id="linearGradient13121-7-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79373266,0,0,0.7916132,1.1565043,3.4403526)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient16670">
+      <stop
+         id="stop16672"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop16674"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-9"
+       id="linearGradient13125-0-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98788104,0,0,0.98347786,-0.23976961,-0.44878866)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient16677">
+      <stop
+         id="stop16679"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop16681"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-3"
+       id="linearGradient13127-3-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient16684">
+      <stop
+         id="stop16686"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop16688"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop16690"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop16692"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-6"
+       id="linearGradient13129-9-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient16695">
+      <stop
+         id="stop16697"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop16699"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-1"
+       id="linearGradient13131-7-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-9"
+       id="linearGradient13133-0-9"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-8"
+       id="linearGradient13135-6-1"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-8"
+       id="radialGradient13137-8-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3831764,0,0,0.73605512,-11.304892,0.24124002)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-6"
+       id="linearGradient13139-6-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.95796767,0,0,0.91036433,-1.6428678,3.1920195)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1"
+       id="linearGradient17466"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.85553658,0,0,0.77385304,0.52441214,2.4879707)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient17468"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9"
+       id="linearGradient17470"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86359943,0,0,1,16.977403,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3"
+       id="linearGradient17472"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79373266,0,0,0.7916132,1.1565043,3.4403526)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7"
+       id="linearGradient17474"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98788104,0,0,0.98347786,-0.23976961,-0.44878866)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7"
+       id="linearGradient17476"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5"
+       id="linearGradient17478"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5"
+       id="linearGradient17480"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7"
+       id="linearGradient17482"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5"
+       id="linearGradient17484"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9"
+       id="radialGradient17486"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3831764,0,0,0.73605512,-11.304892,0.24124002)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6"
+       id="linearGradient17488"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.95796767,0,0,0.91036433,-1.6428678,3.1920195)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <inkscape:perspective
+       id="perspective17506"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-0"
+       id="radialGradient16183-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient4499-0-0"
+       inkscape:collect="always">
+      <stop
+         id="stop4501-7-6"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop4503-6-3"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-0"
+       id="radialGradient16185-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3711-4-5"
+       id="radialGradient16191-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       r="13.08399" />
+    <linearGradient
+       id="linearGradient3711-4-5"
+       inkscape:collect="always">
+      <stop
+         id="stop3713-2-4"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3715-0-77"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-5"
+       id="radialGradient16193-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient2965-77-5"
+       inkscape:collect="always">
+      <stop
+         id="stop2967-5-6"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1;" />
+      <stop
+         id="stop2969-4-9"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3779-6-7"
+       id="linearGradient16195-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       x1="23.997437"
+       y1="37.835339"
+       x2="29.74268"
+       y2="32.355263" />
+    <linearGradient
+       id="linearGradient3779-6-7"
+       inkscape:collect="always">
+      <stop
+         id="stop3781-56-6"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3783-5-47"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3703-7-4"
+       id="linearGradient16197-4"
+       gradientUnits="userSpaceOnUse"
+       x1="23.8125"
+       y1="41.836731"
+       x2="27.272261"
+       y2="28.590008" />
+    <linearGradient
+       id="linearGradient3703-7-4"
+       inkscape:collect="always">
+      <stop
+         id="stop3705-1-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3707-7-3"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-6"
+       id="linearGradient16199-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="25.606806"
+       y1="36.722809"
+       x2="23.640165"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient3726-8-6">
+      <stop
+         id="stop3728-16-2"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-8-3"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient16201-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient3795-9-1">
+      <stop
+         id="stop3797-07-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop3799-60-6"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient16203-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(20,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17546">
+      <stop
+         id="stop17548"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17550"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-4"
+       id="linearGradient16205-85"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient2981-3-4">
+      <stop
+         id="stop2983-2-51"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2985-7-1"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-1"
+       id="linearGradient16207-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient2943-7-1">
+      <stop
+         id="stop2945-1-9"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop2947-3-3"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-1"
+       id="linearGradient16209-6"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17561">
+      <stop
+         id="stop17563"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17565"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-2"
+       id="linearGradient16211-7"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient2904-7-2">
+      <stop
+         id="stop2906-6-4"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop2910-3-4"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2912-9-1"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop2908-6-9"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4487-9-1"
+       inkscape:collect="always"
+       x1="17.625"
+       x2="17.625"
+       xlink:href="#linearGradient4481-5-5"
+       y1="20.814491"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient4481-5-5">
+      <stop
+         id="stop4483-9-5"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop4485-81-0"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-6"
+       id="linearGradient16213-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient3734-7-6">
+      <stop
+         id="stop3736-7-6"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3738-3-5"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-7"
+       id="linearGradient16215-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       id="linearGradient2867-5-7"
+       inkscape:collect="always">
+      <stop
+         id="stop2869-3-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2871-8-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-96"
+       id="linearGradient16217-3"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       id="linearGradient3815-7-96"
+       inkscape:collect="always">
+      <stop
+         id="stop3817-73-8"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3819-4-5"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-2"
+       id="linearGradient16219-3"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <linearGradient
+       id="linearGradient2877-5-2"
+       inkscape:collect="always">
+      <stop
+         id="stop2879-5-7"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2881-5-6"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-81"
+       id="radialGradient16221-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       id="linearGradient2920-9-81"
+       inkscape:collect="always">
+      <stop
+         id="stop2922-3-3"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2924-9-5"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3567-2-3"
+       inkscape:collect="always"
+       x1="17.999674"
+       x2="30"
+       xlink:href="#linearGradient3228-6-89"
+       y1="10.081399"
+       y2="10.081399" />
+    <linearGradient
+       id="linearGradient3228-6-89">
+      <stop
+         id="stop3230-6-6"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3573-7-9"
+         offset="0.06770357"
+         style="stop-color:black;stop-opacity:0.42857143;" />
+      <stop
+         id="stop3569-4-2"
+         offset="0.29894069"
+         style="stop-color:black;stop-opacity:0;" />
+      <stop
+         id="stop3571-1-2"
+         offset="0.77437174"
+         style="stop-color:black;stop-opacity:0.49803922;" />
+      <stop
+         id="stop3232-3-4"
+         offset="1"
+         style="stop-color:black;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-5"
+       id="linearGradient16223-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       id="linearGradient3579-6-5"
+       inkscape:collect="always">
+      <stop
+         id="stop3581-4-1"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3583-1-9"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3012-3-2"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-0" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4505-3-2"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-0" />
+    <radialGradient
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3691-5-6"
+       inkscape:collect="always"
+       r="13.08399"
+       xlink:href="#linearGradient3711-4-5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-5"
+       id="radialGradient16225-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3785-4-0"
+       inkscape:collect="always"
+       x1="23.997437"
+       x2="29.74268"
+       xlink:href="#linearGradient3779-6-7"
+       y1="37.835339"
+       y2="32.355263" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11071-4-0"
+       id="radialGradient11077-1-1"
+       cx="317.625"
+       cy="151.625"
+       fx="317.625"
+       fy="151.625"
+       r="1.875"
+       gradientTransform="matrix(1,0,0,0.5,0,75.8125)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient11071-4-0">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop11073-9-8" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop11075-5-2" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3709-2-6"
+       inkscape:collect="always"
+       x1="23.8125"
+       x2="27.272261"
+       xlink:href="#linearGradient3703-7-4"
+       y1="41.836731"
+       y2="28.590008" />
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3732-0-3"
+       inkscape:collect="always"
+       x1="25.606806"
+       x2="23.640165"
+       xlink:href="#linearGradient3726-8-6"
+       y1="36.722809"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient17655">
+      <stop
+         id="stop17657"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17659"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient16227-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17662">
+      <stop
+         id="stop17664"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17666"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(20,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3805-6-5"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9-1"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17669">
+      <stop
+         id="stop17671"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17673"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2987-1-93"
+       inkscape:collect="always"
+       x1="23.374121"
+       x2="21.649811"
+       xlink:href="#linearGradient2981-3-4"
+       y1="19.452076"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17676">
+      <stop
+         id="stop17678"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17680"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(14,0)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2953-0-30"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-1"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17683">
+      <stop
+         id="stop17685"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17687"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2949-2-6"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-1"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17690">
+      <stop
+         id="stop17692"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17694"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2902-5-8"
+       inkscape:collect="always"
+       x1="18.737373"
+       x2="30.230837"
+       xlink:href="#linearGradient2904-7-2"
+       y1="13.351768"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient17697">
+      <stop
+         id="stop17699"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17701"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17703"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17705"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-5"
+       id="linearGradient10904-8-5"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient17708">
+      <stop
+         id="stop17710"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17712"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-6"
+       id="linearGradient16229-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient17715">
+      <stop
+         id="stop17717"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17719"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2890-3-9"
+       inkscape:collect="always"
+       x1="19.583334"
+       x2="23.176371"
+       xlink:href="#linearGradient2867-5-7"
+       y1="10.76408"
+       y2="10.76408" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2892-2-2"
+       inkscape:collect="always"
+       x1="23.246162"
+       x2="23.246162"
+       xlink:href="#linearGradient3815-7-96"
+       y1="24.761473"
+       y2="15.94703" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2894-0-5"
+       inkscape:collect="always"
+       x1="21.961548"
+       x2="24.508121"
+       xlink:href="#linearGradient2877-5-2"
+       y1="6.3608937"
+       y2="10.75" />
+    <radialGradient
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2926-3-1"
+       inkscape:collect="always"
+       r="6.46875"
+       xlink:href="#linearGradient2920-9-81" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-5"
+       id="linearGradient16231-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-0"
+       id="radialGradient10966-5-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-6"
+       id="linearGradient10982-6-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.396276"
+       y1="27.198471"
+       x2="16.365026"
+       y2="18.992922" />
+    <linearGradient
+       id="linearGradient17764">
+      <stop
+         id="stop17766"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17768"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-1"
+       id="linearGradient16233-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient3726-4-1-1">
+      <stop
+         id="stop3728-9-8-55"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-2-5-3"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient16235-36"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17775">
+      <stop
+         id="stop17777"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17779"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient10986-3-54"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(18.59884,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17782">
+      <stop
+         id="stop17784"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17786"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-4"
+       id="linearGradient10988-7-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93365598,0,0,0.94630428,0.1070789,1.560429)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17789">
+      <stop
+         id="stop17791"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17793"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-1"
+       id="linearGradient10990-3-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2486592,0,0,1.0113615,11.508715,-0.56075794)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17796">
+      <stop
+         id="stop17798"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17800"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-1"
+       id="linearGradient10992-5-8"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033"
+       gradientTransform="matrix(0.98788104,0,0,1.0113615,-0.23976961,-0.56075794)" />
+    <linearGradient
+       id="linearGradient17803">
+      <stop
+         id="stop17805"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17807"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-2"
+       id="linearGradient10994-5-5"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient17810">
+      <stop
+         id="stop17812"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17814"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17816"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17818"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-5"
+       id="linearGradient10996-1-8"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient17821">
+      <stop
+         id="stop17823"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17825"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-7"
+       id="linearGradient11000-8-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-96"
+       id="linearGradient11002-1-0"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-2"
+       id="linearGradient11004-7-7"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-81"
+       id="radialGradient11006-6-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.75692381,-14.17818,0.21133448)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-5"
+       id="linearGradient11008-8-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9517316,0,0,0.94372518,-0.44251773,3.1419782)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-6"
+       id="linearGradient11093-2-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       x1="14.547704"
+       y1="23.530848"
+       x2="12.968358"
+       y2="23.518084" />
+    <linearGradient
+       id="linearGradient17863">
+      <stop
+         id="stop17865"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17867"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-6"
+       id="linearGradient10998-4-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0625002,0,0,0.76351725,-1.5382359,3.9735816)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient17870">
+      <stop
+         id="stop17872"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17874"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-1"
+       id="linearGradient17466-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.85553658,0,0,0.77385304,0.52441214,2.4879707)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient17877">
+      <stop
+         id="stop17879"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17881"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient17468-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17884">
+      <stop
+         id="stop17886"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17888"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-1"
+       id="linearGradient17470-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86359943,0,0,1,16.977403,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17891">
+      <stop
+         id="stop17893"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17895"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-4"
+       id="linearGradient17472-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79373266,0,0,0.7916132,1.1565043,3.4403526)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17898">
+      <stop
+         id="stop17900"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17902"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-1"
+       id="linearGradient17474-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98788104,0,0,0.98347786,-0.23976961,-0.44878866)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17905">
+      <stop
+         id="stop17907"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17909"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-2"
+       id="linearGradient17476-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient17912">
+      <stop
+         id="stop17914"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17916"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17918"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17920"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-5"
+       id="linearGradient17478-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient17923">
+      <stop
+         id="stop17925"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17927"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-7"
+       id="linearGradient17480-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-96"
+       id="linearGradient17482-0"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-2"
+       id="linearGradient17484-9"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-81"
+       id="radialGradient17486-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3831764,0,0,0.73605512,-11.304892,0.24124002)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-5"
+       id="linearGradient17488-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.95796767,0,0,0.91036433,-1.6428678,3.1920195)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <inkscape:perspective
+       id="perspective17506-2"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-6"
+       id="radialGradient16183-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient4499-0-6"
+       inkscape:collect="always">
+      <stop
+         id="stop4501-7-47"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop4503-6-36"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-6"
+       id="radialGradient16185-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3711-4-9"
+       id="radialGradient16191-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       r="13.08399" />
+    <linearGradient
+       id="linearGradient3711-4-9"
+       inkscape:collect="always">
+      <stop
+         id="stop3713-2-5"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3715-0-3"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-10"
+       id="radialGradient16193-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       id="linearGradient2965-77-10"
+       inkscape:collect="always">
+      <stop
+         id="stop2967-5-7"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1;" />
+      <stop
+         id="stop2969-4-2"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3779-6-8"
+       id="linearGradient16195-88"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       x1="23.997437"
+       y1="37.835339"
+       x2="29.74268"
+       y2="32.355263" />
+    <linearGradient
+       id="linearGradient3779-6-8"
+       inkscape:collect="always">
+      <stop
+         id="stop3781-56-91"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3783-5-3"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3703-7-44"
+       id="linearGradient16197-3"
+       gradientUnits="userSpaceOnUse"
+       x1="23.8125"
+       y1="41.836731"
+       x2="27.272261"
+       y2="28.590008" />
+    <linearGradient
+       id="linearGradient3703-7-44"
+       inkscape:collect="always">
+      <stop
+         id="stop3705-1-1"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3707-7-9"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-3"
+       id="linearGradient16199-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="25.606806"
+       y1="36.722809"
+       x2="23.640165"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient3726-8-3">
+      <stop
+         id="stop3728-16-48"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-8-9"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient16201-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient3795-9-2">
+      <stop
+         id="stop3797-07-97"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop3799-60-1"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient16203-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(20,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17546-2">
+      <stop
+         id="stop17548-2"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17550-6"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-1"
+       id="linearGradient16205-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient2981-3-1">
+      <stop
+         id="stop2983-2-7"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop2985-7-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-6"
+       id="linearGradient16207-02"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(14,0)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient2943-7-6">
+      <stop
+         id="stop2945-1-8"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop2947-3-2"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-6"
+       id="linearGradient16209-5"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17561-1">
+      <stop
+         id="stop17563-5"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17565-0"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-1"
+       id="linearGradient16211-70"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient2904-7-1">
+      <stop
+         id="stop2906-6-7"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop2910-3-6"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2912-9-63"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop2908-6-6"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4487-9-5"
+       inkscape:collect="always"
+       x1="17.625"
+       x2="17.625"
+       xlink:href="#linearGradient4481-5-69"
+       y1="20.814491"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient4481-5-69">
+      <stop
+         id="stop4483-9-65"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop4485-81-2"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-74"
+       id="linearGradient16213-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient3734-7-74">
+      <stop
+         id="stop3736-7-64"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop3738-3-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-2"
+       id="linearGradient16215-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       id="linearGradient2867-5-2"
+       inkscape:collect="always">
+      <stop
+         id="stop2869-3-77"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2871-8-0"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-95"
+       id="linearGradient16217-7"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       id="linearGradient3815-7-95"
+       inkscape:collect="always">
+      <stop
+         id="stop3817-73-0"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3819-4-7"
+         offset="1"
+         style="stop-color:black;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-89"
+       id="linearGradient16219-5"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <linearGradient
+       id="linearGradient2877-5-89"
+       inkscape:collect="always">
+      <stop
+         id="stop2879-5-8"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2881-5-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-2"
+       id="radialGradient16221-54"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       id="linearGradient2920-9-2"
+       inkscape:collect="always">
+      <stop
+         id="stop2922-3-1"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop2924-9-1"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(0,3)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3567-2-0"
+       inkscape:collect="always"
+       x1="17.999674"
+       x2="30"
+       xlink:href="#linearGradient3228-6-2"
+       y1="10.081399"
+       y2="10.081399" />
+    <linearGradient
+       id="linearGradient3228-6-2">
+      <stop
+         id="stop3230-6-0"
+         offset="0"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         id="stop3573-7-6"
+         offset="0.06770357"
+         style="stop-color:black;stop-opacity:0.42857143;" />
+      <stop
+         id="stop3569-4-6"
+         offset="0.29894069"
+         style="stop-color:black;stop-opacity:0;" />
+      <stop
+         id="stop3571-1-7"
+         offset="0.77437174"
+         style="stop-color:black;stop-opacity:0.49803922;" />
+      <stop
+         id="stop3232-3-5"
+         offset="1"
+         style="stop-color:black;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-50"
+       id="linearGradient16223-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       id="linearGradient3579-6-50"
+       inkscape:collect="always">
+      <stop
+         id="stop3581-4-8"
+         offset="0"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop3583-1-94"
+         offset="1"
+         style="stop-color:white;stop-opacity:0;" />
+    </linearGradient>
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3012-3-8"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-6" />
+    <radialGradient
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient4505-3-8"
+       inkscape:collect="always"
+       r="12.59534"
+       xlink:href="#linearGradient4499-0-6" />
+    <radialGradient
+       cx="18.753521"
+       cy="40.578671"
+       fx="18.753521"
+       fy="40.578671"
+       gradientTransform="matrix(1.106546,0,0,0.58328,-1.909343,15.04719)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient3691-5-4"
+       inkscape:collect="always"
+       r="13.08399"
+       xlink:href="#linearGradient3711-4-9" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2965-77-10"
+       id="radialGradient16225-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       gradientTransform="matrix(0.980843,0,0,0.974547,0.59387,-0.156861)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3785-4-8"
+       inkscape:collect="always"
+       x1="23.997437"
+       x2="29.74268"
+       xlink:href="#linearGradient3779-6-8"
+       y1="37.835339"
+       y2="32.355263" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11071-4-7"
+       id="radialGradient11077-1-16"
+       cx="317.625"
+       cy="151.625"
+       fx="317.625"
+       fy="151.625"
+       r="1.875"
+       gradientTransform="matrix(1,0,0,0.5,0,75.8125)"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient11071-4-7">
+      <stop
+         style="stop-color:#000000;stop-opacity:1;"
+         offset="0"
+         id="stop11073-9-86" />
+      <stop
+         style="stop-color:#000000;stop-opacity:0;"
+         offset="1"
+         id="stop11075-5-6" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3709-2-8"
+       inkscape:collect="always"
+       x1="23.8125"
+       x2="27.272261"
+       xlink:href="#linearGradient3703-7-44"
+       y1="41.836731"
+       y2="28.590008" />
+    <linearGradient
+       gradientTransform="translate(0,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3732-0-5"
+       inkscape:collect="always"
+       x1="25.606806"
+       x2="23.640165"
+       xlink:href="#linearGradient3726-8-3"
+       y1="36.722809"
+       y2="30.421146" />
+    <linearGradient
+       id="linearGradient17655-3">
+      <stop
+         id="stop17657-4"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17659-7"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient16227-67"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17662-8">
+      <stop
+         id="stop17664-9"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17666-7"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(20,-1)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient3805-6-47"
+       inkscape:collect="always"
+       x1="13.567612"
+       x2="13.567612"
+       xlink:href="#linearGradient3795-9-2"
+       y1="18.432873"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17669-7">
+      <stop
+         id="stop17671-1"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17673-8"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.940947,0,1.564893)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2987-1-2"
+       inkscape:collect="always"
+       x1="23.374121"
+       x2="21.649811"
+       xlink:href="#linearGradient2981-3-1"
+       y1="19.452076"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17676-1">
+      <stop
+         id="stop17678-9"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17680-3"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="translate(14,0)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2953-0-7"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-6"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17683-7">
+      <stop
+         id="stop17685-2"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17687-3"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2949-2-4"
+       inkscape:collect="always"
+       x1="16.65625"
+       x2="16.65625"
+       xlink:href="#linearGradient2943-7-6"
+       y1="16.14632"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17690-2">
+      <stop
+         id="stop17692-4"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17694-0"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2902-5-1"
+       inkscape:collect="always"
+       x1="18.737373"
+       x2="30.230837"
+       xlink:href="#linearGradient2904-7-1"
+       y1="13.351768"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient17697-4">
+      <stop
+         id="stop17699-8"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17701-7"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17703-2"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17705-3"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-69"
+       id="linearGradient10904-8-2"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient17708-6">
+      <stop
+         id="stop17710-1"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17712-8"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-74"
+       id="linearGradient16229-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(0,-1)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient17715-1">
+      <stop
+         id="stop17717-9"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17719-1"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       gradientTransform="matrix(1,0,0,0.809211,0,2.763158)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2890-3-7"
+       inkscape:collect="always"
+       x1="19.583334"
+       x2="23.176371"
+       xlink:href="#linearGradient2867-5-2"
+       y1="10.76408"
+       y2="10.76408" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2892-2-7"
+       inkscape:collect="always"
+       x1="23.246162"
+       x2="23.246162"
+       xlink:href="#linearGradient3815-7-95"
+       y1="24.761473"
+       y2="15.94703" />
+    <linearGradient
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2894-0-0"
+       inkscape:collect="always"
+       x1="21.961548"
+       x2="24.508121"
+       xlink:href="#linearGradient2877-5-89"
+       y1="6.3608937"
+       y2="10.75" />
+    <radialGradient
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       gradientTransform="matrix(1.580773,0,0,0.961547,-12.77702,-2.531609)"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient2926-3-87"
+       inkscape:collect="always"
+       r="6.46875"
+       xlink:href="#linearGradient2920-9-2" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-50"
+       id="linearGradient16231-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.09091,0,0,1.100001,-1.681827,0.84999)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4499-0-6"
+       id="radialGradient10966-5-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.508772,0,18.12988)"
+       cx="23.82066"
+       cy="36.907261"
+       fx="23.82066"
+       fy="36.907261"
+       r="12.59534" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-3"
+       id="linearGradient10982-6-88"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.396276"
+       y1="27.198471"
+       x2="16.365026"
+       y2="18.992922" />
+    <linearGradient
+       id="linearGradient17764-9">
+      <stop
+         id="stop17766-5"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17768-0"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-2"
+       id="linearGradient16233-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.5837775,-0.800515)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient3726-4-1-2">
+      <stop
+         id="stop3728-9-8-4"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop3730-2-5-9"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient16235-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17775-5">
+      <stop
+         id="stop17777-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17779-3"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient10986-3-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(18.59884,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17782-8">
+      <stop
+         id="stop17784-8"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17786-6"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-1"
+       id="linearGradient10988-7-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93365598,0,0,0.94630428,0.1070789,1.560429)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17789-1">
+      <stop
+         id="stop17791-7"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17793-1"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-6"
+       id="linearGradient10990-3-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.2486592,0,0,1.0113615,11.508715,-0.56075794)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17796-8">
+      <stop
+         id="stop17798-4"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17800-1"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-6"
+       id="linearGradient10992-5-5"
+       gradientUnits="userSpaceOnUse"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033"
+       gradientTransform="matrix(0.98788104,0,0,1.0113615,-0.23976961,-0.56075794)" />
+    <linearGradient
+       id="linearGradient17803-5">
+      <stop
+         id="stop17805-0"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17807-5"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-1"
+       id="linearGradient10994-5-0"
+       gradientUnits="userSpaceOnUse"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient17810-2">
+      <stop
+         id="stop17812-3"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17814-8"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17816-3"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17818-1"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-69"
+       id="linearGradient10996-1-1"
+       gradientUnits="userSpaceOnUse"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125"
+       gradientTransform="matrix(0.89850937,0,0,0.87500727,0.63399027,2.2558288)" />
+    <linearGradient
+       id="linearGradient17821-8">
+      <stop
+         id="stop17823-3"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17825-7"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-2"
+       id="linearGradient11000-8-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-95"
+       id="linearGradient11002-1-9"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-89"
+       id="linearGradient11004-7-3"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-2"
+       id="radialGradient11006-6-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.580773,0,0,0.75692381,-14.17818,0.21133448)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-50"
+       id="linearGradient11008-8-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9517316,0,0,0.94372518,-0.44251773,3.1419782)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-8-3"
+       id="linearGradient11093-2-74"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0,1,-1.8541642,0,56.847505,8.8537229)"
+       x1="14.547704"
+       y1="23.530848"
+       x2="12.968358"
+       y2="23.518084" />
+    <linearGradient
+       id="linearGradient17863-1">
+      <stop
+         id="stop17865-6"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17867-1"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3734-7-74"
+       id="linearGradient10998-4-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0625002,0,0,0.76351725,-1.5382359,3.9735816)"
+       x1="24.6875"
+       y1="36.75"
+       x2="24.6875"
+       y2="28.617105" />
+    <linearGradient
+       id="linearGradient17870-3">
+      <stop
+         id="stop17872-4"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17874-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3726-4-1-2"
+       id="linearGradient17466-39"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.85553658,0,0,0.77385304,0.52441214,2.4879707)"
+       x1="16.271276"
+       y1="23.729721"
+       x2="16.271276"
+       y2="18.305422" />
+    <linearGradient
+       id="linearGradient17877-8">
+      <stop
+         id="stop17879-1"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17881-6"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient17468-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-0.3749995,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17884-6">
+      <stop
+         id="stop17886-6"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17888-2"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795-9-2"
+       id="linearGradient17470-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86359943,0,0,1,16.977403,-0.923861)"
+       x1="13.567612"
+       y1="18.432873"
+       x2="13.567612"
+       y2="19.231655" />
+    <linearGradient
+       id="linearGradient17891-6">
+      <stop
+         id="stop17893-8"
+         offset="0"
+         style="stop-color:white;stop-opacity:1" />
+      <stop
+         id="stop17895-4"
+         offset="1"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2981-3-1"
+       id="linearGradient17472-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79373266,0,0,0.7916132,1.1565043,3.4403526)"
+       x1="23.374121"
+       y1="19.452076"
+       x2="21.649811"
+       y2="25.229111" />
+    <linearGradient
+       id="linearGradient17898-6">
+      <stop
+         id="stop17900-9"
+         offset="0"
+         style="stop-color:#eeeeec;stop-opacity:1;" />
+      <stop
+         id="stop17902-7"
+         offset="1"
+         style="stop-color:white;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2943-7-6"
+       id="linearGradient17474-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.98788104,0,0,0.98347786,-0.23976961,-0.44878866)"
+       x1="16.65625"
+       y1="16.14632"
+       x2="16.65625"
+       y2="20.381033" />
+    <linearGradient
+       id="linearGradient17905-9">
+      <stop
+         id="stop17907-2"
+         offset="0"
+         style="stop-color:#555753;stop-opacity:1" />
+      <stop
+         id="stop17909-4"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2904-7-1"
+       id="linearGradient17476-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="18.737373"
+       y1="13.351768"
+       x2="30.230837"
+       y2="13.351768" />
+    <linearGradient
+       id="linearGradient17912-1">
+      <stop
+         id="stop17914-9"
+         offset="0"
+         style="stop-color:#babdb6;stop-opacity:1" />
+      <stop
+         id="stop17916-4"
+         offset="0.21551724"
+         style="stop-color:white;stop-opacity:1;" />
+      <stop
+         id="stop17918-7"
+         offset="0.70243758"
+         style="stop-color:#c3c4c2;stop-opacity:1;" />
+      <stop
+         id="stop17920-2"
+         offset="1"
+         style="stop-color:#888a85;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4481-5-69"
+       id="linearGradient17478-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.90205069,0,0,0.84683731,-0.52819355,2.298084)"
+       x1="17.375"
+       y1="15.314491"
+       x2="17.625"
+       y2="5.125" />
+    <linearGradient
+       id="linearGradient17923-2">
+      <stop
+         id="stop17925-7"
+         offset="0"
+         style="stop-color:#3e403d;stop-opacity:1" />
+      <stop
+         id="stop17927-8"
+         offset="1"
+         style="stop-color:#babdb6;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2867-5-2"
+       id="linearGradient17480-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,0.72266039,0,4.7538205)"
+       x1="19.583334"
+       y1="10.76408"
+       x2="23.176371"
+       y2="10.76408" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3815-7-95"
+       id="linearGradient17482-8"
+       gradientUnits="userSpaceOnUse"
+       x1="23.246162"
+       y1="24.761473"
+       x2="23.246162"
+       y2="15.94703" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2877-5-89"
+       id="linearGradient17484-8"
+       gradientUnits="userSpaceOnUse"
+       x1="21.961548"
+       y1="6.3608937"
+       x2="24.508121"
+       y2="10.75" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2920-9-2"
+       id="radialGradient17486-7"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3831764,0,0,0.73605512,-11.304892,0.24124002)"
+       cx="22.553526"
+       cy="10.432782"
+       fx="22.553526"
+       fy="10.432782"
+       r="6.46875" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3579-6-50"
+       id="linearGradient17488-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.95796767,0,0,0.91036433,-1.6428678,3.1920195)"
+       x1="20.483149"
+       y1="3.4711361"
+       x2="28.357954"
+       y2="25.991137" />
+    <inkscape:perspective
+       id="perspective24256"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient20940-6"
+       id="radialGradient20946-9"
+       cx="1534.875"
+       cy="197.3125"
+       fx="1534.875"
+       fy="197.3125"
+       r="4.5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7936036,0,0,1.7936036,-1218.0823,-156.58791)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient20940-6">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1"
+         offset="0"
+         id="stop20942-0" />
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="1"
+         id="stop20944-9" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient20921-3"
+       id="linearGradient20938-8-0"
+       gradientUnits="userSpaceOnUse"
+       x1="1540.5205"
+       y1="196.31589"
+       x2="1540.5205"
+       y2="204" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient20921-3">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop20923-9" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop20925-0" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient20940-6"
+       id="radialGradient20964-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.7936036,0,0,1.7936036,-1218.0823,-156.58791)"
+       cx="1534.875"
+       cy="197.3125"
+       fx="1534.875"
+       fy="197.3125"
+       r="4.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient20921-3"
+       id="linearGradient20966-5"
+       gradientUnits="userSpaceOnUse"
+       x1="1540.5205"
+       y1="196.31589"
+       x2="1540.5205"
+       y2="204" />
+    <filter
+       inkscape:collect="always"
+       id="filter10244-3"
+       x="-0.07"
+       width="1.14"
+       y="-0.41999999"
+       height="1.84"
+       color-interpolation-filters="sRGB">
+      <feGaussianBlur
+         inkscape:collect="always"
+         stdDeviation="0.2625"
+         id="feGaussianBlur10246-6" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10299-6"
+       id="radialGradient20846-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(5.7381652,0,0,2.7438309,-3451.61,-805.90483)"
+       cx="728.12396"
+       cy="459.94751"
+       fx="728.12396"
+       fy="459.94751"
+       r="5.5" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient10299-6">
+      <stop
+         style="stop-color:#888a85;stop-opacity:1"
+         offset="0"
+         id="stop10301-6" />
+      <stop
+         style="stop-color:#555753;stop-opacity:1"
+         offset="1"
+         id="stop10303-1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10326-4-1"
+       id="radialGradient20848-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(6.8033781,0,0,2.9242241,-4114.4753,-1103.4401)"
+       cx="711.25"
+       cy="532.375"
+       fx="711.25"
+       fy="532.375"
+       r="4.5" />
+    <linearGradient
+       id="linearGradient10326-4-1"
+       inkscape:collect="always">
+      <stop
+         id="stop10329-8-0"
+         offset="0"
+         style="stop-color:#888a85;stop-opacity:1" />
+      <stop
+         id="stop10331-9-7"
+         offset="1"
+         style="stop-color:#2e3436;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10181-9"
+       id="linearGradient20850-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.3227953,0,0,1.333167,-216.67883,-256.74506)"
+       x1="712.64349"
+       y1="533.83154"
+       x2="716.09131"
+       y2="542.42279" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient10181-9">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop10183-0" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop10185-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10299-6"
+       id="radialGradient20776-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(5.7827838,0,0,2.7438309,-3484.0716,-805.90483)"
+       cx="728.12396"
+       cy="459.94751"
+       fx="728.12396"
+       fy="459.94751"
+       r="5.5" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10326-4-1"
+       id="radialGradient20778-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(5.6684259,0,0,2.9242241,-3307.2303,-1103.4401)"
+       cx="711.25"
+       cy="532.375"
+       fx="711.25"
+       fy="532.375"
+       r="4.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient10181-9"
+       id="linearGradient20780-8-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.388165,0,0,1.3893363,-263.34208,-286.88003)"
+       x1="712.64349"
+       y1="533.83154"
+       x2="716.09131"
+       y2="542.42279" />
+    <inkscape:perspective
+       id="perspective25324"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective25467"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-1"
+       id="radialGradient25400-7"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="107.37611"
+       fx="371.34375"
+       fy="107.37611"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-1">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-6" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-0"
+       id="radialGradient25402-8"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="104.5173"
+       fx="371.34375"
+       fy="104.5173"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-0">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-5" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-9" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-1"
+       id="radialGradient25479"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="107.37611"
+       fx="371.34375"
+       fy="107.37611"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-0"
+       id="radialGradient25487"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="104.5173"
+       fx="371.34375"
+       fy="104.5173"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-1"
+       id="radialGradient25495"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="107.37611"
+       fx="371.34375"
+       fy="107.37611"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-0"
+       id="radialGradient25503"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="104.5173"
+       fx="371.34375"
+       fy="104.5173"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-0"
+       id="radialGradient25428-5"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-0">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-4" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-2" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-5"
+       id="radialGradient25420-7"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-5">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-5" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-1" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-0"
+       id="radialGradient25519"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-5"
+       id="radialGradient25527"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-0"
+       id="radialGradient25535"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-5"
+       id="radialGradient25543"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient25780"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient25782"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient25790"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient25792"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient25806"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient25808"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective25822"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-5"
+       id="radialGradient25780-1"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-5">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-9" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-20" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-1"
+       id="radialGradient25782-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-1">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-9" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-9" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-5"
+       id="radialGradient25790-7"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-1"
+       id="radialGradient25792-3"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective25954"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17"
+       id="radialGradient25810-7"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="107.37611"
+       fx="371.34375"
+       fy="107.37611"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09"
+       id="radialGradient25812-3"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="104.5173"
+       fx="371.34375"
+       fy="104.5173"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="107.37611"
+       fx="371.34375"
+       cy="107.37611"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25967"
+       xlink:href="#linearGradient25372-17"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="104.5173"
+       fx="371.34375"
+       cy="104.5173"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25969"
+       xlink:href="#linearGradient25346-09"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective26008"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       r="3.3928573"
+       fy="107.37611"
+       fx="371.34375"
+       cy="107.37611"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25967-7"
+       xlink:href="#linearGradient25372-17-3"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-3">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-2" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-3" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="104.5173"
+       fx="371.34375"
+       cy="104.5173"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25969-0"
+       xlink:href="#linearGradient25346-09-3"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-3">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-4" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-0" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-5-6"
+       id="radialGradient25780-1-1"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-5-6">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-9-2" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-20-8" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-1-7"
+       id="radialGradient25782-9-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-1-7">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-9-2" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-9-5" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-3"
+       id="radialGradient26120"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="107.37611"
+       fx="371.34375"
+       fy="107.37611"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-3"
+       id="radialGradient26122"
+       gradientUnits="userSpaceOnUse"
+       cx="371.34375"
+       cy="104.5173"
+       fx="371.34375"
+       fy="104.5173"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient26142"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient26144"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient26146"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient26148"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient26150"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient26152"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient26160"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient26162"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422"
+       id="radialGradient26170"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414"
+       id="radialGradient26172"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective26182"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05"
+       id="radialGradient26170-6"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58"
+       id="radialGradient26172-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05"
+       id="radialGradient26160-3"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58"
+       id="radialGradient26162-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective26312"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25967-75"
+       xlink:href="#linearGradient25372-17-7"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25969-5"
+       xlink:href="#linearGradient25346-09-6"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="107.37611"
+       fx="371.34375"
+       cy="107.37611"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26325"
+       xlink:href="#linearGradient25372-17-7"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="104.5173"
+       fx="371.34375"
+       cy="104.5173"
+       cx="371.34375"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26327"
+       xlink:href="#linearGradient25346-09-6"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective26365"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-2"
+       id="radialGradient26170-6-7"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-2">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-3" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-8" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-2"
+       id="radialGradient26172-5-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-2">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-7" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-6" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-2"
+       id="radialGradient26160-3-6"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-2"
+       id="radialGradient26162-9-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25967-75-0"
+       xlink:href="#linearGradient25372-17-7-4"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-4">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-6" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-3" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient25969-5-0"
+       xlink:href="#linearGradient25346-09-6-2"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-2">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-3" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-2" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26407"
+       xlink:href="#linearGradient25372-17-7-4"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26409"
+       xlink:href="#linearGradient25346-09-6-2"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-4"
+       id="radialGradient26490"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-2"
+       id="radialGradient26492"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7"
+       id="radialGradient26563"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6"
+       id="radialGradient26565"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05"
+       id="radialGradient26567"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58"
+       id="radialGradient26569"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05"
+       id="radialGradient26571"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58"
+       id="radialGradient26573"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective26583"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0"
+       id="radialGradient26571-6"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20"
+       id="radialGradient26573-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0"
+       id="radialGradient26567-4"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20"
+       id="radialGradient26569-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1"
+       id="radialGradient26563-0"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-1">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-60" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-0" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1"
+       id="radialGradient26565-2"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-1">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-7" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-8" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26625"
+       xlink:href="#linearGradient25372-17-7-1"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26627"
+       xlink:href="#linearGradient25346-09-6-1"
+       inkscape:collect="always" />
+    <inkscape:perspective
+       id="perspective26712"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8"
+       id="radialGradient26571-6-3"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0-8">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1-7" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5-4" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6"
+       id="radialGradient26573-1-6"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20-6">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4-0" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5-2" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8"
+       id="radialGradient26567-4-1"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6"
+       id="radialGradient26569-6-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26625-0"
+       xlink:href="#linearGradient25372-17-7-1-9"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-1-9">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-60-8" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-0-3" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26627-8"
+       xlink:href="#linearGradient25346-09-6-1-2"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-1-2">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-7-6" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-8-5" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26754"
+       xlink:href="#linearGradient25372-17-7-1-9"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26756"
+       xlink:href="#linearGradient25346-09-6-1-2"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0"
+       id="radialGradient26839"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20"
+       id="radialGradient26841"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective26851"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-8"
+       id="radialGradient26571-6-3-7"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0-8-8">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1-7-2" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5-4-8" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-2"
+       id="radialGradient26573-1-6-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20-6-2">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4-0-3" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5-2-5" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-8"
+       id="radialGradient26567-4-1-8"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-2"
+       id="radialGradient26569-6-5-4"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26754-0"
+       xlink:href="#linearGradient25372-17-7-1-9-8"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-1-9-8">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-60-8-1" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-0-3-2" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26756-3"
+       xlink:href="#linearGradient25346-09-6-1-2-7"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-1-2-7">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-7-6-2" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-8-5-4" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26893"
+       xlink:href="#linearGradient25372-17-7-1-9-8"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient26895"
+       xlink:href="#linearGradient25346-09-6-1-2-7"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1-9-8"
+       id="radialGradient26976"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1-2-7"
+       id="radialGradient26978"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1-9"
+       id="radialGradient26996"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1-2"
+       id="radialGradient26998"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8"
+       id="radialGradient27000"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6"
+       id="radialGradient27002"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8"
+       id="radialGradient27004"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6"
+       id="radialGradient27006"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective27016"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-0"
+       id="radialGradient27004-3"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0-8-0">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1-7-8" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5-4-7" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-4"
+       id="radialGradient27006-2"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20-6-4">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4-0-5" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5-2-3" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-0"
+       id="radialGradient27000-8"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-4"
+       id="radialGradient27002-8"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1-9-2"
+       id="radialGradient26996-1"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-1-9-2">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-60-8-4" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-0-3-9" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1-2-2"
+       id="radialGradient26998-6"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-1-2-2">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-7-6-0" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-8-5-6" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient27058"
+       xlink:href="#linearGradient25372-17-7-1-9-2"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient27060"
+       xlink:href="#linearGradient25346-09-6-1-2-2"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-0"
+       id="radialGradient27143"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-4"
+       id="radialGradient27145"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <inkscape:perspective
+       id="perspective27016-0"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-1"
+       id="radialGradient27004-7"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0-8-1">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1-7-4" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5-4-4" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-8"
+       id="radialGradient27006-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20-6-8">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4-0-6" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5-2-2" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-8-1"
+       id="radialGradient27000-1"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-6-8"
+       id="radialGradient27002-5"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1-9-1"
+       id="radialGradient26996-3"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25372-17-7-1-9-1">
+      <stop
+         style="stop-color:#eff1ee;stop-opacity:1"
+         offset="0"
+         id="stop25374-4-3-60-8-8" />
+      <stop
+         style="stop-color:#c2c8bc;stop-opacity:1"
+         offset="1"
+         id="stop25376-7-7-0-3-7" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1-2-8"
+       id="radialGradient26998-3"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25346-09-6-1-2-8">
+      <stop
+         style="stop-color:#babdb6;stop-opacity:1;"
+         offset="0"
+         id="stop25348-4-9-7-6-3" />
+      <stop
+         style="stop-color:#969a90;stop-opacity:1"
+         offset="1"
+         id="stop25350-3-07-8-5-7" />
+    </linearGradient>
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient27058-3"
+       xlink:href="#linearGradient25372-17-7-1-9-1"
+       inkscape:collect="always" />
+    <radialGradient
+       r="3.3928573"
+       fy="114.40797"
+       fx="63.54015"
+       cy="114.40797"
+       cx="63.54015"
+       gradientUnits="userSpaceOnUse"
+       id="radialGradient27060-7"
+       xlink:href="#linearGradient25346-09-6-1-2-8"
+       inkscape:collect="always" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25372-17-7-1-9-1"
+       id="radialGradient27226"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25346-09-6-1-2-8"
+       id="radialGradient27228"
+       gradientUnits="userSpaceOnUse"
+       cx="63.54015"
+       cy="114.40797"
+       fx="63.54015"
+       fy="114.40797"
+       r="3.3928573" />
+    <inkscape:perspective
+       id="perspective11811"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-9"
+       id="radialGradient26571-6-8"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25422-05-0-9">
+      <stop
+         style="stop-color:#ffed91;stop-opacity:1"
+         offset="0"
+         id="stop25424-6-1-8" />
+      <stop
+         style="stop-color:#fca220;stop-opacity:1"
+         offset="1"
+         id="stop25426-5-5-8" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-3"
+       id="radialGradient26573-1-0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient25414-58-20-3">
+      <stop
+         style="stop-color:#b95c00;stop-opacity:1"
+         offset="0"
+         id="stop25416-6-4-7" />
+      <stop
+         style="stop-color:#ff8712;stop-opacity:1"
+         offset="1"
+         id="stop25418-19-5-0" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-9"
+       id="radialGradient26567-4-6"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-3"
+       id="radialGradient26569-6-9"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25422-05-0-9"
+       id="radialGradient26839-2"
+       gradientUnits="userSpaceOnUse"
+       cx="63.437336"
+       cy="112.84037"
+       fx="63.437336"
+       fy="112.84037"
+       r="1.7356977" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient25414-58-20-3"
+       id="radialGradient26841-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.9321479,0,0,1.9321479,-59.22083,-106.92629)"
+       cx="63.531582"
+       cy="114.70958"
+       fx="63.531582"
+       fy="114.70958"
+       r="1.7356977" />
+  </defs>
+  <g
+     id="g12072"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     inkscape:label="high"
+     transform="translate(6,50)">
+    <g
+       id="g12074"
+       inkscape:groupmode="layer"
+       style="display:none"
+       inkscape:label="baseplate 0">
+      <rect
+         id="rect12078"
+         x="18"
+         y="51"
+         inkscape:label="48x48"
+         height="48"
+         width="48"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12080"
+         x="18"
+         y="126"
+         inkscape:label="32x32"
+         height="32"
+         width="32"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12082"
+         x="18"
+         y="177"
+         inkscape:label="24x24"
+         height="24"
+         width="24"
+         style="fill:#d3d7cf;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12084"
+         x="19"
+         y="178"
+         inkscape:label="22x22"
+         height="22"
+         width="22"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12086"
+         x="18"
+         y="221"
+         inkscape:label="16x16"
+         height="16"
+         width="16"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <text
+         id="text12088"
+         x="12"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="context"
+         y="-6"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12090"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">status</tspan>
+      </text>
+      <text
+         id="text12092"
+         x="11"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="icon-name"
+         y="14"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12094"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">audio-input-microphone-high</tspan>
+      </text>
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer2"
+       inkscape:label="icons">
+      <g
+         id="g48"
+         style="display:inline;enable-background:new"
+         transform="translate(13.040289,51)">
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path3010"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="opacity:0.1;fill:url(#radialGradient16183);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.727673,0,0,1.235135,7.166344,-12.0556)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path4489"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="opacity:0.7;fill:url(#radialGradient16185);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(1.233813,0,0,1.235135,-4.890235,-6.055598)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path3683"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="fill:url(#radialGradient16191);fill-opacity:1;stroke:#555753;stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path2955"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="fill:url(#radialGradient16193);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.43667,0,0,0.429141,14.09824,21.41158)" />
+        <path
+           d="m 27.35249,32.125 c -1.738654,0.735383 -2.545819,2.052948 -3.67816,3.167277 -0.486309,0.3076 -0.5997,0.709446 -0.51965,1.276685 0.08005,0.567243 0.489446,1.055334 1.042146,1.218184 0.552698,0.162848 0.999547,0.130039 1.377887,-0.302139 C 26.676195,35.285524 28.744563,33.983863 31,32.85591 29.870496,32.536987 28.651039,32.264053 27.35249,32.125 z"
+           id="path3766"
+           sodipodi:nodetypes="ccssccc"
+           style="opacity:0.7;fill:url(#linearGradient16195);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           d="m 23.8125,31.5 c -3.339495,0 -6.371551,0.683256 -8.46875,1.75 -2.097199,1.066744 -3.125,2.416366 -3.125,3.65625 0,1.239884 1.027801,2.589506 3.125,3.65625 2.097199,1.066744 5.129255,1.750001 8.46875,1.75 3.339495,0 6.371551,-0.683256 8.46875,-1.75 2.097199,-1.066744 3.125,-2.416366 3.125,-3.65625 0,-1.239884 -1.027801,-2.589506 -3.125,-3.65625 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z"
+           id="path3697"
+           inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z "
+           inkscape:radius="-0.99470079"
+           sodipodi:type="inkscape:offset"
+           style="opacity:0.4;fill:none;stroke:url(#linearGradient16197);stroke-width:0.97730058;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           transform="matrix(1.032128,0,0,1.014402,-0.08596444,1.56074)" />
+        <path
+           d="m 24.5,27.5 0,9"
+           id="path3589"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:url(#linearGradient16199);stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
+        <path
+           d="m 34.500008,18.999997 c -8e-6,4.285711 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.21429 -10.000003,-7.500001"
+           id="path2781"
+           sodipodi:nodetypes="csc"
+           style="fill:none;stroke:#888a85;stroke-width:3.00000024;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <rect
+           height="2.9999995"
+           id="rect2783"
+           style="fill:url(#linearGradient16201);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="4"
+           x="12.5"
+           y="16.499998" />
+        <rect
+           height="2.9999995"
+           id="rect3803"
+           style="fill:url(#linearGradient16203);fill-opacity:1;stroke:#888a85;stroke-width:0.99999988;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="4"
+           x="32.5"
+           y="16.499998" />
+        <path
+           d="m 34.500008,18.999991 c 0,4.28571 -4.46,7.500001 -10.000002,7.500001 -5.540002,0 -10.000006,-3.214291 -10.000003,-7.500001"
+           id="rect1882"
+           sodipodi:nodetypes="csc"
+           style="fill:none;stroke:url(#linearGradient16205);stroke-width:0.99999982;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <rect
+           height="6"
+           id="rect2951"
+           rx="0.9722718"
+           ry="0.9722718"
+           style="fill:url(#linearGradient16207);fill-opacity:1;stroke:none;display:inline"
+           width="3.0000005"
+           x="30"
+           y="15" />
+        <path
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z"
+           id="path3825"
+           sodipodi:cx="14"
+           sodipodi:cy="19"
+           sodipodi:rx="0.5"
+           sodipodi:ry="0.5"
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(1.5,0,0,1.5,12.25,-11.25)" />
+        <rect
+           height="6"
+           id="rect2787"
+           rx="0.9722718"
+           ry="0.9722718"
+           style="fill:url(#linearGradient16209);fill-opacity:1;stroke:none;display:inline"
+           width="3.0000005"
+           x="16"
+           y="15" />
+        <rect
+           height="24.000008"
+           id="rect1880"
+           rx="7.0000019"
+           ry="7.0108709"
+           style="fill:url(#linearGradient16211);fill-opacity:1;stroke:url(#linearGradient4487-9);stroke-width:1.00000048;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+           width="14.000004"
+           x="17.499996"
+           y="1.5000002" />
+        <path
+           d="m 24.5,26.5 0,10"
+           id="path3587"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:url(#linearGradient16213);stroke-width:1px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
+        <path
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z"
+           id="path3823"
+           sodipodi:cx="14"
+           sodipodi:cy="19"
+           sodipodi:rx="0.5"
+           sodipodi:ry="0.5"
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;stroke:none"
+           transform="matrix(1.5,0,0,1.5,-7.75,-11.25)" />
+        <g
+           id="g3270"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,46.68088)" />
+        <g
+           id="g2611"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g2613"
+           inkscape:label="Lavoro"
+           style="display:inline"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g2885">
+          <rect
+             height="15.374996"
+             id="rect1975"
+             rx="2"
+             ry="2.1991496"
+             style="fill:url(#linearGradient16215);fill-opacity:1;stroke:none;display:inline"
+             width="4"
+             x="20"
+             y="6" />
+          <path
+             d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z"
+             id="path3811"
+             inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z "
+             inkscape:radius="-0.54470092"
+             sodipodi:type="inkscape:offset"
+             style="opacity:0.2;fill:url(#linearGradient16217);fill-opacity:1;stroke:none;display:inline"
+             transform="translate(0,-1)" />
+          <path
+             d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z"
+             id="path2875"
+             sodipodi:cx="23.65625"
+             sodipodi:cy="7.6875"
+             sodipodi:rx="3.34375"
+             sodipodi:ry="3.0625"
+             sodipodi:type="arc"
+             style="fill:url(#linearGradient16219);fill-opacity:1;stroke:none"
+             transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" />
+        </g>
+        <path
+           d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,5 12.9375,0 0,-5 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z"
+           id="path2916"
+           sodipodi:nodetypes="cccccc"
+           style="opacity:0.9;fill:url(#radialGradient16221);fill-opacity:1;stroke:none;display:inline"
+           transform="translate(0,-1)" />
+        <path
+           d="M 22.5,3 C 22.224,3 22,3.224 22,3.5 22,3.776 22.224,4 22.5,4 22.776,4 23,3.776 23,3.5 23,3.224 22.776,3 22.5,3 z m 2,0 C 24.224,3 24,3.224 24,3.5 24,3.776 24.224,4 24.5,4 24.776,4 25,3.776 25,3.5 25,3.224 24.776,3 24.5,3 z m 2,0 C 26.224,3 26,3.224 26,3.5 26,3.776 26.224,4 26.5,4 26.776,4 27,3.776 27,3.5 27,3.224 26.776,3 26.5,3 z m -5,1 C 21.224,4 21,4.224 21,4.5 21,4.776 21.224,5 21.5,5 21.776,5 22,4.776 22,4.5 22,4.224 21.776,4 21.5,4 z m 2,0 C 23.224,4 22.999999,4.2240007 23,4.5 23,4.7759993 23.223999,5 23.5,5 23.776,5 24,4.7759993 24,4.5 24,4.2240007 23.776,4 23.5,4 z m 2,0 C 25.224,4 24.999999,4.2240007 25,4.5 25,4.7759993 25.223999,5 25.5,5 25.776,5 26,4.7759993 26,4.5 26,4.2240007 25.776,4 25.5,4 z m 2,0 C 27.224,4 27,4.224 27,4.5 27,4.776 27.224,5 27.5,5 27.776,5 28,4.776 28,4.5 28,4.224 27.776,4 27.5,4 z m -7,1 C 20.224,5 19.999999,5.2240008 20,5.5 20,5.7759993 20.223999,6 20.5,6 20.776,6 21,5.7759994 21,5.5 21,5.2240007 20.776,5 20.5,5 z m 2,0 C 22.2
 24,5 21.999999,5.2240008 22,5.5 22,5.7759993 22.223999,6 22.5,6 22.776,6 23,5.7759994 23,5.5 23,5.2240007 22.776,5 22.5,5 z m 2,0 C 24.224,5 23.999999,5.2240008 24,5.5 24,5.7759993 24.223999,6 24.5,6 24.776,6 25,5.7759994 25,5.5 25,5.2240007 24.776,5 24.5,5 z m 2,0 C 26.224,5 25.999999,5.2240008 26,5.5 26,5.7759993 26.223999,6 26.5,6 26.776,6 27,5.7759994 27,5.5 27,5.2240007 26.776,5 26.5,5 z m 2,0 C 28.224,5 28,5.224 28,5.5 28,5.776 28.224,6 28.5,6 28.776,6 29,5.776 29,5.5 29,5.224 28.776,5 28.5,5 z m -9,1 C 19.224,6 18.999999,6.2240008 19,6.5 19,6.7759993 19.223999,7 19.5,7 19.776,7 20,6.7759994 20,6.5 20,6.2240007 19.776,6 19.5,6 z m 2,0 C 21.224,6 20.999999,6.2240008 21,6.5 21,6.7759993 21.223999,7 21.5,7 21.776,7 22,6.7759994 22,6.5 22,6.2240007 21.776,6 21.5,6 z m 2,0 C 23.224,6 22.999999,6.2240008 23,6.5 23,6.7759993 23.223999,7 23.5,7 23.776,7 24,6.7759994 24,6.5 24,6.2240007 23.776,6 23.5,6 z m 2,0 C 25.224,6 24.999999,6.2240008 25,6.5 25,6.7759993 25.223999,7 25.5,
 7 25.776,7 26,6.7759994 26,6.5 26,6.2240007 25.776,6 25.5,6 z m 2,0 C 27.224,6 26.999999,6.2240008 27,6.5 27,6.7759993 27.223999,7 27.5,7 27.776,7 28,6.7759994 28,6.5 28,6.2240007 27.776,6 27.5,6 z m 2,0 C 29.224,6 29,6.224 29,6.5 29,6.776 29.224,7 29.5,7 29.776,7 30,6.776 30,6.5 30,6.224 29.776,6 29.5,6 z m -9,1 C 20.224,7 19.999999,7.2240008 20,7.5 20,7.7759993 20.223999,8.0000002 20.5,8 20.776,8 21,7.7759994 21,7.5 21,7.2240007 20.776,7 20.5,7 z m 2,0 C 22.224,7 21.999999,7.2240008 22,7.5 22,7.7759993 22.223999,8.0000002 22.5,8 22.776,8 23,7.7759994 23,7.5 23,7.2240007 22.776,7 22.5,7 z m 2,0 C 24.224,7 23.999999,7.2240008 24,7.5 24,7.7759993 24.223999,8.0000002 24.5,8 24.776,8 25,7.7759994 25,7.5 25,7.2240007 24.776,7 24.5,7 z m 2,0 C 26.224,7 25.999999,7.2240008 26,7.5 26,7.7759993 26.223999,8.0000002 26.5,8 26.776,8 27,7.7759994 27,7.5 27,7.2240007 26.776,7 26.5,7 z m 2,0 C 28.224,7 27.999999,7.2240008 28,7.5 28,7.7759993 28.223999,8.0000002 28.5,8 28.776,8 29,7.775999
 4 29,7.5 29,7.2240007 28.776,7 28.5,7 z m 2,0 C 30.224,7 30,7.224 30,7.5 30,7.776 30.224,8 30.5,8 30.776,8 31,7.776 31,7.5 31,7.224 30.776,7 30.5,7 z m -11,1 C 19.224,8 18.999999,8.2240008 19,8.5 19,8.7759993 19.223999,9 19.5,9 19.776,9 20,8.7759994 20,8.5 20,8.2240007 19.776,8 19.5,8 z m 2,0 C 21.224,8 20.999999,8.2240008 21,8.5 21,8.7759993 21.223999,9 21.5,9 21.776,9 22,8.7759994 22,8.5 22,8.2240007 21.776,8 21.5,8 z m 2,0 C 23.224,8 22.999999,8.2240008 23,8.5 23,8.7759993 23.223999,9 23.5,9 23.776,9 24,8.7759994 24,8.5 24,8.2240007 23.776,8 23.5,8 z m 2,0 C 25.224,8 24.999999,8.2240008 25,8.5 25,8.7759993 25.223999,9 25.5,9 25.776,9 26,8.7759994 26,8.5 26,8.2240007 25.776,8 25.5,8 z m 2,0 C 27.224,8 26.999999,8.2240008 27,8.5 27,8.7759993 27.223999,9 27.5,9 27.776,9 28,8.7759994 28,8.5 28,8.2240007 27.776,8 27.5,8 z m 2,0 C 29.224,8 28.999999,8.2240008 29,8.5 29,8.7759993 29.223999,9 29.5,9 29.776,9 30,8.7759994 30,8.5 30,8.2240007 29.776,8 29.5,8 z m -11,1 C 18.224,9 17
 .999999,9.224001 18,9.5 18,9.775999 18.223999,10 18.5,10 18.776,10 19,9.775999 19,9.5 19,9.224001 18.776,9 18.5,9 z m 2,0 C 20.224,9 19.999999,9.224001 20,9.5 20,9.775999 20.223999,10 20.5,10 20.776,10 21,9.775999 21,9.5 21,9.224001 20.776,9 20.5,9 z m 2,0 C 22.224,9 21.999999,9.224001 22,9.5 22,9.775999 22.223999,10 22.5,10 22.776,10 23,9.775999 23,9.5 23,9.224001 22.776,9 22.5,9 z m 2,0 C 24.224,9 23.999999,9.224001 24,9.5 24,9.775999 24.223999,10 24.5,10 24.776,10 25,9.775999 25,9.5 25,9.224001 24.776,9 24.5,9 z m 2,0 C 26.224,9 25.999999,9.224001 26,9.5 26,9.775999 26.223999,10 26.5,10 26.776,10 27,9.775999 27,9.5 27,9.224001 26.776,9 26.5,9 z m 2,0 C 28.224,9 27.999999,9.224001 28,9.5 28,9.775999 28.223999,10 28.5,10 28.776,10 29,9.775999 29,9.5 29,9.224001 28.776,9 28.5,9 z m 2,0 C 30.224,9 30,9.224 30,9.5 30,9.776 30.224,10 30.5,10 30.776,10 31,9.776 31,9.5 31,9.224 30.776,9 30.5,9 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.7
 76,11 20,10.775999 20,10.5 20,10.224001 19.776,10 19.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,11 22,10.775999 22,10.5 22,10.224001 21.776,10 21.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,11 24,10.775999 24,10.5 24,10.224001 23.776,10 23.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,11 26,10.775999 26,10.5 26,10.224001 25.776,10 25.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,11 28,10.775999 28,10.5 28,10.224001 27.776,10 27.5,10 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,11 30,10.775999 30,10.5 30,10.224001 29.776,10 29.5,10 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,12 19,11.775999 19,11.5 19,11.224001 18.776,11 18.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.
 5 C 20.776,12 21,11.775999 21,11.5 21,11.224001 20.776,11 20.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,12 23,11.775999 23,11.5 23,11.224001 22.776,11 22.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,12 25,11.775999 25,11.5 25,11.224001 24.776,11 24.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,12 27,11.775999 27,11.5 27,11.224001 26.776,11 26.5,11 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,12 29,11.775999 29,11.5 29,11.224001 28.776,11 28.5,11 z m 2,0 C 30.224,11 30,11.224 30,11.5 30,11.776 30.224,12 30.5,12 30.776,12 31,11.776 31,11.5 31,11.224 30.776,11 30.5,11 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,13 20,12.775999 20,12.5 20,12.224001 19.776,12 19.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,13 22,12.77599
 9 22,12.5 22,12.224001 21.776,12 21.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,13 24,12.775999 24,12.5 24,12.224001 23.776,12 23.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,13 26,12.775999 26,12.5 26,12.224001 25.776,12 25.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,13 28,12.775999 28,12.5 28,12.224001 27.776,12 27.5,12 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,13 30,12.775999 30,12.5 30,12.224001 29.776,12 29.5,12 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,14 19,13.775999 19,13.5 19,13.224001 18.776,13 18.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,14 21,13.775999 21,13.5 21,13.224001 20.776,13 20.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,14 23,13.775999 23,13
 .5 23,13.224001 22.776,13 22.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,14 25,13.775999 25,13.5 25,13.224001 24.776,13 24.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,14 27,13.775999 27,13.5 27,13.224001 26.776,13 26.5,13 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,14 29,13.775999 29,13.5 29,13.224001 28.776,13 28.5,13 z m 2,0 C 30.224,13 30,13.224 30,13.5 30,13.776 30.224,14 30.5,14 30.776,14 31,13.776 31,13.5 31,13.224 30.776,13 30.5,13 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,15 20,14.775999 20,14.5 20,14.224001 19.776,14 19.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,15 22,14.775999 22,14.5 22,14.224001 21.776,14 21.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,15 24,14.775999 24,14.5 24,14.224001 23.776,14
  23.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,15 26,14.775999 26,14.5 26,14.224001 25.776,14 25.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,15 28,14.775999 28,14.5 28,14.224001 27.776,14 27.5,14 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,15 30,14.775999 30,14.5 30,14.224001 29.776,14 29.5,14 z m -11,1 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,16 19,15.775999 19,15.5 19,15.224001 18.776,15 18.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,16 21,15.775999 21,15.5 21,15.224001 20.776,15 20.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,16 23,15.775999 23,15.5 23,15.224001 22.776,15 22.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,16 25,15.775999 25,15.5 25,15.224001 24.776,15 24.5,1
 5 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,16 27,15.775999 27,15.5 27,15.224001 26.776,15 26.5,15 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,16 29,15.775999 29,15.5 29,15.224001 28.776,15 28.5,15 z m 2,0 C 30.224,15 30,15.224 30,15.5 30,15.776 30.224,16 30.5,16 30.776,16 31,15.776 31,15.5 31,15.224 30.776,15 30.5,15 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,17 20,16.776 20,16.5 20,16.224001 19.776,16 19.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,17 22,16.776 22,16.5 22,16.224001 21.776,16 21.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,17 24,16.776 24,16.5 24,16.224001 23.776,16 23.5,16 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,17 26,16.776 26,16.5 26,16.224001 25.776,16 25.5,16 z m 2,0 c -0.276,0 -0.5
 00001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,17 28,16.776 28,16.5 28,16.224001 27.776,16 27.5,16 z m 2,0 c -0.276,0 -0.500001,0.224 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 29.776,17 30,16.775999 30,16.5 30,16.224001 29.776,16 29.5,16 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 18.776,18 19,17.776 19,17.5 19,17.224001 18.776,17 18.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 20.776,18 21,17.776 21,17.5 21,17.224001 20.776,17 20.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 22.776,18 23,17.776 23,17.5 23,17.224001 22.776,17 22.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 24.776,18 25,17.776 25,17.5 25,17.224001 24.776,17 24.5,17 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 26.776,18 27,17.776 27,17.5 27,17.224001 26.776,17 26.5,17 z m 2,0 c -0.276,0 -0.500001,0
 .224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 28.776,18 29,17.776 29,17.5 29,17.224001 28.776,17 28.5,17 z m 2,0 C 30.224,17 30,17.224 30,17.5 30,17.776 30.224,18 30.5,18 30.776,18 31,17.776 31,17.5 31,17.224 30.776,17 30.5,17 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 19.776,19 20,18.776 20,18.5 20,18.224001 19.776,18 19.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 21.776,19 22,18.776 22,18.5 22,18.224001 21.776,18 21.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 23.776,19 24,18.776 24,18.5 24,18.224001 23.776,18 23.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 25.776,19 26,18.776 26,18.5 26,18.224001 25.776,18 25.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.5 0.5,0.5 C 27.776,19 28,18.776 28,18.5 28,18.224001 27.776,18 27.5,18 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.2759
 99 0.223999,0.5 0.5,0.5 C 29.776,19 30,18.776 30,18.5 30,18.224001 29.776,18 29.5,18 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 18.776,20 19,19.776 19,19.5 19,19.224001 18.776,19 18.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,20 21,19.776 21,19.5 21,19.224001 20.776,19 20.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,20 23,19.776 23,19.5 23,19.224001 22.776,19 22.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,20 25,19.776 25,19.5 25,19.224001 24.776,19 24.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,20 27,19.776 27,19.5 27,19.224001 26.776,19 26.5,19 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,20 29,19.776 29,19.5 29,19.224001 28.776,19 28.5,19 z m 2,0 C 30.224,19 30,19.224 30
 ,19.5 30,19.776 30.224,20 30.5,20 30.776,20 31,19.776 31,19.5 31,19.224 30.776,19 30.5,19 z m -11,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 19.776,21 20,20.776 20,20.5 20,20.224001 19.776,20 19.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,21 22,20.776 22,20.5 22,20.224001 21.776,20 21.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,21 24,20.776 24,20.5 24,20.224001 23.776,20 23.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,21 26,20.776 26,20.5 26,20.224001 25.776,20 25.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,21 28,20.776 28,20.5 28,20.224001 27.776,20 27.5,20 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 29.776,21 30,20.776 30,20.5 30,20.224001 29.776,20 29.5,20 z m -9,1 c -0.276,0 -0.5000
 01,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 20.776,22 21,21.776 21,21.5 21,21.224001 20.776,21 20.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,22 23,21.776 23,21.5 23,21.224001 22.776,21 22.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,22 25,21.776 25,21.5 25,21.224001 24.776,21 24.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,22 27,21.776 27,21.5 27,21.224001 26.776,21 26.5,21 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 28.776,22 29,21.776 29,21.5 29,21.224001 28.776,21 28.5,21 z m -7,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 21.776,23 22,22.776 22,22.5 22,22.224001 21.776,22 21.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,23 24,22.776 24,22.5 24,22.224001 23.776,22 23.5,22
  z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,23 26,22.776 26,22.5 26,22.224001 25.776,22 25.5,22 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 27.776,23 28,22.776 28,22.5 28,22.224001 27.776,22 27.5,22 z m -5,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 22.776,24 23,23.776 23,23.5 23,23.224001 22.776,23 22.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 24.776,24 25,23.776 25,23.5 25,23.224001 24.776,23 24.5,23 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 26.776,24 27,23.776 27,23.5 27,23.224001 26.776,23 26.5,23 z m -3,1 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 23.776,25 24,24.776 24,24.5 24,24.224001 23.776,24 23.5,24 z m 2,0 c -0.276,0 -0.500001,0.224001 -0.5,0.5 0,0.275999 0.223999,0.499999 0.5,0.5 C 25.776,25 26,24.776 26,24.5 26
 ,24.224001 25.776,24 25.5,24 z"
+           id="path2902"
+           sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc"
+           style="opacity:0.5;fill:url(#linearGradient3567-2);fill-opacity:1;stroke:none;display:inline" />
+        <rect
+           height="22.000008"
+           id="rect3575"
+           rx="6.0000024"
+           ry="6.0500031"
+           style="fill:none;stroke:url(#linearGradient16223);stroke-width:1.0000006;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="12.000005"
+           x="18.500008"
+           y="2.5000026" />
+      </g>
+      <g
+         id="g32"
+         style="display:inline;enable-background:new"
+         transform="translate(16.061531,126)">
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path137"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="opacity:0.1;fill:url(#radialGradient3012-3);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.47798,0,0,0.814173,3.385476,-7.268726)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path139"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="opacity:0.7;fill:url(#radialGradient4505-3);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.810444,0,0,0.814173,-4.534024,-3.31366)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path145"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="fill:url(#radialGradient3691-5);fill-opacity:1;stroke:#555753;stroke-width:1.48521817;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           transform="matrix(0.677965,0,0,0.668671,-1.378282,1.706858)" />
+        <path
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z"
+           id="path147"
+           sodipodi:cx="23.82066"
+           sodipodi:cy="36.907261"
+           sodipodi:rx="12.59534"
+           sodipodi:ry="6.4081554"
+           sodipodi:type="arc"
+           style="fill:url(#radialGradient16225);fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.286831,0,0,0.28288,7.938768,14.79209)" />
+        <path
+           d="m 16.644967,21.85413 c -1.142054,0.484748 -1.672249,1.353257 -2.41604,2.087798 -0.319437,0.202763 -0.393919,0.46765 -0.341337,0.841562 0.05258,0.373913 0.321497,0.695652 0.684545,0.802999 0.363045,0.107346 0.656563,0.08572 0.90508,-0.199163 0.72352,-1.44985 2.08215,-2.307875 3.563659,-3.051397 -0.741927,-0.210226 -1.542941,-0.390138 -2.395907,-0.481799 z"
+           id="path149"
+           sodipodi:nodetypes="ccssccc"
+           style="opacity:0.7;fill:url(#linearGradient3785-4);fill-opacity:1;fill-rule:evenodd;stroke:none;display:inline" />
+        <path
+           sodipodi:type="arc"
+           style="opacity:0.33632286;color:#000000;fill:url(#radialGradient11077-1);fill-opacity:1;stroke:none;stroke-width:2.99999905;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path11047"
+           sodipodi:cx="317.625"
+           sodipodi:cy="151.625"
+           sodipodi:rx="1.875"
+           sodipodi:ry="0.9375"
+           d="m 319.5,151.625 c 0,0.51777 -0.83947,0.9375 -1.875,0.9375 -1.03553,0 -1.875,-0.41973 -1.875,-0.9375 0,-0.51777 0.83947,-0.9375 1.875,-0.9375 1.03553,0 1.875,0.41973 1.875,0.9375 z"
+           transform="matrix(1.2333333,0,0,1.2333333,-377.05,-161.16042)" />
+        <path
+           d="m 23.8125,31.5 c -3.339495,0 -6.371551,0.683256 -8.46875,1.75 -2.097199,1.066744 -3.125,2.416366 -3.125,3.65625 0,1.239884 1.027801,2.589506 3.125,3.65625 2.097199,1.066744 5.129255,1.750001 8.46875,1.75 3.339495,0 6.371551,-0.683256 8.46875,-1.75 2.097199,-1.066744 3.125,-2.416366 3.125,-3.65625 0,-1.239884 -1.027801,-2.589506 -3.125,-3.65625 C 30.184051,32.183256 27.151995,31.5 23.8125,31.5 z"
+           id="path151"
+           inkscape:original="M 23.8125 30.5 C 16.859872 30.5 11.21875 33.368948 11.21875 36.90625 C 11.21875 40.443552 16.859872 43.312502 23.8125 43.3125 C 30.765128 43.3125 36.406249 40.443552 36.40625 36.90625 C 36.40625 33.368948 30.765128 30.5 23.8125 30.5 z "
+           inkscape:radius="-0.99470079"
+           sodipodi:type="inkscape:offset"
+           style="opacity:0.4;fill:none;stroke:url(#linearGradient3709-2);stroke-width:1.48521817;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           transform="matrix(0.677965,0,0,0.668671,-1.378282,1.706858)" />
+        <path
+           d="m 14.771278,18.805421 0,5.932594"
+           id="path153"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:url(#linearGradient3732-0);stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline" />
+        <path
+           d="m 22.375002,13.702415 c -7e-6,2.825042 -3.317126,4.943828 -7.4375,4.943828 -4.120376,0 -7.4375035,-2.118786 -7.4375013,-4.943828"
+           id="path155"
+           sodipodi:nodetypes="csc"
+           style="fill:none;stroke:#888a85;stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <rect
+           height="1.9775307"
+           id="rect157"
+           style="fill:url(#linearGradient16227);fill-opacity:1;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="3.5773213"
+           x="6.5000014"
+           y="11.554473" />
+        <rect
+           height="1.9775307"
+           id="rect159"
+           style="fill:url(#linearGradient3805-6);fill-opacity:1;stroke:#888a85;stroke-width:0.99999946;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="3.4738331"
+           x="20.026165"
+           y="11.554473" />
+        <path
+           d="m 22.500011,12.999996 c 0,3.110755 -3.345,5.443827 -7.500003,5.443827 -4.155002,0 -7.5000061,-2.333072 -7.5000039,-5.443827"
+           id="path161"
+           sodipodi:nodetypes="csc"
+           style="fill:none;stroke:url(#linearGradient2987-1);stroke-width:0.99999958;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <rect
+           height="3.9550648"
+           id="rect163"
+           rx="0.68577099"
+           ry="0.64089966"
+           style="fill:url(#linearGradient2953-0);fill-opacity:1;stroke:none;display:inline"
+           width="2.1159859"
+           x="18.384014"
+           y="10.565716" />
+        <path
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z"
+           id="path165"
+           sodipodi:cx="14"
+           sodipodi:cy="19"
+           sodipodi:rx="0.5"
+           sodipodi:ry="0.5"
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+           transform="matrix(0.985291,0,0,0.988766,6.724731,-6.737693)" />
+        <rect
+           height="3.9550648"
+           id="rect167"
+           rx="0.69956332"
+           ry="0.64089966"
+           style="fill:url(#linearGradient2949-2);fill-opacity:1;stroke:none;display:inline"
+           width="2.1585429"
+           x="9"
+           y="10.565716" />
+        <rect
+           height="15.485228"
+           id="rect169"
+           rx="4.4971528"
+           ry="4.5235372"
+           style="fill:url(#linearGradient2902-5);fill-opacity:1;stroke:url(#linearGradient10904-8);stroke-width:1.00000024;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+           width="8.9943056"
+           x="10.500002"
+           y="1.5000007" />
+        <path
+           d="m 14.771278,18.146244 0,6.591771"
+           id="path171"
+           sodipodi:nodetypes="cc"
+           style="fill:none;stroke:url(#linearGradient16229);stroke-width:0.9999997px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
+        <path
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z"
+           id="path173"
+           sodipodi:cx="14"
+           sodipodi:cy="19"
+           sodipodi:rx="0.5"
+           sodipodi:ry="0.5"
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;stroke:none"
+           transform="matrix(0.985291,0,0,0.988766,-6.41249,-6.737693)" />
+        <g
+           id="g175"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,46.68088)" />
+        <g
+           id="g177"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g179"
+           inkscape:label="Lavoro"
+           style="display:inline"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g181"
+           transform="matrix(0.61993,0,0,0.629204,-0.178118,0.738936)">
+          <rect
+             height="15.374996"
+             id="rect183"
+             rx="2"
+             ry="2.1991496"
+             style="fill:url(#linearGradient2890-3);fill-opacity:1;stroke:none;display:inline"
+             width="4"
+             x="20"
+             y="6" />
+          <path
+             d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z"
+             id="path185"
+             inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z "
+             inkscape:radius="-0.54470092"
+             sodipodi:type="inkscape:offset"
+             style="opacity:0.2;fill:url(#linearGradient2892-2);fill-opacity:1;stroke:none;display:inline"
+             transform="translate(0,-1)" />
+          <path
+             d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z"
+             id="path187"
+             sodipodi:cx="23.65625"
+             sodipodi:cy="7.6875"
+             sodipodi:rx="3.34375"
+             sodipodi:ry="3.0625"
+             sodipodi:type="arc"
+             style="fill:url(#linearGradient2894-0);fill-opacity:1;stroke:none"
+             transform="matrix(1,0,0,1.081633,-0.375,-1.252551)" />
+        </g>
+        <path
+           d="m 15,2.4400583 c -2.217567,0 -4,1.8962005 -4,4.2640543 L 11,10 19,10 19,6.7041126 C 19,4.3362592 17.217568,2.4400583 15,2.4400583 z"
+           id="path189"
+           sodipodi:nodetypes="cccccc"
+           style="opacity:0.9;fill:url(#radialGradient2926-3);fill-opacity:1;stroke:none;display:inline" />
+        <rect
+           height="13.472397"
+           id="rect191"
+           rx="3.4931109"
+           ry="3.7049098"
+           style="opacity:0.57847535;fill:none;stroke:url(#linearGradient16231);stroke-width:1.00000012;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="6.9862218"
+           x="11.500002"
+           y="2.4999995" />
+        <path
+           id="path13145"
+           style="opacity:0.29142857;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+           d="M 18,6.5 C 18,6.776 17.776,7 17.5,7 17.224,7 17,6.776 17,6.5 17,6.224 17.224,6 17.5,6 17.776,6 18,6.224 18,6.5 z m 0,4 C 18,10.776 17.776,11 17.5,11 17.224,11 17,10.776 17,10.5 17,10.224 17.224,10 17.5,10 c 0.276,0 0.5,0.224 0.5,0.5 z m 0,-2 C 18,8.776 17.776,9 17.5,9 17.224,9 17,8.776 17,8.5 17,8.224 17.224,8 17.5,8 17.776,8 18,8.224 18,8.5 z m 0,4 C 18,12.776 17.776,13 17.5,13 17.224,13 17,12.776 17,12.5 17,12.224 17.224,12 17.5,12 c 0.276,0 0.5,0.224 0.5,0.5 z m -4,-8 C 14,4.776 13.776,5 13.5,5 13.224,5 13,4.776 13,4.5 13,4.224 13.224,4 13.5,4 13.776,4 14,4.224 14,4.5 z m 2,0 C 16,4.776 15.776,5 15.5,5 15.224,5 15,4.776 15,4.5 15,4.224 15.224,4 15.5,4 15.776,4 16,4.224 16,4.5 z m -1,1 C 15,5.776 14.776,6 14.5,6 14.224,6 14,5.776 14,5.5 14,5.224 14.224,5 14.5,5 14.776,5 15,5.224 15,5.5 z m -2,0 C 13,5.776 12.776,6 12.5,6 12.224,6 12,5.776 12,5.5 12,5.224 12.224,5 12.5,5 12.776,5 13,5.224 13,5.5 z m 2,-2 C 15,3.776 14.776,4 14.5,4 14.224,4 14,3.776 14,3.5 14,3
 .224 14.224,3 14.5,3 14.776,3 15,3.224 15,3.5 z m 2,2 C 17,5.776 16.776,6 16.5,6 16.224,6 16,5.776 16,5.5 16,5.224 16.224,5 16.5,5 16.776,5 17,5.224 17,5.5 z m -1,1 C 16,6.776 15.776,7 15.5,7 15.224,7 15,6.776 15,6.5 15,6.224 15.224,6 15.5,6 15.776,6 16,6.224 16,6.5 z m -2,0 C 14,6.776 13.776,7 13.5,7 13.224,7 13,6.776 13,6.5 13,6.224 13.224,6 13.5,6 13.776,6 14,6.224 14,6.5 z m 0,2 C 14,8.776 13.776,9 13.5,9 13.224,9 13,8.776 13,8.5 13,8.224 13.224,8 13.5,8 13.776,8 14,8.224 14,8.5 z m 2,0 C 16,8.776 15.776,9 15.5,9 15.224,9 15,8.776 15,8.5 15,8.224 15.224,8 15.5,8 15.776,8 16,8.224 16,8.5 z m -1,1 C 15,9.776 14.776,10 14.5,10 14.224,10 14,9.776 14,9.5 14,9.224 14.224,9 14.5,9 14.776,9 15,9.224 15,9.5 z m -2,0 C 13,9.776 12.776,10 12.5,10 12.224,10 12,9.776 12,9.5 12,9.224 12.224,9 12.5,9 12.776,9 13,9.224 13,9.5 z m 2,-2 C 15,7.776 14.776,8 14.5,8 14.224,8 14,7.776 14,7.5 14,7.224 14.224,7 14.5,7 14.776,7 15,7.224 15,7.5 z m -2,0 C 13,7.776 12.776,8 12.5,8 12.224,8 12,7.77
 6 12,7.5 12,7.224 12.224,7 12.5,7 12.776,7 13,7.224 13,7.5 z m 4,0 C 17,7.776 16.776,8 16.5,8 16.224,8 16,7.776 16,7.5 16,7.224 16.224,7 16.5,7 16.776,7 17,7.224 17,7.5 z m 0,2 C 17,9.776 16.776,10 16.5,10 16.224,10 16,9.776 16,9.5 16,9.224 16.224,9 16.5,9 16.776,9 17,9.224 17,9.5 z m -1,1 C 16,10.776 15.776,11 15.5,11 15.224,11 15,10.776 15,10.5 15,10.224 15.224,10 15.5,10 c 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 C 14,10.776 13.776,11 13.5,11 13.224,11 13,10.776 13,10.5 13,10.224 13.224,10 13.5,10 c 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 C 14,12.776 13.776,13 13.5,13 13.224,13 13,12.776 13,12.5 13,12.224 13.224,12 13.5,12 c 0.276,0 0.5,0.224 0.5,0.5 z m 2,0 C 16,12.776 15.776,13 15.5,13 15.224,13 15,12.776 15,12.5 15,12.224 15.224,12 15.5,12 c 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 C 15,13.776 14.776,14 14.5,14 14.224,14 14,13.776 14,13.5 14,13.224 14.224,13 14.5,13 c 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 C 13,13.776 12.776,14 12.5,14 12.224,14 12,13.776 12,13.5 12,13.224 12.224,13 12.5,13
  c 0.276,0 0.5,0.224 0.5,0.5 z m 2,-2 C 15,11.776 14.776,12 14.5,12 14.224,12 14,11.776 14,11.5 14,11.224 14.224,11 14.5,11 c 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 C 13,11.776 12.776,12 12.5,12 12.224,12 12,11.776 12,11.5 12,11.224 12.224,11 12.5,11 c 0.276,0 0.5,0.224 0.5,0.5 z m 4,0 C 17,11.776 16.776,12 16.5,12 16.224,12 16,11.776 16,11.5 16,11.224 16.224,11 16.5,11 c 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 C 17,13.776 16.776,14 16.5,14 16.224,14 16,13.776 16,13.5 16,13.224 16.224,13 16.5,13 c 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 C 16,14.776 15.776,15 15.5,15 15.224,15 15,14.776 15,14.5 15,14.224 15.224,14 15.5,14 c 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 C 14,14.776 13.776,15 13.5,15 13.224,15 13,14.776 13,14.5 13,14.224 13.224,14 13.5,14 c 0.276,0 0.5,0.224 0.5,0.5 z" />
+      </g>
+      <g
+         transform="translate(13.401161,174.875)"
+         style="display:inline;enable-background:new"
+         id="g10906">
+        <path
+           transform="matrix(0.47798,0,0,0.814173,1.9843165,-7.192587)"
+           style="opacity:0.1;fill:url(#radialGradient10966-5);fill-opacity:1;stroke:none;display:inline"
+           sodipodi:type="arc"
+           sodipodi:ry="6.4081554"
+           sodipodi:rx="12.59534"
+           sodipodi:cy="36.907261"
+           sodipodi:cx="23.82066"
+           id="path10908"
+           d="m 36.415999,36.907261 c 0,3.539126 -5.639125,6.408155 -12.595339,6.408155 -6.956214,0 -12.59534,-2.869029 -12.59534,-6.408155 0,-3.539127 5.639126,-6.408156 12.59534,-6.408156 6.956214,0 12.595339,2.869029 12.595339,6.408156 z" />
+        <path
+           style="fill:none;stroke:url(#linearGradient10982-6);stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+           sodipodi:nodetypes="cs"
+           id="path10924"
+           d="m 14.1875,19.004906 0,4.474186" />
+        <path
+           style="color:#000000;fill:none;stroke:url(#linearGradient16233);stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:nodetypes="csc"
+           id="path10926"
+           d="m 21.011545,13.740851 c -7e-6,2.868131 -3.105108,5.019234 -6.962124,5.019234 -3.857017,0 -6.9621263,-2.151103 -6.9621242,-5.019234" />
+        <rect
+           y="11.630612"
+           x="6.1250019"
+           width="3.5773213"
+           style="fill:url(#linearGradient16235);fill-opacity:1;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           id="rect10928"
+           height="1.9775307" />
+        <rect
+           y="11.630612"
+           x="18.625006"
+           width="3.4738331"
+           style="fill:url(#linearGradient10986-3);fill-opacity:1;stroke:#888a85;stroke-width:0.99999946;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           id="rect10930"
+           height="1.9775307" />
+        <path
+           style="fill:none;stroke:url(#linearGradient10988-7);stroke-width:0.96900517;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+           sodipodi:nodetypes="csc"
+           id="path10932"
+           d="m 21.114348,13.060638 c 0,3.128466 -3.123079,5.474821 -7.002422,5.474821 -3.879343,0 -7.0024255,-2.346355 -7.0024234,-5.474821" />
+        <rect
+           y="10.125"
+           x="16.982855"
+           width="2.6421452"
+           style="fill:url(#linearGradient10990-3);fill-opacity:1;stroke:none;display:inline"
+           ry="0.64089966"
+           rx="0.68577099"
+           id="rect10934"
+           height="4" />
+        <path
+           transform="matrix(0.985291,0,0,0.988766,5.3235715,-6.661554)"
+           style="fill:#ffffff;fill-opacity:1;stroke:none;display:inline"
+           sodipodi:type="arc"
+           sodipodi:ry="0.5"
+           sodipodi:rx="0.5"
+           sodipodi:cy="19"
+           sodipodi:cx="14"
+           id="path10936"
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" />
+        <rect
+           y="10.125"
+           x="8.6511602"
+           width="2.1323836"
+           style="fill:url(#linearGradient10992-5);fill-opacity:1;stroke:none;display:inline"
+           ry="0.64089966"
+           rx="0.69956332"
+           id="rect10938"
+           height="4" />
+        <rect
+           y="3.5683403"
+           x="10.06834"
+           width="8.0814676"
+           style="fill:url(#linearGradient10994-5);fill-opacity:1;stroke:url(#linearGradient10996-1);stroke-width:0.88668066;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+           ry="4.5235372"
+           rx="4.4971528"
+           id="rect10940"
+           height="13.549686" />
+        <path
+           transform="matrix(0.985291,0,0,0.988766,-6.7874895,-6.661554)"
+           style="fill:#ffffff;fill-opacity:1;stroke:none"
+           sodipodi:type="arc"
+           sodipodi:ry="0.5"
+           sodipodi:rx="0.5"
+           sodipodi:cy="19"
+           sodipodi:cx="14"
+           id="path10944"
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z" />
+        <g
+           transform="translate(-9.25,46.68088)"
+           inkscape:label="Shadow"
+           id="g10946" />
+        <g
+           transform="translate(-9.25,61.74691)"
+           inkscape:label="Shadow"
+           id="g10948" />
+        <g
+           transform="translate(-9.25,61.74691)"
+           style="display:inline"
+           inkscape:label="Lavoro"
+           id="g10950" />
+        <g
+           transform="matrix(0.61993,0,0,0.629204,-1.5792775,0.815075)"
+           id="g10952">
+          <rect
+             y="7.6444602"
+             x="20"
+             width="4"
+             style="fill:url(#linearGradient11000-8);fill-opacity:1;stroke:none;display:inline"
+             ry="2.1991496"
+             rx="2"
+             id="rect10954"
+             height="13.730536" />
+          <path
+             transform="matrix(1,0,0,0.85921544,0,2.655999)"
+             style="opacity:0.2;fill:url(#linearGradient11002-1);fill-opacity:1;stroke:none;display:inline"
+             sodipodi:type="inkscape:offset"
+             inkscape:radius="-0.54470092"
+             inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z "
+             id="path10956"
+             d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z" />
+          <path
+             transform="matrix(1,0,0,1.081633,-0.375,1.9260683)"
+             style="fill:url(#linearGradient11004-7);fill-opacity:1;stroke:none"
+             sodipodi:type="arc"
+             sodipodi:ry="3.0625"
+             sodipodi:rx="3.34375"
+             sodipodi:cy="7.6875"
+             sodipodi:cx="23.65625"
+             id="path10958"
+             d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z" />
+        </g>
+        <path
+           style="opacity:0.9;fill:url(#radialGradient11006-6);fill-opacity:1;stroke:none;display:inline"
+           sodipodi:nodetypes="cccccc"
+           id="path10960"
+           d="m 13.59884,4.125 c -2.217567,0 -4,1.4926772 -4,3.356637 l 0,2.594502 8,0 0,-2.594502 c 0,-1.8639595 -1.782432,-3.356637 -4,-3.356637 z" />
+        <rect
+           y="4.5575728"
+           x="11.057572"
+           width="6.0949187"
+           style="opacity:0.33632286;fill:none;stroke:url(#linearGradient11008-8);stroke-width:0.86514533;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           ry="3.7049098"
+           rx="3.4931111"
+           id="rect10962"
+           height="11.55839" />
+        <path
+           style="opacity:0.29142857;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+           id="path10964"
+           d="m 14.625,5.576139 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,-2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,
 -0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 4,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0
 .5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,-2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 4,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z"
+           sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc" />
+        <path
+           style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:url(#linearGradient11093-2);fill-opacity:1;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+           d="m 8.96875,22.125 c -0.7853982,0.04091 -1.4627805,0.792727 -1.4218743,1.578125 0,0 0.015624,1.421875 0.015624,1.421875 l 14.0625003,0 c 0,0 0.02136,-1.5 0.02136,-1.5 0.01129,-0.792468 -0.728894,-1.511207 -1.521363,-1.5 l -11.0000003,0 c -0.052036,-0.0027 -0.1042138,-0.0027 -0.15625,0 z"
+           id="path11081"
+           sodipodi:nodetypes="csccsccc" />
+        <path
+           style="fill:none;stroke:url(#linearGradient10998-4);stroke-width:0.99999958px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1;display:inline"
+           sodipodi:nodetypes="cc"
+           id="path10942"
+           d="m 14.156249,18.592069 0,5.032931" />
+        <path
+           style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#d3d7cf;fill-opacity:1;stroke:none;stroke-width:0.99999958px;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans"
+           d="m 9,23.125 c -0.2618129,0.02453 -0.4777049,0.285067 -0.4531601,0.546878 0,0 0.01566,0.453122 0.01566,0.453122 l 12.0937501,0 c 0,0 -0.02414,-0.5 -0.02414,-0.5 -0.01274,-0.26387 -0.242955,-0.503728 -0.507106,-0.5 l -11.0312501,0 c -0.031158,-0.0029 -0.062592,-0.0029 -0.09375,0 z"
+           id="path11085"
+           sodipodi:nodetypes="csccsccc" />
+      </g>
+      <g
+         id="g13061"
+         style="display:inline;enable-background:new"
+         transform="translate(12.509548,217.875)">
+        <path
+           d="m 19.000001,13.740851 c -7e-6,2.219512 -2.656534,3.88415 -5.956352,3.88415 -3.2998194,0 -5.956354,-1.664638 -5.9563522,-3.88415"
+           id="path13067"
+           sodipodi:nodetypes="csc"
+           style="color:#000000;fill:none;stroke:url(#linearGradient17466);stroke-width:2.99999905;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+        <rect
+           height="1.9775307"
+           id="rect13069"
+           style="fill:url(#linearGradient17468);fill-opacity:1;stroke:#888a85;stroke-width:0.99999976;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="3.5773213"
+           x="6.1250019"
+           y="11.630612" />
+        <rect
+           height="1.9775307"
+           id="rect13071"
+           style="fill:url(#linearGradient17470);fill-opacity:1;stroke:#888a85;stroke-width:0.9999994;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="3.0000002"
+           x="17"
+           y="11.630612" />
+        <path
+           d="m 19.015497,13.060638 c 0,2.61706 -2.655035,4.579859 -5.952996,4.579859 -3.2979617,0 -5.9530002,-1.962799 -5.9529984,-4.579859"
+           id="path13073"
+           sodipodi:nodetypes="csc"
+           style="fill:none;stroke:url(#linearGradient17472);stroke-width:0.96900517;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
+        <rect
+           height="3.8897185"
+           id="rect13079"
+           rx="0.69956332"
+           ry="0.6232298"
+           style="fill:url(#linearGradient17474);fill-opacity:1;stroke:none;display:inline"
+           width="2.1323836"
+           x="8.6511602"
+           y="9.942359" />
+        <rect
+           height="13.113468"
+           id="rect13081"
+           rx="4.5148778"
+           ry="4.3779068"
+           style="fill:url(#linearGradient17476);fill-opacity:1;stroke:url(#linearGradient17478);stroke-width:0.88668066;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+           width="8.1133194"
+           x="8.9433403"
+           y="3.5683405" />
+        <path
+           d="m 14.5,19 c 0,0.276142 -0.223858,0.5 -0.5,0.5 -0.276142,0 -0.5,-0.223858 -0.5,-0.5 0,-0.276142 0.223858,-0.5 0.5,-0.5 0.276142,0 0.5,0.223858 0.5,0.5 z"
+           id="path13083"
+           sodipodi:cx="14"
+           sodipodi:cy="19"
+           sodipodi:rx="0.5"
+           sodipodi:ry="0.5"
+           sodipodi:type="arc"
+           style="fill:#ffffff;fill-opacity:1;stroke:none"
+           transform="matrix(0.985291,0,0,0.988766,-6.7874895,-6.661554)" />
+        <g
+           id="g13085"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,46.68088)" />
+        <g
+           id="g13087"
+           inkscape:label="Shadow"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g13089"
+           inkscape:label="Lavoro"
+           style="display:inline"
+           transform="translate(-9.25,61.74691)" />
+        <g
+           id="g13091"
+           transform="matrix(0.61993,0,0,0.6118566,-2.3917775,0.82833518)">
+          <rect
+             height="13.730536"
+             id="rect13093"
+             rx="2"
+             ry="2.1991496"
+             style="fill:url(#linearGradient17480);fill-opacity:1;stroke:none;display:inline"
+             width="4"
+             x="20"
+             y="7.6444602" />
+          <path
+             d="m 24.5,3.03125 c -3.586223,0 -6.46875,2.8766161 -6.46875,6.46875 l 0,10 c 0,3.592133 2.882528,6.46875 6.46875,6.46875 3.586222,0 6.46875,-2.876617 6.46875,-6.46875 l 0,-10 c 0,-3.5921334 -2.882527,-6.46875 -6.46875,-6.46875 z"
+             id="path13095"
+             inkscape:original="M 24.5 2.5 C 20.621999 2.5 17.5 5.615977 17.5 9.5 L 17.5 19.5 C 17.5 23.384022 20.621999 26.5 24.5 26.5 C 28.378001 26.5 31.5 23.384022 31.5 19.5 L 31.5 9.5 C 31.5 5.6159775 28.378001 2.5 24.5 2.5 z "
+             inkscape:radius="-0.54470092"
+             sodipodi:type="inkscape:offset"
+             style="opacity:0.2;fill:url(#linearGradient17482);fill-opacity:1;stroke:none;display:inline"
+             transform="matrix(0.9110182,0,0,0.85921544,2.7556552,2.655999)" />
+          <path
+             d="M 27,7.6875 C 27,9.378872 25.502952,10.75 23.65625,10.75 21.809548,10.75 20.3125,9.378872 20.3125,7.6875 20.3125,5.996128 21.809548,4.625 23.65625,4.625 25.502952,4.625 27,5.996128 27,7.6875 z"
+             id="path13097"
+             sodipodi:cx="23.65625"
+             sodipodi:cy="7.6875"
+             sodipodi:rx="3.34375"
+             sodipodi:ry="3.0625"
+             sodipodi:type="arc"
+             style="fill:url(#linearGradient17484);fill-opacity:1;stroke:none"
+             transform="matrix(1,0,0,1.081633,-0.375,1.9260683)" />
+        </g>
+        <path
+           d="m 13,4.0470042 c -1.940371,0 -3.5,1.4515235 -3.5,3.2640932 l 0,2.5229706 7,0 0,-2.5229706 C 16.5,5.498528 14.940372,4.0470042 13,4.0470042 z"
+           id="path13099"
+           sodipodi:nodetypes="cccccc"
+           style="opacity:0.9;fill:url(#radialGradient17486);fill-opacity:1;stroke:none;display:inline" />
+        <rect
+           height="11.149798"
+           id="rect13101"
+           rx="3.5159991"
+           ry="3.5739405"
+           style="opacity:0.33632286;fill:none;stroke:url(#linearGradient17488);stroke-width:0.86514533;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+           width="6.1348543"
+           x="9.9325743"
+           y="4.5575728" />
+        <path
+           sodipodi:nodetypes="csssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssccsssc"
+           d="m 13.5,5.625 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 1,1 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,-2 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0
 .5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 4,0 c 0,0.2759999 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.2240001 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.27
 6,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 2,-2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 4,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m 0,2 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -1,1 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z m -2,0 c 0,0.276 -0.224,0.5 -0.5,0.5 -0.276,0 -0.5,-0.224 -0.5,-0.5 0,-0.276 0.224,-0.5 0.5,-0.5 0.276,0 0.5,0.224 0.5,0.5 z"
+           id="path13103"
+           style="opacity:0.29142857;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      </g>
+      <g
+         id="g25435">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path25404"
+           style="color:#000000;fill:url(#radialGradient25806);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25808);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path25433"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         id="use25439"
+         transform="translate(0,10)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25790);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25792);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25786"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25788"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         id="use25441"
+         transform="translate(0,20)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25780);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25782);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25776"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25778"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         id="g26124"
+         transform="matrix(0.67041768,0,0,0.67041768,5.9921062,90.918773)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26142);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26144);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26126"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26128"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,5.9921062,98.91877)"
+         id="g26154">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26156"
+           style="color:#000000;fill:url(#radialGradient26160);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26162);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26158"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         id="g26164"
+         transform="matrix(0.67041768,0,0,0.67041768,5.9921062,106.91877)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26170);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26172);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26166"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26168"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         transform="matrix(0.67041768,0,0,0.67041768,-7.04824,185.95912)"
+         id="g26984-6">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26986-5"
+           style="color:#000000;fill:url(#radialGradient27000-8);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27002-8);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26988-8"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26990-9"
+         transform="matrix(0.67041768,0,0,0.67041768,-7.00789,190.95912)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient27004-3);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27006-2);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26992-0"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26994-6"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         id="g27137"
+         transform="matrix(0.67041768,0,0,0.67041768,-7.04824,180.95912)"
+         style="display:inline;enable-background:new">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient27143);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27145);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path27139"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path27141"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         id="g26551-4"
+         transform="matrix(0.67041768,0,0,0.67041768,-0.00789045,145.91877)"
+         style="display:inline;enable-background:new">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26567-4-6);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26569-6-9);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26553-9"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26555-4"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,-0.00789045,153.91877)"
+         id="g26557-2"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26559-7"
+           style="color:#000000;fill:url(#radialGradient26571-6-8);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26573-1-0);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26561-5"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         transform="matrix(0.67041768,0,0,0.67041768,-0.00789045,137.91877)"
+         id="g26833">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26835"
+           style="color:#000000;fill:url(#radialGradient26839-2);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26841-1);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26837"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+    </g>
+  </g>
+  <g
+     id="g12096"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     inkscape:label="medium"
+     transform="translate(6,50)">
+    <g
+       id="g12098"
+       inkscape:groupmode="layer"
+       style="display:none"
+       inkscape:label="baseplate 1">
+      <rect
+         id="rect12102"
+         x="162"
+         y="51"
+         inkscape:label="48x48"
+         height="48"
+         width="48"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12104"
+         x="162"
+         y="126"
+         inkscape:label="32x32"
+         height="32"
+         width="32"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12106"
+         x="162"
+         y="177"
+         inkscape:label="24x24"
+         height="24"
+         width="24"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12108"
+         x="163"
+         y="178"
+         inkscape:label="22x22"
+         height="22"
+         width="22"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12110"
+         x="162"
+         y="221"
+         inkscape:label="16x16"
+         height="16"
+         width="16"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <text
+         id="text12112"
+         x="160"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="context"
+         y="-8"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12114"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">status</tspan>
+      </text>
+      <text
+         id="text12116"
+         x="161"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="icon-name"
+         y="14"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12118"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">audio-input-microphone-medium</tspan>
+      </text>
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer3"
+       inkscape:label="icons#1">
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#g48"
+         id="use16262"
+         width="1"
+         height="1"
+         transform="translate(144,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#g32"
+         id="use16264"
+         width="1"
+         height="1"
+         transform="translate(144,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#g10906"
+         id="use16266"
+         width="1"
+         height="1"
+         transform="translate(144,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#g13061"
+         id="use16268"
+         width="1"
+         height="1"
+         transform="translate(143.90625,0)" />
+      <g
+         style="display:inline;enable-background:new"
+         id="use25439-9"
+         transform="translate(144,10)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25790-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25792-3);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25786-6"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25788-2"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="use25441-3"
+         transform="translate(144,20)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25780-1);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25782-9);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25776-3"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25778-0"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <path
+         transform="matrix(1.0275229,0,0,1.0275229,-180.06421,-45.70642)"
+         d="m 374.25,106.28125 c 0,1.60508 -1.30117,2.90625 -2.90625,2.90625 -1.60508,0 -2.90625,-1.30117 -2.90625,-2.90625 0,-1.60508 1.30117,-2.90625 2.90625,-2.90625 1.60508,0 2.90625,1.30117 2.90625,2.90625 z"
+         sodipodi:ry="2.90625"
+         sodipodi:rx="2.90625"
+         sodipodi:cy="106.28125"
+         sodipodi:cx="371.34375"
+         id="path25944"
+         style="color:#000000;fill:url(#radialGradient25967);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25969);stroke-width:0.97321433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999992;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <g
+         style="display:inline;enable-background:new"
+         id="g26124-3"
+         transform="matrix(0.67041768,0,0,0.67041768,149.99211,90.918773)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25967-75);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25969-5);stroke-width:0.74974976999999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:0.53926947999999997"
+           id="path26126-2"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         transform="matrix(0.67041768,0,0,0.67041768,149.99211,98.918773)"
+         id="g26154-1">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26156-2"
+           style="color:#000000;fill:url(#radialGradient26160-3);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26162-9);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26158-3"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26164-2"
+         transform="matrix(0.67041768,0,0,0.67041768,149.99211,106.91877)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26170-6);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26172-5);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26166-2"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26168-0"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,143.99211,137.91877)"
+         id="g26547-2-4"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26549-3-7"
+           style="color:#000000;fill:url(#radialGradient26754);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26756);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         id="g26551-4-6"
+         transform="matrix(0.67041768,0,0,0.67041768,143.99211,145.91877)"
+         style="display:inline;enable-background:new">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26567-4-1);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26569-6-5);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26553-9-2"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26555-4-4"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,143.99211,153.91877)"
+         id="g26557-2-9"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26559-7-4"
+           style="color:#000000;fill:url(#radialGradient26571-6-3);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26573-1-6);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26561-5-9"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26980"
+         transform="matrix(0.67041768,0,0,0.67041768,136.99211,180.95912)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26996);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26998);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26982"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         transform="matrix(0.67041768,0,0,0.67041768,136.95176,185.95912)"
+         id="g26984">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26986"
+           style="color:#000000;fill:url(#radialGradient27000);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27002);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26988"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26990"
+         transform="matrix(0.67041768,0,0,0.67041768,136.99211,190.95912)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient27004);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27006);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26992"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26994"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+    </g>
+  </g>
+  <g
+     id="g12120"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     inkscape:label="low"
+     transform="translate(6,50)">
+    <g
+       id="g12122"
+       inkscape:groupmode="layer"
+       style="display:none"
+       inkscape:label="baseplate 2">
+      <rect
+         id="rect12126"
+         x="322"
+         y="51"
+         inkscape:label="48x48"
+         height="48"
+         width="48"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12128"
+         x="322"
+         y="126"
+         inkscape:label="32x32"
+         height="32"
+         width="32"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12130"
+         x="322"
+         y="177"
+         inkscape:label="24x24"
+         height="24"
+         width="24"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12132"
+         x="323"
+         y="178"
+         inkscape:label="22x22"
+         height="22"
+         width="22"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12134"
+         x="322"
+         y="221"
+         inkscape:label="16x16"
+         height="16"
+         width="16"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <text
+         id="text12136"
+         x="336"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="context"
+         y="-11"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12138"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">status</tspan>
+      </text>
+      <text
+         id="text12140"
+         x="335"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="icon-name"
+         y="14"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12142"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">audio-input-microphone-low</tspan>
+      </text>
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer4"
+       inkscape:label="icons#2">
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16262"
+         id="use17490"
+         width="1"
+         height="1"
+         transform="translate(160.00001,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16264"
+         id="use17492"
+         width="1"
+         height="1"
+         transform="translate(160.00001,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16266"
+         id="use17494"
+         width="1"
+         height="1"
+         transform="translate(160.00001,0)" />
+      <use
+         style="display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16268"
+         id="use17496"
+         width="1"
+         height="1"
+         transform="translate(160.00001,0)" />
+      <g
+         style="display:inline;enable-background:new"
+         id="use25441-3-6"
+         transform="translate(304,20)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient25780-1-1);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25782-9-6);stroke-width:0.50264549;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25776-3-6"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path25778-0-5"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <path
+         transform="matrix(1.0275229,0,0,1.0275229,-20.06421,-45.70642)"
+         d="m 374.25,106.28125 c 0,1.60508 -1.30117,2.90625 -2.90625,2.90625 -1.60508,0 -2.90625,-1.30117 -2.90625,-2.90625 0,-1.60508 1.30117,-2.90625 2.90625,-2.90625 1.60508,0 2.90625,1.30117 2.90625,2.90625 z"
+         sodipodi:ry="2.90625"
+         sodipodi:rx="2.90625"
+         sodipodi:cy="106.28125"
+         sodipodi:cx="371.34375"
+         id="path25944-9"
+         style="color:#000000;fill:url(#radialGradient25967-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient25969-0);stroke-width:0.97321433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999992;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#000000;fill:url(#radialGradient26120);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26122);stroke-width:0.97321433;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.69999992;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+         id="path26118"
+         sodipodi:cx="371.34375"
+         sodipodi:cy="106.28125"
+         sodipodi:rx="2.90625"
+         sodipodi:ry="2.90625"
+         d="m 374.25,106.28125 c 0,1.60508 -1.30117,2.90625 -2.90625,2.90625 -1.60508,0 -2.90625,-1.30117 -2.90625,-2.90625 0,-1.60508 1.30117,-2.90625 2.90625,-2.90625 1.60508,0 2.90625,1.30117 2.90625,2.90625 z"
+         transform="matrix(1.0275229,0,0,1.0275229,-20.06421,-35.70642)" />
+      <g
+         style="display:inline;enable-background:new"
+         id="g26124-3-6"
+         transform="matrix(0.67041768,0,0,0.67041768,309.99211,90.918773)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26407);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26409);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26126-2-0"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26164-2-0"
+         transform="matrix(0.67041768,0,0,0.67041768,309.99211,106.91877)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26170-6-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26172-5-5);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26166-2-4"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26168-0-2"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,309.99211,98.918773)"
+         id="g26486"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26488"
+           style="color:#000000;fill:url(#radialGradient26490);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26492);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,303.99211,137.91877)"
+         id="g26547-2-4-7"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26549-3-7-3"
+           style="color:#000000;fill:url(#radialGradient26893);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26895);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,303.99211,153.91877)"
+         id="g26557-2-9-9"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path26559-7-4-3"
+           style="color:#000000;fill:url(#radialGradient26571-6-3-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26573-1-6-5);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+        <path
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           sodipodi:ry="0.953125"
+           sodipodi:rx="1.859375"
+           sodipodi:cy="112.14062"
+           sodipodi:cx="63.359375"
+           id="path26561-5-9-1"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26972"
+         transform="matrix(0.67041768,0,0,0.67041768,303.99211,145.91877)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient26976);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient26978);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26974"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26980-1"
+         transform="matrix(0.67041768,0,0,0.67041768,296.99211,180.95912)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient27058-3);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27060-7);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26982-2"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g26990-5"
+         transform="matrix(0.67041768,0,0,0.67041768,296.99211,190.95912)">
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:url(#radialGradient27004-7);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27006-9);stroke-width:0.74974972;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26992-9"
+           sodipodi:cx="63.46875"
+           sodipodi:cy="113.48438"
+           sodipodi:rx="1.484375"
+           sodipodi:ry="1.484375"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           id="path26994-1"
+           sodipodi:cx="63.359375"
+           sodipodi:cy="112.14062"
+           sodipodi:rx="1.859375"
+           sodipodi:ry="0.953125"
+           d="m 65.21875,112.14062 c 0,0.52639 -0.832471,0.95312 -1.859375,0.95312 -1.026904,0 -1.859375,-0.42673 -1.859375,-0.95312 0,-0.5264 0.832471,-0.95313 1.859375,-0.95313 1.026904,0 1.859375,0.42673 1.859375,0.95313 z"
+           transform="matrix(0.92436975,0,0,1.0819672,-1.0674895,-59.269979)" />
+      </g>
+      <g
+         transform="matrix(0.67041768,0,0,0.67041768,296.99211,185.95912)"
+         id="g27222"
+         style="display:inline;enable-background:new">
+        <path
+           transform="matrix(1.9894737,0,0,1.9894737,-68.800658,-162.28981)"
+           d="m 64.953125,113.48438 c 0,0.8198 -0.664577,1.48438 -1.484375,1.48438 -0.819798,0 -1.484375,-0.66458 -1.484375,-1.48438 0,-0.8198 0.664577,-1.48437 1.484375,-1.48437 0.819798,0 1.484375,0.66457 1.484375,1.48437 z"
+           sodipodi:ry="1.484375"
+           sodipodi:rx="1.484375"
+           sodipodi:cy="113.48438"
+           sodipodi:cx="63.46875"
+           id="path27224"
+           style="color:#000000;fill:url(#radialGradient27226);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient27228);stroke-width:0.74974978;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0.53926948;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+           sodipodi:type="arc" />
+      </g>
+    </g>
+  </g>
+  <g
+     id="g12144"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     inkscape:label="muted"
+     transform="translate(6,50)">
+    <g
+       id="g12146"
+       inkscape:groupmode="layer"
+       style="display:none"
+       inkscape:label="baseplate 3">
+      <rect
+         id="rect12150"
+         x="506"
+         y="51"
+         inkscape:label="48x48"
+         height="48"
+         width="48"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12152"
+         x="506"
+         y="126"
+         inkscape:label="32x32"
+         height="32"
+         width="32"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12154"
+         x="506"
+         y="177"
+         inkscape:label="24x24"
+         height="24"
+         width="24"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12156"
+         x="507"
+         y="178"
+         inkscape:label="22x22"
+         height="22"
+         width="22"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <rect
+         id="rect12158"
+         x="506"
+         y="221"
+         inkscape:label="16x16"
+         height="16"
+         width="16"
+         style="fill:#eeeeec;fill-opacity:1;fill-rule:nonzero;stroke:none;visibility:visible;display:inline;enable-background:accumulate" />
+      <text
+         id="text12160"
+         x="509"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="context"
+         y="-14"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12162"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">status</tspan>
+      </text>
+      <text
+         id="text12164"
+         x="509"
+         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;display:inline;enable-background:new;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold"
+         inkscape:label="icon-name"
+         y="14"
+         sodipodi:linespacing="125%">
+        <tspan
+           id="tspan12166"
+           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:RaveIn;-inkscape-font-specification:RaveIn Bold">audio-input-microphone-muted</tspan>
+      </text>
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer5"
+       inkscape:label="icons#3"
+       style="opacity:1">
+      <use
+         style="opacity:0.5;display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16262"
+         id="use17490-9"
+         width="1"
+         height="1"
+         transform="translate(344.00001,0)" />
+      <use
+         style="opacity:0.5;display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16264"
+         id="use17492-5"
+         width="1"
+         height="1"
+         transform="translate(344.00001,0)" />
+      <use
+         style="opacity:0.5;display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16266"
+         id="use17494-2"
+         width="1"
+         height="1"
+         transform="translate(344.00001,0)" />
+      <use
+         style="opacity:0.5;display:inline;enable-background:new"
+         x="0"
+         y="0"
+         xlink:href="#use16268"
+         id="use17496-3"
+         width="1"
+         height="1"
+         transform="translate(344.00001,0)" />
+      <g
+         style="display:inline;enable-background:new"
+         id="g20762"
+         transform="translate(-1009.9765,1.99158)">
+        <g
+           transform="translate(816.00404,-305.99658)"
+           id="g10428"
+           style="display:inline;enable-background:new">
+          <rect
+             style="opacity:0.3;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter10244-3);enable-background:new"
+             id="rect10362"
+             width="9"
+             height="1.5"
+             x="723"
+             y="461"
+             rx="0.75"
+             ry="0.75"
+             transform="matrix(1.4444453,0,0,1,-314.33396,-61)" />
+          <g
+             id="g10364"
+             transform="matrix(1.200385,0,0,1.2002319,-137.98259,-155.80859)">
+            <rect
+               ry="1.5"
+               rx="1.5"
+               y="453.5"
+               x="723.5"
+               height="10"
+               width="10"
+               id="rect10366"
+               style="fill:url(#radialGradient20776-9);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient20778-1);stroke-width:0.83311915;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+            <rect
+               ry="0.58623022"
+               rx="0.58575082"
+               y="454.33603"
+               x="724.33643"
+               height="8.3317547"
+               width="8.3306608"
+               id="rect10369"
+               style="opacity:0.4;fill:none;stroke:url(#linearGradient20780-8-3);stroke-width:0.83311915;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+            <path
+               inkscape:connector-curvature="0"
+               d=""
+               id="path10371"
+               style="fill:none;stroke:#ffffff;stroke-width:1.24967861;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+               sodipodi:nodetypes="cc" />
+          </g>
+        </g>
+        <g
+           transform="translate(0,1)"
+           id="g20756"
+           style="stroke:#babdb6;display:inline;enable-background:new">
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#babdb6;stroke-width:1.49999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1555.504,85.503418 -6,5.999995"
+             id="path20758" />
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#babdb6;stroke-width:1.49999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1549.504,85.503418 6,5.999995"
+             id="path20760" />
+        </g>
+        <g
+           id="g20752">
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.49999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1555.504,85.503418 -6,5.999995"
+             id="path20748" />
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.49999976;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1549.504,85.503418 6,5.999995"
+             id="path20750" />
+        </g>
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g20832"
+         transform="translate(-1013.9575,0.99158003)">
+        <rect
+           transform="matrix(1.2222231,0,0,1,656.33267,-305.99658)"
+           ry="0.75"
+           rx="0.75"
+           y="461"
+           x="723"
+           height="1.5"
+           width="9"
+           id="rect20786"
+           style="opacity:0.3;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter10244-3);enable-background:new" />
+        <g
+           transform="matrix(0.8395408,0,0,0.8332624,927.22191,-178.21992)"
+           id="g20784"
+           style="display:inline;enable-background:new">
+          <g
+             id="g20788"
+             transform="matrix(1.200385,0,0,1.2002319,-137.98259,-155.80859)">
+            <rect
+               ry="1.5"
+               rx="1.4884264"
+               y="453.5"
+               x="723.49695"
+               height="10"
+               width="9.922842"
+               id="rect20790"
+               style="fill:url(#radialGradient20846-6);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient20848-8);stroke-width:0.99608243;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+            <rect
+               ry="0.56252956"
+               rx="0.55816746"
+               y="454.50446"
+               x="724.48926"
+               height="7.9949112"
+               width="7.938364"
+               id="rect20792"
+               style="opacity:0.4;fill:none;stroke:url(#linearGradient20850-9);stroke-width:0.99608254;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+            <path
+               inkscape:connector-curvature="0"
+               d=""
+               id="path20794"
+               style="fill:none;stroke:#ffffff;stroke-width:1.49412358;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+               sodipodi:nodetypes="cc" />
+          </g>
+        </g>
+        <g
+           transform="matrix(0.8395408,0,0,0.8332624,242.15323,77.75552)"
+           id="g20826"
+           style="stroke:#babdb6;display:inline;enable-background:new">
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#babdb6;stroke-width:1.79340911;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1554.8342,86.100705 -4.7645,4.800409"
+             id="path20828" />
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#babdb6;stroke-width:1.79340911;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1550.0697,86.100705 4.7645,4.800409"
+             id="path20830" />
+        </g>
+        <g
+           transform="matrix(0.8395408,0,0,0.8332624,242.15323,76.75552)"
+           id="g20802">
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.55428827;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1554.8342,86.100705 -4.7645,4.800409"
+             id="path20804" />
+          <path
+             inkscape:connector-curvature="0"
+             sodipodi:nodetypes="cc"
+             style="fill:#555753;fill-rule:evenodd;stroke:#2e3436;stroke-width:1.55428827;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline;enable-background:new"
+             d="m 1550.0697,86.100705 4.7645,4.800409"
+             id="path20806" />
+        </g>
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g20929"
+         transform="translate(-1019,33)">
+        <rect
+           ry="1"
+           rx="1"
+           y="195.5"
+           x="1532.5"
+           height="8"
+           width="8"
+           id="rect9401"
+           style="fill:url(#radialGradient20946-9);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient20938-8-0);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           ry="0"
+           rx="0"
+           y="196.50366"
+           x="1533.4994"
+           height="5.9969311"
+           width="6.001204"
+           id="rect20867"
+           style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="200"
+           x="1534"
+           height="2"
+           width="2"
+           id="rect10189"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="200"
+           x="1537"
+           height="2"
+           width="2"
+           id="rect10191-6"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="197"
+           x="1537"
+           height="2"
+           width="2"
+           id="rect10193"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="197"
+           x="1534"
+           height="2"
+           width="2"
+           id="rect10195"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="198"
+           x="1535"
+           height="3"
+           width="3"
+           id="rect10197"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+      </g>
+      <g
+         style="display:inline;enable-background:new"
+         id="g20948"
+         transform="translate(-1011,-3.0000001)">
+        <rect
+           ry="1"
+           rx="1"
+           y="195.5"
+           x="1532.5"
+           height="8"
+           width="8"
+           id="rect20950"
+           style="fill:url(#radialGradient20964-2);fill-opacity:1;fill-rule:nonzero;stroke:url(#linearGradient20966-5);stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           ry="0"
+           rx="0"
+           y="196.50366"
+           x="1533.4994"
+           height="5.9969311"
+           width="6.001204"
+           id="rect20952"
+           style="opacity:0.2;fill:none;stroke:#ffffff;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="200"
+           x="1534"
+           height="2"
+           width="2"
+           id="rect20954"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="200"
+           x="1537"
+           height="2"
+           width="2"
+           id="rect20956"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="197"
+           x="1537"
+           height="2"
+           width="2"
+           id="rect20958"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="197"
+           x="1534"
+           height="2"
+           width="2"
+           id="rect20960"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+        <rect
+           y="198"
+           x="1535"
+           height="3"
+           width="3"
+           id="rect20962"
+           style="fill:#555753;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:new" />
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/sounds/Makefile.am b/panels/sound/data/sounds/Makefile.am
new file mode 100644
index 0000000..3277593
--- /dev/null
+++ b/panels/sound/data/sounds/Makefile.am
@@ -0,0 +1,29 @@
+NULL =
+
+sounddir = $(datadir)/sounds/gnome/default/alerts
+
+sound_DATA =			\
+	bark.ogg		\
+	drip.ogg		\
+	glass.ogg		\
+	sonar.ogg		\
+	$(NULL)
+
+metadata_in_files = gnome-sounds-default.xml.in
+metadatadir = $(pkgdatadir)/sounds
+metadata_DATA = $(metadata_in_files:.xml.in=.xml)
+ INTLTOOL_XML_RULE@
+
+noinst_DATA = gnome-sounds-default.xml.in
+CLEANFILES = gnome-sounds-default.xml gnome-sounds-default.xml.in
+
+EXTRA_DIST = $(sound_DATA) gnome-sounds-default.xml.in.in
+
+gnome-sounds-default.xml.in: gnome-sounds-default.xml.in.in Makefile
+	$(AM_V_GEN)sed -e 's^\ datadir\@^$(datadir)^g' < $(srcdir)/gnome-sounds-default.xml.in.in > gnome-sounds-default.xml.in.tmp \
+	&& mv gnome-sounds-default.xml.in.tmp gnome-sounds-default.xml.in
+
+MAINTAINERCLEANFILES = \
+	Makefile.in
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/sounds/bark.ogg b/panels/sound/data/sounds/bark.ogg
new file mode 100644
index 0000000..480950c
Binary files /dev/null and b/panels/sound/data/sounds/bark.ogg differ
diff --git a/panels/sound/data/sounds/drip.ogg b/panels/sound/data/sounds/drip.ogg
new file mode 100644
index 0000000..144d2b3
Binary files /dev/null and b/panels/sound/data/sounds/drip.ogg differ
diff --git a/panels/sound/data/sounds/glass.ogg b/panels/sound/data/sounds/glass.ogg
new file mode 100644
index 0000000..902a3c8
Binary files /dev/null and b/panels/sound/data/sounds/glass.ogg differ
diff --git a/panels/sound/data/sounds/gnome-sounds-default.xml.in.in b/panels/sound/data/sounds/gnome-sounds-default.xml.in.in
new file mode 100644
index 0000000..bcf29ae
--- /dev/null
+++ b/panels/sound/data/sounds/gnome-sounds-default.xml.in.in
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<sounds>
+  <sound deleted="false">
+    <!-- Translators: This is the name of an audio file that sounds like the bark of a dog.
+         You might want to translate it into the equivalent words of your language.  -->
+    <_name>Bark</_name>
+    <filename>@datadir@/sounds/gnome/default/alerts/bark.ogg</filename>
+  </sound>
+  <sound deleted="false">
+    <!-- Translators: This is the name of an audio file that sounds like a water drip.
+         You might want to translate it into the equivalent words of your language.  -->
+    <_name>Drip</_name>
+    <filename>@datadir@/sounds/gnome/default/alerts/drip.ogg</filename>
+  </sound>
+  <sound deleted="false">
+    <!-- Translators: This is the name of an audio file that sounds like tapping glass.
+         You might want to translate it into the equivalent words of your language.  -->
+    <_name>Glass</_name>
+    <filename>@datadir@/sounds/gnome/default/alerts/glass.ogg</filename>
+  </sound>
+  <sound deleted="false">
+    <!-- Translators: This is the name of an audio file that sounds sort of like a submarine sonar ping.
+         You might want to translate it into the equivalent words of your language.  -->
+    <_name>Sonar</_name>
+    <filename>@datadir@/sounds/gnome/default/alerts/sonar.ogg</filename>
+  </sound>
+</sounds>
diff --git a/panels/sound/data/sounds/sonar.ogg b/panels/sound/data/sounds/sonar.ogg
new file mode 100644
index 0000000..77aadec
Binary files /dev/null and b/panels/sound/data/sounds/sonar.ogg differ
diff --git a/panels/sound/data/symbolic-icons/Makefile.am b/panels/sound/data/symbolic-icons/Makefile.am
new file mode 100644
index 0000000..9f95f49
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/Makefile.am
@@ -0,0 +1,10 @@
+NULL =
+
+SUBDIRS = scalable
+
+EXTRA_DIST =					\
+	src					\
+	r.rb					\
+	$(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/symbolic-icons/r.rb b/panels/sound/data/symbolic-icons/r.rb
new file mode 100755
index 0000000..a15ace2
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/r.rb
@@ -0,0 +1,73 @@
+#!/usr/bin/env ruby
+
+require "rexml/document"
+require "fileutils"
+include REXML
+
+
+#INKSCAPE = '/opt/artlibre/bin/inkscape'
+INKSCAPE = '/usr/bin/inkscape' # like this works for me, while using `which` inkscape hangs
+SRC = "src/gnome-media.svg"
+PREFIX = "scalable"
+
+def chopSVG(icon)
+	FileUtils.mkdir_p(icon[:dir]) unless File.exists?(icon[:dir])
+	unless (File.exists?(icon[:file]) && !icon[:forcerender])
+		FileUtils.cp(SRC,icon[:file]) 
+		puts " >> #{icon[:name]}"
+		cmd = "#{INKSCAPE} -f #{icon[:file]} --select #{icon[:id]} --verb=FitCanvasToSelection  --verb=EditInvertInAllLayers "
+		cmd += "--verb=EditDelete --verb=EditSelectAll --verb=SelectionUnGroup --verb=StrokeToPath --verb=FileVacuum "
+		cmd += "--verb=FileSave --verb=FileClose > /dev/null 2>&1"
+		system(cmd)
+		#saving as plain SVG gets rid of the classes :/
+		#cmd = "#{INKSCAPE} -f #{icon[:file]} -z --vacuum-defs -l #{icon[:file]} > /dev/null 2>&1"
+		#system(cmd)
+		svgcrop = Document.new(File.new(icon[:file], 'r'))
+		svgcrop.root.each_element("//rect") do |rect| 
+			if rect.attributes["width"] == '16' && rect.attributes["height"] == '16'
+				rect.remove
+			end
+		end
+    icon_f = File.new(icon[:file],'w+')
+    icon_f.puts svgcrop
+    icon_f.close
+	else
+		puts " -- #{icon[:name]} already exists"
+	end
+end #end of function
+
+
+#main
+# Open SVG file.
+svg = Document.new(File.new(SRC, 'r'))
+
+if (ARGV[0].nil?) #render all SVGs
+  puts "Rendering from icons in #{SRC}"
+	# Go through every layer.
+	svg.root.each_element("/svg/g[ inkscape:groupmode='layer']") do |context| 
+		context_name = context.attributes.get_attribute("inkscape:label").value  
+		puts "Going through layer '" + context_name + "'"
+		context.each_element("g") do |icon|
+			#puts "DEBUG #{icon.attributes.get_attribute('id')}"
+			dir = "#{PREFIX}/#{context_name}"
+			icon_name = icon.attributes.get_attribute("inkscape:label").value
+			chopSVG({	:name => icon_name,
+			 					:id => icon.attributes.get_attribute("id"),
+			 					:dir => dir,
+			 					:file => "#{dir}/#{icon_name}-symbolic.svg"})
+		end
+	end
+  puts "\nrendered all SVGs"
+else #only render the icons passed
+  icons = ARGV
+  ARGV.each do |icon_name|
+  	icon = svg.root.elements["//g[ inkscape:label='#{icon_name}']"]
+  	dir = "#{PREFIX}/#{icon.parent.attributes['inkscape:label']}"
+		chopSVG({	:name => icon_name,
+		 					:id => icon.attributes["id"],
+		 					:dir => dir,
+		 					:file => "#{dir}/#{icon_name}-symbolic.svg",
+		 					:forcerender => true})
+	end
+  puts "\nrendered #{ARGV.length} icons"
+end
diff --git a/panels/sound/data/symbolic-icons/scalable/Makefile.am b/panels/sound/data/symbolic-icons/scalable/Makefile.am
new file mode 100644
index 0000000..b17aad8
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = status
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/symbolic-icons/scalable/status/Makefile.am b/panels/sound/data/symbolic-icons/scalable/status/Makefile.am
new file mode 100644
index 0000000..2680991
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/status/Makefile.am
@@ -0,0 +1,14 @@
+NULL =
+
+iconsdir = $(datadir)/icons/hicolor/scalable/status
+
+icons_DATA =						\
+        audio-input-microphone-high-symbolic.svg	\
+        audio-input-microphone-low-symbolic.svg		\
+        audio-input-microphone-medium-symbolic.svg	\
+        audio-input-microphone-muted-symbolic.svg	\
+        $(NULL)
+
+EXTRA_DIST = $(icons_DATA)
+
+-include $(top_srcdir)/git.mk
diff --git a/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-high-symbolic.svg b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-high-symbolic.svg
new file mode 100644
index 0000000..6cf30e7
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-high-symbolic.svg
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='audio-input-microphone-high-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:cy='-15.613019' inkscape:current-layer='layer9' inkscape:window-width='1310' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='true' objecttolerance='10' showgrid='false' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='54' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='0' inkscape:snap-global='true' inkscape:window-y='25' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='690' borderopacity='1' guidetolerance='10' inkscape:cx='18.133577' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
+    <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <clipPath id='clipPath6810-7-0-7' clipPathUnits='userSpaceOnUse'>
+      <rect x='21' y='281' id='rect6812-2-2-4' height='11' width='14' style='color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    </clipPath>
+  </defs>
+  <g transform='translate(-41.0002,-177)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'>
+    
+    
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,12.5,-123)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path4959' sodipodi:rx='1' sodipodi:ry='1' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline' sodipodi:cx='28'/>
+    <rect x='45' y='177.98712' id='rect6796-1' rx='2.5' height='10.012877' ry='2.5' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' width='5'/>
+    <path transform='matrix(0.993968,0,0,1,19.706899,-98.486138)' clip-path='url(#clipPath6810-7-0-7)' d='m 27.96875,273.625 c -2.502477,0 -4.53125,2.02877 -4.53125,4.53125 l 0,5.8125 c 0,2.50248 2.028773,4.53125 4.53125,4.53125 2.502477,0 4.53125,-2.02877 4.53125,-4.53125 l 0,-5.8125 c 0,-2.50248 -2.028773,-4.53125 -4.53125,-4.53125 z m 0,1 c 1.964148,0 3.53125,1.5671 3.53125,3.53125 l 0,5.8125 c 0,1.96415 -1.567102,3.53125 -3.53125,3.53125 -1.964148,0 -3.53125,-1.5671 -3.53125,-3.53125 l 0,-5.8125 c 0,-1.96415 1.567102,-3.53125 3.53125,-3.53125 z' id='rect6806-6' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1.00302994;marker:none;visibility:visible;di
 splay:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,32,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path6814-3' sodipodi:rx='1' sodipodi:ry='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' sodipodi:cx='23'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,40,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path6816-8' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='23' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path d='M 43.875,191 A 1.0019512,1.0019512 0 1 0 44,193 l 7.03125,0 a 1.0001,1.0001 0 1 0 0,-2 L 44,191 a 1.0001,1.0001 0 0 0 -0.125,0 z' id='path6818-5' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <rect x='43' y='192' id='rect6822-5' height='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' width='9'/>
+    <rect x='46' y='189' id='rect6824-0' height='4' width='3' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,12.5,-128)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13930' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='28' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,12.5,-133)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13932' sodipodi:rx='1' sodipodi:ry='1' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline' sodipodi:cx='28'/>
+  </g>
+</svg>
diff --git a/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-low-symbolic.svg b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-low-symbolic.svg
new file mode 100644
index 0000000..3119fa4
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-low-symbolic.svg
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='audio-input-microphone-low-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:cy='-15.613019' inkscape:current-layer='layer9' inkscape:window-width='1310' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='true' objecttolerance='10' showgrid='false' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='54' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='0' inkscape:snap-global='true' inkscape:window-y='25' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='690' borderopacity='1' guidetolerance='10' inkscape:cx='-21.866423' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
+    <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <clipPath id='clipPath6810-7-0-7' clipPathUnits='userSpaceOnUse'>
+      <rect x='21' y='281' id='rect6812-2-2-4' height='11' width='14' style='color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    </clipPath>
+  </defs>
+  <g transform='translate(-81.0002,-177)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'>
+    
+    
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,52.5,-123)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13966' sodipodi:rx='1' sodipodi:ry='1' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline' sodipodi:cx='28'/>
+    <rect x='85' y='177.98712' id='rect13968' rx='2.5' height='10.012877' ry='2.5' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' width='5'/>
+    <path transform='matrix(0.993968,0,0,1,59.706899,-98.486138)' clip-path='url(#clipPath6810-7-0-7)' d='m 27.96875,273.625 c -2.502477,0 -4.53125,2.02877 -4.53125,4.53125 l 0,5.8125 c 0,2.50248 2.028773,4.53125 4.53125,4.53125 2.502477,0 4.53125,-2.02877 4.53125,-4.53125 l 0,-5.8125 c 0,-2.50248 -2.028773,-4.53125 -4.53125,-4.53125 z m 0,1 c 1.964148,0 3.53125,1.5671 3.53125,3.53125 l 0,5.8125 c 0,1.96415 -1.567102,3.53125 -3.53125,3.53125 -1.964148,0 -3.53125,-1.5671 -3.53125,-3.53125 l 0,-5.8125 c 0,-1.96415 1.567102,-3.53125 3.53125,-3.53125 z' id='rect13970' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1.00302994;marker:none;visibility:visible;dis
 play:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,72,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13972' sodipodi:rx='1' sodipodi:ry='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' sodipodi:cx='23'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,80,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13974' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='23' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path d='M 83.875,191 A 1.0019512,1.0019512 0 1 0 84,193 l 7.03125,0 a 1.0001,1.0001 0 1 0 0,-2 L 84,191 a 1.0001,1.0001 0 0 0 -0.125,0 z' id='path13976' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <rect x='83' y='192' id='rect13978' height='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' width='9'/>
+    <rect x='86' y='189' id='rect13980' height='4' width='3' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,52.5,-128)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13982' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='28' style='opacity:0.25;fill:#bebebe;fill-opacity:1;stroke:none;display:inline'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,52.5,-133)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13984' sodipodi:rx='1' sodipodi:ry='1' style='opacity:0.25;fill:#bebebe;fill-opacity:1;stroke:none;display:inline' sodipodi:cx='28'/>
+  </g>
+</svg>
diff --git a/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-medium-symbolic.svg b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-medium-symbolic.svg
new file mode 100644
index 0000000..64ec37a
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-medium-symbolic.svg
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:svg='http://www.w3.org/2000/svg' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' version='1.1' inkscape:version='0.47 r22583' height='16' sodipodi:docname='audio-input-microphone-medium-symbolic.svg' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:cy='-15.613019' inkscape:current-layer='layer9' inkscape:window-width='1310' pagecolor='#555753' showborder='false' showguides='true' inkscape:snap-nodes='true' objecttolerance='10' showgrid='false' inkscape:object-nodes='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:window-x='54' inkscape:snap-bbox='true' bordercolor='#666666' id='namedview88' inkscape:window-maximized='0' inkscape:snap-global='true' inkscape:window-y='25' gridtolerance='10' inkscape:zoom='1' inkscape:window-height='690' borderopacity='1' guidetolerance='10' inkscape:cx='-1.866423' inkscape:bbox-paths='false' inkscape:snap-grids='true' inkscape:pageopacity='1' inkscape:snap-to-guides='true'>
+    <inkscape:grid visible='true' spacingx='1px' type='xygrid' spacingy='1px' id='grid4866' empspacing='2' enabled='true' snapvisiblegridlinesonly='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <clipPath id='clipPath6810-7-0-7' clipPathUnits='userSpaceOnUse'>
+      <rect x='21' y='281' id='rect6812-2-2-4' height='11' width='14' style='color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    </clipPath>
+  </defs>
+  <g transform='translate(-61.0002,-177)' inkscape:groupmode='layer' id='layer9' inkscape:label='status' style='display:inline'>
+    
+    
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,32.5,-123)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13940' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='28' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline'/>
+    <rect x='65' y='177.98712' id='rect13942' rx='2.5' ry='2.5' height='10.012877' width='5' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path transform='matrix(0.993968,0,0,1,39.706899,-98.486138)' clip-path='url(#clipPath6810-7-0-7)' d='m 27.96875,273.625 c -2.502477,0 -4.53125,2.02877 -4.53125,4.53125 l 0,5.8125 c 0,2.50248 2.028773,4.53125 4.53125,4.53125 2.502477,0 4.53125,-2.02877 4.53125,-4.53125 l 0,-5.8125 c 0,-2.50248 -2.028773,-4.53125 -4.53125,-4.53125 z m 0,1 c 1.964148,0 3.53125,1.5671 3.53125,3.53125 l 0,5.8125 c 0,1.96415 -1.567102,3.53125 -3.53125,3.53125 -1.964148,0 -3.53125,-1.5671 -3.53125,-3.53125 l 0,-5.8125 c 0,-1.96415 1.567102,-3.53125 3.53125,-3.53125 z' id='rect13944' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1.00302994;marker:none;visibility:visible;dis
 play:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,52,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13946' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='23' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,60,2.000002)' sodipodi:type='arc' d='m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13948' sodipodi:rx='1' sodipodi:ry='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' sodipodi:cx='23'/>
+    <path d='M 63.875,191 A 1.0019512,1.0019512 0 1 0 64,193 l 7.03125,0 a 1.0001,1.0001 0 1 0 0,-2 L 64,191 a 1.0001,1.0001 0 0 0 -0.125,0 z' id='path13950' style='font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Bitstream Vera Sans;-inkscape-font-specification:Bitstream Vera Sans'/>
+    <rect x='63' y='192' id='rect13952' height='1' width='9' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <rect x='66' y='189' id='rect13954' height='4' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' width='3'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,32.5,-128)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13956' sodipodi:rx='1' sodipodi:ry='1' style='fill:#bebebe;fill-opacity:1;stroke:none;display:inline' sodipodi:cx='28'/>
+    <path sodipodi:cy='209' transform='matrix(1.5,0,0,1.5,32.5,-133)' sodipodi:type='arc' d='m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z' id='path13958' sodipodi:rx='1' sodipodi:ry='1' sodipodi:cx='28' style='opacity:0.25;fill:#bebebe;fill-opacity:1;stroke:none;display:inline'/>
+  </g>
+</svg>
diff --git a/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-muted-symbolic.svg b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-muted-symbolic.svg
new file mode 100644
index 0000000..d17baa9
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/scalable/status/audio-input-microphone-muted-symbolic.svg
@@ -0,0 +1,37 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg xmlns:cc='http://creativecommons.org/ns#' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:svg='http://www.w3.org/2000/svg' id='svg7384' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' sodipodi:docname='audio-input-microphone-muted-symbolic.svg' version='1.1' inkscape:version='0.47 r22583' height='16' xmlns:dc='http://purl.org/dc/elements/1.1/' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns='http://www.w3.org/2000/svg' width='16'>
+  <metadata id='metadata90'>
+    <rdf:RDF>
+      <cc:Work rdf:about=''>
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type rdf:resource='http://purl.org/dc/dcmitype/StillImage'/>
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview inkscape:cy='-19.613018' pagecolor='#555753' borderopacity='1' showborder='false' inkscape:bbox-paths='false' guidetolerance='10' inkscape:window-width='1310' showguides='false' inkscape:object-nodes='true' inkscape:snap-bbox='true' inkscape:pageshadow='2' inkscape:guide-bbox='true' inkscape:snap-nodes='true' bordercolor='#666666' objecttolerance='10' id='namedview88' showgrid='false' inkscape:window-maximized='0' inkscape:window-x='54' inkscape:snap-global='true' inkscape:window-y='25' gridtolerance='10' inkscape:window-height='690' inkscape:snap-to-guides='true' inkscape:current-layer='layer9' inkscape:zoom='1' inkscape:cx='-41.866423' inkscape:snap-grids='true' inkscape:pageopacity='1'>
+    <inkscape:grid spacingx='1px' spacingy='1px' id='grid4866' empspacing='2' enabled='true' type='xygrid' snapvisiblegridlinesonly='true' visible='true'/>
+  </sodipodi:namedview>
+  <title id='title9167'>Gnome Symbolic Icon Theme</title>
+  <defs id='defs7386'>
+    <clipPath id='clipPath6810-7-0-7-1' clipPathUnits='userSpaceOnUse'>
+      <rect x='21' y='281' id='rect6812-2-2-4-8' height='11' width='14' style='color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    </clipPath>
+  </defs>
+  <g inkscape:label='status' transform='translate(-101.0002,-177)' inkscape:groupmode='layer' id='layer9' style='display:inline'>
+    
+    <path inkscape:connector-curvature='0' d='m 111.99995,188 1.375,0 1.125,1.09375 1.09375,-1.09375 1.40625,0 0,1.46875 -1.09375,1.0625 1.09375,1.0625 0,1.40625 -1.4375,0 -1.0625,-1.0625 -1.0625,1.0625 -1.4375,0 0,-1.40625 1.0625,-1.0625 -1.0625,-1.0625 0,-1.46875 z' id='path3761-2-3-5-4-8-9-8-0-1-7' sodipodi:nodetypes='ccccccccccccccccc' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+    <g transform='translate(81.0002,-39.999999)' id='g14804' style='opacity:0.25'>
+      <rect x='23.999798' y='217.98712' id='rect13968-5' rx='2.5' ry='2.5' height='10.012877' width='5' style='color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible'/>
+      <rect transform='matrix(0.993968,0,0,1,-1.2933,-58.486138)' x='23.9375' y='274.13098' clip-path='url(#clipPath6810-7-0-7-1)' id='rect13970-1' rx='4.0312505' height='13.869018' ry='4.0312505' style='color:#bebebe;fill:none;stroke:#bebebe;stroke-width:1.00302994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible' width='8.062501'/>
+      <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,10.9998,42.000002)' d='m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z' id='path13972-1' sodipodi:type='arc' sodipodi:rx='1' sodipodi:ry='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' sodipodi:cx='23'/>
+      <path sodipodi:cy='361' transform='matrix(0.5,0,0,0.5,18.9998,42.000002)' d='m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z' id='path13974-3' sodipodi:type='arc' sodipodi:rx='1' sodipodi:ry='1' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible' sodipodi:cx='23'/>
+      <path inkscape:connector-curvature='0' d='m 22.98733,232 6.01247,0' id='path13976-0' sodipodi:nodetypes='cc' style='color:#bebebe;fill:none;stroke:#bebebe;stroke-width:2;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
+      <rect x='21.999798' y='232' id='rect13978-6' height='1' width='1.0000021' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible'/>
+      <rect x='24.999798' y='229' id='rect13980-4' height='4' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' width='3'/>
+      <rect x='28.9998' y='231' id='rect14813' height='2.000001' style='color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible' width='0.9999997'/>
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/data/symbolic-icons/src/gnome-media.svg b/panels/sound/data/symbolic-icons/src/gnome-media.svg
new file mode 100644
index 0000000..6fd7268
--- /dev/null
+++ b/panels/sound/data/symbolic-icons/src/gnome-media.svg
@@ -0,0 +1,990 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   version="1.1"
+   width="400"
+   height="100"
+   id="svg7384"
+   inkscape:version="0.47 r22583"
+   sodipodi:docname="gnome-media.svg">
+  <metadata
+     id="metadata90">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title>Gnome Symbolic Icon Theme</dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#555753"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1310"
+     inkscape:window-height="690"
+     id="namedview88"
+     showgrid="false"
+     inkscape:zoom="1"
+     inkscape:cx="59.133777"
+     inkscape:cy="-108.61302"
+     inkscape:window-x="54"
+     inkscape:window-y="25"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="layer9"
+     showborder="false"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="true"
+     inkscape:bbox-paths="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-to-guides="true"
+     inkscape:snap-grids="true"
+     inkscape:snap-global="true"
+     inkscape:object-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid4866"
+       empspacing="2"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="1px"
+       spacingy="1px" />
+  </sodipodi:namedview>
+  <title
+     id="title9167">Gnome Symbolic Icon Theme</title>
+  <defs
+     id="defs7386">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 50 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="400 : 50 : 1"
+       inkscape:persp3d-origin="200 : 33.333333 : 1"
+       id="perspective778" />
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6279-6-1-4-5">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6281-3-0-3-5"
+         width="3.8250003"
+         height="6.3750005"
+         x="26.85"
+         y="220.75" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-33-6-5-1-3">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-6-9-1-4-8"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-6-8-2-1-6-6">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-4-9-2-0-9-0"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6279-2-3">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6281-5-3"
+         width="3.8250003"
+         height="6.3750005"
+         x="26.85"
+         y="220.75" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-3-5-6">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-1-8-1"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-8-8-8">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-6-0-7"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       id="clipPath3157-7-0"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="221.32954"
+         x="28.124998"
+         height="5.21591"
+         width="1.7386366"
+         id="rect3159-5-5"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6279-6-1">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6281-3-1"
+         width="3.8250003"
+         height="6.3750005"
+         x="26.85"
+         y="220.75" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-33-6-4-0">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-6-9-19-3"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-6-8-2-8-0">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-4-9-2-7-0"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-33-4">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-6-5"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-6-8-25-4">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-4-9-24-2"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-6-4">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-4-9"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6279-7-9">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6281-1-9"
+         width="3.8250003"
+         height="6.3750005"
+         x="26.85"
+         y="220.75" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-3-4">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-1-9"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-8-81">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-6-6"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6279-3">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6281-9"
+         width="3.8250003"
+         height="6.3750005"
+         x="26.85"
+         y="220.75" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6265-334">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6267-61"
+         width="2.8977277"
+         height="5.21591"
+         x="26.96591"
+         y="221.32954" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath6259-5">
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6261-61"
+         width="1.8762827"
+         height="4.8734746"
+         x="26.998718"
+         y="221.50153" />
+    </clipPath>
+    <clipPath
+       id="clipPath6810-7"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="281"
+         x="21"
+         height="11"
+         width="14"
+         id="rect6812-2"
+         style="color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3668">
+      <rect
+         y="221.50153"
+         x="26.998718"
+         height="3.3729413"
+         width="1.8762826"
+         id="rect3670"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+    <clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath3697">
+      <path
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         d="m 26.965789,221.32959 0,5.21591 0.579546,0 0,-1.15909 2.318182,0 0,-4.05682 -2.897728,0 z"
+         id="path3699" />
+    </clipPath>
+    <inkscape:perspective
+       id="perspective10762"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <clipPath
+       id="clipPath6810-7-0"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="281"
+         x="21"
+         height="11"
+         width="14"
+         id="rect6812-2-2"
+         style="color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+    <inkscape:perspective
+       id="perspective13870"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <inkscape:perspective
+       id="perspective13892"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <clipPath
+       id="clipPath6810-7-0-7"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="281"
+         x="21"
+         height="11"
+         width="14"
+         id="rect6812-2-2-4"
+         style="color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+    <inkscape:perspective
+       id="perspective14766"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <clipPath
+       id="clipPath6810-7-0-7-1"
+       clipPathUnits="userSpaceOnUse">
+      <rect
+         y="281"
+         x="21"
+         height="11"
+         width="14"
+         id="rect6812-2-2-4-8"
+         style="color:#bebebe;fill:none;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
+    </clipPath>
+  </defs>
+  <g
+     transform="translate(-19.9998,-272)"
+     id="layer3"
+     style="display:inline" />
+  <g
+     transform="translate(-19.9998,-272)"
+     id="layer2"
+     style="display:inline">
+    <g
+       transform="translate(99.9998,334)"
+       id="g11578"
+       style="display:inline">
+      <g
+         transform="translate(-93.968752,-337)"
+         id="g11582"
+         style="display:inline" />
+    </g>
+  </g>
+  <g
+     transform="translate(0,-243)"
+     id="layer4"
+     style="display:inline">
+    <g
+       transform="translate(-20.99975,-28)"
+       id="layer3-5"
+       style="display:inline" />
+    <g
+       transform="translate(-20.99975,-28)"
+       id="layer2-1"
+       style="display:inline" />
+    <g
+       transform="translate(-1,1)"
+       id="layer4-4"
+       style="display:inline" />
+    <g
+       transform="translate(-1,244)"
+       id="layer5-9" />
+    <g
+       transform="translate(-20.99975,-28)"
+       id="layer1-8"
+       style="display:inline" />
+  </g>
+  <g
+     id="layer8" />
+  <g
+     id="layer7" />
+  <g
+     id="layer5">
+    <g
+       transform="translate(14,0)"
+       id="g11716" />
+  </g>
+  <g
+     id="layer6" />
+  <g
+     transform="translate(-19.9998,-272)"
+     id="layer1"
+     style="display:inline">
+    <path
+       d="m 73.282111,317.71964 c -5.520162,0 -9.427702,-4.34171 -9.427702,-9.6758 0,-5.33408 3.659442,-9.64478 9.179604,-9.64478 3.442349,0 5.39612,1.39555 6.357497,2.23287 l 1.550609,-1.67465 c -2.139838,-1.95377 -4.868915,-2.51199 -7.908106,-2.51199 -6.946721,0 -11.53653,5.21005 -11.53653,11.59855 0,6.26446 4.3107,11.62957 11.846652,11.62957 2.822106,0 6.171426,-0.71328 8.24924,-1.89174 l 0,-10.60617 -7.25685,0 0,1.95377 5.117009,0 0,7.19483 -0.248097,0.12404 c -0.496194,0.27911 -2.387941,1.2715 -5.923326,1.2715"
+       id="path11291"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 87.219663,306.49324 -0.186073,0.37214 -0.06202,0 0,-1.08542 c 0,-0.58924 0,-0.71329 -0.09304,-1.33353 l -2.077816,0 c 0.09304,0.43417 0.217085,0.99239 0.217085,1.89174 l 0,12.74601 1.953768,0 0,-7.90811 c 0,-4.06259 2.698061,-5.33409 4.682839,-5.33409 1.984777,0 4.124619,0.7443 4.124619,4.31069 l 0,8.93151 1.953765,0 0,-9.24163 c 0,-4.52777 -3.070205,-5.73725 -5.117007,-5.73725 -2.88413,0 -4.8379,1.39555 -5.396119,2.38794"
+       id="path11293"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 108.09425,319.45633 c 4.40373,0 7.69102,-3.44236 7.69102,-7.629 0,-4.12462 -3.28729,-7.59798 -7.69102,-7.59798 -4.40372,0 -7.72203,3.44235 -7.72203,7.59798 0,4.43474 3.53539,7.629 7.72203,7.629 m 5.55118,-7.629 c 0,3.47336 -2.26389,5.8613 -5.55118,5.8613 -3.3183,0 -5.58219,-2.38794 -5.58219,-5.8613 0,-3.44235 2.26389,-5.8613 5.58219,-5.8613 3.28729,0 5.55118,2.41895 5.55118,5.8613"
+       id="path11295"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 121.1998,306.49324 -0.18607,0.37214 -0.062,0 0,-1.08542 c 0,-0.58924 0,-0.71329 -0.093,-1.33353 l -2.07782,0 c 0.093,0.43417 0.21709,0.99239 0.21709,1.89174 l 0,12.68399 1.95376,0 0,-7.84609 c 0,-4.06259 2.69807,-5.33409 4.68284,-5.33409 1.98478,0 4.12462,0.7443 4.12462,4.31069 l 0,8.86949 1.98478,0 -0.031,-9.17961 c 0,-0.62024 -0.062,-1.17846 -0.18607,-1.67466 0.93036,-1.70566 2.63603,-2.32591 4.03158,-2.32591 1.98478,0 4.12462,0.7443 4.12462,4.31069 l 0,8.86949 1.95377,0 0,-9.17961 c 0,-4.52777 -3.07021,-5.73725 -5.11701,-5.73725 -2.88413,0 -4.8379,1.39555 -5.39612,2.38794 l -0.093,0.21708 c -1.0234,-1.98478 -2.97717,-2.60502 -4.43474,-2.60502 -2.88413,0 -4.8379,1.39555 -5.39612,2.38794"
+       id="path11297"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 146.76692,310.99 0,-0.49619 c 0,-2.35693 2.44997,-4.74487 5.27207,-4.74487 2.94616,0 4.8379,1.73669 4.93094,4.74487 l 0.031,0.49619 -10.23402,0 m 5.3341,-6.69863 c -4.49676,0 -7.50495,3.31831 -7.50495,7.47394 0,4.3417 2.82211,7.62899 7.47394,7.62899 2.79109,0 3.90753,-0.43417 5.45814,-0.89935 l -0.34114,-1.42656 c -1.58161,0.46518 -2.94615,0.7753 -4.74486,0.7753 -3.00818,0 -5.67523,-2.07782 -5.67523,-4.99296 l 0,-0.49619 12.37386,0 0,-0.55822 c 0,-4.06259 -2.20187,-7.50495 -7.03976,-7.50495"
+       id="path11299"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 185.47593,313.03681 c 0,-1.42656 -0.2481,-3.38033 -2.69806,-4.74487 -3.22526,-1.7987 -8.65239,-1.55061 -8.65239,-5.89231 0,-1.5196 1.05442,-4.00057 4.99296,-4.00057 2.20186,0 3.50437,0.99239 4.15563,1.76769 l 1.79871,-1.61263 c -1.0234,-1.11644 -2.57402,-2.10883 -5.95434,-2.10883 -5.39612,0 -7.34989,3.62843 -7.34989,5.95434 0,1.2715 0.15506,3.62842 2.72907,5.24106 3.3183,2.07781 8.6524,1.79871 8.6524,5.76826 0,2.69806 -2.60502,4.31069 -5.086,4.31069 -1.7987,0 -3.69045,-0.68227 -4.96194,-2.23287 l -1.82972,1.55061 c 1.5506,1.86073 4.15563,2.63603 6.69863,2.63603 4.37271,0 7.50494,-2.63604 7.50494,-6.6366"
+       id="path11301"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 186.64132,304.29137 6.1094,14.42066 -0.4962,1.2715 c -0.86834,2.17085 -2.94615,3.44236 -5.05498,4.34171 l 0.71328,1.73668 c 3.0702,-1.2715 5.39612,-3.25628 6.32648,-5.89231 l 5.5822,-15.87824 -2.07782,0 -4.00057,12.06374 -0.093,0 -4.99296,-12.06374 -2.01579,0"
+       id="path11303"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 203.93933,306.49324 -0.18607,0.37214 -0.062,0 0,-1.08542 c 0,-0.58924 0,-0.71329 -0.093,-1.33353 l -2.07782,0 c 0.093,0.43417 0.21709,0.99239 0.21709,1.89174 l 0,12.68399 1.95377,0 0,-7.84609 c 0,-4.06259 2.69806,-5.33409 4.68284,-5.33409 1.98477,0 4.12462,0.7443 4.12462,4.31069 l 0,8.86949 1.98478,0 -0.031,-9.17961 c 0,-0.62024 -0.062,-1.17846 -0.18607,-1.67466 0.93036,-1.70566 2.63604,-2.32591 4.03158,-2.32591 1.98478,0 4.12462,0.7443 4.12462,4.31069 l 0,8.86949 1.95377,0 0,-9.17961 c 0,-4.52777 -3.07021,-5.73725 -5.11701,-5.73725 -2.88413,0 -4.8379,1.39555 -5.39612,2.38794 l -0.093,0.21708 c -1.0234,-1.98478 -2.97717,-2.60502 -4.43474,-2.60502 -2.88413,0 -4.8379,1.39555 -5.39612,2.38794"
+       id="path11305"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 235.61585,306.02805 c 3.3183,0 5.58219,2.38794 5.58219,5.8613 0,3.47337 -2.26389,5.86131 -5.58219,5.86131 -2.26389,0 -4.46576,-1.58163 -5.52017,-3.72146 l -0.031,-0.093 0,-4.0626 0.062,-0.093 c 0.7753,-1.42656 2.20187,-3.75248 5.48916,-3.75248 m -5.76827,13.08714 c 0.12405,-0.65125 0.18607,-1.33352 0.21709,-2.07781 l 0.062,-1.05442 0.80632,1.24049 c 1.36453,1.33352 3.13223,2.2949 5.05498,2.2949 4.68284,0 7.34989,-3.50438 7.34989,-7.629 0,-4.43473 -2.94616,-7.59798 -7.34989,-7.59798 -2.2949,0 -4.18664,1.05442 -5.02397,2.35693 l -0.89935,1.39554 0,-12.43588 -1.95377,0 0,21.46043 c 0,0.68227 -0.031,1.33352 -0.12405,2.0468 l 1.86073,0"
+       id="path11307"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 252.37357,319.45633 c 4.40373,0 7.69102,-3.44236 7.69102,-7.629 0,-4.12462 -3.28729,-7.59798 -7.69102,-7.59798 -4.40372,0 -7.72203,3.44235 -7.72203,7.59798 0,4.43474 3.53539,7.629 7.72203,7.629 m 5.55118,-7.629 c 0,3.47336 -2.26389,5.8613 -5.55118,5.8613 -3.3183,0 -5.58219,-2.38794 -5.58219,-5.8613 0,-3.44235 2.26389,-5.8613 5.58219,-5.8613 3.28729,0 5.55118,2.41895 5.55118,5.8613"
+       id="path11309"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 263.43231,295.57695 0,20.49905 c -0.031,2.72907 1.61263,2.94616 2.60502,2.94616 l 0.65126,0 0,-1.55061 -0.55822,0 c -0.43417,0 -0.7753,-0.12405 -0.7753,-0.83733 l 0,-21.05727 -1.92276,0"
+       id="path11311"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 270.27535,319.02216 1.89174,0 0,-14.57573 -1.89174,0 0,14.57573 m 2.57401,-19.78577 c 0,-0.86834 -0.68227,-1.61264 -1.58162,-1.61264 -0.86834,0 -1.61264,0.68227 -1.61264,1.61264 0,0.83732 0.68227,1.58162 1.61264,1.58162 0.83732,0 1.58162,-0.68227 1.58162,-1.58162"
+       id="path11313"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 275.88661,311.85834 c 0,4.68284 3.25628,7.53596 7.56697,7.53596 2.88413,0 4.43474,-1.14745 5.17903,-1.86073 l -1.39555,-1.39555 c -1.48858,1.45757 -2.94615,1.48859 -3.75247,1.48859 -3.44235,0 -5.45814,-2.76009 -5.45814,-5.70624 0,-2.94616 1.67466,-5.95434 5.30308,-5.95434 0.83733,0 2.26389,0.062 3.84551,1.5196 l 1.5196,-1.36454 c -1.24049,-1.14745 -3.00819,-1.92276 -5.24106,-1.92276 -4.5898,0 -7.56697,3.19426 -7.56697,7.66001"
+       id="path11315"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 301.90486,297.03452 0,22.04966 2.13984,0 0,-22.04966 -2.13984,0"
+       id="path11317"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 307.98907,311.85834 c 0,4.68284 3.25628,7.53596 7.56697,7.53596 2.88413,0 4.43474,-1.14745 5.17903,-1.86073 l -1.39554,-1.39555 c -1.48859,1.45757 -2.94616,1.48859 -3.75248,1.48859 -3.44235,0 -5.45814,-2.76009 -5.45814,-5.70624 0,-2.94616 1.67466,-5.95434 5.30308,-5.95434 0.83733,0 2.26389,0.062 3.84551,1.5196 l 1.5196,-1.36454 c -1.24049,-1.14745 -3.00818,-1.92276 -5.24106,-1.92276 -4.5898,0 -7.56697,3.19426 -7.56697,7.66001"
+       id="path11319"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 329.90402,319.45633 c 4.40372,0 7.69102,-3.44236 7.69102,-7.629 0,-4.12462 -3.2873,-7.59798 -7.69102,-7.59798 -4.40373,0 -7.72204,3.44235 -7.72204,7.59798 0,4.43474 3.5354,7.629 7.72204,7.629 m 5.55118,-7.629 c 0,3.47336 -2.2639,5.8613 -5.55118,5.8613 -3.3183,0 -5.5822,-2.38794 -5.5822,-5.8613 0,-3.44235 2.2639,-5.8613 5.5822,-5.8613 3.28728,0 5.55118,2.41895 5.55118,5.8613"
+       id="path11321"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 343.00957,306.49324 -0.18607,0.37214 -0.062,0 0,-1.08542 c 0,-0.58924 0,-0.71329 -0.093,-1.33353 l -2.07782,0 c 0.093,0.43417 0.21709,0.99239 0.21709,1.89174 l 0,12.74601 1.95376,0 0,-7.90811 c 0,-4.06259 2.69806,-5.33409 4.68284,-5.33409 1.98478,0 4.12462,0.7443 4.12462,4.31069 l 0,8.93151 1.95377,0 0,-9.24163 c 0,-4.52777 -3.07021,-5.73725 -5.11701,-5.73725 -2.88413,0 -4.8379,1.39555 -5.39612,2.38794"
+       id="path11323"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 356.56527,308.32295 c 0,5.42713 8.43532,2.69807 8.43532,6.79167 0,1.45757 -1.5196,2.41895 -3.62843,2.41895 -0.96137,0 -2.10883,-0.12405 -3.75247,-1.64364 l -1.5196,1.24048 c 0.83733,1.05442 2.20187,2.17086 5.27207,2.17086 2.94616,0 5.76827,-1.27151 5.76827,-4.34171 0,-2.44996 -1.48859,-3.41134 -4.12462,-4.03158 l -1.14745,-0.21709 c -1.55061,-0.31012 -3.16325,-1.08543 -3.16325,-2.66705 0,-1.76769 1.95377,-2.20186 3.07021,-2.20186 0.55822,0 1.95377,0.031 3.22527,1.33352 l 1.55061,-1.17846 c -0.99239,-1.2715 -2.63604,-1.92275 -4.62082,-1.92275 -2.63603,0 -5.36511,1.33352 -5.36511,4.24866"
+       id="path11325"
+       style="font-size:31.0121994px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 70.96012,347.46538 c 0,-0.68957 -0.119928,-1.634 -1.304201,-2.29359 -1.559044,-0.86947 -4.182438,-0.74954 -4.182438,-2.84826 0,-0.73455 0.509689,-1.93381 2.413521,-1.93381 1.064347,0 1.693963,0.47971 2.00877,0.85448 l 0.869467,-0.77953 C 70.270543,339.925 69.521,339.4453 67.887002,339.4453 c -2.608399,0 -3.552824,1.75392 -3.552824,2.87823 0,0.61463 0.07496,1.75393 1.319192,2.53345 1.604016,1.00439 4.182438,0.86947 4.182438,2.78829 0,1.3042 -1.259229,2.08373 -2.458494,2.08373 -0.869466,0 -1.783907,-0.3298 -2.39853,-1.07934 l -0.884459,0.74954 c 0.749541,0.89945 2.008771,1.27422 3.238017,1.27422 2.113703,0 3.627778,-1.27422 3.627778,-3.20804"
+       id="path11272"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 84.340983,350.56848 c 2.128693,0 3.717722,-1.66398 3.717722,-3.68774 0,-1.99377 -1.589029,-3.67275 -3.717722,-3.67275 -2.128694,0 -3.732714,1.66399 -3.732714,3.67275 0,2.14369 1.708955,3.68774 3.732714,3.68774 m 2.683356,-3.68774 c 0,1.67897 -1.094331,2.83327 -2.683356,2.83327 -1.604016,0 -2.698348,-1.1543 -2.698348,-2.83327 0,-1.66398 1.094332,-2.83326 2.698348,-2.83326 1.589025,0 2.683356,1.16928 2.683356,2.83326"
+       id="path11274"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 103.41859,349.36922 0.0899,-0.1649 0.03,0 0,0.50969 c 0,0.28482 0,0.34479 0.045,0.65959 l 1.00438,0 c -0.045,-0.20987 -0.10493,-0.49469 -0.10493,-0.91444 l 0,-6.17621 -0.94442,0 0,3.83765 c 0,1.9488 -1.28922,2.56343 -2.26362,2.56343 -0.94442,0 -1.993776,-0.3448 -1.993776,-2.06874 l 0,-4.33234 -0.944422,0 0,4.46726 c 0,2.18866 1.484092,2.7733 2.473488,2.7733 1.39414,0 2.33856,-0.6596 2.6084,-1.15429"
+       id="path11276"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 119.05604,343.193 c -0.22486,-0.075 -0.44972,-0.0899 -0.56965,-0.0899 -0.47971,0 -1.55905,0.17989 -2.08372,1.43912 l -0.25485,0.58464 0,-1.85886 -0.94442,0 0,7.09065 0.94442,0 0,-3.61278 c 0,-0.79452 0.64461,-2.63839 2.09872,-2.63839 0.20987,0 0.41974,0.015 0.65959,0.075 l 0.14991,-0.9894"
+       id="path11278"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 128.78242,346.89573 c 0,2.26361 1.57404,3.64277 3.65776,3.64277 1.39415,0 2.14369,-0.55466 2.50347,-0.89945 l -0.67459,-0.67458 c -0.71956,0.70456 -1.42412,0.71956 -1.81389,0.71956 -1.66397,0 -2.63838,-1.33419 -2.63838,-2.75832 0,-1.42412 0.80951,-2.87823 2.56343,-2.87823 0.40475,0 1.09433,0.03 1.85886,0.73455 l 0.73455,-0.6596 c -0.59963,-0.55466 -1.45411,-0.92943 -2.53345,-0.92943 -2.21863,0 -3.65776,1.54406 -3.65776,3.70273"
+       id="path11280"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 145.64233,346.47599 0,-0.23985 c 0,-1.1393 1.18427,-2.2936 2.54843,-2.2936 1.42413,0 2.33857,0.83949 2.38354,2.2936 l 0.015,0.23985 -4.94697,0 m 2.57842,-3.23802 c -2.17367,0 -3.62778,1.60402 -3.62778,3.61279 0,2.09871 1.36417,3.68774 3.61279,3.68774 1.34917,0 1.88884,-0.20987 2.63838,-0.43473 l -0.1649,-0.68958 c -0.76453,0.22486 -1.42413,0.37477 -2.29359,0.37477 -1.45411,0 -2.74332,-1.00439 -2.74332,-2.41352 l 0,-0.23985 5.98133,0 0,-0.26984 c 0,-1.96379 -1.06435,-3.62778 -3.40291,-3.62778"
+       id="path11282"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 181.95367,347.46538 c 0,-0.68957 -0.11992,-1.634 -1.3042,-2.29359 -1.55904,-0.86947 -4.18244,-0.74954 -4.18244,-2.84826 0,-0.73455 0.50969,-1.93381 2.41353,-1.93381 1.06434,0 1.69396,0.47971 2.00876,0.85448 l 0.86947,-0.77953 c -0.49469,-0.53967 -1.24424,-1.01937 -2.87823,-1.01937 -2.6084,0 -3.55283,1.75392 -3.55283,2.87823 0,0.61463 0.075,1.75393 1.31919,2.53345 1.60402,1.00439 4.18244,0.86947 4.18244,2.78829 0,1.3042 -1.25923,2.08373 -2.45849,2.08373 -0.86947,0 -1.78391,-0.3298 -2.39853,-1.07934 l -0.88446,0.74954 c 0.74954,0.89945 2.00877,1.27422 3.23802,1.27422 2.1137,0 3.62777,-1.27422 3.62777,-3.20804"
+       id="path11284"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 191.04716,339.73012 4.12247,10.65847 0.83949,0 4.19743,-10.65847 -1.1393,0 -3.40292,9.05446 -0.10493,0 -3.268,-9.05446 -1.24424,0"
+       id="path11286"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+    <path
+       d="m 214.9462,349.729 c -2.66837,0 -4.55721,-2.09872 -4.55721,-4.67714 0,-2.57842 1.76892,-4.66214 4.43728,-4.66214 1.66398,0 2.6084,0.67459 3.07312,1.07934 l 0.74954,-0.80951 c -1.03437,-0.94442 -2.35356,-1.21425 -3.82266,-1.21425 -3.35794,0 -5.57658,2.51846 -5.57658,5.60656 0,3.02814 2.08372,5.62156 5.72649,5.62156 1.36416,0 2.98317,-0.34479 3.98756,-0.91444 l 0,-5.12686 -3.50786,0 0,0.94442 2.47349,0 0,3.47787 -0.11993,0.06 c -0.23985,0.13492 -1.15429,0.61463 -2.86324,0.61463"
+       id="path11288"
+       style="font-size:14.9907999px;font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;text-indent:0pt;text-align:start;text-decoration:none;line-height:125%;word-spacing:normal;text-transform:none;direction:ltr;text-anchor:start;color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2.58435011;marker:none;visibility:visible;font-family:RaveIn" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer9"
+     inkscape:label="status"
+     style="display:inline">
+    <g
+       style="display:inline"
+       id="g5493"
+       transform="translate(21.0002,-39.999999)"
+       inkscape:label="audio-input-microphone-high">
+      <rect
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect5499"
+         width="16"
+         height="16"
+         x="20"
+         y="217"
+         inkscape:label="audio-volume-high" />
+      <rect
+         inkscape:label="audio-volume-high"
+         y="217"
+         x="20"
+         height="16"
+         width="16"
+         id="rect3704"
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         transform="matrix(1.5,0,0,1.5,-8.5002,-83.000001)"
+         d="m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="209"
+         sodipodi:cx="28"
+         id="path4959"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         sodipodi:type="arc" />
+      <rect
+         ry="2.5"
+         rx="2.5"
+         y="217.98712"
+         x="23.9998"
+         height="10.012877"
+         width="5"
+         id="rect6796-1"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         transform="matrix(0.993968,0,0,1,-1.293301,-58.486139)"
+         clip-path="url(#clipPath6810-7-0-7)"
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:1.00302994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6806-6"
+         width="8.062501"
+         height="13.869018"
+         x="23.9375"
+         y="274.13098"
+         rx="4.0312505"
+         ry="4.0312505" />
+      <path
+         transform="matrix(0.5,0,0,0.5,10.9998,42.000001)"
+         d="m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="361"
+         sodipodi:cx="23"
+         id="path6814-3"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="path6816-8"
+         sodipodi:cx="23"
+         sodipodi:cy="361"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+         transform="matrix(0.5,0,0,0.5,18.9998,42.000001)" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path6818-5"
+         d="m 22.98733,232 7.047969,0"
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:2;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         y="232"
+         x="21.9998"
+         height="1"
+         width="9"
+         id="rect6822-5"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect6824-0"
+         width="3"
+         height="4"
+         x="24.9998"
+         y="229" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         id="path13930"
+         sodipodi:cx="28"
+         sodipodi:cy="209"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+         transform="matrix(1.5,0,0,1.5,-8.5002,-88.000001)" />
+      <path
+         transform="matrix(1.5,0,0,1.5,-8.5002,-93.000001)"
+         d="m 29,209 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="209"
+         sodipodi:cx="28"
+         id="path13932"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         sodipodi:type="arc" />
+    </g>
+    <text
+       sodipodi:linespacing="125%"
+       id="text6726"
+       y="165.94501"
+       x="41.823399"
+       style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;display:inline;font-family:Droid Sans"
+       xml:space="preserve"><tspan
+         y="165.94501"
+         x="41.823399"
+         id="tspan6728"
+         sodipodi:role="line">status</tspan></text>
+    <g
+       style="display:inline"
+       inkscape:label="audio-input-microphone-muted"
+       transform="translate(81.0002,-39.999999)"
+       id="g3266">
+      <rect
+         inkscape:label="audio-volume-high"
+         y="217"
+         x="20"
+         height="16"
+         width="16"
+         id="rect3270"
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         inkscape:connector-curvature="0"
+         sodipodi:nodetypes="ccccccccccccccccc"
+         id="path3761-2-3-5-4-8-9-8-0-1-7"
+         d="m 30.99975,228 1.375,0 1.125,1.09375 L 34.5935,228 l 1.40625,0 0,1.46875 -1.09375,1.0625 1.09375,1.0625 0,1.40625 -1.4375,0 -1.0625,-1.0625 -1.0625,1.0625 -1.4375,0 0,-1.40625 1.0625,-1.0625 -1.0625,-1.0625 0,-1.46875 z"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <g
+         id="g14804"
+         style="opacity:0.25">
+        <rect
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+           id="rect13968-5"
+           width="5"
+           height="10.012877"
+           x="23.999798"
+           y="217.98712"
+           rx="2.5"
+           ry="2.5" />
+        <rect
+           ry="4.0312505"
+           rx="4.0312505"
+           y="274.13098"
+           x="23.9375"
+           height="13.869018"
+           width="8.062501"
+           id="rect13970-1"
+           style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:1.00302994000000001;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+           clip-path="url(#clipPath6810-7-0-7-1)"
+           transform="matrix(0.993968,0,0,1,-1.2933,-58.486138)" />
+        <path
+           sodipodi:type="arc"
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+           id="path13972-1"
+           sodipodi:cx="23"
+           sodipodi:cy="361"
+           sodipodi:rx="1"
+           sodipodi:ry="1"
+           d="m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+           transform="matrix(0.5,0,0,0.5,10.9998,42.000002)" />
+        <path
+           transform="matrix(0.5,0,0,0.5,18.9998,42.000002)"
+           d="m 24,361 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
+           sodipodi:ry="1"
+           sodipodi:rx="1"
+           sodipodi:cy="361"
+           sodipodi:cx="23"
+           id="path13974-3"
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+           sodipodi:type="arc" />
+        <path
+           style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:2;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible"
+           d="m 22.98733,232 6.01247,0"
+           id="path13976-0"
+           inkscape:connector-curvature="0"
+           sodipodi:nodetypes="cc" />
+        <rect
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+           id="rect13978-6"
+           width="1.0000021"
+           height="1"
+           x="21.999798"
+           y="232" />
+        <rect
+           y="229"
+           x="24.999798"
+           height="4"
+           width="3"
+           id="rect13980-4"
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+        <rect
+           y="231"
+           x="28.9998"
+           height="2.000001"
+           width="0.9999997"
+           id="rect14813"
+           style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      </g>
+    </g>
+    <g
+       inkscape:label="audio-input-microphone-medium"
+       transform="translate(41.0002,-39.999999)"
+       id="g13934"
+       style="display:inline">
+      <rect
+         inkscape:label="audio-volume-high"
+         y="217"
+         x="20"
+         height="16"
+         width="16"
+         id="rect13936"
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13938"
+         width="16"
+         height="16"
+         x="20"
+         y="217"
+         inkscape:label="audio-volume-high" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         id="path13940"
+         sodipodi:cx="28"
+         sodipodi:cy="209"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         transform="matrix(1.5,0,0,1.5,-8.5002,-83.000001)" />
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13942"
+         width="5"
+         height="10.012877"
+         x="23.9998"
+         y="217.98712"
+         rx="2.5"
+         ry="2.5" />
+      <rect
+         ry="4.0312505"
+         rx="4.0312505"
+         y="274.13098"
+         x="23.9375"
+         height="13.869018"
+         width="8.062501"
+         id="rect13944"
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:1.00302994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+         clip-path="url(#clipPath6810-7-0-7)"
+         transform="matrix(0.993968,0,0,1,-1.293301,-58.486139)" />
+      <path
+         sodipodi:type="arc"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="path13946"
+         sodipodi:cx="23"
+         sodipodi:cy="361"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         transform="matrix(0.5,0,0,0.5,10.9998,42.000001)" />
+      <path
+         transform="matrix(0.5,0,0,0.5,18.9998,42.000001)"
+         d="m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="361"
+         sodipodi:cx="23"
+         id="path13948"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         sodipodi:type="arc" />
+      <path
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:2;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         d="m 22.98733,232 7.047969,0"
+         id="path13950"
+         inkscape:connector-curvature="0" />
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13952"
+         width="9"
+         height="1"
+         x="21.9998"
+         y="232" />
+      <rect
+         y="229"
+         x="24.9998"
+         height="4"
+         width="3"
+         id="rect13954"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         transform="matrix(1.5,0,0,1.5,-8.5002,-88.000001)"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="209"
+         sodipodi:cx="28"
+         id="path13956"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline;opacity:0.25"
+         id="path13958"
+         sodipodi:cx="28"
+         sodipodi:cy="209"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         transform="matrix(1.5,0,0,1.5,-8.5002,-93.000001)" />
+    </g>
+    <g
+       style="display:inline"
+       id="g13960"
+       transform="translate(61.0002,-39.999999)"
+       inkscape:label="audio-input-microphone-low">
+      <rect
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13962"
+         width="16"
+         height="16"
+         x="20"
+         y="217"
+         inkscape:label="audio-volume-high" />
+      <rect
+         inkscape:label="audio-volume-high"
+         y="217"
+         x="20"
+         height="16"
+         width="16"
+         id="rect13964"
+         style="color:#bebebe;fill:none;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <path
+         transform="matrix(1.5,0,0,1.5,-8.5002,-83.000001)"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="209"
+         sodipodi:cx="28"
+         id="path13966"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline"
+         sodipodi:type="arc" />
+      <rect
+         ry="2.5"
+         rx="2.5"
+         y="217.98712"
+         x="23.9998"
+         height="10.012877"
+         width="5"
+         id="rect13968"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         transform="matrix(0.993968,0,0,1,-1.293301,-58.486139)"
+         clip-path="url(#clipPath6810-7-0-7)"
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:1.00302994;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13970"
+         width="8.062501"
+         height="13.869018"
+         x="23.9375"
+         y="274.13098"
+         rx="4.0312505"
+         ry="4.0312505" />
+      <path
+         transform="matrix(0.5,0,0,0.5,10.9998,42.000001)"
+         d="m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="361"
+         sodipodi:cx="23"
+         id="path13972"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         sodipodi:type="arc" />
+      <path
+         sodipodi:type="arc"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="path13974"
+         sodipodi:cx="23"
+         sodipodi:cy="361"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 24,361 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         transform="matrix(0.5,0,0,0.5,18.9998,42.000001)" />
+      <path
+         inkscape:connector-curvature="0"
+         id="path13976"
+         d="m 22.98733,232 7.047969,0"
+         style="color:#bebebe;fill:none;stroke:#bebebe;stroke-width:2;stroke-linecap:round;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         y="232"
+         x="21.9998"
+         height="1"
+         width="9"
+         id="rect13978"
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible" />
+      <rect
+         style="color:#bebebe;fill:#bebebe;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible"
+         id="rect13980"
+         width="3"
+         height="4"
+         x="24.9998"
+         y="229" />
+      <path
+         sodipodi:type="arc"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline;opacity:0.25"
+         id="path13982"
+         sodipodi:cx="28"
+         sodipodi:cy="209"
+         sodipodi:rx="1"
+         sodipodi:ry="1"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         transform="matrix(1.5,0,0,1.5,-8.5002,-88.000001)" />
+      <path
+         transform="matrix(1.5,0,0,1.5,-8.5002,-93.000001)"
+         d="m 29,209 c 0,0.55228 -0.447715,1 -1,1 -0.552285,0 -1,-0.44772 -1,-1 0,-0.55228 0.447715,-1 1,-1 0.552285,0 1,0.44772 1,1 z"
+         sodipodi:ry="1"
+         sodipodi:rx="1"
+         sodipodi:cy="209"
+         sodipodi:cx="28"
+         id="path13984"
+         style="fill:#bebebe;fill-opacity:1;stroke:none;display:inline;opacity:0.25"
+         sodipodi:type="arc" />
+    </g>
+  </g>
+</svg>
diff --git a/panels/sound/gvc-applet.c b/panels/sound/gvc-applet.c
new file mode 100644
index 0000000..ef94ac5
--- /dev/null
+++ b/panels/sound/gvc-applet.c
@@ -0,0 +1,311 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-applet.h"
+#include "gvc-mixer-control.h"
+#include "gvc-stream-status-icon.h"
+
+#define GVC_APPLET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_APPLET, GvcAppletPrivate))
+
+#define SCALE_SIZE 128
+
+static const char *output_icon_names[] = {
+        "audio-volume-muted-symbolic",
+        "audio-volume-low-symbolic",
+        "audio-volume-medium-symbolic",
+        "audio-volume-high-symbolic",
+        NULL
+};
+
+static const char *input_icon_names[] = {
+        "audio-input-microphone-muted-symbolic",
+        "audio-input-microphone-low-symbolic",
+        "audio-input-microphone-medium-symbolic",
+        "audio-input-microphone-high-symbolic",
+        NULL
+};
+
+struct GvcAppletPrivate
+{
+        GvcStreamStatusIcon *input_status_icon;
+        GvcStreamStatusIcon *output_status_icon;
+        GvcMixerControl     *control;
+};
+
+static void     gvc_applet_class_init (GvcAppletClass *klass);
+static void     gvc_applet_init       (GvcApplet      *applet);
+static void     gvc_applet_finalize   (GObject        *object);
+
+G_DEFINE_TYPE (GvcApplet, gvc_applet, G_TYPE_OBJECT)
+
+static void
+maybe_show_status_icons (GvcApplet *applet)
+{
+        gboolean        show;
+        GvcMixerStream *stream;
+        GSList         *source_outputs, *l;
+
+        show = TRUE;
+        stream = gvc_mixer_control_get_default_sink (applet->priv->control);
+        if (stream == NULL) {
+                show = FALSE;
+        }
+        gtk_status_icon_set_visible (GTK_STATUS_ICON (applet->priv->output_status_icon), show);
+
+
+        show = FALSE;
+        stream = gvc_mixer_control_get_default_source (applet->priv->control);
+        source_outputs = gvc_mixer_control_get_source_outputs (applet->priv->control);
+        if (stream != NULL && source_outputs != NULL) {
+                /* Check that we're not trying to add the peak detector
+                 * as an application doing recording */
+                for (l = source_outputs ; l ; l = l->next) {
+                        GvcMixerStream *s = l->data;
+                        const char *id;
+
+                        id = gvc_mixer_stream_get_application_id (s);
+                        if (id == NULL) {
+                                show = TRUE;
+                                break;
+                        }
+
+                        if (!g_str_equal (id, "org.gnome.VolumeControl") &&
+                            !g_str_equal (id, "org.PulseAudio.pavucontrol")) {
+                                show = TRUE;
+                                break;
+                        }
+                }
+        }
+        gtk_status_icon_set_visible (GTK_STATUS_ICON (applet->priv->input_status_icon), show);
+
+        g_slist_free (source_outputs);
+}
+
+void
+gvc_applet_start (GvcApplet *applet)
+{
+        g_return_if_fail (GVC_IS_APPLET (applet));
+
+        maybe_show_status_icons (applet);
+}
+
+static void
+gvc_applet_dispose (GObject *object)
+{
+        GvcApplet *applet = GVC_APPLET (object);
+
+        if (applet->priv->control != NULL) {
+                g_object_unref (applet->priv->control);
+                applet->priv->control = NULL;
+        }
+
+        G_OBJECT_CLASS (gvc_applet_parent_class)->dispose (object);
+}
+
+static void
+update_default_source (GvcApplet *applet)
+{
+        GvcMixerStream *stream;
+
+        stream = gvc_mixer_control_get_default_source (applet->priv->control);
+        if (stream != NULL) {
+                gvc_stream_status_icon_set_mixer_stream (applet->priv->input_status_icon,
+                                                         stream);
+                maybe_show_status_icons(applet);
+        } else {
+                g_debug ("Unable to get default source, or no source available");
+        }
+}
+
+static void
+update_default_sink (GvcApplet *applet)
+{
+        GvcMixerStream *stream;
+
+        stream = gvc_mixer_control_get_default_sink (applet->priv->control);
+        if (stream != NULL) {
+                gvc_stream_status_icon_set_mixer_stream (applet->priv->output_status_icon,
+                                                         stream);
+                maybe_show_status_icons(applet);
+        } else {
+                g_warning ("Unable to get default sink");
+        }
+}
+
+static void
+on_control_ready (GvcMixerControl *control,
+                  GvcApplet       *applet)
+{
+        update_default_sink (applet);
+        update_default_source (applet);
+}
+
+static void
+on_control_connecting (GvcMixerControl *control,
+                       GvcApplet       *applet)
+{
+        g_debug ("Connecting..");
+}
+
+static void
+on_control_default_sink_changed (GvcMixerControl *control,
+                                 guint            id,
+                                 GvcApplet       *applet)
+{
+        update_default_sink (applet);
+}
+
+static void
+on_control_default_source_changed (GvcMixerControl *control,
+                                   guint            id,
+                                   GvcApplet       *applet)
+{
+        update_default_source (applet);
+}
+
+static void
+on_control_stream_removed (GvcMixerControl *control,
+                           guint            id,
+                           GvcApplet       *applet)
+{
+        maybe_show_status_icons (applet);
+}
+
+static void
+on_control_stream_added (GvcMixerControl *control,
+                         guint            id,
+                         GvcApplet       *applet)
+{
+        maybe_show_status_icons (applet);
+}
+
+static GObject *
+gvc_applet_constructor (GType                  type,
+                        guint                  n_construct_properties,
+                        GObjectConstructParam *construct_params)
+{
+        GObject   *object;
+        GvcApplet *self;
+
+        object = G_OBJECT_CLASS (gvc_applet_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_APPLET (object);
+
+        self->priv->control = gvc_mixer_control_new ("GNOME Volume Control Applet");
+        g_signal_connect (self->priv->control,
+                          "ready",
+                          G_CALLBACK (on_control_ready),
+                          self);
+        g_signal_connect (self->priv->control,
+                          "connecting",
+                          G_CALLBACK (on_control_connecting),
+                          self);
+        g_signal_connect (self->priv->control,
+                          "default-sink-changed",
+                          G_CALLBACK (on_control_default_sink_changed),
+                          self);
+        g_signal_connect (self->priv->control,
+                          "default-source-changed",
+                          G_CALLBACK (on_control_default_source_changed),
+                          self);
+        g_signal_connect (self->priv->control,
+                          "stream-added",
+                          G_CALLBACK (on_control_stream_added),
+                          self);
+        g_signal_connect (self->priv->control,
+                          "stream-removed",
+                          G_CALLBACK (on_control_stream_removed),
+                          self);
+
+        gvc_mixer_control_open (self->priv->control);
+
+        return object;
+}
+
+static void
+gvc_applet_class_init (GvcAppletClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->finalize = gvc_applet_finalize;
+        object_class->dispose = gvc_applet_dispose;
+        object_class->constructor = gvc_applet_constructor;
+
+        g_type_class_add_private (klass, sizeof (GvcAppletPrivate));
+}
+
+static void
+gvc_applet_init (GvcApplet *applet)
+{
+        applet->priv = GVC_APPLET_GET_PRIVATE (applet);
+
+        applet->priv->output_status_icon = gvc_stream_status_icon_new (NULL,
+                                                                       output_icon_names);
+        gvc_stream_status_icon_set_display_name (applet->priv->output_status_icon,
+                                                 _("Output"));
+        gtk_status_icon_set_title (GTK_STATUS_ICON (applet->priv->output_status_icon),
+                                   _("Sound Output Volume"));
+        applet->priv->input_status_icon = gvc_stream_status_icon_new (NULL,
+                                                                      input_icon_names);
+        gvc_stream_status_icon_set_display_name (applet->priv->input_status_icon,
+                                                 _("Input"));
+        gtk_status_icon_set_title (GTK_STATUS_ICON (applet->priv->input_status_icon),
+                                   _("Microphone Volume"));
+}
+
+static void
+gvc_applet_finalize (GObject *object)
+{
+        GvcApplet *applet;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_APPLET (object));
+
+        applet = GVC_APPLET (object);
+
+        g_return_if_fail (applet->priv != NULL);
+
+
+        G_OBJECT_CLASS (gvc_applet_parent_class)->finalize (object);
+}
+
+GvcApplet *
+gvc_applet_new (void)
+{
+        GObject *applet;
+
+        applet = g_object_new (GVC_TYPE_APPLET, NULL);
+
+        return GVC_APPLET (applet);
+}
diff --git a/panels/sound/gvc-applet.h b/panels/sound/gvc-applet.h
new file mode 100644
index 0000000..d9e0311
--- /dev/null
+++ b/panels/sound/gvc-applet.h
@@ -0,0 +1,55 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_APPLET_H
+#define __GVC_APPLET_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_APPLET         (gvc_applet_get_type ())
+#define GVC_APPLET(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_APPLET, GvcApplet))
+#define GVC_APPLET_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_APPLET, GvcAppletClass))
+#define GVC_IS_APPLET(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_APPLET))
+#define GVC_IS_APPLET_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_APPLET))
+#define GVC_APPLET_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_APPLET, GvcAppletClass))
+
+typedef struct GvcAppletPrivate GvcAppletPrivate;
+
+typedef struct
+{
+        GObject            parent;
+        GvcAppletPrivate *priv;
+} GvcApplet;
+
+typedef struct
+{
+        GObjectClass   parent_class;
+} GvcAppletClass;
+
+GType               gvc_applet_get_type            (void);
+
+GvcApplet *         gvc_applet_new                 (void);
+void                gvc_applet_start               (GvcApplet     *applet);
+
+G_END_DECLS
+
+#endif /* __GVC_APPLET_H */
diff --git a/panels/sound/gvc-balance-bar.c b/panels/sound/gvc-balance-bar.c
new file mode 100644
index 0000000..78594bf
--- /dev/null
+++ b/panels/sound/gvc-balance-bar.c
@@ -0,0 +1,550 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-balance-bar.h"
+#include "gvc-channel-map-private.h"
+
+#define SCALE_SIZE 128
+#define ADJUSTMENT_MAX_NORMAL 65536.0 /* PA_VOLUME_NORM */
+
+#define GVC_BALANCE_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBarPrivate))
+
+struct GvcBalanceBarPrivate
+{
+        GvcChannelMap *channel_map;
+        GvcBalanceType btype;
+        GtkWidget     *scale_box;
+        GtkWidget     *start_box;
+        GtkWidget     *end_box;
+        GtkWidget     *label;
+        GtkWidget     *scale;
+        GtkAdjustment *adjustment;
+        GtkSizeGroup  *size_group;
+        gboolean       symmetric;
+        gboolean       click_lock;
+};
+
+enum
+{
+        PROP_0,
+        PROP_CHANNEL_MAP,
+        PROP_BALANCE_TYPE,
+};
+
+static void     gvc_balance_bar_class_init (GvcBalanceBarClass *klass);
+static void     gvc_balance_bar_init       (GvcBalanceBar      *balance_bar);
+static void     gvc_balance_bar_finalize   (GObject            *object);
+
+static gboolean on_scale_button_press_event   (GtkWidget      *widget,
+                                               GdkEventButton *event,
+                                               GvcBalanceBar  *bar);
+static gboolean on_scale_button_release_event (GtkWidget      *widget,
+                                               GdkEventButton *event,
+                                               GvcBalanceBar  *bar);
+static gboolean on_scale_scroll_event         (GtkWidget      *widget,
+                                               GdkEventScroll *event,
+                                               GvcBalanceBar  *bar);
+static void on_adjustment_value_changed       (GtkAdjustment *adjustment,
+                                               GvcBalanceBar *bar);
+
+G_DEFINE_TYPE (GvcBalanceBar, gvc_balance_bar, GTK_TYPE_HBOX)
+
+static GtkWidget *
+_scale_box_new (GvcBalanceBar *bar)
+{
+        GvcBalanceBarPrivate *priv = bar->priv;
+        GtkWidget            *box;
+        GtkWidget            *sbox;
+        GtkWidget            *ebox;
+        GtkAdjustment        *adjustment = bar->priv->adjustment;
+        char                 *str_lower, *str_upper;
+        gdouble              lower, upper;
+
+        bar->priv->scale_box = box = gtk_hbox_new (FALSE, 6);
+        priv->scale = gtk_hscale_new (priv->adjustment);
+        gtk_widget_set_size_request (priv->scale, SCALE_SIZE, -1);
+
+        gtk_widget_set_name (priv->scale, "balance-bar-scale");
+        gtk_rc_parse_string ("style \"balance-bar-scale-style\" {\n"
+                             " GtkScale::trough-side-details = 0\n"
+                             "}\n"
+                             "widget \"*.balance-bar-scale\" style : rc \"balance-bar-scale-style\"\n");
+
+        bar->priv->start_box = sbox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0);
+
+        gtk_box_pack_start (GTK_BOX (sbox), priv->label, FALSE, FALSE, 0);
+
+        gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0);
+
+        switch (bar->priv->btype) {
+        case BALANCE_TYPE_RL:
+                str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Left"));
+                str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Right"));
+                break;
+        case BALANCE_TYPE_FR:
+                str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Rear"));
+                str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Front"));
+                break;
+        case BALANCE_TYPE_LFE:
+                str_lower = g_strdup_printf ("<small>%s</small>", C_("balance", "Minimum"));
+                str_upper = g_strdup_printf ("<small>%s</small>", C_("balance", "Maximum"));
+                break;
+        default:
+                g_assert_not_reached ();
+        }
+
+        lower = gtk_adjustment_get_lower (adjustment);
+        gtk_scale_add_mark (GTK_SCALE (priv->scale), lower,
+                            GTK_POS_BOTTOM, str_lower);
+        g_free (str_lower);
+        upper = gtk_adjustment_get_upper (adjustment);
+        gtk_scale_add_mark (GTK_SCALE (priv->scale), upper,
+                            GTK_POS_BOTTOM, str_upper);
+        g_free (str_upper);
+
+        if (bar->priv->btype != BALANCE_TYPE_LFE) {
+                gtk_scale_add_mark (GTK_SCALE (priv->scale),
+                                    (upper - lower)/2 + lower,
+                                    GTK_POS_BOTTOM, NULL);
+        }
+
+        bar->priv->end_box = ebox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0);
+
+        gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_CONTINUOUS);
+        ca_gtk_widget_disable_sounds (bar->priv->scale, FALSE);
+        gtk_widget_add_events (bar->priv->scale, GDK_SCROLL_MASK);
+
+        g_signal_connect (G_OBJECT (bar->priv->scale), "button-press-event",
+                          G_CALLBACK (on_scale_button_press_event), bar);
+        g_signal_connect (G_OBJECT (bar->priv->scale), "button-release-event",
+                          G_CALLBACK (on_scale_button_release_event), bar);
+        g_signal_connect (G_OBJECT (bar->priv->scale), "scroll-event",
+                          G_CALLBACK (on_scale_scroll_event), bar);
+
+        if (bar->priv->size_group != NULL) {
+                gtk_size_group_add_widget (bar->priv->size_group, sbox);
+
+                if (bar->priv->symmetric) {
+                        gtk_size_group_add_widget (bar->priv->size_group, ebox);
+                }
+        }
+
+        gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE);
+
+        return box;
+}
+
+void
+gvc_balance_bar_set_size_group (GvcBalanceBar *bar,
+                                GtkSizeGroup  *group,
+                                gboolean       symmetric)
+{
+        g_return_if_fail (GVC_IS_BALANCE_BAR (bar));
+
+        bar->priv->size_group = group;
+        bar->priv->symmetric = symmetric;
+
+        if (bar->priv->size_group != NULL) {
+                gtk_size_group_add_widget (bar->priv->size_group,
+                                           bar->priv->start_box);
+
+                if (bar->priv->symmetric) {
+                        gtk_size_group_add_widget (bar->priv->size_group,
+                                                   bar->priv->end_box);
+                }
+        }
+        gtk_widget_queue_draw (GTK_WIDGET (bar));
+}
+
+static const char *
+btype_to_string (guint btype)
+{
+        switch (btype) {
+        case BALANCE_TYPE_RL:
+                return "Balance";
+        case BALANCE_TYPE_FR:
+                return "Fade";
+                break;
+        case BALANCE_TYPE_LFE:
+                return "LFE";
+        default:
+                g_assert_not_reached ();
+        }
+        return NULL;
+}
+
+static void
+update_level_from_map (GvcBalanceBar *bar,
+                       GvcChannelMap *map)
+{
+        const gdouble *volumes;
+        gdouble val;
+
+        g_debug ("Volume changed (for %s bar)", btype_to_string (bar->priv->btype));
+
+        volumes = gvc_channel_map_get_volume (map);
+        switch (bar->priv->btype) {
+        case BALANCE_TYPE_RL:
+                val = volumes[BALANCE];
+                break;
+        case BALANCE_TYPE_FR:
+                val = volumes[FADE];
+                break;
+        case BALANCE_TYPE_LFE:
+                val = volumes[LFE];
+                break;
+        default:
+                g_assert_not_reached ();
+        }
+
+        gtk_adjustment_set_value (bar->priv->adjustment, val);
+}
+
+static void
+on_channel_map_volume_changed (GvcChannelMap  *map,
+                               gboolean        set,
+                               GvcBalanceBar  *bar)
+{
+        update_level_from_map (bar, map);
+}
+
+static void
+gvc_balance_bar_set_channel_map (GvcBalanceBar *bar,
+                                 GvcChannelMap *map)
+{
+        g_return_if_fail (GVC_BALANCE_BAR (bar));
+
+        if (bar->priv->channel_map != NULL) {
+                g_signal_handlers_disconnect_by_func (G_OBJECT (bar->priv->channel_map),
+                                                      on_channel_map_volume_changed, bar);
+                g_object_unref (bar->priv->channel_map);
+        }
+        bar->priv->channel_map = g_object_ref (map);
+
+        update_level_from_map (bar, map);
+
+        g_signal_connect (G_OBJECT (map), "volume-changed",
+                          G_CALLBACK (on_channel_map_volume_changed), bar);
+
+        g_object_notify (G_OBJECT (bar), "channel-map");
+}
+
+static void
+gvc_balance_bar_set_balance_type (GvcBalanceBar *bar,
+                                  GvcBalanceType btype)
+{
+        GtkWidget *frame;
+
+        g_return_if_fail (GVC_BALANCE_BAR (bar));
+
+        bar->priv->btype = btype;
+        if (bar->priv->btype != BALANCE_TYPE_LFE) {
+                bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                            -1.0,
+                                                                            1.0,
+                                                                            0.5,
+                                                                            0.5,
+                                                                            0.0));
+        } else {
+                bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                            0.0,
+                                                                            ADJUSTMENT_MAX_NORMAL,
+                                                                            ADJUSTMENT_MAX_NORMAL/100.0,
+                                                                            ADJUSTMENT_MAX_NORMAL/10.0,
+                                                                            0.0));
+        }
+
+        g_object_ref_sink (bar->priv->adjustment);
+        g_signal_connect (bar->priv->adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_adjustment_value_changed),
+                          bar);
+
+        switch (btype) {
+        case BALANCE_TYPE_RL:
+                bar->priv->label = gtk_label_new_with_mnemonic (_("_Balance:"));
+                break;
+        case BALANCE_TYPE_FR:
+                bar->priv->label = gtk_label_new_with_mnemonic (_("_Fade:"));
+                break;
+        case BALANCE_TYPE_LFE:
+                bar->priv->label = gtk_label_new_with_mnemonic (_("_Subwoofer:"));
+                break;
+        default:
+                g_assert_not_reached ();
+        }
+        gtk_misc_set_alignment (GTK_MISC (bar->priv->label),
+                                0.0,
+                                0.0);
+        /* frame */
+        frame = gtk_frame_new (NULL);
+        gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
+        gtk_container_add (GTK_CONTAINER (bar), frame);
+
+        /* box with scale */
+        bar->priv->scale_box = _scale_box_new (bar);
+        gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box);
+        gtk_widget_show_all (frame);
+
+        gtk_widget_set_direction (bar->priv->scale, GTK_TEXT_DIR_LTR);
+        gtk_label_set_mnemonic_widget (GTK_LABEL (bar->priv->label),
+                                       bar->priv->scale);
+
+        g_object_notify (G_OBJECT (bar), "balance-type");
+}
+
+static void
+gvc_balance_bar_set_property (GObject       *object,
+                              guint          prop_id,
+                              const GValue  *value,
+                              GParamSpec    *pspec)
+{
+        GvcBalanceBar *self = GVC_BALANCE_BAR (object);
+
+        switch (prop_id) {
+        case PROP_CHANNEL_MAP:
+                gvc_balance_bar_set_channel_map (self, g_value_get_object (value));
+                break;
+        case PROP_BALANCE_TYPE:
+                gvc_balance_bar_set_balance_type (self, g_value_get_int (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_balance_bar_get_property (GObject     *object,
+                              guint        prop_id,
+                              GValue      *value,
+                              GParamSpec  *pspec)
+{
+        GvcBalanceBar *self = GVC_BALANCE_BAR (object);
+
+        switch (prop_id) {
+        case PROP_CHANNEL_MAP:
+                g_value_set_object (value, self->priv->channel_map);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_balance_bar_constructor (GType                  type,
+                             guint                  n_construct_properties,
+                             GObjectConstructParam *construct_params)
+{
+        return G_OBJECT_CLASS (gvc_balance_bar_parent_class)->constructor (type, n_construct_properties, construct_params);
+}
+
+static void
+gvc_balance_bar_class_init (GvcBalanceBarClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_balance_bar_constructor;
+        object_class->finalize = gvc_balance_bar_finalize;
+        object_class->set_property = gvc_balance_bar_set_property;
+        object_class->get_property = gvc_balance_bar_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_CHANNEL_MAP,
+                                         g_param_spec_object ("channel-map",
+                                                              "channel map",
+                                                              "The channel map",
+                                                              GVC_TYPE_CHANNEL_MAP,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_BALANCE_TYPE,
+                                         g_param_spec_int ("balance-type",
+                                                           "balance type",
+                                                           "Whether the balance is right-left or front-rear",
+                                                           BALANCE_TYPE_RL, NUM_BALANCE_TYPES - 1, BALANCE_TYPE_RL,
+                                                           G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+
+        g_type_class_add_private (klass, sizeof (GvcBalanceBarPrivate));
+}
+
+
+static gboolean
+on_scale_button_press_event (GtkWidget      *widget,
+                             GdkEventButton *event,
+                             GvcBalanceBar  *bar)
+{
+        bar->priv->click_lock = TRUE;
+
+        return FALSE;
+}
+
+static gboolean
+on_scale_button_release_event (GtkWidget      *widget,
+                               GdkEventButton *event,
+                               GvcBalanceBar  *bar)
+{
+        bar->priv->click_lock = FALSE;
+
+        return FALSE;
+}
+
+static gboolean
+on_scale_scroll_event (GtkWidget      *widget,
+                       GdkEventScroll *event,
+                       GvcBalanceBar  *bar)
+{
+        gdouble value;
+
+        value = gtk_adjustment_get_value (bar->priv->adjustment);
+
+        if (bar->priv->btype == BALANCE_TYPE_LFE) {
+                if (event->direction == GDK_SCROLL_UP) {
+                        if (value + ADJUSTMENT_MAX_NORMAL/100.0 > ADJUSTMENT_MAX_NORMAL)
+                                value = ADJUSTMENT_MAX_NORMAL;
+                        else
+                                value = value + ADJUSTMENT_MAX_NORMAL/100.0;
+                } else if (event->direction == GDK_SCROLL_DOWN) {
+                        if (value - ADJUSTMENT_MAX_NORMAL/100.0 < 0)
+                                value = 0.0;
+                        else
+                                value = value - ADJUSTMENT_MAX_NORMAL/100.0;
+                }
+        } else {
+                if (event->direction == GDK_SCROLL_UP) {
+                        if (value + 0.01 > 1.0)
+                                value = 1.0;
+                        else
+                                value = value + 0.01;
+                } else if (event->direction == GDK_SCROLL_DOWN) {
+                        if (value - 0.01 < 0)
+                                value = 0.0;
+                        else
+                                value = value - 0.01;
+                }
+        }
+        gtk_adjustment_set_value (bar->priv->adjustment, value);
+
+        return TRUE;
+}
+
+/* FIXME remove when we depend on a newer PA */
+static pa_cvolume *
+gvc_pa_cvolume_set_position (pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t, pa_volume_t v) {
+        unsigned c;
+        gboolean good = FALSE;
+
+        g_assert(cv);
+        g_assert(map);
+
+        g_return_val_if_fail(pa_cvolume_compatible_with_channel_map(cv, map), NULL);
+        g_return_val_if_fail(t < PA_CHANNEL_POSITION_MAX, NULL);
+
+        for (c = 0; c < map->channels; c++)
+                if (map->map[c] == t) {
+                        cv->values[c] = v;
+                        good = TRUE;
+                }
+
+        return good ? cv : NULL;
+}
+
+static void
+on_adjustment_value_changed (GtkAdjustment *adjustment,
+                             GvcBalanceBar *bar)
+{
+        gdouble                val;
+        pa_cvolume             cv;
+        const pa_channel_map  *pa_map;
+
+        if (bar->priv->channel_map == NULL)
+                return;
+
+        cv = *gvc_channel_map_get_cvolume (bar->priv->channel_map);
+        val = gtk_adjustment_get_value (adjustment);
+
+        pa_map = gvc_channel_map_get_pa_channel_map (bar->priv->channel_map);
+
+        switch (bar->priv->btype) {
+        case BALANCE_TYPE_RL:
+                pa_cvolume_set_balance (&cv, pa_map, val);
+                break;
+        case BALANCE_TYPE_FR:
+                pa_cvolume_set_fade (&cv, pa_map, val);
+                break;
+        case BALANCE_TYPE_LFE:
+                gvc_pa_cvolume_set_position (&cv, pa_map, PA_CHANNEL_POSITION_LFE, val);
+                break;
+        }
+
+        gvc_channel_map_volume_changed (bar->priv->channel_map, &cv, TRUE);
+}
+
+static void
+gvc_balance_bar_init (GvcBalanceBar *bar)
+{
+        bar->priv = GVC_BALANCE_BAR_GET_PRIVATE (bar);
+}
+
+static void
+gvc_balance_bar_finalize (GObject *object)
+{
+        GvcBalanceBar *bar;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_BALANCE_BAR (object));
+
+        bar = GVC_BALANCE_BAR (object);
+
+        g_return_if_fail (bar->priv != NULL);
+
+        if (bar->priv->channel_map != NULL) {
+                g_signal_handlers_disconnect_by_func (G_OBJECT (bar->priv->channel_map),
+                                                      on_channel_map_volume_changed, bar);
+                g_object_unref (bar->priv->channel_map);
+        }
+
+        G_OBJECT_CLASS (gvc_balance_bar_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_balance_bar_new (const GvcChannelMap *channel_map, GvcBalanceType btype)
+{
+        GObject *bar;
+        bar = g_object_new (GVC_TYPE_BALANCE_BAR,
+                            "channel-map", channel_map,
+                            "balance-type", btype,
+                            NULL);
+        return GTK_WIDGET (bar);
+}
diff --git a/panels/sound/gvc-balance-bar.h b/panels/sound/gvc-balance-bar.h
new file mode 100644
index 0000000..95e96dc
--- /dev/null
+++ b/panels/sound/gvc-balance-bar.h
@@ -0,0 +1,69 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_BALANCE_BAR_H
+#define __GVC_BALANCE_BAR_H
+
+#include <glib-object.h>
+
+#include "gvc-channel-map.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_BALANCE_BAR         (gvc_balance_bar_get_type ())
+#define GVC_BALANCE_BAR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBar))
+#define GVC_BALANCE_BAR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_BALANCE_BAR, GvcBalanceBarClass))
+#define GVC_IS_BALANCE_BAR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_BALANCE_BAR))
+#define GVC_IS_BALANCE_BAR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_BALANCE_BAR))
+#define GVC_BALANCE_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_BALANCE_BAR, GvcBalanceBarClass))
+
+typedef enum {
+        BALANCE_TYPE_RL,
+        BALANCE_TYPE_FR,
+        BALANCE_TYPE_LFE,
+} GvcBalanceType;
+
+#define NUM_BALANCE_TYPES BALANCE_TYPE_LFE + 1
+
+typedef struct GvcBalanceBarPrivate GvcBalanceBarPrivate;
+
+typedef struct
+{
+        GtkHBox               parent;
+        GvcBalanceBarPrivate *priv;
+} GvcBalanceBar;
+
+typedef struct
+{
+        GtkHBoxClass          parent_class;
+} GvcBalanceBarClass;
+
+GType               gvc_balance_bar_get_type            (void);
+
+GtkWidget *         gvc_balance_bar_new                 (const GvcChannelMap *map,
+                                                         GvcBalanceType btype);
+
+void                gvc_balance_bar_set_size_group      (GvcBalanceBar *bar,
+                                                         GtkSizeGroup  *group,
+                                                         gboolean       symmetric);
+
+G_END_DECLS
+
+#endif /* __GVC_BALANCE_BAR_H */
diff --git a/panels/sound/gvc-channel-bar.c b/panels/sound/gvc-channel-bar.c
new file mode 100644
index 0000000..37b87bc
--- /dev/null
+++ b/panels/sound/gvc-channel-bar.c
@@ -0,0 +1,963 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <pulse/pulseaudio.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+
+#include "gvc-channel-bar.h"
+
+#define SCALE_SIZE 128
+#define ADJUSTMENT_MAX_NORMAL 65536.0 /* PA_VOLUME_NORM */
+#define ADJUSTMENT_MAX_AMPLIFIED 98304.0 /* 1.5 * ADJUSTMENT_MAX_NORMAL */
+#define ADJUSTMENT_MAX (bar->priv->is_amplified ? ADJUSTMENT_MAX_AMPLIFIED : ADJUSTMENT_MAX_NORMAL)
+#define SCROLLSTEP (ADJUSTMENT_MAX / 100.0 * 5.0)
+
+#define GVC_CHANNEL_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBarPrivate))
+
+struct GvcChannelBarPrivate
+{
+        GtkOrientation orientation;
+        GtkWidget     *scale_box;
+        GtkWidget     *start_box;
+        GtkWidget     *end_box;
+        GtkWidget     *image;
+        GtkWidget     *label;
+        GtkWidget     *low_image;
+        GtkWidget     *scale;
+        GtkWidget     *high_image;
+        GtkWidget     *mute_box;
+        GtkWidget     *mute_button;
+        GtkAdjustment *adjustment;
+        GtkAdjustment *zero_adjustment;
+        gboolean       show_mute;
+        gboolean       is_muted;
+        char          *name;
+        char          *icon_name;
+        char          *low_icon_name;
+        char          *high_icon_name;
+        GtkSizeGroup  *size_group;
+        gboolean       symmetric;
+        gboolean       click_lock;
+        gboolean       is_amplified;
+        guint32        base_volume;
+};
+
+enum
+{
+        PROP_0,
+        PROP_ORIENTATION,
+        PROP_SHOW_MUTE,
+        PROP_IS_MUTED,
+        PROP_ADJUSTMENT,
+        PROP_NAME,
+        PROP_ICON_NAME,
+        PROP_LOW_ICON_NAME,
+        PROP_HIGH_ICON_NAME,
+        PROP_IS_AMPLIFIED,
+        PROP_ELLIPSIZE
+};
+
+static void     gvc_channel_bar_class_init    (GvcChannelBarClass *klass);
+static void     gvc_channel_bar_init          (GvcChannelBar      *channel_bar);
+static void     gvc_channel_bar_finalize      (GObject            *object);
+
+static gboolean on_scale_button_press_event   (GtkWidget      *widget,
+                                               GdkEventButton *event,
+                                               GvcChannelBar  *bar);
+static gboolean on_scale_button_release_event (GtkWidget      *widget,
+                                               GdkEventButton *event,
+                                               GvcChannelBar  *bar);
+static gboolean on_scale_scroll_event         (GtkWidget      *widget,
+                                               GdkEventScroll *event,
+                                               GvcChannelBar  *bar);
+
+G_DEFINE_TYPE (GvcChannelBar, gvc_channel_bar, GTK_TYPE_HBOX)
+
+static GtkWidget *
+_scale_box_new (GvcChannelBar *bar)
+{
+        GvcChannelBarPrivate *priv = bar->priv;
+        GtkWidget            *box;
+        GtkWidget            *sbox;
+        GtkWidget            *ebox;
+
+        if (priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                bar->priv->scale_box = box = gtk_vbox_new (FALSE, 6);
+
+                priv->scale = gtk_vscale_new (priv->adjustment);
+
+                gtk_widget_set_size_request (priv->scale, -1, SCALE_SIZE);
+                gtk_range_set_inverted (GTK_RANGE (priv->scale), TRUE);
+
+                bar->priv->start_box = sbox = gtk_vbox_new (FALSE, 6);
+                gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0);
+
+                gtk_box_pack_start (GTK_BOX (sbox), priv->image, FALSE, FALSE, 0);
+                gtk_box_pack_start (GTK_BOX (sbox), priv->label, FALSE, FALSE, 0);
+
+                gtk_box_pack_start (GTK_BOX (sbox), priv->high_image, FALSE, FALSE, 0);
+                gtk_widget_hide (priv->high_image);
+                gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0);
+
+                bar->priv->end_box = ebox = gtk_vbox_new (FALSE, 6);
+                gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0);
+
+                gtk_box_pack_start (GTK_BOX (ebox), priv->low_image, FALSE, FALSE, 0);
+                gtk_widget_hide (priv->low_image);
+
+                gtk_box_pack_start (GTK_BOX (ebox), priv->mute_box, FALSE, FALSE, 0);
+        } else {
+                bar->priv->scale_box = box = gtk_hbox_new (FALSE, 6);
+                gtk_box_pack_start (GTK_BOX (box), priv->image, FALSE, FALSE, 0);
+
+                priv->scale = gtk_hscale_new (priv->adjustment);
+
+                gtk_widget_set_size_request (priv->scale, SCALE_SIZE, -1);
+
+                bar->priv->start_box = sbox = gtk_hbox_new (FALSE, 6);
+                gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0);
+
+                gtk_box_pack_end (GTK_BOX (sbox), priv->low_image, FALSE, FALSE, 0);
+                gtk_widget_show (priv->low_image);
+
+                gtk_box_pack_start (GTK_BOX (sbox), priv->label, TRUE, TRUE, 0);
+                gtk_box_pack_start (GTK_BOX (box), priv->scale, TRUE, TRUE, 0);
+
+                bar->priv->end_box = ebox = gtk_hbox_new (FALSE, 6);
+                gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0);
+
+                gtk_box_pack_start (GTK_BOX (ebox), priv->high_image, FALSE, FALSE, 0);
+                gtk_widget_show (priv->high_image);
+                gtk_box_pack_start (GTK_BOX (ebox), priv->mute_box, FALSE, FALSE, 0);
+        }
+
+        gtk_range_set_update_policy (GTK_RANGE (priv->scale), GTK_UPDATE_CONTINUOUS);
+        ca_gtk_widget_disable_sounds (bar->priv->scale, FALSE);
+        gtk_widget_add_events (bar->priv->scale, GDK_SCROLL_MASK);
+
+        g_signal_connect (G_OBJECT (bar->priv->scale), "button-press-event",
+                          G_CALLBACK (on_scale_button_press_event), bar);
+        g_signal_connect (G_OBJECT (bar->priv->scale), "button-release-event",
+                          G_CALLBACK (on_scale_button_release_event), bar);
+        g_signal_connect (G_OBJECT (bar->priv->scale), "scroll-event",
+                          G_CALLBACK (on_scale_scroll_event), bar);
+
+        if (bar->priv->size_group != NULL) {
+                gtk_size_group_add_widget (bar->priv->size_group, sbox);
+
+                if (bar->priv->symmetric) {
+                        gtk_size_group_add_widget (bar->priv->size_group, ebox);
+                }
+        }
+
+        gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE);
+
+        return box;
+}
+
+static void
+update_image (GvcChannelBar *bar)
+{
+        gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->image),
+                                      bar->priv->icon_name,
+                                      GTK_ICON_SIZE_DIALOG);
+
+        if (bar->priv->icon_name != NULL) {
+                gtk_widget_show (bar->priv->image);
+        } else {
+                gtk_widget_hide (bar->priv->image);
+        }
+}
+
+static void
+update_label (GvcChannelBar *bar)
+{
+        if (bar->priv->name != NULL) {
+                gtk_label_set_text_with_mnemonic (GTK_LABEL (bar->priv->label),
+                                                  bar->priv->name);
+                gtk_label_set_mnemonic_widget (GTK_LABEL (bar->priv->label),
+                                               bar->priv->scale);
+                gtk_widget_show (bar->priv->label);
+        } else {
+                gtk_label_set_text (GTK_LABEL (bar->priv->label), NULL);
+                gtk_widget_hide (bar->priv->label);
+        }
+}
+
+static void
+update_layout (GvcChannelBar *bar)
+{
+        GtkWidget *box;
+        GtkWidget *frame;
+
+        if (bar->priv->scale == NULL) {
+                return;
+        }
+
+        box = bar->priv->scale_box;
+        frame = gtk_widget_get_parent (box);
+
+        g_object_ref (bar->priv->image);
+        g_object_ref (bar->priv->label);
+        g_object_ref (bar->priv->mute_box);
+        g_object_ref (bar->priv->low_image);
+        g_object_ref (bar->priv->high_image);
+
+        gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->image);
+        gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->label);
+        gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->mute_box);
+
+        if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->low_image);
+                gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->high_image);
+        } else {
+                gtk_container_remove (GTK_CONTAINER (bar->priv->end_box), bar->priv->low_image);
+                gtk_container_remove (GTK_CONTAINER (bar->priv->start_box), bar->priv->high_image);
+        }
+
+        gtk_container_remove (GTK_CONTAINER (box), bar->priv->start_box);
+        gtk_container_remove (GTK_CONTAINER (box), bar->priv->scale);
+        gtk_container_remove (GTK_CONTAINER (box), bar->priv->end_box);
+        gtk_container_remove (GTK_CONTAINER (frame), box);
+
+        bar->priv->scale_box = _scale_box_new (bar);
+        gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box);
+
+        g_object_unref (bar->priv->image);
+        g_object_unref (bar->priv->label);
+        g_object_unref (bar->priv->mute_box);
+        g_object_unref (bar->priv->low_image);
+        g_object_unref (bar->priv->high_image);
+
+        gtk_widget_show_all (frame);
+}
+
+void
+gvc_channel_bar_set_size_group (GvcChannelBar *bar,
+                                GtkSizeGroup  *group,
+                                gboolean       symmetric)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        bar->priv->size_group = group;
+        bar->priv->symmetric = symmetric;
+
+        if (bar->priv->size_group != NULL) {
+                gtk_size_group_add_widget (bar->priv->size_group,
+                                           bar->priv->start_box);
+
+                if (bar->priv->symmetric) {
+                        gtk_size_group_add_widget (bar->priv->size_group,
+                                                   bar->priv->end_box);
+                }
+        }
+        gtk_widget_queue_draw (GTK_WIDGET (bar));
+}
+
+void
+gvc_channel_bar_set_name (GvcChannelBar  *bar,
+                          const char     *name)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        g_free (bar->priv->name);
+        bar->priv->name = g_strdup (name);
+        update_label (bar);
+        g_object_notify (G_OBJECT (bar), "name");
+}
+
+void
+gvc_channel_bar_set_icon_name (GvcChannelBar  *bar,
+                               const char     *name)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        g_free (bar->priv->icon_name);
+        bar->priv->icon_name = g_strdup (name);
+        update_image (bar);
+        g_object_notify (G_OBJECT (bar), "icon-name");
+}
+
+void
+gvc_channel_bar_set_low_icon_name   (GvcChannelBar *bar,
+                                     const char    *name)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (name != NULL && strcmp (bar->priv->low_icon_name, name) != 0) {
+                g_free (bar->priv->low_icon_name);
+                bar->priv->low_icon_name = g_strdup (name);
+                gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->low_image),
+                                              bar->priv->low_icon_name,
+                                              GTK_ICON_SIZE_BUTTON);
+                g_object_notify (G_OBJECT (bar), "low-icon-name");
+        }
+}
+
+void
+gvc_channel_bar_set_high_icon_name  (GvcChannelBar *bar,
+                                     const char    *name)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (name != NULL && strcmp (bar->priv->high_icon_name, name) != 0) {
+                g_free (bar->priv->high_icon_name);
+                bar->priv->high_icon_name = g_strdup (name);
+                gtk_image_set_from_icon_name (GTK_IMAGE (bar->priv->high_image),
+                                              bar->priv->high_icon_name,
+                                              GTK_ICON_SIZE_BUTTON);
+                g_object_notify (G_OBJECT (bar), "high-icon-name");
+        }
+}
+
+void
+gvc_channel_bar_set_orientation (GvcChannelBar  *bar,
+                                 GtkOrientation  orientation)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (orientation != bar->priv->orientation) {
+                bar->priv->orientation = orientation;
+                update_layout (bar);
+                g_object_notify (G_OBJECT (bar), "orientation");
+        }
+}
+
+static void
+gvc_channel_bar_set_adjustment (GvcChannelBar *bar,
+                                GtkAdjustment *adjustment)
+{
+        g_return_if_fail (GVC_CHANNEL_BAR (bar));
+        g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+        if (bar->priv->adjustment != NULL) {
+                g_object_unref (bar->priv->adjustment);
+        }
+        bar->priv->adjustment = g_object_ref_sink (adjustment);
+
+        if (bar->priv->scale != NULL) {
+                gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale), adjustment);
+        }
+
+        g_object_notify (G_OBJECT (bar), "adjustment");
+}
+
+GtkAdjustment *
+gvc_channel_bar_get_adjustment (GvcChannelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), NULL);
+
+        return bar->priv->adjustment;
+}
+
+static gboolean
+on_scale_button_press_event (GtkWidget      *widget,
+                             GdkEventButton *event,
+                             GvcChannelBar  *bar)
+{
+        /* HACK: we want the behaviour you get with the middle button, so we
+         * mangle the event.  clicking with other buttons moves the slider in
+         * step increments, clicking with the middle button moves the slider to
+         * the location of the click.
+         */
+        if (event->button == 1)
+                event->button = 2;
+
+        bar->priv->click_lock = TRUE;
+
+        return FALSE;
+}
+
+static gboolean
+on_scale_button_release_event (GtkWidget      *widget,
+                               GdkEventButton *event,
+                               GvcChannelBar  *bar)
+{
+        GtkAdjustment *adj;
+        gdouble value;
+
+        /* HACK: see on_scale_button_press_event() */
+        if (event->button == 1)
+                event->button = 2;
+
+        bar->priv->click_lock = FALSE;
+
+        adj = gtk_range_get_adjustment (GTK_RANGE (widget));
+
+        value = gtk_adjustment_get_value (adj);
+
+        /* this means the adjustment moved away from zero and
+         * therefore we should unmute and set the volume. */
+        gvc_channel_bar_set_is_muted (bar, (value == 0.0));
+
+        /* Play a sound! */
+        ca_gtk_play_for_widget (GTK_WIDGET (bar), 0,
+                                CA_PROP_EVENT_ID, "audio-volume-change",
+                                CA_PROP_EVENT_DESCRIPTION, "foobar event happened",
+                                CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+                                NULL);
+
+        return FALSE;
+}
+
+gboolean
+gvc_channel_bar_scroll (GvcChannelBar *bar, GdkScrollDirection direction)
+{
+        GtkAdjustment *adj;
+        gdouble value;
+
+        g_return_val_if_fail (bar != NULL, FALSE);
+        g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
+
+        if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                if (direction != GDK_SCROLL_UP && direction != GDK_SCROLL_DOWN)
+                        return FALSE;
+        } else {
+                /* Switch direction for RTL */
+                if (gtk_widget_get_direction (GTK_WIDGET (bar)) == GTK_TEXT_DIR_RTL) {
+                        if (direction == GDK_SCROLL_RIGHT)
+                                direction = GDK_SCROLL_LEFT;
+                        else if (direction == GDK_SCROLL_LEFT)
+                                direction = GDK_SCROLL_RIGHT;
+                }
+                /* Switch side scroll to vertical */
+                if (direction == GDK_SCROLL_RIGHT)
+                        direction = GDK_SCROLL_UP;
+                else if (GDK_SCROLL_LEFT)
+                        direction = GDK_SCROLL_DOWN;
+        }
+
+        adj = gtk_range_get_adjustment (GTK_RANGE (bar->priv->scale));
+        if (adj == bar->priv->zero_adjustment) {
+                if (direction == GDK_SCROLL_UP)
+                        gvc_channel_bar_set_is_muted (bar, FALSE);
+                return TRUE;
+        }
+
+        value = gtk_adjustment_get_value (adj);
+
+        if (direction == GDK_SCROLL_UP) {
+                if (value + SCROLLSTEP > ADJUSTMENT_MAX)
+                        value = ADJUSTMENT_MAX;
+                else
+                        value = value + SCROLLSTEP;
+        } else if (direction == GDK_SCROLL_DOWN) {
+                if (value - SCROLLSTEP < 0)
+                        value = 0.0;
+                else
+                        value = value - SCROLLSTEP;
+        }
+
+        gvc_channel_bar_set_is_muted (bar, (value == 0.0));
+        adj = gtk_range_get_adjustment (GTK_RANGE (bar->priv->scale));
+        gtk_adjustment_set_value (adj, value);
+
+        return TRUE;
+}
+
+static gboolean
+on_scale_scroll_event (GtkWidget      *widget,
+                       GdkEventScroll *event,
+                       GvcChannelBar  *bar)
+{
+        return gvc_channel_bar_scroll (bar, event->direction);
+}
+
+static void
+on_zero_adjustment_value_changed (GtkAdjustment *adjustment,
+                                  GvcChannelBar *bar)
+{
+        gdouble value;
+
+        if (bar->priv->click_lock != FALSE) {
+                return;
+        }
+
+        value = gtk_adjustment_get_value (bar->priv->zero_adjustment);
+        gtk_adjustment_set_value (bar->priv->adjustment, value);
+
+
+        if (bar->priv->show_mute == FALSE) {
+                /* this means the adjustment moved away from zero and
+                 * therefore we should unmute and set the volume. */
+                gvc_channel_bar_set_is_muted (bar, value > 0.0);
+        }
+}
+
+static void
+update_mute_button (GvcChannelBar *bar)
+{
+        if (bar->priv->show_mute) {
+                gtk_widget_show (bar->priv->mute_button);
+                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (bar->priv->mute_button),
+                                              bar->priv->is_muted);
+        } else {
+                gtk_widget_hide (bar->priv->mute_button);
+
+                if (bar->priv->is_muted) {
+                        /* If we aren't showing the mute button then
+                         * move slider to the zero.  But we don't want to
+                         * change the adjustment.  */
+                        g_signal_handlers_block_by_func (bar->priv->zero_adjustment,
+                                                         on_zero_adjustment_value_changed,
+                                                         bar);
+                        gtk_adjustment_set_value (bar->priv->zero_adjustment, 0);
+                        g_signal_handlers_unblock_by_func (bar->priv->zero_adjustment,
+                                                           on_zero_adjustment_value_changed,
+                                                           bar);
+                        gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale),
+                                                  bar->priv->zero_adjustment);
+                } else {
+                        /* no longer muted so restore the original adjustment
+                         * and tell the front-end that the value changed */
+                        gtk_range_set_adjustment (GTK_RANGE (bar->priv->scale),
+                                                  bar->priv->adjustment);
+                        gtk_adjustment_value_changed (bar->priv->adjustment);
+                }
+        }
+}
+
+void
+gvc_channel_bar_set_is_muted (GvcChannelBar *bar,
+                              gboolean       is_muted)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (is_muted != bar->priv->is_muted) {
+                /* Update our internal state before telling the
+                 * front-end about our changes */
+                bar->priv->is_muted = is_muted;
+                update_mute_button (bar);
+                g_object_notify (G_OBJECT (bar), "is-muted");
+        }
+}
+
+gboolean
+gvc_channel_bar_get_is_muted  (GvcChannelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
+        return bar->priv->is_muted;
+}
+
+void
+gvc_channel_bar_set_show_mute (GvcChannelBar *bar,
+                               gboolean       show_mute)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (show_mute != bar->priv->show_mute) {
+                bar->priv->show_mute = show_mute;
+                g_object_notify (G_OBJECT (bar), "show-mute");
+                update_mute_button (bar);
+        }
+}
+
+gboolean
+gvc_channel_bar_get_show_mute (GvcChannelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
+        return bar->priv->show_mute;
+}
+
+void
+gvc_channel_bar_set_is_amplified (GvcChannelBar *bar, gboolean amplified)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        bar->priv->is_amplified = amplified;
+        gtk_adjustment_set_upper (bar->priv->adjustment, ADJUSTMENT_MAX);
+        gtk_adjustment_set_upper (bar->priv->zero_adjustment, ADJUSTMENT_MAX);
+        gtk_scale_clear_marks (GTK_SCALE (bar->priv->scale));
+
+        if (amplified) {
+                char *str;
+
+                if (bar->priv->base_volume == ADJUSTMENT_MAX_NORMAL) {
+                        str = g_strdup_printf ("<small>%s</small>", C_("volume", "100%"));
+                        gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), ADJUSTMENT_MAX_NORMAL,
+                                            GTK_POS_BOTTOM, str);
+                } else {
+                        str = g_strdup_printf ("<small>%s</small>", C_("volume", "Unamplified"));
+                        gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), bar->priv->base_volume,
+                                            GTK_POS_BOTTOM, str);
+                        /* Only show 100% if it's higher than the base volume */
+                        if (bar->priv->base_volume < ADJUSTMENT_MAX_NORMAL) {
+                                str = g_strdup_printf ("<small>%s</small>", C_("volume", "100%"));
+                                gtk_scale_add_mark (GTK_SCALE (bar->priv->scale), ADJUSTMENT_MAX_NORMAL,
+                                                    GTK_POS_BOTTOM, str);
+                        }
+                }
+
+                g_free (str);
+                gtk_alignment_set (GTK_ALIGNMENT (bar->priv->mute_box), 0.5, 0, 0, 0);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->low_image), 0.5, 0);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->high_image), 0.5, 0);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0, 0);
+        } else {
+                gtk_alignment_set (GTK_ALIGNMENT (bar->priv->mute_box), 0.5, 0.5, 0, 0);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->low_image), 0.5, 0.5);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->high_image), 0.5, 0.5);
+                gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0, 0.5);
+        }
+}
+
+gboolean
+gvc_channel_bar_get_ellipsize (GvcChannelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_BAR (bar), FALSE);
+
+        return gtk_label_get_ellipsize (GTK_LABEL (bar->priv->label)) != PANGO_ELLIPSIZE_NONE;
+}
+
+void
+gvc_channel_bar_set_ellipsize (GvcChannelBar *bar,
+                               gboolean       ellipsized)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (ellipsized)
+                gtk_label_set_ellipsize (GTK_LABEL (bar->priv->label), PANGO_ELLIPSIZE_END);
+	else
+                gtk_label_set_ellipsize (GTK_LABEL (bar->priv->label), PANGO_ELLIPSIZE_NONE);
+}
+
+void
+gvc_channel_bar_set_base_volume (GvcChannelBar *bar,
+                                 pa_volume_t    base_volume)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (bar));
+
+        if (base_volume == 0) {
+                bar->priv->base_volume = ADJUSTMENT_MAX_NORMAL;
+                return;
+        }
+
+        /* Note that you need to call _is_amplified() afterwards to update the marks */
+        bar->priv->base_volume = base_volume;
+}
+
+static void
+gvc_channel_bar_set_property (GObject       *object,
+                              guint          prop_id,
+                              const GValue  *value,
+                              GParamSpec    *pspec)
+{
+        GvcChannelBar *self = GVC_CHANNEL_BAR (object);
+
+        switch (prop_id) {
+        case PROP_ORIENTATION:
+                gvc_channel_bar_set_orientation (self, g_value_get_enum (value));
+                break;
+        case PROP_IS_MUTED:
+                gvc_channel_bar_set_is_muted (self, g_value_get_boolean (value));
+                break;
+        case PROP_SHOW_MUTE:
+                gvc_channel_bar_set_show_mute (self, g_value_get_boolean (value));
+                break;
+        case PROP_NAME:
+                gvc_channel_bar_set_name (self, g_value_get_string (value));
+                break;
+        case PROP_ICON_NAME:
+                gvc_channel_bar_set_icon_name (self, g_value_get_string (value));
+                break;
+        case PROP_LOW_ICON_NAME:
+                gvc_channel_bar_set_low_icon_name (self, g_value_get_string (value));
+                break;
+        case PROP_HIGH_ICON_NAME:
+                gvc_channel_bar_set_high_icon_name (self, g_value_get_string (value));
+                break;
+        case PROP_ADJUSTMENT:
+                gvc_channel_bar_set_adjustment (self, g_value_get_object (value));
+                break;
+        case PROP_IS_AMPLIFIED:
+                gvc_channel_bar_set_is_amplified (self, g_value_get_boolean (value));
+                break;
+        case PROP_ELLIPSIZE:
+                gvc_channel_bar_set_ellipsize (self, g_value_get_boolean (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_channel_bar_get_property (GObject     *object,
+                              guint        prop_id,
+                              GValue      *value,
+                              GParamSpec  *pspec)
+{
+        GvcChannelBar *self = GVC_CHANNEL_BAR (object);
+        GvcChannelBarPrivate *priv = self->priv;
+
+        switch (prop_id) {
+        case PROP_ORIENTATION:
+                g_value_set_enum (value, priv->orientation);
+                break;
+        case PROP_IS_MUTED:
+                g_value_set_boolean (value, priv->is_muted);
+                break;
+        case PROP_SHOW_MUTE:
+                g_value_set_boolean (value, priv->show_mute);
+                break;
+        case PROP_NAME:
+                g_value_set_string (value, priv->name);
+                break;
+        case PROP_ICON_NAME:
+                g_value_set_string (value, priv->icon_name);
+                break;
+        case PROP_LOW_ICON_NAME:
+                g_value_set_string (value, priv->low_icon_name);
+                break;
+        case PROP_HIGH_ICON_NAME:
+                g_value_set_string (value, priv->high_icon_name);
+                break;
+        case PROP_ADJUSTMENT:
+                g_value_set_object (value, gvc_channel_bar_get_adjustment (self));
+                break;
+        case PROP_IS_AMPLIFIED:
+                g_value_set_boolean (value, priv->is_amplified);
+                break;
+        case PROP_ELLIPSIZE:
+                g_value_set_boolean (value, gvc_channel_bar_get_ellipsize (self));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_channel_bar_constructor (GType                  type,
+                             guint                  n_construct_properties,
+                             GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcChannelBar *self;
+
+        object = G_OBJECT_CLASS (gvc_channel_bar_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_CHANNEL_BAR (object);
+
+        update_mute_button (self);
+
+        return object;
+}
+
+static void
+gvc_channel_bar_class_init (GvcChannelBarClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_channel_bar_constructor;
+        object_class->finalize = gvc_channel_bar_finalize;
+        object_class->set_property = gvc_channel_bar_set_property;
+        object_class->get_property = gvc_channel_bar_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_ORIENTATION,
+                                         g_param_spec_enum ("orientation",
+                                                            "Orientation",
+                                                            "The orientation of the scale",
+                                                            GTK_TYPE_ORIENTATION,
+                                                            GTK_ORIENTATION_VERTICAL,
+                                                            G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_IS_MUTED,
+                                         g_param_spec_boolean ("is-muted",
+                                                               "is muted",
+                                                               "Whether stream is muted",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_SHOW_MUTE,
+                                         g_param_spec_boolean ("show-mute",
+                                                               "show mute",
+                                                               "Whether stream is muted",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_object_class_install_property (object_class,
+                                         PROP_ADJUSTMENT,
+                                         g_param_spec_object ("adjustment",
+                                                              "Adjustment",
+                                                              "The GtkAdjustment that contains the current value of this scale button object",
+                                                              GTK_TYPE_ADJUSTMENT,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_NAME,
+                                         g_param_spec_string ("name",
+                                                              "Name",
+                                                              "Name to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_ICON_NAME,
+                                         g_param_spec_string ("icon-name",
+                                                              "Icon Name",
+                                                              "Name of icon to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_LOW_ICON_NAME,
+                                         g_param_spec_string ("low-icon-name",
+                                                              "Icon Name",
+                                                              "Name of icon to display for this stream",
+                                                              "audio-volume-low",
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_HIGH_ICON_NAME,
+                                         g_param_spec_string ("high-icon-name",
+                                                              "Icon Name",
+                                                              "Name of icon to display for this stream",
+                                                              "audio-volume-high",
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_IS_AMPLIFIED,
+                                         g_param_spec_boolean ("is-amplified",
+                                                               "Is amplified",
+                                                               "Whether the stream is digitally amplified",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_ELLIPSIZE,
+                                         g_param_spec_boolean ("ellipsize",
+                                                               "Label is ellipsized",
+                                                               "Whether the label is ellipsized",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_type_class_add_private (klass, sizeof (GvcChannelBarPrivate));
+}
+
+static void
+on_mute_button_toggled (GtkToggleButton *button,
+                        GvcChannelBar   *bar)
+{
+        gboolean is_muted;
+        is_muted = gtk_toggle_button_get_active (button);
+        gvc_channel_bar_set_is_muted (bar, is_muted);
+}
+
+static void
+gvc_channel_bar_init (GvcChannelBar *bar)
+{
+        GtkWidget *frame;
+
+        bar->priv = GVC_CHANNEL_BAR_GET_PRIVATE (bar);
+
+        bar->priv->base_volume = ADJUSTMENT_MAX_NORMAL;
+        bar->priv->low_icon_name = g_strdup ("audio-volume-low");
+        bar->priv->high_icon_name = g_strdup ("audio-volume-high");
+
+        bar->priv->orientation = GTK_ORIENTATION_VERTICAL;
+        bar->priv->adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                    0.0,
+                                                                    ADJUSTMENT_MAX_NORMAL,
+                                                                    ADJUSTMENT_MAX_NORMAL/100.0,
+                                                                    ADJUSTMENT_MAX_NORMAL/10.0,
+                                                                    0.0));
+        g_object_ref_sink (bar->priv->adjustment);
+
+        bar->priv->zero_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                         0.0,
+                                                                         ADJUSTMENT_MAX_NORMAL,
+                                                                         ADJUSTMENT_MAX_NORMAL/100.0,
+                                                                         ADJUSTMENT_MAX_NORMAL/10.0,
+                                                                         0.0));
+        g_object_ref_sink (bar->priv->zero_adjustment);
+
+        g_signal_connect (bar->priv->zero_adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_zero_adjustment_value_changed),
+                          bar);
+
+        bar->priv->mute_button = gtk_check_button_new_with_label (_("Mute"));
+        gtk_widget_set_no_show_all (bar->priv->mute_button, TRUE);
+        g_signal_connect (bar->priv->mute_button,
+                          "toggled",
+                          G_CALLBACK (on_mute_button_toggled),
+                          bar);
+        bar->priv->mute_box = gtk_alignment_new (0.5, 0.5, 0, 0);
+        gtk_container_add (GTK_CONTAINER (bar->priv->mute_box), bar->priv->mute_button);
+
+        bar->priv->low_image = gtk_image_new_from_icon_name ("audio-volume-low",
+                                                             GTK_ICON_SIZE_BUTTON);
+        gtk_widget_set_no_show_all (bar->priv->low_image, TRUE);
+        bar->priv->high_image = gtk_image_new_from_icon_name ("audio-volume-high",
+                                                              GTK_ICON_SIZE_BUTTON);
+        gtk_widget_set_no_show_all (bar->priv->high_image, TRUE);
+
+        bar->priv->image = gtk_image_new ();
+        gtk_widget_set_no_show_all (bar->priv->image, TRUE);
+
+        bar->priv->label = gtk_label_new (NULL);
+        gtk_misc_set_alignment (GTK_MISC (bar->priv->label), 0.0, 0.5);
+        gtk_widget_set_no_show_all (bar->priv->label, TRUE);
+
+        /* frame */
+        frame = gtk_frame_new (NULL);
+        gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
+        gtk_container_add (GTK_CONTAINER (bar), frame);
+        gtk_widget_show_all (frame);
+
+        /* box with scale */
+        bar->priv->scale_box = _scale_box_new (bar);
+
+        gtk_container_add (GTK_CONTAINER (frame), bar->priv->scale_box);
+}
+
+static void
+gvc_channel_bar_finalize (GObject *object)
+{
+        GvcChannelBar *channel_bar;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_CHANNEL_BAR (object));
+
+        channel_bar = GVC_CHANNEL_BAR (object);
+
+        g_return_if_fail (channel_bar->priv != NULL);
+
+        g_free (channel_bar->priv->name);
+        g_free (channel_bar->priv->icon_name);
+        g_free (channel_bar->priv->low_icon_name);
+        g_free (channel_bar->priv->high_icon_name);
+
+        G_OBJECT_CLASS (gvc_channel_bar_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_channel_bar_new (void)
+{
+        GObject *bar;
+        bar = g_object_new (GVC_TYPE_CHANNEL_BAR,
+                            NULL);
+        return GTK_WIDGET (bar);
+}
diff --git a/panels/sound/gvc-channel-bar.h b/panels/sound/gvc-channel-bar.h
new file mode 100644
index 0000000..6d3402d
--- /dev/null
+++ b/panels/sound/gvc-channel-bar.h
@@ -0,0 +1,89 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_CHANNEL_BAR_H
+#define __GVC_CHANNEL_BAR_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_CHANNEL_BAR         (gvc_channel_bar_get_type ())
+#define GVC_CHANNEL_BAR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBar))
+#define GVC_CHANNEL_BAR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_CHANNEL_BAR, GvcChannelBarClass))
+#define GVC_IS_CHANNEL_BAR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_CHANNEL_BAR))
+#define GVC_IS_CHANNEL_BAR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_CHANNEL_BAR))
+#define GVC_CHANNEL_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_CHANNEL_BAR, GvcChannelBarClass))
+
+typedef struct GvcChannelBarPrivate GvcChannelBarPrivate;
+
+typedef struct
+{
+        GtkHBox               parent;
+        GvcChannelBarPrivate *priv;
+} GvcChannelBar;
+
+typedef struct
+{
+        GtkHBoxClass          parent_class;
+} GvcChannelBarClass;
+
+GType               gvc_channel_bar_get_type            (void);
+
+GtkWidget *         gvc_channel_bar_new                 (void);
+
+void                gvc_channel_bar_set_name            (GvcChannelBar *bar,
+                                                         const char    *name);
+void                gvc_channel_bar_set_icon_name       (GvcChannelBar *bar,
+                                                         const char    *icon_name);
+void                gvc_channel_bar_set_low_icon_name   (GvcChannelBar *bar,
+                                                         const char    *icon_name);
+void                gvc_channel_bar_set_high_icon_name  (GvcChannelBar *bar,
+                                                         const char    *icon_name);
+
+void                gvc_channel_bar_set_orientation     (GvcChannelBar *bar,
+                                                         GtkOrientation orientation);
+GtkOrientation      gvc_channel_bar_get_orientation     (GvcChannelBar *bar);
+
+GtkAdjustment *     gvc_channel_bar_get_adjustment      (GvcChannelBar *bar);
+
+gboolean            gvc_channel_bar_get_is_muted        (GvcChannelBar *bar);
+void                gvc_channel_bar_set_is_muted        (GvcChannelBar *bar,
+                                                         gboolean       is_muted);
+gboolean            gvc_channel_bar_get_show_mute       (GvcChannelBar *bar);
+void                gvc_channel_bar_set_show_mute       (GvcChannelBar *bar,
+                                                         gboolean       show_mute);
+void                gvc_channel_bar_set_size_group      (GvcChannelBar *bar,
+                                                         GtkSizeGroup  *group,
+                                                         gboolean       symmetric);
+void                gvc_channel_bar_set_is_amplified    (GvcChannelBar *bar,
+                                                         gboolean amplified);
+void                gvc_channel_bar_set_base_volume     (GvcChannelBar *bar,
+                                                         guint32        base_volume);
+gboolean            gvc_channel_bar_get_ellipsize       (GvcChannelBar *bar);
+void                gvc_channel_bar_set_ellipsize       (GvcChannelBar *bar,
+                                                         gboolean       ellipsized);
+
+gboolean            gvc_channel_bar_scroll              (GvcChannelBar *bar,
+                                                         GdkScrollDirection direction);
+
+G_END_DECLS
+
+#endif /* __GVC_CHANNEL_BAR_H */
diff --git a/panels/sound/gvc-channel-map-private.h b/panels/sound/gvc-channel-map-private.h
new file mode 100644
index 0000000..3949de3
--- /dev/null
+++ b/panels/sound/gvc-channel-map-private.h
@@ -0,0 +1,39 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_CHANNEL_MAP_PRIVATE_H
+#define __GVC_CHANNEL_MAP_PRIVATE_H
+
+#include <glib-object.h>
+#include <pulse/pulseaudio.h>
+
+G_BEGIN_DECLS
+
+GvcChannelMap *         gvc_channel_map_new_from_pa_channel_map (const pa_channel_map *map);
+const pa_channel_map *  gvc_channel_map_get_pa_channel_map      (const GvcChannelMap  *map);
+
+void                    gvc_channel_map_volume_changed          (GvcChannelMap    *map,
+                                                                 const pa_cvolume *cv,
+                                                                 gboolean          set);
+const pa_cvolume *      gvc_channel_map_get_cvolume             (const GvcChannelMap  *map);
+
+G_END_DECLS
+
+#endif /* __GVC_CHANNEL_MAP_PRIVATE_H */
diff --git a/panels/sound/gvc-channel-map.c b/panels/sound/gvc-channel-map.c
new file mode 100644
index 0000000..a2073fd
--- /dev/null
+++ b/panels/sound/gvc-channel-map.c
@@ -0,0 +1,254 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-channel-map.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_CHANNEL_MAP_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMapPrivate))
+
+struct GvcChannelMapPrivate
+{
+        pa_channel_map        pa_map;
+        gboolean              pa_volume_is_set;
+        pa_cvolume            pa_volume;
+        gdouble               extern_volume[NUM_TYPES]; /* volume, balance, fade, lfe */
+        gboolean              can_balance;
+        gboolean              can_fade;
+};
+
+enum {
+        VOLUME_CHANGED,
+        LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL] = { 0, };
+
+static void     gvc_channel_map_class_init (GvcChannelMapClass *klass);
+static void     gvc_channel_map_init       (GvcChannelMap      *channel_map);
+static void     gvc_channel_map_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcChannelMap, gvc_channel_map, G_TYPE_OBJECT)
+
+guint
+gvc_channel_map_get_num_channels (const GvcChannelMap *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), 0);
+
+        if (!pa_channel_map_valid(&map->priv->pa_map))
+                return 0;
+
+        return map->priv->pa_map.channels;
+}
+
+const gdouble *
+gvc_channel_map_get_volume (GvcChannelMap *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
+
+        if (!pa_channel_map_valid(&map->priv->pa_map))
+                return NULL;
+
+        map->priv->extern_volume[VOLUME] = (gdouble) pa_cvolume_max (&map->priv->pa_volume);
+        if (gvc_channel_map_can_balance (map))
+                map->priv->extern_volume[BALANCE] = (gdouble) pa_cvolume_get_balance (&map->priv->pa_volume, &map->priv->pa_map);
+        else
+                map->priv->extern_volume[BALANCE] = 0;
+        if (gvc_channel_map_can_fade (map))
+                map->priv->extern_volume[FADE] = (gdouble) pa_cvolume_get_fade (&map->priv->pa_volume, &map->priv->pa_map);
+        else
+                map->priv->extern_volume[FADE] = 0;
+        if (gvc_channel_map_has_lfe (map))
+                map->priv->extern_volume[LFE] = (gdouble) pa_cvolume_get_position (&map->priv->pa_volume, &map->priv->pa_map, PA_CHANNEL_POSITION_LFE);
+        else
+                map->priv->extern_volume[LFE] = 0;
+
+        return map->priv->extern_volume;
+}
+
+gboolean
+gvc_channel_map_can_balance (const GvcChannelMap  *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
+
+        return map->priv->can_balance;
+}
+
+gboolean
+gvc_channel_map_can_fade (const GvcChannelMap  *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
+
+        return map->priv->can_fade;
+}
+
+const char *
+gvc_channel_map_get_mapping (const GvcChannelMap  *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
+
+        if (!pa_channel_map_valid(&map->priv->pa_map))
+                return NULL;
+
+        return pa_channel_map_to_pretty_name (&map->priv->pa_map);
+}
+
+/**
+ * gvc_channel_map_has_position: (skip)
+ *
+ * @map:
+ * @position:
+ *
+ * Returns:
+ */
+gboolean
+gvc_channel_map_has_position (const GvcChannelMap  *map,
+                              pa_channel_position_t position)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), FALSE);
+
+        return pa_channel_map_has_position (&(map->priv->pa_map), position);
+}
+
+const pa_channel_map *
+gvc_channel_map_get_pa_channel_map (const GvcChannelMap  *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
+
+        if (!pa_channel_map_valid(&map->priv->pa_map))
+                return NULL;
+
+        return &map->priv->pa_map;
+}
+
+const pa_cvolume *
+gvc_channel_map_get_cvolume (const GvcChannelMap  *map)
+{
+        g_return_val_if_fail (GVC_IS_CHANNEL_MAP (map), NULL);
+
+        if (!pa_channel_map_valid(&map->priv->pa_map))
+                return NULL;
+
+        return &map->priv->pa_volume;
+}
+
+static void
+gvc_channel_map_class_init (GvcChannelMapClass *klass)
+{
+        GObjectClass   *gobject_class = G_OBJECT_CLASS (klass);
+
+        gobject_class->finalize = gvc_channel_map_finalize;
+
+        signals [VOLUME_CHANGED] =
+                g_signal_new ("volume-changed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcChannelMapClass, volume_changed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__BOOLEAN,
+                              G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+
+        g_type_class_add_private (klass, sizeof (GvcChannelMapPrivate));
+}
+
+void
+gvc_channel_map_volume_changed (GvcChannelMap     *map,
+                                const pa_cvolume  *cv,
+                                gboolean           set)
+{
+        g_return_if_fail (GVC_IS_CHANNEL_MAP (map));
+        g_return_if_fail (cv != NULL);
+        g_return_if_fail (pa_cvolume_compatible_with_channel_map(cv, &map->priv->pa_map));
+
+        if (pa_cvolume_equal(cv, &map->priv->pa_volume))
+                return;
+
+        map->priv->pa_volume = *cv;
+
+        if (map->priv->pa_volume_is_set == FALSE) {
+                map->priv->pa_volume_is_set = TRUE;
+                return;
+        }
+        g_signal_emit (map, signals[VOLUME_CHANGED], 0, set);
+}
+
+static void
+gvc_channel_map_init (GvcChannelMap *map)
+{
+        map->priv = GVC_CHANNEL_MAP_GET_PRIVATE (map);
+        map->priv->pa_volume_is_set = FALSE;
+}
+
+static void
+gvc_channel_map_finalize (GObject *object)
+{
+        GvcChannelMap *channel_map;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_CHANNEL_MAP (object));
+
+        channel_map = GVC_CHANNEL_MAP (object);
+
+        g_return_if_fail (channel_map->priv != NULL);
+
+        G_OBJECT_CLASS (gvc_channel_map_parent_class)->finalize (object);
+}
+
+GvcChannelMap *
+gvc_channel_map_new (void)
+{
+        GObject *map;
+        map = g_object_new (GVC_TYPE_CHANNEL_MAP, NULL);
+        return GVC_CHANNEL_MAP (map);
+}
+
+static void
+set_from_pa_map (GvcChannelMap        *map,
+                 const pa_channel_map *pa_map)
+{
+        g_assert (pa_channel_map_valid(pa_map));
+
+        map->priv->can_balance = pa_channel_map_can_balance (pa_map);
+        map->priv->can_fade = pa_channel_map_can_fade (pa_map);
+
+        map->priv->pa_map = *pa_map;
+        pa_cvolume_set(&map->priv->pa_volume, pa_map->channels, PA_VOLUME_NORM);
+}
+
+GvcChannelMap *
+gvc_channel_map_new_from_pa_channel_map (const pa_channel_map *pa_map)
+{
+        GObject *map;
+        map = g_object_new (GVC_TYPE_CHANNEL_MAP, NULL);
+
+        set_from_pa_map (GVC_CHANNEL_MAP (map), pa_map);
+
+        return GVC_CHANNEL_MAP (map);
+}
diff --git a/panels/sound/gvc-channel-map.h b/panels/sound/gvc-channel-map.h
new file mode 100644
index 0000000..85c5772
--- /dev/null
+++ b/panels/sound/gvc-channel-map.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_CHANNEL_MAP_H
+#define __GVC_CHANNEL_MAP_H
+
+#include <glib-object.h>
+#include <gvc-pulseaudio-fake.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_CHANNEL_MAP         (gvc_channel_map_get_type ())
+#define GVC_CHANNEL_MAP(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMap))
+#define GVC_CHANNEL_MAP_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_CHANNEL_MAP, GvcChannelMapClass))
+#define GVC_IS_CHANNEL_MAP(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_CHANNEL_MAP))
+#define GVC_IS_CHANNEL_MAP_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_CHANNEL_MAP))
+#define GVC_CHANNEL_MAP_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_CHANNEL_MAP, GvcChannelMapClass))
+
+typedef struct GvcChannelMapPrivate GvcChannelMapPrivate;
+
+typedef struct
+{
+        GObject               parent;
+        GvcChannelMapPrivate *priv;
+} GvcChannelMap;
+
+typedef struct
+{
+        GObjectClass           parent_class;
+        void (*volume_changed) (GvcChannelMap *channel_map, gboolean set);
+} GvcChannelMapClass;
+
+enum {
+        VOLUME,
+        BALANCE,
+        FADE,
+        LFE,
+        NUM_TYPES
+};
+
+GType                   gvc_channel_map_get_type                (void);
+
+GvcChannelMap *         gvc_channel_map_new                     (void);
+guint                   gvc_channel_map_get_num_channels        (const GvcChannelMap  *map);
+const gdouble *         gvc_channel_map_get_volume              (GvcChannelMap  *map);
+gboolean                gvc_channel_map_can_balance             (const GvcChannelMap  *map);
+gboolean                gvc_channel_map_can_fade                (const GvcChannelMap  *map);
+gboolean                gvc_channel_map_has_position            (const GvcChannelMap  *map,
+                                                                 pa_channel_position_t position);
+#define                 gvc_channel_map_has_lfe(x)              gvc_channel_map_has_position (x, PA_CHANNEL_POSITION_LFE)
+
+const char *            gvc_channel_map_get_mapping             (const GvcChannelMap  *map);
+
+G_END_DECLS
+
+#endif /* __GVC_CHANNEL_MAP_H */
diff --git a/panels/sound/gvc-combo-box.c b/panels/sound/gvc-combo-box.c
new file mode 100644
index 0000000..7e14fb2
--- /dev/null
+++ b/panels/sound/gvc-combo-box.c
@@ -0,0 +1,395 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Bastien Nocera
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-combo-box.h"
+#include "gvc-mixer-stream.h"
+#include "gvc-mixer-card.h"
+
+#define GVC_COMBO_BOX_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_COMBO_BOX, GvcComboBoxPrivate))
+
+struct GvcComboBoxPrivate
+{
+        GtkWidget     *drop_box;
+        GtkWidget     *start_box;
+        GtkWidget     *end_box;
+        GtkWidget     *label;
+        GtkWidget     *button;
+        GtkTreeModel  *model;
+        GtkWidget     *combobox;
+        gboolean       set_called;
+        GtkSizeGroup  *size_group;
+        gboolean       symmetric;
+};
+
+enum {
+        COL_NAME,
+        COL_HUMAN_NAME,
+        NUM_COLS
+};
+
+enum {
+        CHANGED,
+        BUTTON_CLICKED,
+        LAST_SIGNAL
+};
+
+enum {
+        PROP_0,
+        PROP_LABEL,
+        PROP_SHOW_BUTTON,
+        PROP_BUTTON_LABEL
+};
+
+static guint signals [LAST_SIGNAL] = { 0, };
+
+static void     gvc_combo_box_class_init (GvcComboBoxClass *klass);
+static void     gvc_combo_box_init       (GvcComboBox      *combo_box);
+static void     gvc_combo_box_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcComboBox, gvc_combo_box, GTK_TYPE_HBOX)
+
+void
+gvc_combo_box_set_size_group (GvcComboBox *combo_box,
+                              GtkSizeGroup  *group,
+                              gboolean       symmetric)
+{
+        g_return_if_fail (GVC_IS_COMBO_BOX (combo_box));
+
+        combo_box->priv->size_group = group;
+        combo_box->priv->symmetric = symmetric;
+
+        if (combo_box->priv->size_group != NULL) {
+                gtk_size_group_add_widget (combo_box->priv->size_group,
+                                           combo_box->priv->start_box);
+
+                if (combo_box->priv->symmetric) {
+                        gtk_size_group_add_widget (combo_box->priv->size_group,
+                                                   combo_box->priv->end_box);
+                }
+        }
+        gtk_widget_queue_draw (GTK_WIDGET (combo_box));
+}
+
+static void
+gvc_combo_box_set_property (GObject       *object,
+                            guint          prop_id,
+                            const GValue  *value,
+                            GParamSpec    *pspec)
+{
+        GvcComboBox *self = GVC_COMBO_BOX (object);
+
+        switch (prop_id) {
+        case PROP_LABEL:
+                gtk_label_set_text_with_mnemonic (GTK_LABEL (self->priv->label), g_value_get_string (value));
+                break;
+        case PROP_BUTTON_LABEL:
+                gtk_button_set_label (GTK_BUTTON (self->priv->button), g_value_get_string (value));
+                break;
+        case PROP_SHOW_BUTTON:
+                gtk_widget_set_visible (self->priv->button, g_value_get_boolean (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_combo_box_get_property (GObject     *object,
+                            guint        prop_id,
+                            GValue      *value,
+                            GParamSpec  *pspec)
+{
+        GvcComboBox *self = GVC_COMBO_BOX (object);
+
+        switch (prop_id) {
+        case PROP_LABEL:
+                g_value_set_string (value,
+                                    gtk_label_get_text (GTK_LABEL (self->priv->label)));
+                break;
+        case PROP_BUTTON_LABEL:
+                g_value_set_string (value,
+                                    gtk_button_get_label (GTK_BUTTON (self->priv->button)));
+                break;
+        case PROP_SHOW_BUTTON:
+                g_value_set_boolean (value,
+                                     gtk_widget_get_visible (self->priv->button));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_combo_box_class_init (GvcComboBoxClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->finalize = gvc_combo_box_finalize;
+        object_class->set_property = gvc_combo_box_set_property;
+        object_class->get_property = gvc_combo_box_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_LABEL,
+                                         g_param_spec_string ("label",
+                                                              "label",
+                                                              "The combo box label",
+                                                              _("_Profile:"),
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_SHOW_BUTTON,
+                                         g_param_spec_boolean ("show-button",
+                                                              "show-button",
+                                                              "Whether to show the button",
+                                                              FALSE,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_BUTTON_LABEL,
+                                         g_param_spec_string ("button-label",
+                                                              "button-label",
+                                                              "The button's label",
+                                                              "APPLICATION BUG",
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        signals [CHANGED] =
+                g_signal_new ("changed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcComboBoxClass, changed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__STRING,
+                              G_TYPE_NONE, 1, G_TYPE_STRING);
+        signals [BUTTON_CLICKED] =
+                g_signal_new ("button-clicked",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcComboBoxClass, button_clicked),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE, 0, G_TYPE_NONE);
+
+        g_type_class_add_private (klass, sizeof (GvcComboBoxPrivate));
+}
+
+void
+gvc_combo_box_set_profiles (GvcComboBox *combo_box,
+                            const GList       *profiles)
+{
+        const GList *l;
+
+        g_return_if_fail (GVC_IS_COMBO_BOX (combo_box));
+        g_return_if_fail (combo_box->priv->set_called == FALSE);
+
+        for (l = profiles; l != NULL; l = l->next) {
+                GvcMixerCardProfile *p = l->data;
+
+                gtk_list_store_insert_with_values (GTK_LIST_STORE (combo_box->priv->model),
+                                                   NULL,
+                                                   G_MAXINT,
+                                                   COL_NAME, p->profile,
+                                                   COL_HUMAN_NAME, p->human_profile,
+                                                   -1);
+        }
+        combo_box->priv->set_called = TRUE;
+}
+
+void
+gvc_combo_box_set_ports (GvcComboBox *combo_box,
+                         const GList       *ports)
+{
+        const GList *l;
+
+        g_return_if_fail (GVC_IS_COMBO_BOX (combo_box));
+        g_return_if_fail (combo_box->priv->set_called == FALSE);
+
+        for (l = ports; l != NULL; l = l->next) {
+                GvcMixerStreamPort *p = l->data;
+
+                gtk_list_store_insert_with_values (GTK_LIST_STORE (combo_box->priv->model),
+                                                   NULL,
+                                                   G_MAXINT,
+                                                   COL_NAME, p->port,
+                                                   COL_HUMAN_NAME, p->human_port,
+                                                   -1);
+        }
+        combo_box->priv->set_called = TRUE;
+}
+
+void
+gvc_combo_box_set_active (GvcComboBox *combo_box,
+                          const char  *id)
+{
+        GtkTreeIter iter;
+        gboolean cont;
+
+        cont = gtk_tree_model_get_iter_first (combo_box->priv->model, &iter);
+        while (cont != FALSE) {
+                char *name;
+
+                gtk_tree_model_get (combo_box->priv->model, &iter,
+                                    COL_NAME, &name,
+                                    -1);
+                if (g_strcmp0 (name, id) == 0) {
+                        gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo_box->priv->combobox), &iter);
+                        return;
+                }
+                gtk_tree_model_iter_next (combo_box->priv->model, &iter);
+        }
+        g_warning ("Could not find id '%s' in combo box", id);
+}
+
+static void
+on_combo_box_changed (GtkComboBox *widget,
+                      GvcComboBox *combo_box)
+{
+        GtkTreeIter          iter;
+        char                *profile;
+
+        if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (widget), &iter) == FALSE) {
+                g_warning ("Could not find an active profile or port");
+                return;
+        }
+
+        gtk_tree_model_get (combo_box->priv->model, &iter,
+                            COL_NAME, &profile,
+                            -1);
+        g_signal_emit (combo_box, signals[CHANGED], 0, profile);
+        g_free (profile);
+}
+
+static void
+on_combo_box_button_clicked (GtkButton   *button,
+                             GvcComboBox *combo_box)
+{
+        g_signal_emit (combo_box, signals[BUTTON_CLICKED], 0);
+}
+
+static void
+gvc_combo_box_init (GvcComboBox *combo_box)
+{
+        GtkWidget *frame;
+        GtkWidget            *box;
+        GtkWidget            *sbox;
+        GtkWidget            *ebox;
+        GtkCellRenderer      *renderer;
+
+
+        combo_box->priv = GVC_COMBO_BOX_GET_PRIVATE (combo_box);
+
+        combo_box->priv->model = GTK_TREE_MODEL (gtk_list_store_new (NUM_COLS,
+                                                                     G_TYPE_STRING,
+                                                                     G_TYPE_STRING));
+
+        combo_box->priv->label = gtk_label_new (NULL);
+        gtk_misc_set_alignment (GTK_MISC (combo_box->priv->label),
+                                0.0,
+                                0.5);
+
+        /* frame */
+        frame = gtk_frame_new (NULL);
+        gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_NONE);
+        gtk_container_add (GTK_CONTAINER (combo_box), frame);
+
+        combo_box->priv->drop_box = box = gtk_hbox_new (FALSE, 6);
+        combo_box->priv->combobox = gtk_combo_box_new_with_model (combo_box->priv->model);
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box->priv->combobox),
+                                    renderer, FALSE);
+        gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo_box->priv->combobox),
+                                       renderer,
+                                       "text", COL_HUMAN_NAME);
+
+/*       gtk_widget_set_size_request (combo_box->priv->combobox, 128, -1); */
+
+        combo_box->priv->start_box = sbox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box), sbox, FALSE, FALSE, 0);
+
+        gtk_box_pack_start (GTK_BOX (sbox), combo_box->priv->label, FALSE, FALSE, 0);
+
+        gtk_box_pack_start (GTK_BOX (box), combo_box->priv->combobox, TRUE, TRUE, 0);
+
+        combo_box->priv->button = gtk_button_new_with_label ("APPLICATION BUG");
+        gtk_widget_set_no_show_all (combo_box->priv->button, TRUE);
+        gtk_box_pack_start (GTK_BOX (box), combo_box->priv->button, FALSE, FALSE, 0);
+
+
+        combo_box->priv->end_box = ebox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box), ebox, FALSE, FALSE, 0);
+
+        if (combo_box->priv->size_group != NULL) {
+                gtk_size_group_add_widget (combo_box->priv->size_group, sbox);
+
+                if (combo_box->priv->symmetric) {
+                        gtk_size_group_add_widget (combo_box->priv->size_group, ebox);
+                }
+        }
+
+        gtk_container_add (GTK_CONTAINER (frame), combo_box->priv->drop_box);
+        gtk_widget_show_all (frame);
+
+        gtk_label_set_mnemonic_widget (GTK_LABEL (combo_box->priv->label),
+                                       combo_box->priv->combobox);
+
+        g_signal_connect (G_OBJECT (combo_box->priv->combobox), "changed",
+                          G_CALLBACK (on_combo_box_changed), combo_box);
+        g_signal_connect (G_OBJECT (combo_box->priv->button), "clicked",
+                          G_CALLBACK (on_combo_box_button_clicked), combo_box);
+}
+
+static void
+gvc_combo_box_finalize (GObject *object)
+{
+        GvcComboBox *combo_box;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_COMBO_BOX (object));
+
+        combo_box = GVC_COMBO_BOX (object);
+
+        g_return_if_fail (combo_box->priv != NULL);
+
+        g_object_unref (combo_box->priv->model);
+        combo_box->priv->model = NULL;
+
+        G_OBJECT_CLASS (gvc_combo_box_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_combo_box_new (const char *label)
+{
+        GObject *combo_box;
+        combo_box = g_object_new (GVC_TYPE_COMBO_BOX,
+                                  "label", label,
+                                  NULL);
+        return GTK_WIDGET (combo_box);
+}
+
diff --git a/panels/sound/gvc-combo-box.h b/panels/sound/gvc-combo-box.h
new file mode 100644
index 0000000..f1ffc0d
--- /dev/null
+++ b/panels/sound/gvc-combo-box.h
@@ -0,0 +1,67 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_COMBO_BOX_H
+#define __GVC_COMBO_BOX_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_COMBO_BOX         (gvc_combo_box_get_type ())
+#define GVC_COMBO_BOX(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_COMBO_BOX, GvcComboBox))
+#define GVC_COMBO_BOX_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_COMBO_BOX, GvcComboBoxClass))
+#define GVC_IS_COMBO_BOX(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_COMBO_BOX))
+#define GVC_IS_COMBO_BOX_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_COMBO_BOX))
+#define GVC_COMBO_BOX_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_COMBO_BOX, GvcComboBoxClass))
+
+typedef struct GvcComboBoxPrivate GvcComboBoxPrivate;
+
+typedef struct
+{
+        GtkHBox               parent;
+        GvcComboBoxPrivate *priv;
+} GvcComboBox;
+
+typedef struct
+{
+        GtkHBoxClass            parent_class;
+        void (* changed)        (GvcComboBox *combobox, const char *name);
+        void (* button_clicked) (GvcComboBox *combobox);
+} GvcComboBoxClass;
+
+GType               gvc_combo_box_get_type            (void);
+
+GtkWidget *         gvc_combo_box_new                 (const char   *label);
+
+void                gvc_combo_box_set_size_group      (GvcComboBox  *combo_box,
+                                                       GtkSizeGroup *group,
+                                                       gboolean      symmetric);
+
+void                gvc_combo_box_set_profiles        (GvcComboBox  *combo_box,
+                                                       const GList  *profiles);
+void                gvc_combo_box_set_ports           (GvcComboBox  *combo_box,
+                                                       const GList  *ports);
+void                gvc_combo_box_set_active          (GvcComboBox  *combo_box,
+                                                       const char   *id);
+
+G_END_DECLS
+
+#endif /* __GVC_COMBO_BOX_H */
diff --git a/panels/sound/gvc-level-bar.c b/panels/sound/gvc-level-bar.c
new file mode 100644
index 0000000..2d3d9da
--- /dev/null
+++ b/panels/sound/gvc-level-bar.c
@@ -0,0 +1,747 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann <william jon mccann gmail com>
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <math.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+
+#include "gvc-level-bar.h"
+
+#define NUM_BOXES 30
+
+#define GVC_LEVEL_BAR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBarPrivate))
+
+#define MIN_HORIZONTAL_BAR_WIDTH   150
+#define HORIZONTAL_BAR_HEIGHT      6
+#define VERTICAL_BAR_WIDTH         6
+#define MIN_VERTICAL_BAR_HEIGHT    400
+
+typedef struct {
+        int          peak_num;
+        int          max_peak_num;
+
+        GdkRectangle area;
+        int          delta;
+        int          box_width;
+        int          box_height;
+        int          box_radius;
+        double       bg_r;
+        double       bg_g;
+        double       bg_b;
+        double       bdr_r;
+        double       bdr_g;
+        double       bdr_b;
+        double       fl_r;
+        double       fl_g;
+        double       fl_b;
+} LevelBarLayout;
+
+struct GvcLevelBarPrivate
+{
+        GtkOrientation orientation;
+        GtkAdjustment *peak_adjustment;
+        GtkAdjustment *rms_adjustment;
+        int            scale;
+        gdouble        peak_fraction;
+        gdouble        rms_fraction;
+        gdouble        max_peak;
+        guint          max_peak_id;
+        LevelBarLayout layout;
+};
+
+enum
+{
+        PROP_0,
+        PROP_PEAK_ADJUSTMENT,
+        PROP_RMS_ADJUSTMENT,
+        PROP_SCALE,
+        PROP_ORIENTATION,
+};
+
+static void     gvc_level_bar_class_init (GvcLevelBarClass *klass);
+static void     gvc_level_bar_init       (GvcLevelBar      *level_bar);
+static void     gvc_level_bar_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcLevelBar, gvc_level_bar, GTK_TYPE_HBOX)
+
+#define check_rectangle(rectangle1, rectangle2)                          \
+        {                                                                \
+                if (rectangle1.x != rectangle2.x) return TRUE;           \
+                if (rectangle1.y != rectangle2.y) return TRUE;           \
+                if (rectangle1.width  != rectangle2.width)  return TRUE; \
+                if (rectangle1.height != rectangle2.height) return TRUE; \
+        }
+
+static gboolean
+layout_changed (LevelBarLayout *layout1,
+                LevelBarLayout *layout2)
+{
+        check_rectangle (layout1->area, layout2->area);
+        if (layout1->delta != layout2->delta) return TRUE;
+        if (layout1->peak_num != layout2->peak_num) return TRUE;
+        if (layout1->max_peak_num != layout2->max_peak_num) return TRUE;
+        if (layout1->bg_r != layout2->bg_r
+            || layout1->bg_g != layout2->bg_g
+            || layout1->bg_b != layout2->bg_b)
+                return TRUE;
+        if (layout1->bdr_r != layout2->bdr_r
+            || layout1->bdr_g != layout2->bdr_g
+            || layout1->bdr_b != layout2->bdr_b)
+                return TRUE;
+        if (layout1->fl_r != layout2->fl_r
+            || layout1->fl_g != layout2->fl_g
+            || layout1->fl_b != layout2->fl_b)
+                return TRUE;
+
+        return FALSE;
+}
+
+static gdouble
+fraction_from_adjustment (GvcLevelBar   *bar,
+                          GtkAdjustment *adjustment)
+{
+        gdouble level;
+        gdouble fraction;
+        gdouble min;
+        gdouble max;
+
+        level = gtk_adjustment_get_value (adjustment);
+
+        min = gtk_adjustment_get_lower (adjustment);
+        max = gtk_adjustment_get_upper (adjustment);
+
+        switch (bar->priv->scale) {
+        case GVC_LEVEL_SCALE_LINEAR:
+                fraction = (level - min) / (max - min);
+                break;
+        case GVC_LEVEL_SCALE_LOG:
+                fraction = log10 ((level - min + 1) / (max - min + 1));
+                break;
+        default:
+                g_assert_not_reached ();
+        }
+
+        return fraction;
+}
+
+static gboolean
+reset_max_peak (GvcLevelBar *bar)
+{
+        gdouble min;
+
+        min = gtk_adjustment_get_lower (bar->priv->peak_adjustment);
+        bar->priv->max_peak = min;
+        bar->priv->layout.max_peak_num = 0;
+        gtk_widget_queue_draw (GTK_WIDGET (bar));
+        bar->priv->max_peak_id = 0;
+        return FALSE;
+}
+
+static void
+bar_calc_layout (GvcLevelBar *bar)
+{
+        GdkColor color;
+        int      peak_level;
+        int      max_peak_level;
+        GtkAllocation allocation;
+        GtkStyle *style;
+
+        gtk_widget_get_allocation (GTK_WIDGET (bar), &allocation);
+        bar->priv->layout.area.width = allocation.width - 2;
+        bar->priv->layout.area.height = allocation.height - 2;
+
+        style = gtk_widget_get_style (GTK_WIDGET (bar));
+        color = style->bg [GTK_STATE_NORMAL];
+        bar->priv->layout.bg_r = (float)color.red / 65535.0;
+        bar->priv->layout.bg_g = (float)color.green / 65535.0;
+        bar->priv->layout.bg_b = (float)color.blue / 65535.0;
+        color = style->dark [GTK_STATE_NORMAL];
+        bar->priv->layout.bdr_r = (float)color.red / 65535.0;
+        bar->priv->layout.bdr_g = (float)color.green / 65535.0;
+        bar->priv->layout.bdr_b = (float)color.blue / 65535.0;
+        color = style->bg [GTK_STATE_SELECTED];
+        bar->priv->layout.fl_r = (float)color.red / 65535.0;
+        bar->priv->layout.fl_g = (float)color.green / 65535.0;
+        bar->priv->layout.fl_b = (float)color.blue / 65535.0;
+
+        if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                peak_level = bar->priv->peak_fraction * bar->priv->layout.area.height;
+                max_peak_level = bar->priv->max_peak * bar->priv->layout.area.height;
+
+                bar->priv->layout.delta = bar->priv->layout.area.height / NUM_BOXES;
+                bar->priv->layout.area.x = 0;
+                bar->priv->layout.area.y = 0;
+                bar->priv->layout.box_height = bar->priv->layout.delta / 2;
+                bar->priv->layout.box_width = bar->priv->layout.area.width;
+                bar->priv->layout.box_radius = bar->priv->layout.box_width / 2;
+        } else {
+                peak_level = bar->priv->peak_fraction * bar->priv->layout.area.width;
+                max_peak_level = bar->priv->max_peak * bar->priv->layout.area.width;
+
+                bar->priv->layout.delta = bar->priv->layout.area.width / NUM_BOXES;
+                bar->priv->layout.area.x = 0;
+                bar->priv->layout.area.y = 0;
+                bar->priv->layout.box_width = bar->priv->layout.delta / 2;
+                bar->priv->layout.box_height = bar->priv->layout.area.height;
+                bar->priv->layout.box_radius = bar->priv->layout.box_height / 2;
+        }
+
+        /* This can happen if the level bar isn't realized */
+        if (bar->priv->layout.delta == 0)
+                return;
+
+        bar->priv->layout.peak_num = peak_level / bar->priv->layout.delta;
+        bar->priv->layout.max_peak_num = max_peak_level / bar->priv->layout.delta;
+}
+
+static void
+update_peak_value (GvcLevelBar *bar)
+{
+        gdouble        val;
+        LevelBarLayout layout;
+
+        layout = bar->priv->layout;
+
+        val = fraction_from_adjustment (bar, bar->priv->peak_adjustment);
+        bar->priv->peak_fraction = val;
+
+        if (val > bar->priv->max_peak) {
+                if (bar->priv->max_peak_id > 0) {
+                        g_source_remove (bar->priv->max_peak_id);
+                }
+                bar->priv->max_peak_id = g_timeout_add_seconds (1, (GSourceFunc)reset_max_peak, bar);
+                bar->priv->max_peak = val;
+        }
+
+        bar_calc_layout (bar);
+
+        if (layout_changed (&bar->priv->layout, &layout)) {
+                gtk_widget_queue_draw (GTK_WIDGET (bar));
+        }
+}
+
+static void
+update_rms_value (GvcLevelBar *bar)
+{
+        gdouble val;
+
+        val = fraction_from_adjustment (bar, bar->priv->rms_adjustment);
+        bar->priv->rms_fraction = val;
+}
+
+GtkOrientation
+gvc_level_bar_get_orientation (GvcLevelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), 0);
+        return bar->priv->orientation;
+}
+
+void
+gvc_level_bar_set_orientation (GvcLevelBar   *bar,
+                               GtkOrientation orientation)
+{
+        g_return_if_fail (GVC_IS_LEVEL_BAR (bar));
+
+        if (orientation != bar->priv->orientation) {
+                bar->priv->orientation = orientation;
+                gtk_widget_queue_draw (GTK_WIDGET (bar));
+                g_object_notify (G_OBJECT (bar), "orientation");
+        }
+}
+
+static void
+on_peak_adjustment_value_changed (GtkAdjustment *adjustment,
+                                  GvcLevelBar   *bar)
+{
+        update_peak_value (bar);
+}
+
+static void
+on_rms_adjustment_value_changed (GtkAdjustment *adjustment,
+                                 GvcLevelBar   *bar)
+{
+        update_rms_value (bar);
+}
+
+void
+gvc_level_bar_set_peak_adjustment (GvcLevelBar   *bar,
+                                   GtkAdjustment *adjustment)
+{
+        g_return_if_fail (GVC_LEVEL_BAR (bar));
+        g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+        if (bar->priv->peak_adjustment != NULL) {
+                g_signal_handlers_disconnect_by_func (bar->priv->peak_adjustment,
+                                                      G_CALLBACK (on_peak_adjustment_value_changed),
+                                                      bar);
+                g_object_unref (bar->priv->peak_adjustment);
+        }
+
+        bar->priv->peak_adjustment = g_object_ref_sink (adjustment);
+
+        g_signal_connect (bar->priv->peak_adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_peak_adjustment_value_changed),
+                          bar);
+
+        update_peak_value (bar);
+
+        g_object_notify (G_OBJECT (bar), "peak-adjustment");
+}
+
+void
+gvc_level_bar_set_rms_adjustment (GvcLevelBar   *bar,
+                                  GtkAdjustment *adjustment)
+{
+        g_return_if_fail (GVC_LEVEL_BAR (bar));
+        g_return_if_fail (GTK_IS_ADJUSTMENT (adjustment));
+
+        if (bar->priv->rms_adjustment != NULL) {
+                g_signal_handlers_disconnect_by_func (bar->priv->peak_adjustment,
+                                                      G_CALLBACK (on_rms_adjustment_value_changed),
+                                                      bar);
+                g_object_unref (bar->priv->rms_adjustment);
+        }
+
+        bar->priv->rms_adjustment = g_object_ref_sink (adjustment);
+
+
+        g_signal_connect (bar->priv->peak_adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_peak_adjustment_value_changed),
+                          bar);
+
+        update_rms_value (bar);
+
+        g_object_notify (G_OBJECT (bar), "rms-adjustment");
+}
+
+GtkAdjustment *
+gvc_level_bar_get_peak_adjustment (GvcLevelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), NULL);
+
+        return bar->priv->peak_adjustment;
+}
+
+GtkAdjustment *
+gvc_level_bar_get_rms_adjustment (GvcLevelBar *bar)
+{
+        g_return_val_if_fail (GVC_IS_LEVEL_BAR (bar), NULL);
+
+        return bar->priv->rms_adjustment;
+}
+
+void
+gvc_level_bar_set_scale (GvcLevelBar  *bar,
+                         GvcLevelScale scale)
+{
+        g_return_if_fail (GVC_IS_LEVEL_BAR (bar));
+
+        if (scale != bar->priv->scale) {
+                bar->priv->scale = scale;
+
+                update_peak_value (bar);
+                update_rms_value (bar);
+
+                g_object_notify (G_OBJECT (bar), "scale");
+        }
+}
+
+static void
+gvc_level_bar_set_property (GObject       *object,
+                              guint          prop_id,
+                              const GValue  *value,
+                              GParamSpec    *pspec)
+{
+        GvcLevelBar *self = GVC_LEVEL_BAR (object);
+
+        switch (prop_id) {
+        case PROP_SCALE:
+                gvc_level_bar_set_scale (self, g_value_get_int (value));
+                break;
+        case PROP_ORIENTATION:
+                gvc_level_bar_set_orientation (self, g_value_get_enum (value));
+                break;
+        case PROP_PEAK_ADJUSTMENT:
+                gvc_level_bar_set_peak_adjustment (self, g_value_get_object (value));
+                break;
+        case PROP_RMS_ADJUSTMENT:
+                gvc_level_bar_set_rms_adjustment (self, g_value_get_object (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_level_bar_get_property (GObject     *object,
+                              guint        prop_id,
+                              GValue      *value,
+                              GParamSpec  *pspec)
+{
+        GvcLevelBar *self = GVC_LEVEL_BAR (object);
+
+        switch (prop_id) {
+        case PROP_SCALE:
+                g_value_set_int (value, self->priv->scale);
+                break;
+        case PROP_ORIENTATION:
+                g_value_set_enum (value, self->priv->orientation);
+                break;
+        case PROP_PEAK_ADJUSTMENT:
+                g_value_set_object (value, self->priv->peak_adjustment);
+                break;
+        case PROP_RMS_ADJUSTMENT:
+                g_value_set_object (value, self->priv->rms_adjustment);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_level_bar_constructor (GType                  type,
+                           guint                  n_construct_properties,
+                           GObjectConstructParam *construct_params)
+{
+        return G_OBJECT_CLASS (gvc_level_bar_parent_class)->constructor (type, n_construct_properties, construct_params);
+}
+
+static void
+gvc_level_bar_size_request (GtkWidget      *widget,
+                            GtkRequisition *requisition)
+{
+        GvcLevelBar *bar;
+
+        g_return_if_fail (GVC_IS_LEVEL_BAR (widget));
+        g_return_if_fail (requisition != NULL);
+
+        bar = GVC_LEVEL_BAR (widget);
+
+        switch (bar->priv->orientation) {
+        case GTK_ORIENTATION_VERTICAL:
+                requisition->width = VERTICAL_BAR_WIDTH;
+                requisition->height = MIN_VERTICAL_BAR_HEIGHT;
+                break;
+        case GTK_ORIENTATION_HORIZONTAL:
+                requisition->width = MIN_HORIZONTAL_BAR_WIDTH;
+                requisition->height = HORIZONTAL_BAR_HEIGHT;
+                break;
+        default:
+                g_assert_not_reached ();
+                break;
+        }
+}
+
+static void
+gvc_level_bar_size_allocate (GtkWidget     *widget,
+                             GtkAllocation *allocation)
+{
+        GvcLevelBar *bar;
+
+        g_return_if_fail (GVC_IS_LEVEL_BAR (widget));
+        g_return_if_fail (allocation != NULL);
+
+        bar = GVC_LEVEL_BAR (widget);
+
+        /* FIXME: add height property, labels, etc */
+        GTK_WIDGET_CLASS (gvc_level_bar_parent_class)->size_allocate (widget, allocation);
+
+        gtk_widget_set_allocation (widget, allocation);
+        gtk_widget_get_allocation (widget, allocation);
+
+        if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                allocation->height = MIN (allocation->height, MIN_VERTICAL_BAR_HEIGHT);
+                allocation->width = MAX (allocation->width, VERTICAL_BAR_WIDTH);
+        } else {
+                allocation->width = MIN (allocation->width, MIN_HORIZONTAL_BAR_WIDTH);
+                allocation->height = MAX (allocation->height, HORIZONTAL_BAR_HEIGHT);
+        }
+
+        bar_calc_layout (bar);
+}
+
+static void
+curved_rectangle (cairo_t *cr,
+                  double   x0,
+                  double   y0,
+                  double   width,
+                  double   height,
+                  double   radius)
+{
+        double x1;
+        double y1;
+
+        x1 = x0 + width;
+        y1 = y0 + height;
+
+        if (!width || !height) {
+                return;
+        }
+
+        if (width / 2 < radius) {
+                if (height / 2 < radius) {
+                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
+                        cairo_curve_to (cr, x0 ,y0, x0, y0, (x0 + x1) / 2, y0);
+                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
+                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
+                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
+                } else {
+                        cairo_move_to  (cr, x0, y0 + radius);
+                        cairo_curve_to (cr, x0, y0, x0, y0, (x0 + x1) / 2, y0);
+                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
+                        cairo_line_to (cr, x1, y1 - radius);
+                        cairo_curve_to (cr, x1, y1, x1, y1, (x1 + x0) / 2, y1);
+                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
+                }
+        } else {
+                if (height / 2 < radius) {
+                        cairo_move_to  (cr, x0, (y0 + y1) / 2);
+                        cairo_curve_to (cr, x0, y0, x0 , y0, x0 + radius, y0);
+                        cairo_line_to (cr, x1 - radius, y0);
+                        cairo_curve_to (cr, x1, y0, x1, y0, x1, (y0 + y1) / 2);
+                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
+                        cairo_line_to (cr, x0 + radius, y1);
+                        cairo_curve_to (cr, x0, y1, x0, y1, x0, (y0 + y1) / 2);
+                } else {
+                        cairo_move_to  (cr, x0, y0 + radius);
+                        cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + radius, y0);
+                        cairo_line_to (cr, x1 - radius, y0);
+                        cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + radius);
+                        cairo_line_to (cr, x1, y1 - radius);
+                        cairo_curve_to (cr, x1, y1, x1, y1, x1 - radius, y1);
+                        cairo_line_to (cr, x0 + radius, y1);
+                        cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - radius);
+                }
+        }
+
+        cairo_close_path (cr);
+}
+
+static int
+gvc_level_bar_draw (GtkWidget *widget,
+                    cairo_t   *cr)
+{
+        GvcLevelBar     *bar;
+        GtkAllocation   allocation;
+
+        g_return_val_if_fail (GVC_IS_LEVEL_BAR (widget), FALSE);
+
+        bar = GVC_LEVEL_BAR (widget);
+
+        gtk_widget_get_allocation (widget, &allocation);
+        cairo_translate (cr,
+                         allocation.x,
+                         allocation.y);
+
+        if (bar->priv->orientation == GTK_ORIENTATION_VERTICAL) {
+                int i;
+                int by;
+
+                for (i = 0; i < NUM_BOXES; i++) {
+                        by = i * bar->priv->layout.delta;
+                        curved_rectangle (cr,
+                                          bar->priv->layout.area.x + 0.5,
+                                          by + 0.5,
+                                          bar->priv->layout.box_width - 1,
+                                          bar->priv->layout.box_height - 1,
+                                          bar->priv->layout.box_radius);
+                        if ((bar->priv->layout.max_peak_num - 1) == i) {
+                                /* fill peak foreground */
+                                cairo_set_source_rgb (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b);
+                                cairo_fill_preserve (cr);
+                        } else if ((bar->priv->layout.peak_num - 1) >= i) {
+                                /* fill background */
+                                cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b);
+                                cairo_fill_preserve (cr);
+                                /* fill foreground */
+                                cairo_set_source_rgba (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b, 0.5);
+                                cairo_fill_preserve (cr);
+                        } else {
+                                /* fill background */
+                                cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b);
+                                cairo_fill_preserve (cr);
+                        }
+
+                        /* stroke border */
+                        cairo_set_source_rgb (cr, bar->priv->layout.bdr_r, bar->priv->layout.bdr_g, bar->priv->layout.bdr_b);
+                        cairo_set_line_width (cr, 1);
+                        cairo_stroke (cr);
+                }
+
+        } else {
+                int i;
+                int bx;
+
+                for (i = 0; i < NUM_BOXES; i++) {
+                        bx = i * bar->priv->layout.delta;
+                        curved_rectangle (cr,
+                                          bx + 0.5,
+                                          bar->priv->layout.area.y + 0.5,
+                                          bar->priv->layout.box_width - 1,
+                                          bar->priv->layout.box_height - 1,
+                                          bar->priv->layout.box_radius);
+
+                        if ((bar->priv->layout.max_peak_num - 1) == i) {
+                                /* fill peak foreground */
+                                cairo_set_source_rgb (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b);
+                                cairo_fill_preserve (cr);
+                        } else if ((bar->priv->layout.peak_num - 1) >= i) {
+                                /* fill background */
+                                cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b);
+                                cairo_fill_preserve (cr);
+                                /* fill foreground */
+                                cairo_set_source_rgba (cr, bar->priv->layout.fl_r, bar->priv->layout.fl_g, bar->priv->layout.fl_b, 0.5);
+                                cairo_fill_preserve (cr);
+                        } else {
+                                /* fill background */
+                                cairo_set_source_rgb (cr, bar->priv->layout.bg_r, bar->priv->layout.bg_g, bar->priv->layout.bg_b);
+                                cairo_fill_preserve (cr);
+                        }
+
+                        /* stroke border */
+                        cairo_set_source_rgb (cr, bar->priv->layout.bdr_r, bar->priv->layout.bdr_g, bar->priv->layout.bdr_b);
+                        cairo_set_line_width (cr, 1);
+                        cairo_stroke (cr);
+                }
+        }
+
+        return FALSE;
+}
+
+static void
+gvc_level_bar_class_init (GvcLevelBarClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+        GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+
+        object_class->constructor = gvc_level_bar_constructor;
+        object_class->finalize = gvc_level_bar_finalize;
+        object_class->set_property = gvc_level_bar_set_property;
+        object_class->get_property = gvc_level_bar_get_property;
+
+        widget_class->draw = gvc_level_bar_draw;
+        widget_class->size_request = gvc_level_bar_size_request;
+        widget_class->size_allocate = gvc_level_bar_size_allocate;
+
+        g_object_class_install_property (object_class,
+                                         PROP_ORIENTATION,
+                                         g_param_spec_enum ("orientation",
+                                                            "Orientation",
+                                                            "The orientation of the bar",
+                                                            GTK_TYPE_ORIENTATION,
+                                                            GTK_ORIENTATION_HORIZONTAL,
+                                                            G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_PEAK_ADJUSTMENT,
+                                         g_param_spec_object ("peak-adjustment",
+                                                              "Peak Adjustment",
+                                                              "The GtkAdjustment that contains the current peak value",
+                                                              GTK_TYPE_ADJUSTMENT,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_RMS_ADJUSTMENT,
+                                         g_param_spec_object ("rms-adjustment",
+                                                              "RMS Adjustment",
+                                                              "The GtkAdjustment that contains the current rms value",
+                                                              GTK_TYPE_ADJUSTMENT,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (object_class,
+                                         PROP_SCALE,
+                                         g_param_spec_int ("scale",
+                                                           "Scale",
+                                                           "Scale",
+                                                           0,
+                                                           G_MAXINT,
+                                                           GVC_LEVEL_SCALE_LINEAR,
+                                                           G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_type_class_add_private (klass, sizeof (GvcLevelBarPrivate));
+}
+
+static void
+gvc_level_bar_init (GvcLevelBar *bar)
+{
+        bar->priv = GVC_LEVEL_BAR_GET_PRIVATE (bar);
+
+        bar->priv->peak_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                         0.0,
+                                                                         1.0,
+                                                                         0.05,
+                                                                         0.1,
+                                                                         0.1));
+        g_object_ref_sink (bar->priv->peak_adjustment);
+        g_signal_connect (bar->priv->peak_adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_peak_adjustment_value_changed),
+                          bar);
+
+        bar->priv->rms_adjustment = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,
+                                                                        0.0,
+                                                                        1.0,
+                                                                        0.05,
+                                                                        0.1,
+                                                                        0.1));
+        g_object_ref_sink (bar->priv->rms_adjustment);
+        g_signal_connect (bar->priv->rms_adjustment,
+                          "value-changed",
+                          G_CALLBACK (on_rms_adjustment_value_changed),
+                          bar);
+
+        gtk_widget_set_has_window (GTK_WIDGET (bar), FALSE);
+}
+
+static void
+gvc_level_bar_finalize (GObject *object)
+{
+        GvcLevelBar *bar;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_LEVEL_BAR (object));
+
+        bar = GVC_LEVEL_BAR (object);
+
+        if (bar->priv->max_peak_id > 0) {
+                g_source_remove (bar->priv->max_peak_id);
+        }
+
+        g_return_if_fail (bar->priv != NULL);
+
+        G_OBJECT_CLASS (gvc_level_bar_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_level_bar_new (void)
+{
+        GObject *bar;
+        bar = g_object_new (GVC_TYPE_LEVEL_BAR,
+                            NULL);
+        return GTK_WIDGET (bar);
+}
diff --git a/panels/sound/gvc-level-bar.h b/panels/sound/gvc-level-bar.h
new file mode 100644
index 0000000..917b415
--- /dev/null
+++ b/panels/sound/gvc-level-bar.h
@@ -0,0 +1,75 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann <william jon mccann gmail com>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_LEVEL_BAR_H
+#define __GVC_LEVEL_BAR_H
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_LEVEL_BAR         (gvc_level_bar_get_type ())
+#define GVC_LEVEL_BAR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBar))
+#define GVC_LEVEL_BAR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_LEVEL_BAR, GvcLevelBarClass))
+#define GVC_IS_LEVEL_BAR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_LEVEL_BAR))
+#define GVC_IS_LEVEL_BAR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_LEVEL_BAR))
+#define GVC_LEVEL_BAR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_LEVEL_BAR, GvcLevelBarClass))
+
+typedef struct GvcLevelBarPrivate GvcLevelBarPrivate;
+
+typedef struct
+{
+        GtkHBox             parent;
+        GvcLevelBarPrivate *priv;
+} GvcLevelBar;
+
+typedef struct
+{
+        GtkHBoxClass        parent_class;
+} GvcLevelBarClass;
+
+typedef enum
+{
+    GVC_LEVEL_SCALE_LINEAR,
+    GVC_LEVEL_SCALE_LOG,
+    GVC_LEVEL_SCALE_LAST
+} GvcLevelScale;
+
+GType               gvc_level_bar_get_type            (void);
+
+GtkWidget *         gvc_level_bar_new                 (void);
+void                gvc_level_bar_set_orientation     (GvcLevelBar   *bar,
+                                                       GtkOrientation orientation);
+GtkOrientation      gvc_level_bar_get_orientation     (GvcLevelBar   *bar);
+
+void                gvc_level_bar_set_peak_adjustment (GvcLevelBar   *bar,
+                                                       GtkAdjustment *adjustment);
+GtkAdjustment *     gvc_level_bar_get_peak_adjustment (GvcLevelBar   *bar);
+void                gvc_level_bar_set_rms_adjustment  (GvcLevelBar   *bar,
+                                                       GtkAdjustment *adjustment);
+GtkAdjustment *     gvc_level_bar_get_rms_adjustment  (GvcLevelBar   *bar);
+void                gvc_level_bar_set_scale           (GvcLevelBar   *bar,
+                                                       GvcLevelScale  scale);
+
+
+G_END_DECLS
+
+#endif /* __GVC_LEVEL_BAR_H */
diff --git a/panels/sound/gvc-log.c b/panels/sound/gvc-log.c
new file mode 100644
index 0000000..03a9486
--- /dev/null
+++ b/panels/sound/gvc-log.c
@@ -0,0 +1,62 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Red Hat, Inc.
+ *
+ * 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 "config.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+#include "gvc-log.h"
+
+
+static int log_levels = G_LOG_LEVEL_CRITICAL |
+                        G_LOG_LEVEL_ERROR    |
+                        G_LOG_LEVEL_WARNING  |
+                        G_LOG_LEVEL_DEBUG;
+
+static void
+gvc_log_default_handler (const gchar    *log_domain,
+                         GLogLevelFlags  log_level,
+                         const gchar    *message,
+                         gpointer        unused_data)
+{
+        if ((log_level & log_levels) == 0)
+                return;
+
+        g_log_default_handler (log_domain, log_level, message, unused_data);
+}
+
+void
+gvc_log_init (void)
+{
+        g_log_set_default_handler (gvc_log_default_handler, NULL);
+}
+
+void
+gvc_log_set_debug (gboolean debug)
+{
+        if (debug) {
+                log_levels |= G_LOG_LEVEL_DEBUG;
+                g_debug ("Enabling debugging");
+        } else {
+                log_levels &= ~G_LOG_LEVEL_DEBUG;
+        }
+}
diff --git a/panels/sound/gvc-log.h b/panels/sound/gvc-log.h
new file mode 100644
index 0000000..bc1cdd5
--- /dev/null
+++ b/panels/sound/gvc-log.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_LOG_H
+#define __GVC_LOG_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+
+void gvc_log_init      (void);
+void gvc_log_set_debug (gboolean debug);
+
+
+G_END_DECLS
+
+#endif /* __GVC_LOG_H */
diff --git a/panels/sound/gvc-mixer-card-private.h b/panels/sound/gvc-mixer-card-private.h
new file mode 100644
index 0000000..e190f7f
--- /dev/null
+++ b/panels/sound/gvc-mixer-card-private.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008-2009 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_CARD_PRIVATE_H
+#define __GVC_MIXER_CARD_PRIVATE_H
+
+#include <pulse/pulseaudio.h>
+#include "gvc-mixer-card.h"
+
+G_BEGIN_DECLS
+
+GvcMixerCard *        gvc_mixer_card_new               (pa_context   *context,
+                                                        guint         index);
+pa_context *          gvc_mixer_card_get_pa_context    (GvcMixerCard *card);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_CARD_PRIVATE_H */
diff --git a/panels/sound/gvc-mixer-card.c b/panels/sound/gvc-mixer-card.c
new file mode 100644
index 0000000..f198f1b
--- /dev/null
+++ b/panels/sound/gvc-mixer-card.c
@@ -0,0 +1,506 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ * Copyright (C) 2009 Bastien Nocera
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-card.h"
+#include "gvc-mixer-card-private.h"
+
+#define GVC_MIXER_CARD_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_CARD, GvcMixerCardPrivate))
+
+static guint32 card_serial = 1;
+
+struct GvcMixerCardPrivate
+{
+        pa_context    *pa_context;
+        guint          id;
+        guint          index;
+        char          *name;
+        char          *icon_name;
+        char          *profile;
+        char          *target_profile;
+        char          *human_profile;
+        GList         *profiles;
+        pa_operation  *profile_op;
+};
+
+enum
+{
+        PROP_0,
+        PROP_ID,
+        PROP_PA_CONTEXT,
+        PROP_INDEX,
+        PROP_NAME,
+        PROP_ICON_NAME,
+        PROP_PROFILE,
+        PROP_HUMAN_PROFILE,
+};
+
+static void     gvc_mixer_card_class_init (GvcMixerCardClass *klass);
+static void     gvc_mixer_card_init       (GvcMixerCard      *mixer_card);
+static void     gvc_mixer_card_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcMixerCard, gvc_mixer_card, G_TYPE_OBJECT)
+
+static guint32
+get_next_card_serial (void)
+{
+        guint32 serial;
+
+        serial = card_serial++;
+
+        if ((gint32)card_serial < 0) {
+                card_serial = 1;
+        }
+
+        return serial;
+}
+
+pa_context *
+gvc_mixer_card_get_pa_context (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0);
+        return card->priv->pa_context;
+}
+
+guint
+gvc_mixer_card_get_index (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0);
+        return card->priv->index;
+}
+
+guint
+gvc_mixer_card_get_id (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), 0);
+        return card->priv->id;
+}
+
+const char *
+gvc_mixer_card_get_name (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL);
+        return card->priv->name;
+}
+
+gboolean
+gvc_mixer_card_set_name (GvcMixerCard *card,
+                         const char     *name)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+
+        g_free (card->priv->name);
+        card->priv->name = g_strdup (name);
+        g_object_notify (G_OBJECT (card), "name");
+
+        return TRUE;
+}
+
+const char *
+gvc_mixer_card_get_icon_name (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL);
+        return card->priv->icon_name;
+}
+
+gboolean
+gvc_mixer_card_set_icon_name (GvcMixerCard *card,
+                              const char     *icon_name)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+
+        g_free (card->priv->icon_name);
+        card->priv->icon_name = g_strdup (icon_name);
+        g_object_notify (G_OBJECT (card), "icon-name");
+
+        return TRUE;
+}
+
+/**
+ * gvc_mixer_card_get_profile: (skip)
+ *
+ * @card:
+ *
+ * Returns:
+ */
+GvcMixerCardProfile *
+gvc_mixer_card_get_profile (GvcMixerCard *card)
+{
+        GList *l;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), NULL);
+        g_return_val_if_fail (card->priv->profiles != NULL, FALSE);
+
+        for (l = card->priv->profiles; l != NULL; l = l->next) {
+                GvcMixerCardProfile *p = l->data;
+                if (g_str_equal (card->priv->profile, p->profile)) {
+                        return p;
+                }
+        }
+
+        g_assert_not_reached ();
+
+        return NULL;
+}
+
+gboolean
+gvc_mixer_card_set_profile (GvcMixerCard *card,
+                            const char     *profile)
+{
+        GList *l;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+        g_return_val_if_fail (card->priv->profiles != NULL, FALSE);
+
+        g_free (card->priv->profile);
+        card->priv->profile = g_strdup (profile);
+
+        g_free (card->priv->human_profile);
+        card->priv->human_profile = NULL;
+
+        for (l = card->priv->profiles; l != NULL; l = l->next) {
+                GvcMixerCardProfile *p = l->data;
+                if (g_str_equal (card->priv->profile, p->profile)) {
+                        card->priv->human_profile = g_strdup (p->human_profile);
+                        break;
+                }
+        }
+
+        g_object_notify (G_OBJECT (card), "profile");
+
+        return TRUE;
+}
+
+static void
+_pa_context_set_card_profile_by_index_cb (pa_context                       *context,
+                                          int                               success,
+                                          void                             *userdata)
+{
+        GvcMixerCard *card = GVC_MIXER_CARD (userdata);
+
+        g_assert (card->priv->target_profile);
+
+        if (success > 0) {
+                gvc_mixer_card_set_profile (card, card->priv->target_profile);
+        } else {
+                g_debug ("Failed to switch profile on '%s' from '%s' to '%s'",
+                         card->priv->name,
+                         card->priv->profile,
+                         card->priv->target_profile);
+        }
+        g_free (card->priv->target_profile);
+        card->priv->target_profile = NULL;
+
+        pa_operation_unref (card->priv->profile_op);
+        card->priv->profile_op = NULL;
+}
+
+gboolean
+gvc_mixer_card_change_profile (GvcMixerCard *card,
+                               const char *profile)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+        g_return_val_if_fail (card->priv->profiles != NULL, FALSE);
+
+        /* Same profile, or already requested? */
+        if (g_strcmp0 (card->priv->profile, profile) == 0)
+                return TRUE;
+        if (g_strcmp0 (profile, card->priv->target_profile) == 0)
+                return TRUE;
+        if (card->priv->profile_op != NULL) {
+                pa_operation_cancel (card->priv->profile_op);
+                pa_operation_unref (card->priv->profile_op);
+                card->priv->profile_op = NULL;
+        }
+
+        if (card->priv->profile != NULL) {
+                g_free (card->priv->target_profile);
+                card->priv->target_profile = g_strdup (profile);
+
+                card->priv->profile_op = pa_context_set_card_profile_by_index (card->priv->pa_context,
+                                                                               card->priv->index,
+                                                                               card->priv->target_profile,
+                                                                               _pa_context_set_card_profile_by_index_cb,
+                                                                               card);
+
+                if (card->priv->profile_op == NULL) {
+                        g_warning ("pa_context_set_card_profile_by_index() failed");
+                        return FALSE;
+                }
+        } else {
+                g_assert (card->priv->human_profile == NULL);
+                card->priv->profile = g_strdup (profile);
+        }
+
+        return TRUE;
+}
+
+const GList *
+gvc_mixer_card_get_profiles (GvcMixerCard *card)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+        return card->priv->profiles;
+}
+
+static int
+sort_profiles (GvcMixerCardProfile *a,
+               GvcMixerCardProfile *b)
+{
+        if (a->priority == b->priority)
+                return 0;
+        if (a->priority > b->priority)
+                return 1;
+        return -1;
+}
+
+gboolean
+gvc_mixer_card_set_profiles (GvcMixerCard *card,
+                             GList        *profiles)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CARD (card), FALSE);
+        g_return_val_if_fail (card->priv->profiles == NULL, FALSE);
+
+        card->priv->profiles = g_list_sort (profiles, (GCompareFunc) sort_profiles);
+
+        return TRUE;
+}
+
+static void
+gvc_mixer_card_set_property (GObject       *object,
+                             guint          prop_id,
+                             const GValue  *value,
+                             GParamSpec    *pspec)
+{
+        GvcMixerCard *self = GVC_MIXER_CARD (object);
+
+        switch (prop_id) {
+        case PROP_PA_CONTEXT:
+                self->priv->pa_context = g_value_get_pointer (value);
+                break;
+        case PROP_INDEX:
+                self->priv->index = g_value_get_ulong (value);
+                break;
+        case PROP_ID:
+                self->priv->id = g_value_get_ulong (value);
+                break;
+        case PROP_NAME:
+                gvc_mixer_card_set_name (self, g_value_get_string (value));
+                break;
+        case PROP_ICON_NAME:
+                gvc_mixer_card_set_icon_name (self, g_value_get_string (value));
+                break;
+        case PROP_PROFILE:
+                gvc_mixer_card_set_profile (self, g_value_get_string (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_mixer_card_get_property (GObject     *object,
+                             guint        prop_id,
+                             GValue      *value,
+                             GParamSpec  *pspec)
+{
+        GvcMixerCard *self = GVC_MIXER_CARD (object);
+
+        switch (prop_id) {
+        case PROP_PA_CONTEXT:
+                g_value_set_pointer (value, self->priv->pa_context);
+                break;
+        case PROP_INDEX:
+                g_value_set_ulong (value, self->priv->index);
+                break;
+        case PROP_ID:
+                g_value_set_ulong (value, self->priv->id);
+                break;
+        case PROP_NAME:
+                g_value_set_string (value, self->priv->name);
+                break;
+        case PROP_ICON_NAME:
+                g_value_set_string (value, self->priv->icon_name);
+                break;
+        case PROP_PROFILE:
+                g_value_set_string (value, self->priv->profile);
+                break;
+        case PROP_HUMAN_PROFILE:
+                g_value_set_string (value, self->priv->human_profile);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_mixer_card_constructor (GType                  type,
+                            guint                  n_construct_properties,
+                            GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcMixerCard *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_card_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_CARD (object);
+
+        self->priv->id = get_next_card_serial ();
+
+        return object;
+}
+
+static void
+gvc_mixer_card_class_init (GvcMixerCardClass *klass)
+{
+        GObjectClass   *gobject_class = G_OBJECT_CLASS (klass);
+
+        gobject_class->constructor = gvc_mixer_card_constructor;
+        gobject_class->finalize = gvc_mixer_card_finalize;
+
+        gobject_class->set_property = gvc_mixer_card_set_property;
+        gobject_class->get_property = gvc_mixer_card_get_property;
+
+        g_object_class_install_property (gobject_class,
+                                         PROP_INDEX,
+                                         g_param_spec_ulong ("index",
+                                                             "Index",
+                                                             "The index for this card",
+                                                             0, G_MAXULONG, 0,
+                                                             G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_ID,
+                                         g_param_spec_ulong ("id",
+                                                             "id",
+                                                             "The id for this card",
+                                                             0, G_MAXULONG, 0,
+                                                             G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_PA_CONTEXT,
+                                         g_param_spec_pointer ("pa-context",
+                                                               "PulseAudio context",
+                                                               "The PulseAudio context for this card",
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_NAME,
+                                         g_param_spec_string ("name",
+                                                              "Name",
+                                                              "Name to display for this card",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_ICON_NAME,
+                                         g_param_spec_string ("icon-name",
+                                                              "Icon Name",
+                                                              "Name of icon to display for this card",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_PROFILE,
+                                         g_param_spec_string ("profile",
+                                                              "Profile",
+                                                              "Name of current profile for this card",
+                                                              NULL,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (gobject_class,
+                                         PROP_HUMAN_PROFILE,
+                                         g_param_spec_string ("human-profile",
+                                                              "Profile (Human readable)",
+                                                              "Name of current profile for this card in human readable form",
+                                                              NULL,
+                                                              G_PARAM_READABLE));
+
+        g_type_class_add_private (klass, sizeof (GvcMixerCardPrivate));
+}
+
+static void
+gvc_mixer_card_init (GvcMixerCard *card)
+{
+        card->priv = GVC_MIXER_CARD_GET_PRIVATE (card);
+}
+
+GvcMixerCard *
+gvc_mixer_card_new (pa_context *context,
+                    guint       index)
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_CARD,
+                               "index", index,
+                               "pa-context", context,
+                               NULL);
+        return GVC_MIXER_CARD (object);
+}
+
+static void
+free_profile (GvcMixerCardProfile *p)
+{
+        g_free (p->profile);
+        g_free (p->human_profile);
+        g_free (p->status);
+        g_free (p);
+}
+
+static void
+gvc_mixer_card_finalize (GObject *object)
+{
+        GvcMixerCard *mixer_card;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_CARD (object));
+
+        mixer_card = GVC_MIXER_CARD (object);
+
+        g_return_if_fail (mixer_card->priv != NULL);
+
+        g_free (mixer_card->priv->name);
+        mixer_card->priv->name = NULL;
+
+        g_free (mixer_card->priv->icon_name);
+        mixer_card->priv->icon_name = NULL;
+
+        g_free (mixer_card->priv->target_profile);
+        mixer_card->priv->target_profile = NULL;
+
+        g_free (mixer_card->priv->profile);
+        mixer_card->priv->profile = NULL;
+
+        g_free (mixer_card->priv->human_profile);
+        mixer_card->priv->human_profile = NULL;
+
+        g_list_foreach (mixer_card->priv->profiles, (GFunc) free_profile, NULL);
+        g_list_free (mixer_card->priv->profiles);
+        mixer_card->priv->profiles = NULL;
+
+        G_OBJECT_CLASS (gvc_mixer_card_parent_class)->finalize (object);
+}
+
diff --git a/panels/sound/gvc-mixer-card.h b/panels/sound/gvc-mixer-card.h
new file mode 100644
index 0000000..5a3a7bc
--- /dev/null
+++ b/panels/sound/gvc-mixer-card.h
@@ -0,0 +1,83 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008-2009 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_CARD_H
+#define __GVC_MIXER_CARD_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_CARD         (gvc_mixer_card_get_type ())
+#define GVC_MIXER_CARD(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_CARD, GvcMixerCard))
+#define GVC_MIXER_CARD_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_CARD, GvcMixerCardClass))
+#define GVC_IS_MIXER_CARD(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_CARD))
+#define GVC_IS_MIXER_CARD_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_CARD))
+#define GVC_MIXER_CARD_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_CARD, GvcMixerCardClass))
+
+typedef struct GvcMixerCardPrivate GvcMixerCardPrivate;
+
+typedef struct
+{
+        GObject                parent;
+        GvcMixerCardPrivate   *priv;
+} GvcMixerCard;
+
+typedef struct
+{
+        GObjectClass           parent_class;
+
+        /* vtable */
+} GvcMixerCardClass;
+
+typedef struct
+{
+        char *profile;
+        char *human_profile;
+        char *status;
+        guint priority;
+        guint n_sinks, n_sources;
+} GvcMixerCardProfile;
+
+GType                 gvc_mixer_card_get_type          (void);
+
+guint                 gvc_mixer_card_get_id            (GvcMixerCard *card);
+guint                 gvc_mixer_card_get_index         (GvcMixerCard *card);
+const char *          gvc_mixer_card_get_name          (GvcMixerCard *card);
+const char *          gvc_mixer_card_get_icon_name     (GvcMixerCard *card);
+GvcMixerCardProfile * gvc_mixer_card_get_profile       (GvcMixerCard *card);
+const GList *         gvc_mixer_card_get_profiles      (GvcMixerCard *card);
+
+gboolean              gvc_mixer_card_change_profile    (GvcMixerCard *card,
+                                                        const char *profile);
+
+/* private */
+gboolean              gvc_mixer_card_set_name          (GvcMixerCard *card,
+                                                        const char   *name);
+gboolean              gvc_mixer_card_set_icon_name     (GvcMixerCard *card,
+                                                        const char   *name);
+gboolean              gvc_mixer_card_set_profile       (GvcMixerCard *card,
+                                                        const char   *profile);
+gboolean              gvc_mixer_card_set_profiles      (GvcMixerCard *card,
+                                                        GList        *profiles);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_CARD_H */
diff --git a/panels/sound/gvc-mixer-control-private.h b/panels/sound/gvc-mixer-control-private.h
new file mode 100644
index 0000000..ac79975
--- /dev/null
+++ b/panels/sound/gvc-mixer-control-private.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_CONTROL_PRIVATE_H
+#define __GVC_MIXER_CONTROL_PRIVATE_H
+
+#include <glib-object.h>
+#include <pulse/pulseaudio.h>
+#include "gvc-mixer-stream.h"
+#include "gvc-mixer-card.h"
+
+G_BEGIN_DECLS
+
+pa_context *        gvc_mixer_control_get_pa_context      (GvcMixerControl *control);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_CONTROL_PRIVATE_H */
diff --git a/panels/sound/gvc-mixer-control.c b/panels/sound/gvc-mixer-control.c
new file mode 100644
index 0000000..d8d80f6
--- /dev/null
+++ b/panels/sound/gvc-mixer-control.c
@@ -0,0 +1,2232 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2006-2008 Lennart Poettering
+ * Copyright (C) 2008 Sjoerd Simons <sjoerd luon net>
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+#include <pulse/glib-mainloop.h>
+#include <pulse/ext-stream-restore.h>
+
+#include "gvc-mixer-control.h"
+#include "gvc-mixer-sink.h"
+#include "gvc-mixer-source.h"
+#include "gvc-mixer-sink-input.h"
+#include "gvc-mixer-source-output.h"
+#include "gvc-mixer-event-role.h"
+#include "gvc-mixer-card.h"
+#include "gvc-mixer-card-private.h"
+#include "gvc-channel-map-private.h"
+#include "gvc-mixer-control-private.h"
+
+#define GVC_MIXER_CONTROL_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControlPrivate))
+
+#define RECONNECT_DELAY 5
+
+enum {
+        PROP_0,
+        PROP_NAME
+};
+
+struct GvcMixerControlPrivate
+{
+        pa_glib_mainloop *pa_mainloop;
+        pa_mainloop_api  *pa_api;
+        pa_context       *pa_context;
+        int               n_outstanding;
+        guint             reconnect_id;
+        char             *name;
+
+        gboolean          default_sink_is_set;
+        guint             default_sink_id;
+        char             *default_sink_name;
+        gboolean          default_source_is_set;
+        guint             default_source_id;
+        char             *default_source_name;
+
+        gboolean          event_sink_input_is_set;
+        guint             event_sink_input_id;
+
+        GHashTable       *all_streams;
+        GHashTable       *sinks; /* fixed outputs */
+        GHashTable       *sources; /* fixed inputs */
+        GHashTable       *sink_inputs; /* routable output streams */
+        GHashTable       *source_outputs; /* routable input streams */
+        GHashTable       *clients;
+        GHashTable       *cards;
+
+        GvcMixerStream   *new_default_stream; /* new default stream, used in gvc_mixer_control_set_default_sink () */
+};
+
+enum {
+        CONNECTING,
+        READY,
+        STREAM_ADDED,
+        STREAM_REMOVED,
+        CARD_ADDED,
+        CARD_REMOVED,
+        DEFAULT_SINK_CHANGED,
+        DEFAULT_SOURCE_CHANGED,
+        LAST_SIGNAL
+};
+
+static guint signals [LAST_SIGNAL] = { 0, };
+
+static void     gvc_mixer_control_class_init (GvcMixerControlClass *klass);
+static void     gvc_mixer_control_init       (GvcMixerControl      *mixer_control);
+static void     gvc_mixer_control_finalize   (GObject              *object);
+
+G_DEFINE_TYPE (GvcMixerControl, gvc_mixer_control, G_TYPE_OBJECT)
+
+pa_context *
+gvc_mixer_control_get_pa_context (GvcMixerControl *control)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+        return control->priv->pa_context;
+}
+
+/**
+ * gvc_mixer_control_get_event_sink_input:
+ *
+ * @control:
+ *
+ * Returns: (transfer none):
+ */
+GvcMixerStream *
+gvc_mixer_control_get_event_sink_input (GvcMixerControl *control)
+{
+        GvcMixerStream *stream;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        stream = g_hash_table_lookup (control->priv->all_streams,
+                                      GUINT_TO_POINTER (control->priv->event_sink_input_id));
+
+        return stream;
+}
+
+static void
+gvc_mixer_control_stream_restore_cb (pa_context *c,
+                                     const pa_ext_stream_restore_info *info,
+                                     int eol,
+                                     void *userdata)
+{
+        pa_operation *o;
+        GvcMixerControl *control = (GvcMixerControl *) userdata;
+        pa_ext_stream_restore_info new_info;
+
+        if (eol || control->priv->new_default_stream == NULL)
+                return;
+
+        new_info.name = info->name;
+        new_info.channel_map = info->channel_map;
+        new_info.volume = info->volume;
+        new_info.mute = info->mute;
+
+        new_info.device = gvc_mixer_stream_get_name (control->priv->new_default_stream);
+
+        o = pa_ext_stream_restore_write (control->priv->pa_context,
+                                         PA_UPDATE_REPLACE,
+                                         &new_info, 1,
+                                         TRUE, NULL, NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_ext_stream_restore_write() failed: %s",
+                           pa_strerror (pa_context_errno (control->priv->pa_context)));
+                return;
+        }
+
+        g_debug ("Changed default device for %s to %s", info->name, info->device);
+
+        pa_operation_unref (o);
+}
+
+gboolean
+gvc_mixer_control_set_default_sink (GvcMixerControl *control,
+                                    GvcMixerStream  *stream)
+{
+        pa_operation *o;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE);
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        o = pa_context_set_default_sink (control->priv->pa_context,
+                                         gvc_mixer_stream_get_name (stream),
+                                         NULL,
+                                         NULL);
+        if (o == NULL) {
+                g_warning ("pa_context_set_default_sink() failed: %s",
+                           pa_strerror (pa_context_errno (control->priv->pa_context)));
+                return FALSE;
+        }
+
+        pa_operation_unref (o);
+
+        control->priv->new_default_stream = stream;
+        g_object_add_weak_pointer (G_OBJECT (stream), (gpointer *) &control->priv->new_default_stream);
+
+        o = pa_ext_stream_restore_read (control->priv->pa_context,
+                                        gvc_mixer_control_stream_restore_cb,
+                                        control);
+
+        if (o == NULL) {
+                g_warning ("pa_ext_stream_restore_read() failed: %s",
+                           pa_strerror (pa_context_errno (control->priv->pa_context)));
+                return FALSE;
+        }
+
+        pa_operation_unref (o);
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_control_set_default_source (GvcMixerControl *control,
+                                      GvcMixerStream  *stream)
+{
+        pa_operation *o;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE);
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        o = pa_context_set_default_source (control->priv->pa_context,
+                                           gvc_mixer_stream_get_name (stream),
+                                           NULL,
+                                           NULL);
+        if (o == NULL) {
+                g_warning ("pa_context_set_default_source() failed");
+                return FALSE;
+        }
+
+        pa_operation_unref (o);
+
+        return TRUE;
+}
+
+/**
+ * gvc_mixer_control_get_default_sink:
+ *
+ * @control:
+ *
+ * Returns: (transfer none):
+ */
+GvcMixerStream *
+gvc_mixer_control_get_default_sink (GvcMixerControl *control)
+{
+        GvcMixerStream *stream;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        if (control->priv->default_sink_is_set) {
+                stream = g_hash_table_lookup (control->priv->all_streams,
+                                              GUINT_TO_POINTER (control->priv->default_sink_id));
+        } else {
+                stream = NULL;
+        }
+
+        return stream;
+}
+
+/**
+ * gvc_mixer_control_get_default_source:
+ *
+ * @control:
+ *
+ * Returns: (transfer none):
+ */
+GvcMixerStream *
+gvc_mixer_control_get_default_source (GvcMixerControl *control)
+{
+        GvcMixerStream *stream;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        if (control->priv->default_source_is_set) {
+                stream = g_hash_table_lookup (control->priv->all_streams,
+                                              GUINT_TO_POINTER (control->priv->default_source_id));
+        } else {
+                stream = NULL;
+        }
+
+        return stream;
+}
+
+static gpointer
+gvc_mixer_control_lookup_id (GHashTable *hash_table,
+                             guint       id)
+{
+        return g_hash_table_lookup (hash_table,
+                                    GUINT_TO_POINTER (id));
+}
+
+/**
+ * gvc_mixer_control_lookup_stream_id:
+ *
+ * @control:
+ * @id:
+ *
+ * Returns: (transfer none):
+ */
+GvcMixerStream *
+gvc_mixer_control_lookup_stream_id (GvcMixerControl *control,
+                                    guint            id)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        return gvc_mixer_control_lookup_id (control->priv->all_streams, id);
+}
+
+/**
+ * gvc_mixer_control_lookup_card_id:
+ *
+ * @control:
+ * @id:
+ *
+ * Returns: (transfer none):
+ */
+GvcMixerCard *
+gvc_mixer_control_lookup_card_id (GvcMixerControl *control,
+                                  guint            id)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        return gvc_mixer_control_lookup_id (control->priv->cards, id);
+}
+
+static void
+listify_hash_values_hfunc (gpointer key,
+                           gpointer value,
+                           gpointer user_data)
+{
+        GSList **list = user_data;
+
+        *list = g_slist_prepend (*list, value);
+}
+
+static int
+gvc_name_collate (const char *namea,
+                  const char *nameb)
+{
+        if (nameb == NULL && namea == NULL)
+                return 0;
+        if (nameb == NULL)
+                return 1;
+        if (namea == NULL)
+                return -1;
+
+        return g_utf8_collate (namea, nameb);
+}
+
+static int
+gvc_card_collate (GvcMixerCard *a,
+                  GvcMixerCard *b)
+{
+        const char *namea;
+        const char *nameb;
+
+        g_return_val_if_fail (a == NULL || GVC_IS_MIXER_CARD (a), 0);
+        g_return_val_if_fail (b == NULL || GVC_IS_MIXER_CARD (b), 0);
+
+        namea = gvc_mixer_card_get_name (a);
+        nameb = gvc_mixer_card_get_name (b);
+
+        return gvc_name_collate (namea, nameb);
+}
+
+/**
+ * gvc_mixer_control_get_cards:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerCard):
+ */
+GSList *
+gvc_mixer_control_get_cards (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->cards,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_card_collate);
+}
+
+static int
+gvc_stream_collate (GvcMixerStream *a,
+                    GvcMixerStream *b)
+{
+        const char *namea;
+        const char *nameb;
+
+        g_return_val_if_fail (a == NULL || GVC_IS_MIXER_STREAM (a), 0);
+        g_return_val_if_fail (b == NULL || GVC_IS_MIXER_STREAM (b), 0);
+
+        namea = gvc_mixer_stream_get_name (a);
+        nameb = gvc_mixer_stream_get_name (b);
+
+        return gvc_name_collate (namea, nameb);
+}
+
+/**
+ * gvc_mixer_control_get_streams:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerStream):
+ */
+GSList *
+gvc_mixer_control_get_streams (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->all_streams,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate);
+}
+
+/**
+ * gvc_mixer_control_get_sinks:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerSink):
+ */
+GSList *
+gvc_mixer_control_get_sinks (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->sinks,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate);
+}
+
+/**
+ * gvc_mixer_control_get_sources:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerSource):
+ */
+GSList *
+gvc_mixer_control_get_sources (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->sources,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate);
+}
+
+/**
+ * gvc_mixer_control_get_sink_inputs:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerSinkInput):
+ */
+GSList *
+gvc_mixer_control_get_sink_inputs (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->sink_inputs,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate);
+}
+
+/**
+ * gvc_mixer_control_get_source_outputs:
+ *
+ * @control:
+ *
+ * Returns: (transfer container) (element-type Gvc.MixerSourceOutput):
+ */
+GSList *
+gvc_mixer_control_get_source_outputs (GvcMixerControl *control)
+{
+        GSList *retval;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), NULL);
+
+        retval = NULL;
+        g_hash_table_foreach (control->priv->source_outputs,
+                              listify_hash_values_hfunc,
+                              &retval);
+        return g_slist_sort (retval, (GCompareFunc) gvc_stream_collate);
+}
+
+static void
+dec_outstanding (GvcMixerControl *control)
+{
+        if (control->priv->n_outstanding <= 0) {
+                return;
+        }
+
+        if (--control->priv->n_outstanding <= 0) {
+                g_signal_emit (G_OBJECT (control), signals[READY], 0);
+        }
+}
+
+gboolean
+gvc_mixer_control_is_ready (GvcMixerControl *control)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE);
+
+        return (control->priv->n_outstanding == 0);
+}
+
+
+static void
+_set_default_source (GvcMixerControl *control,
+                     GvcMixerStream  *stream)
+{
+        guint new_id;
+
+        if (stream == NULL) {
+                control->priv->default_source_id = 0;
+                control->priv->default_source_is_set = FALSE;
+                g_signal_emit (control,
+                               signals[DEFAULT_SOURCE_CHANGED],
+                               0,
+                               PA_INVALID_INDEX);
+                return;
+        }
+
+        new_id = gvc_mixer_stream_get_id (stream);
+
+        if (control->priv->default_source_id != new_id) {
+                control->priv->default_source_id = new_id;
+                control->priv->default_source_is_set = TRUE;
+                g_signal_emit (control,
+                               signals[DEFAULT_SOURCE_CHANGED],
+                               0,
+                               new_id);
+        }
+}
+
+static void
+_set_default_sink (GvcMixerControl *control,
+                   GvcMixerStream  *stream)
+{
+        guint new_id;
+
+        if (stream == NULL) {
+                /* Don't tell front-ends about an unset default
+                 * sink if it's already unset */
+                if (control->priv->default_sink_is_set == FALSE)
+                        return;
+                control->priv->default_sink_id = 0;
+                control->priv->default_sink_is_set = FALSE;
+                g_signal_emit (control,
+                               signals[DEFAULT_SINK_CHANGED],
+                               0,
+                               PA_INVALID_INDEX);
+                return;
+        }
+
+        new_id = gvc_mixer_stream_get_id (stream);
+
+        if (control->priv->default_sink_id != new_id) {
+                control->priv->default_sink_id = new_id;
+                control->priv->default_sink_is_set = TRUE;
+                g_signal_emit (control,
+                               signals[DEFAULT_SINK_CHANGED],
+                               0,
+                               new_id);
+        }
+}
+
+static gboolean
+_stream_has_name (gpointer        key,
+                  GvcMixerStream *stream,
+                  const char     *name)
+{
+        const char *t_name;
+
+        t_name = gvc_mixer_stream_get_name (stream);
+
+        if (t_name != NULL
+            && name != NULL
+            && strcmp (t_name, name) == 0) {
+                return TRUE;
+        }
+
+        return FALSE;
+}
+
+static GvcMixerStream  *
+find_stream_for_name (GvcMixerControl *control,
+                      const char      *name)
+{
+        GvcMixerStream *stream;
+
+        stream = g_hash_table_find (control->priv->all_streams,
+                                    (GHRFunc)_stream_has_name,
+                                    (char *)name);
+        return stream;
+}
+
+static void
+update_default_source_from_name (GvcMixerControl *control,
+                                 const char      *name)
+{
+        gboolean changed;
+
+        if ((control->priv->default_source_name == NULL
+             && name != NULL)
+            || (control->priv->default_source_name != NULL
+                && name == NULL)
+            || strcmp (control->priv->default_source_name, name) != 0) {
+                changed = TRUE;
+        }
+
+        if (changed) {
+                GvcMixerStream *stream;
+
+                g_free (control->priv->default_source_name);
+                control->priv->default_source_name = g_strdup (name);
+
+                stream = find_stream_for_name (control, name);
+                _set_default_source (control, stream);
+        }
+}
+
+static void
+update_default_sink_from_name (GvcMixerControl *control,
+                               const char      *name)
+{
+        gboolean changed;
+
+        if ((control->priv->default_sink_name == NULL
+             && name != NULL)
+            || (control->priv->default_sink_name != NULL
+                && name == NULL)
+            || strcmp (control->priv->default_sink_name, name) != 0) {
+                changed = TRUE;
+        }
+
+        if (changed) {
+                GvcMixerStream *stream;
+                g_free (control->priv->default_sink_name);
+                control->priv->default_sink_name = g_strdup (name);
+
+                stream = find_stream_for_name (control, name);
+                _set_default_sink (control, stream);
+        }
+}
+
+static void
+update_server (GvcMixerControl      *control,
+               const pa_server_info *info)
+{
+        if (info->default_source_name != NULL) {
+                update_default_source_from_name (control, info->default_source_name);
+        }
+        if (info->default_sink_name != NULL) {
+                update_default_sink_from_name (control, info->default_sink_name);
+        }
+}
+
+static void
+remove_stream (GvcMixerControl *control,
+               GvcMixerStream  *stream)
+{
+        guint id;
+
+        g_object_ref (stream);
+
+        id = gvc_mixer_stream_get_id (stream);
+
+        if (id == control->priv->default_sink_id) {
+                _set_default_sink (control, NULL);
+        } else if (id == control->priv->default_source_id) {
+                _set_default_source (control, NULL);
+        }
+
+        g_hash_table_remove (control->priv->all_streams,
+                             GUINT_TO_POINTER (id));
+        g_signal_emit (G_OBJECT (control),
+                       signals[STREAM_REMOVED],
+                       0,
+                       gvc_mixer_stream_get_id (stream));
+        g_object_unref (stream);
+}
+
+static void
+add_stream (GvcMixerControl *control,
+            GvcMixerStream  *stream)
+{
+        g_hash_table_insert (control->priv->all_streams,
+                             GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)),
+                             stream);
+        g_signal_emit (G_OBJECT (control),
+                       signals[STREAM_ADDED],
+                       0,
+                       gvc_mixer_stream_get_id (stream));
+}
+
+static void
+update_sink (GvcMixerControl    *control,
+             const pa_sink_info *info)
+{
+        GvcMixerStream *stream;
+        gboolean        is_new;
+        pa_volume_t     max_volume;
+        GvcChannelMap  *map;
+        char            map_buff[PA_CHANNEL_MAP_SNPRINT_MAX];
+
+        pa_channel_map_snprint (map_buff, PA_CHANNEL_MAP_SNPRINT_MAX, &info->channel_map);
+#if 1
+        g_debug ("Updating sink: index=%u name='%s' description='%s' map='%s'",
+                 info->index,
+                 info->name,
+                 info->description,
+                 map_buff);
+#endif
+
+        map = NULL;
+        is_new = FALSE;
+        stream = g_hash_table_lookup (control->priv->sinks,
+                                      GUINT_TO_POINTER (info->index));
+        if (stream == NULL) {
+#if PA_MICRO > 15
+                GList *list = NULL;
+                guint i;
+#endif /* PA_MICRO > 15 */
+
+                map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map);
+                stream = gvc_mixer_sink_new (control->priv->pa_context,
+                                             info->index,
+                                             map);
+#if PA_MICRO > 15
+                for (i = 0; i < info->n_ports; i++) {
+                        GvcMixerStreamPort *port;
+
+                        port = g_new0 (GvcMixerStreamPort, 1);
+                        port->port = g_strdup (info->ports[i]->name);
+                        port->human_port = g_strdup (info->ports[i]->description);
+                        port->priority = info->ports[i]->priority;
+                        list = g_list_prepend (list, port);
+                }
+                gvc_mixer_stream_set_ports (stream, list);
+#endif /* PA_MICRO > 15 */
+                g_object_unref (map);
+                is_new = TRUE;
+        } else if (gvc_mixer_stream_is_running (stream)) {
+                /* Ignore events if volume changes are outstanding */
+                g_debug ("Ignoring event, volume changes are outstanding");
+                return;
+        }
+
+        max_volume = pa_cvolume_max (&info->volume);
+        gvc_mixer_stream_set_name (stream, info->name);
+        gvc_mixer_stream_set_card_index (stream, info->card);
+        gvc_mixer_stream_set_description (stream, info->description);
+        gvc_mixer_stream_set_icon_name (stream, "audio-card");
+        gvc_mixer_stream_set_volume (stream, (guint)max_volume);
+        gvc_mixer_stream_set_is_muted (stream, info->mute);
+        gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SINK_DECIBEL_VOLUME));
+        gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume);
+#if PA_MICRO > 15
+        if (info->active_port != NULL)
+                gvc_mixer_stream_set_port (stream, info->active_port->name);
+#endif /* PA_MICRO > 15 */
+
+        if (is_new) {
+                g_hash_table_insert (control->priv->sinks,
+                                     GUINT_TO_POINTER (info->index),
+                                     g_object_ref (stream));
+                add_stream (control, stream);
+        }
+
+        if (control->priv->default_sink_name != NULL
+            && info->name != NULL
+            && strcmp (control->priv->default_sink_name, info->name) == 0) {
+                _set_default_sink (control, stream);
+        }
+
+        if (map == NULL)
+                map = (GvcChannelMap *) gvc_mixer_stream_get_channel_map (stream);
+        gvc_channel_map_volume_changed (map, &info->volume, FALSE);
+}
+
+static void
+update_source (GvcMixerControl      *control,
+               const pa_source_info *info)
+{
+        GvcMixerStream *stream;
+        gboolean        is_new;
+        pa_volume_t     max_volume;
+
+#if 1
+        g_debug ("Updating source: index=%u name='%s' description='%s'",
+                 info->index,
+                 info->name,
+                 info->description);
+#endif
+
+        /* completely ignore monitors, they're not real sources */
+        if (info->monitor_of_sink != PA_INVALID_INDEX) {
+                return;
+        }
+
+        is_new = FALSE;
+
+        stream = g_hash_table_lookup (control->priv->sources,
+                                      GUINT_TO_POINTER (info->index));
+        if (stream == NULL) {
+#if PA_MICRO > 15
+                GList *list = NULL;
+                guint i;
+#endif /* PA_MICRO > 15 */
+                GvcChannelMap *map;
+
+                map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map);
+                stream = gvc_mixer_source_new (control->priv->pa_context,
+                                               info->index,
+                                               map);
+#if PA_MICRO > 15
+                for (i = 0; i < info->n_ports; i++) {
+                        GvcMixerStreamPort *port;
+
+                        port = g_new0 (GvcMixerStreamPort, 1);
+                        port->port = g_strdup (info->ports[i]->name);
+                        port->human_port = g_strdup (info->ports[i]->description);
+                        port->priority = info->ports[i]->priority;
+                        list = g_list_prepend (list, port);
+                }
+                gvc_mixer_stream_set_ports (stream, list);
+#endif /* PA_MICRO > 15 */
+
+                g_object_unref (map);
+                is_new = TRUE;
+        } else if (gvc_mixer_stream_is_running (stream)) {
+                /* Ignore events if volume changes are outstanding */
+                g_debug ("Ignoring event, volume changes are outstanding");
+                return;
+        }
+
+        max_volume = pa_cvolume_max (&info->volume);
+
+        gvc_mixer_stream_set_name (stream, info->name);
+        gvc_mixer_stream_set_card_index (stream, info->card);
+        gvc_mixer_stream_set_description (stream, info->description);
+        gvc_mixer_stream_set_icon_name (stream, "audio-input-microphone");
+        gvc_mixer_stream_set_volume (stream, (guint)max_volume);
+        gvc_mixer_stream_set_is_muted (stream, info->mute);
+        gvc_mixer_stream_set_can_decibel (stream, !!(info->flags & PA_SOURCE_DECIBEL_VOLUME));
+        gvc_mixer_stream_set_base_volume (stream, (guint32) info->base_volume);
+#if PA_MICRO > 15
+        if (info->active_port != NULL)
+                gvc_mixer_stream_set_port (stream, info->active_port->name);
+#endif /* PA_MICRO > 15 */
+
+        if (is_new) {
+                g_hash_table_insert (control->priv->sources,
+                                     GUINT_TO_POINTER (info->index),
+                                     g_object_ref (stream));
+                add_stream (control, stream);
+        }
+
+        if (control->priv->default_source_name != NULL
+            && info->name != NULL
+            && strcmp (control->priv->default_source_name, info->name) == 0) {
+                _set_default_source (control, stream);
+        }
+}
+
+static void
+set_icon_name_from_proplist (GvcMixerStream *stream,
+                             pa_proplist    *l,
+                             const char     *default_icon_name)
+{
+        const char *t;
+
+        if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ICON_NAME))) {
+                goto finish;
+        }
+
+        if ((t = pa_proplist_gets (l, PA_PROP_WINDOW_ICON_NAME))) {
+                goto finish;
+        }
+
+        if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ICON_NAME))) {
+                goto finish;
+        }
+
+        if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) {
+
+                if (strcmp (t, "video") == 0 ||
+                    strcmp (t, "phone") == 0) {
+                        goto finish;
+                }
+
+                if (strcmp (t, "music") == 0) {
+                        t = "audio";
+                        goto finish;
+                }
+
+                if (strcmp (t, "game") == 0) {
+                        t = "applications-games";
+                        goto finish;
+                }
+
+                if (strcmp (t, "event") == 0) {
+                        t = "dialog-information";
+                        goto finish;
+                }
+        }
+
+        t = default_icon_name;
+
+ finish:
+        gvc_mixer_stream_set_icon_name (stream, t);
+}
+
+static void
+set_is_event_stream_from_proplist (GvcMixerStream *stream,
+                                   pa_proplist    *l)
+{
+        const char *t;
+        gboolean is_event_stream;
+
+        is_event_stream = FALSE;
+
+        if ((t = pa_proplist_gets (l, PA_PROP_MEDIA_ROLE))) {
+                if (g_str_equal (t, "event"))
+                        is_event_stream = TRUE;
+        }
+
+        gvc_mixer_stream_set_is_event_stream (stream, is_event_stream);
+}
+
+static void
+set_application_id_from_proplist (GvcMixerStream *stream,
+                                  pa_proplist    *l)
+{
+        const char *t;
+
+        if ((t = pa_proplist_gets (l, PA_PROP_APPLICATION_ID))) {
+                gvc_mixer_stream_set_application_id (stream, t);
+        }
+}
+
+static void
+update_sink_input (GvcMixerControl          *control,
+                   const pa_sink_input_info *info)
+{
+        GvcMixerStream *stream;
+        gboolean        is_new;
+        pa_volume_t     max_volume;
+        const char     *name;
+
+#if 0
+        g_debug ("Updating sink input: index=%u name='%s' client=%u sink=%u",
+                 info->index,
+                 info->name,
+                 info->client,
+                 info->sink);
+#endif
+
+        is_new = FALSE;
+
+        stream = g_hash_table_lookup (control->priv->sink_inputs,
+                                      GUINT_TO_POINTER (info->index));
+        if (stream == NULL) {
+                GvcChannelMap *map;
+                map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map);
+                stream = gvc_mixer_sink_input_new (control->priv->pa_context,
+                                                   info->index,
+                                                   map);
+                g_object_unref (map);
+                is_new = TRUE;
+        } else if (gvc_mixer_stream_is_running (stream)) {
+                /* Ignore events if volume changes are outstanding */
+                g_debug ("Ignoring event, volume changes are outstanding");
+                return;
+        }
+
+        max_volume = pa_cvolume_max (&info->volume);
+
+        name = (const char *)g_hash_table_lookup (control->priv->clients,
+                                                  GUINT_TO_POINTER (info->client));
+        gvc_mixer_stream_set_name (stream, name);
+        gvc_mixer_stream_set_description (stream, info->name);
+
+        set_application_id_from_proplist (stream, info->proplist);
+        set_is_event_stream_from_proplist (stream, info->proplist);
+        set_icon_name_from_proplist (stream, info->proplist, "applications-multimedia");
+        gvc_mixer_stream_set_volume (stream, (guint)max_volume);
+        gvc_mixer_stream_set_is_muted (stream, info->mute);
+        gvc_mixer_stream_set_is_virtual (stream, info->client == PA_INVALID_INDEX);
+
+        if (is_new) {
+                g_hash_table_insert (control->priv->sink_inputs,
+                                     GUINT_TO_POINTER (info->index),
+                                     g_object_ref (stream));
+                add_stream (control, stream);
+        }
+}
+
+static void
+update_source_output (GvcMixerControl             *control,
+                      const pa_source_output_info *info)
+{
+        GvcMixerStream *stream;
+        gboolean        is_new;
+        const char     *name;
+
+#if 1
+        g_debug ("Updating source output: index=%u name='%s' client=%u source=%u",
+                 info->index,
+                 info->name,
+                 info->client,
+                 info->source);
+#endif
+
+        is_new = FALSE;
+        stream = g_hash_table_lookup (control->priv->source_outputs,
+                                      GUINT_TO_POINTER (info->index));
+        if (stream == NULL) {
+                GvcChannelMap *map;
+                map = gvc_channel_map_new_from_pa_channel_map (&info->channel_map);
+                stream = gvc_mixer_source_output_new (control->priv->pa_context,
+                                                      info->index,
+                                                      map);
+                g_object_unref (map);
+                is_new = TRUE;
+        }
+
+        name = (const char *)g_hash_table_lookup (control->priv->clients,
+                                                  GUINT_TO_POINTER (info->client));
+
+        gvc_mixer_stream_set_name (stream, name);
+        gvc_mixer_stream_set_description (stream, info->name);
+        set_application_id_from_proplist (stream, info->proplist);
+        set_is_event_stream_from_proplist (stream, info->proplist);
+        set_icon_name_from_proplist (stream, info->proplist, "audio-input-microphone");
+
+        if (is_new) {
+                g_hash_table_insert (control->priv->source_outputs,
+                                     GUINT_TO_POINTER (info->index),
+                                     g_object_ref (stream));
+                add_stream (control, stream);
+        }
+}
+
+static void
+update_client (GvcMixerControl      *control,
+               const pa_client_info *info)
+{
+#if 1
+        g_debug ("Updating client: index=%u name='%s'",
+                 info->index,
+                 info->name);
+#endif
+        g_hash_table_insert (control->priv->clients,
+                             GUINT_TO_POINTER (info->index),
+                             g_strdup (info->name));
+}
+
+static char *
+card_num_streams_to_status (guint sinks,
+                            guint sources)
+{
+        char *sinks_str;
+        char *sources_str;
+        char *ret;
+
+        if (sinks == 0 && sources == 0) {
+                /* translators:
+                 * The device has been disabled */
+                return g_strdup (_("Disabled"));
+        }
+        if (sinks == 0) {
+                sinks_str = NULL;
+        } else {
+                /* translators:
+                 * The number of sound outputs on a particular device */
+                sinks_str = g_strdup_printf (ngettext ("%u Output",
+                                                       "%u Outputs",
+                                                       sinks),
+                                             sinks);
+        }
+        if (sources == 0) {
+                sources_str = NULL;
+        } else {
+                /* translators:
+                 * The number of sound inputs on a particular device */
+                sources_str = g_strdup_printf (ngettext ("%u Input",
+                                                         "%u Inputs",
+                                                         sources),
+                                               sources);
+        }
+        if (sources_str == NULL)
+                return sinks_str;
+        if (sinks_str == NULL)
+                return sources_str;
+        ret = g_strdup_printf ("%s / %s", sinks_str, sources_str);
+        g_free (sinks_str);
+        g_free (sources_str);
+        return ret;
+}
+
+static void
+update_card (GvcMixerControl      *control,
+             const pa_card_info   *info)
+{
+        GvcMixerCard *card;
+        gboolean      is_new;
+#if 1
+        guint i;
+        const char *key;
+        void *state;
+
+        g_debug ("Udpating card %s (index: %u driver: %s):",
+                 info->name, info->index, info->driver);
+
+        for (i = 0; i < info->n_profiles; i++) {
+                struct pa_card_profile_info pi = info->profiles[i];
+                gboolean is_default;
+
+                is_default = (g_strcmp0 (pi.name, info->active_profile->name) == 0);
+                g_debug ("\tProfile '%s': %d sources %d sinks%s",
+                         pi.name, pi.n_sources, pi.n_sinks,
+                         is_default ? " (Current)" : "");
+        }
+        state = NULL;
+        key = pa_proplist_iterate (info->proplist, &state);
+        while (key != NULL) {
+                g_debug ("\tProperty: '%s' = '%s'",
+                        key, pa_proplist_gets (info->proplist, key));
+                key = pa_proplist_iterate (info->proplist, &state);
+        }
+#endif
+        card = g_hash_table_lookup (control->priv->cards,
+                                    GUINT_TO_POINTER (info->index));
+        if (card == NULL) {
+                GList *list = NULL;
+
+                for (i = 0; i < info->n_profiles; i++) {
+                        struct pa_card_profile_info pi = info->profiles[i];
+                        GvcMixerCardProfile *profile;
+
+                        profile = g_new0 (GvcMixerCardProfile, 1);
+                        profile->profile = g_strdup (pi.name);
+                        profile->human_profile = g_strdup (pi.description);
+                        profile->status = card_num_streams_to_status (pi.n_sinks, pi.n_sources);
+                        profile->n_sinks = pi.n_sinks;
+                        profile->n_sources = pi.n_sources;
+                        profile->priority = pi.priority;
+                        list = g_list_prepend (list, profile);
+                }
+                card = gvc_mixer_card_new (control->priv->pa_context,
+                                           info->index);
+                gvc_mixer_card_set_profiles (card, list);
+                is_new = TRUE;
+        }
+
+        gvc_mixer_card_set_name (card, pa_proplist_gets (info->proplist, "device.description"));
+        gvc_mixer_card_set_icon_name (card, pa_proplist_gets (info->proplist, "device.icon_name"));
+        gvc_mixer_card_set_profile (card, info->active_profile->name);
+
+        if (is_new) {
+                g_hash_table_insert (control->priv->cards,
+                                     GUINT_TO_POINTER (info->index),
+                                     g_object_ref (card));
+        }
+        g_signal_emit (G_OBJECT (control),
+                       signals[CARD_ADDED],
+                       0,
+                       info->index);
+}
+
+static void
+_pa_context_get_sink_info_cb (pa_context         *context,
+                              const pa_sink_info *i,
+                              int                 eol,
+                              void               *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY) {
+                        return;
+                }
+
+                g_warning ("Sink callback failure");
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_sink (control, i);
+}
+
+static void
+_pa_context_get_source_info_cb (pa_context           *context,
+                                const pa_source_info *i,
+                                int                   eol,
+                                void                 *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY) {
+                        return;
+                }
+
+                g_warning ("Source callback failure");
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_source (control, i);
+}
+
+static void
+_pa_context_get_sink_input_info_cb (pa_context               *context,
+                                    const pa_sink_input_info *i,
+                                    int                       eol,
+                                    void                     *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY) {
+                        return;
+                }
+
+                g_warning ("Sink input callback failure");
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_sink_input (control, i);
+}
+
+static void
+_pa_context_get_source_output_info_cb (pa_context                  *context,
+                                       const pa_source_output_info *i,
+                                       int                          eol,
+                                       void                        *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY) {
+                        return;
+                }
+
+                g_warning ("Source output callback failure");
+                return;
+        }
+
+        if (eol > 0)  {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_source_output (control, i);
+}
+
+static void
+_pa_context_get_client_info_cb (pa_context           *context,
+                                const pa_client_info *i,
+                                int                   eol,
+                                void                 *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY) {
+                        return;
+                }
+
+                g_warning ("Client callback failure");
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_client (control, i);
+}
+
+static void
+_pa_context_get_card_info_by_index_cb (pa_context *context,
+                                       const pa_card_info *i,
+                                       int eol,
+                                       void *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                if (pa_context_errno (context) == PA_ERR_NOENTITY)
+                        return;
+
+                g_warning ("Card callback failure");
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                return;
+        }
+
+        update_card (control, i);
+}
+
+static void
+_pa_context_get_server_info_cb (pa_context           *context,
+                                const pa_server_info *i,
+                                void                 *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (i == NULL) {
+                g_warning ("Server info callback failure");
+                return;
+        }
+
+        update_server (control, i);
+        dec_outstanding (control);
+}
+
+static void
+remove_event_role_stream (GvcMixerControl *control)
+{
+        g_debug ("Removing event role");
+}
+
+static void
+update_event_role_stream (GvcMixerControl                  *control,
+                          const pa_ext_stream_restore_info *info)
+{
+        GvcMixerStream *stream;
+        gboolean        is_new;
+        pa_volume_t     max_volume;
+
+        if (strcmp (info->name, "sink-input-by-media-role:event") != 0) {
+                return;
+        }
+
+#if 0
+        g_debug ("Updating event role: name='%s' device='%s'",
+                 info->name,
+                 info->device);
+#endif
+
+        is_new = FALSE;
+
+        if (!control->priv->event_sink_input_is_set) {
+                pa_channel_map pa_map;
+                GvcChannelMap *map;
+
+                pa_map.channels = 1;
+                pa_map.map[0] = PA_CHANNEL_POSITION_MONO;
+                map = gvc_channel_map_new_from_pa_channel_map (&pa_map);
+
+                stream = gvc_mixer_event_role_new (control->priv->pa_context,
+                                                   info->device,
+                                                   map);
+                control->priv->event_sink_input_id = gvc_mixer_stream_get_id (stream);
+                control->priv->event_sink_input_is_set = TRUE;
+
+                is_new = TRUE;
+        } else {
+                stream = g_hash_table_lookup (control->priv->all_streams,
+                                              GUINT_TO_POINTER (control->priv->event_sink_input_id));
+        }
+
+        max_volume = pa_cvolume_max (&info->volume);
+
+        gvc_mixer_stream_set_name (stream, _("System Sounds"));
+        gvc_mixer_stream_set_icon_name (stream, "multimedia-volume-control");
+        gvc_mixer_stream_set_volume (stream, (guint)max_volume);
+        gvc_mixer_stream_set_is_muted (stream, info->mute);
+
+        if (is_new) {
+                add_stream (control, stream);
+        }
+}
+
+static void
+_pa_ext_stream_restore_read_cb (pa_context                       *context,
+                                const pa_ext_stream_restore_info *i,
+                                int                               eol,
+                                void                             *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        if (eol < 0) {
+                g_debug ("Failed to initialized stream_restore extension: %s",
+                         pa_strerror (pa_context_errno (context)));
+                remove_event_role_stream (control);
+                return;
+        }
+
+        if (eol > 0) {
+                dec_outstanding (control);
+                /* If we don't have an event stream to restore, then
+                 * set one up with a default 100% volume */
+                if (!control->priv->event_sink_input_is_set) {
+                        pa_ext_stream_restore_info info;
+
+                        memset (&info, 0, sizeof(info));
+                        info.name = "sink-input-by-media-role:event";
+                        info.volume.channels = 1;
+                        info.volume.values[0] = PA_VOLUME_NORM;
+                        update_event_role_stream (control, &info);
+                }
+                return;
+        }
+
+        update_event_role_stream (control, i);
+}
+
+static void
+_pa_ext_stream_restore_subscribe_cb (pa_context *context,
+                                     void       *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+        pa_operation    *o;
+
+        o = pa_ext_stream_restore_read (context,
+                                        _pa_ext_stream_restore_read_cb,
+                                        control);
+        if (o == NULL) {
+                g_warning ("pa_ext_stream_restore_read() failed");
+                return;
+        }
+
+        pa_operation_unref (o);
+}
+
+static void
+req_update_server_info (GvcMixerControl *control,
+                        int              index)
+{
+        pa_operation *o;
+
+        o = pa_context_get_server_info (control->priv->pa_context,
+                                        _pa_context_get_server_info_cb,
+                                        control);
+        if (o == NULL) {
+                g_warning ("pa_context_get_server_info() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_client_info (GvcMixerControl *control,
+                        int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_client_info_list (control->priv->pa_context,
+                                                     _pa_context_get_client_info_cb,
+                                                     control);
+        } else {
+                o = pa_context_get_client_info (control->priv->pa_context,
+                                                index,
+                                                _pa_context_get_client_info_cb,
+                                                control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_client_info_list() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_card (GvcMixerControl *control,
+                 int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_card_info_list (control->priv->pa_context,
+                                                   _pa_context_get_card_info_by_index_cb,
+                                                   control);
+        } else {
+                o = pa_context_get_card_info_by_index (control->priv->pa_context,
+                                                       index,
+                                                       _pa_context_get_card_info_by_index_cb,
+                                                       control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_get_card_info_by_index() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_sink_info (GvcMixerControl *control,
+                      int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_sink_info_list (control->priv->pa_context,
+                                                   _pa_context_get_sink_info_cb,
+                                                   control);
+        } else {
+                o = pa_context_get_sink_info_by_index (control->priv->pa_context,
+                                                       index,
+                                                       _pa_context_get_sink_info_cb,
+                                                       control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_get_sink_info_list() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_source_info (GvcMixerControl *control,
+                        int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_source_info_list (control->priv->pa_context,
+                                                     _pa_context_get_source_info_cb,
+                                                     control);
+        } else {
+                o = pa_context_get_source_info_by_index(control->priv->pa_context,
+                                                        index,
+                                                        _pa_context_get_source_info_cb,
+                                                        control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_get_source_info_list() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_sink_input_info (GvcMixerControl *control,
+                            int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_sink_input_info_list (control->priv->pa_context,
+                                                         _pa_context_get_sink_input_info_cb,
+                                                         control);
+        } else {
+                o = pa_context_get_sink_input_info (control->priv->pa_context,
+                                                    index,
+                                                    _pa_context_get_sink_input_info_cb,
+                                                    control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_get_sink_input_info_list() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+req_update_source_output_info (GvcMixerControl *control,
+                               int              index)
+{
+        pa_operation *o;
+
+        if (index < 0) {
+                o = pa_context_get_source_output_info_list (control->priv->pa_context,
+                                                            _pa_context_get_source_output_info_cb,
+                                                            control);
+        } else {
+                o = pa_context_get_source_output_info (control->priv->pa_context,
+                                                       index,
+                                                       _pa_context_get_source_output_info_cb,
+                                                       control);
+        }
+
+        if (o == NULL) {
+                g_warning ("pa_context_get_source_output_info_list() failed");
+                return;
+        }
+        pa_operation_unref (o);
+}
+
+static void
+remove_client (GvcMixerControl *control,
+               guint            index)
+{
+        g_hash_table_remove (control->priv->clients,
+                             GUINT_TO_POINTER (index));
+}
+
+static void
+remove_card (GvcMixerControl *control,
+             guint            index)
+{
+        g_hash_table_remove (control->priv->cards,
+                             GUINT_TO_POINTER (index));
+
+        g_signal_emit (G_OBJECT (control),
+                       signals[CARD_REMOVED],
+                       0,
+                       index);
+}
+
+static void
+remove_sink (GvcMixerControl *control,
+             guint            index)
+{
+        GvcMixerStream *stream;
+
+#if 0
+        g_debug ("Removing sink: index=%u", index);
+#endif
+
+        stream = g_hash_table_lookup (control->priv->sinks,
+                                      GUINT_TO_POINTER (index));
+        if (stream == NULL) {
+                return;
+        }
+        g_hash_table_remove (control->priv->sinks,
+                             GUINT_TO_POINTER (index));
+
+        remove_stream (control, stream);
+}
+
+static void
+remove_source (GvcMixerControl *control,
+               guint            index)
+{
+        GvcMixerStream *stream;
+
+#if 0
+        g_debug ("Removing source: index=%u", index);
+#endif
+
+        stream = g_hash_table_lookup (control->priv->sources,
+                                      GUINT_TO_POINTER (index));
+        if (stream == NULL) {
+                return;
+        }
+        g_hash_table_remove (control->priv->sources,
+                             GUINT_TO_POINTER (index));
+
+        remove_stream (control, stream);
+}
+
+static void
+remove_sink_input (GvcMixerControl *control,
+                   guint            index)
+{
+        GvcMixerStream *stream;
+
+#if 0
+        g_debug ("Removing sink input: index=%u", index);
+#endif
+        stream = g_hash_table_lookup (control->priv->sink_inputs,
+                                      GUINT_TO_POINTER (index));
+        if (stream == NULL) {
+                return;
+        }
+        g_hash_table_remove (control->priv->sink_inputs,
+                             GUINT_TO_POINTER (index));
+
+        remove_stream (control, stream);
+}
+
+static void
+remove_source_output (GvcMixerControl *control,
+                      guint            index)
+{
+        GvcMixerStream *stream;
+
+#if 0
+        g_debug ("Removing source output: index=%u", index);
+#endif
+
+        stream = g_hash_table_lookup (control->priv->source_outputs,
+                                      GUINT_TO_POINTER (index));
+        if (stream == NULL) {
+                return;
+        }
+        g_hash_table_remove (control->priv->source_outputs,
+                             GUINT_TO_POINTER (index));
+
+        remove_stream (control, stream);
+}
+
+static void
+_pa_context_subscribe_cb (pa_context                  *context,
+                          pa_subscription_event_type_t t,
+                          uint32_t                     index,
+                          void                        *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        switch (t & PA_SUBSCRIPTION_EVENT_FACILITY_MASK) {
+        case PA_SUBSCRIPTION_EVENT_SINK:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_sink (control, index);
+                } else {
+                        req_update_sink_info (control, index);
+                }
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_SOURCE:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_source (control, index);
+                } else {
+                        req_update_source_info (control, index);
+                }
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_SINK_INPUT:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_sink_input (control, index);
+                } else {
+                        req_update_sink_input_info (control, index);
+                }
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_source_output (control, index);
+                } else {
+                        req_update_source_output_info (control, index);
+                }
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_CLIENT:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_client (control, index);
+                } else {
+                        req_update_client_info (control, index);
+                }
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_SERVER:
+                req_update_server_info (control, index);
+                break;
+
+        case PA_SUBSCRIPTION_EVENT_CARD:
+                if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
+                        remove_card (control, index);
+                } else {
+                        req_update_card (control, index);
+                }
+                break;
+        }
+}
+
+static void
+gvc_mixer_control_ready (GvcMixerControl *control)
+{
+        pa_operation *o;
+
+        pa_context_set_subscribe_callback (control->priv->pa_context,
+                                           _pa_context_subscribe_cb,
+                                           control);
+        o = pa_context_subscribe (control->priv->pa_context,
+                                  (pa_subscription_mask_t)
+                                  (PA_SUBSCRIPTION_MASK_SINK|
+                                   PA_SUBSCRIPTION_MASK_SOURCE|
+                                   PA_SUBSCRIPTION_MASK_SINK_INPUT|
+                                   PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT|
+                                   PA_SUBSCRIPTION_MASK_CLIENT|
+                                   PA_SUBSCRIPTION_MASK_SERVER|
+                                   PA_SUBSCRIPTION_MASK_CARD),
+                                  NULL,
+                                  NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_subscribe() failed");
+                return;
+        }
+        pa_operation_unref (o);
+
+        req_update_server_info (control, -1);
+        req_update_client_info (control, -1);
+        req_update_sink_info (control, -1);
+        req_update_source_info (control, -1);
+        req_update_sink_input_info (control, -1);
+        req_update_source_output_info (control, -1);
+        req_update_card (control, -1);
+
+        control->priv->n_outstanding = 6;
+
+        /* This call is not always supported */
+        o = pa_ext_stream_restore_read (control->priv->pa_context,
+                                        _pa_ext_stream_restore_read_cb,
+                                        control);
+        if (o != NULL) {
+                pa_operation_unref (o);
+                control->priv->n_outstanding++;
+
+                pa_ext_stream_restore_set_subscribe_cb (control->priv->pa_context,
+                                                        _pa_ext_stream_restore_subscribe_cb,
+                                                        control);
+
+                o = pa_ext_stream_restore_subscribe (control->priv->pa_context,
+                                                     1,
+                                                     NULL,
+                                                     NULL);
+                if (o != NULL) {
+                        pa_operation_unref (o);
+                }
+
+        } else {
+                g_debug ("Failed to initialized stream_restore extension: %s",
+                         pa_strerror (pa_context_errno (control->priv->pa_context)));
+        }
+}
+
+static void
+gvc_mixer_new_pa_context (GvcMixerControl *self)
+{
+        pa_proplist     *proplist;
+
+        g_return_if_fail (self);
+        g_return_if_fail (!self->priv->pa_context);
+
+        proplist = pa_proplist_new ();
+        pa_proplist_sets (proplist,
+                          PA_PROP_APPLICATION_NAME,
+                          self->priv->name);
+        pa_proplist_sets (proplist,
+                          PA_PROP_APPLICATION_ID,
+                          "org.gnome.VolumeControl");
+        pa_proplist_sets (proplist,
+                          PA_PROP_APPLICATION_ICON_NAME,
+                          "multimedia-volume-control");
+        pa_proplist_sets (proplist,
+                          PA_PROP_APPLICATION_VERSION,
+                          PACKAGE_VERSION);
+
+        self->priv->pa_context = pa_context_new_with_proplist (self->priv->pa_api, NULL, proplist);
+
+        pa_proplist_free (proplist);
+        g_assert (self->priv->pa_context);
+}
+
+static void
+remove_all_streams (GvcMixerControl *control, GHashTable *hash_table)
+{
+        GHashTableIter iter;
+        gpointer key, value;
+
+        g_hash_table_iter_init (&iter, hash_table);
+        while (g_hash_table_iter_next (&iter, &key, &value)) {
+                remove_stream (control, value);
+                g_hash_table_iter_remove (&iter);
+        }
+}
+
+static gboolean
+idle_reconnect (gpointer data)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (data);
+        GHashTableIter iter;
+        gpointer key, value;
+
+        g_return_val_if_fail (control, FALSE);
+
+        if (control->priv->pa_context) {
+                pa_context_unref (control->priv->pa_context);
+                control->priv->pa_context = NULL;
+                gvc_mixer_new_pa_context (control);
+        }
+
+        remove_all_streams (control, control->priv->sinks);
+        remove_all_streams (control, control->priv->sources);
+        remove_all_streams (control, control->priv->sink_inputs);
+        remove_all_streams (control, control->priv->source_outputs);
+
+        g_hash_table_iter_init (&iter, control->priv->clients);
+        while (g_hash_table_iter_next (&iter, &key, &value))
+                g_hash_table_iter_remove (&iter);
+
+        gvc_mixer_control_open (control); /* cannot fail */
+
+        control->priv->reconnect_id = 0;
+        return FALSE;
+}
+
+static void
+_pa_context_state_cb (pa_context *context,
+                      void       *userdata)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (userdata);
+
+        switch (pa_context_get_state (context)) {
+        case PA_CONTEXT_UNCONNECTED:
+        case PA_CONTEXT_CONNECTING:
+        case PA_CONTEXT_AUTHORIZING:
+        case PA_CONTEXT_SETTING_NAME:
+                break;
+
+        case PA_CONTEXT_READY:
+                gvc_mixer_control_ready (control);
+                break;
+
+        case PA_CONTEXT_FAILED:
+                g_warning ("Connection failed, reconnecting...");
+                if (control->priv->reconnect_id == 0)
+                        control->priv->reconnect_id = g_timeout_add_seconds (RECONNECT_DELAY, idle_reconnect, control);
+                break;
+
+        case PA_CONTEXT_TERMINATED:
+        default:
+                /* FIXME: */
+                break;
+        }
+}
+
+gboolean
+gvc_mixer_control_open (GvcMixerControl *control)
+{
+        int res;
+
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE);
+        g_return_val_if_fail (control->priv->pa_context != NULL, FALSE);
+        g_return_val_if_fail (pa_context_get_state (control->priv->pa_context) == PA_CONTEXT_UNCONNECTED, FALSE);
+
+        pa_context_set_state_callback (control->priv->pa_context,
+                                       _pa_context_state_cb,
+                                       control);
+
+        g_signal_emit (G_OBJECT (control), signals[CONNECTING], 0);
+        res = pa_context_connect (control->priv->pa_context, NULL, (pa_context_flags_t) PA_CONTEXT_NOFAIL, NULL);
+        if (res < 0) {
+                g_warning ("Failed to connect context: %s",
+                           pa_strerror (pa_context_errno (control->priv->pa_context)));
+        }
+
+        return res;
+}
+
+gboolean
+gvc_mixer_control_close (GvcMixerControl *control)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_CONTROL (control), FALSE);
+        g_return_val_if_fail (control->priv->pa_context != NULL, FALSE);
+
+        pa_context_disconnect (control->priv->pa_context);
+        return TRUE;
+}
+
+static void
+gvc_mixer_control_dispose (GObject *object)
+{
+        GvcMixerControl *control = GVC_MIXER_CONTROL (object);
+
+        if (control->priv->pa_context != NULL) {
+                pa_context_unref (control->priv->pa_context);
+                control->priv->pa_context = NULL;
+        }
+
+        if (control->priv->default_source_name != NULL) {
+                g_free (control->priv->default_source_name);
+                control->priv->default_source_name = NULL;
+        }
+        if (control->priv->default_sink_name != NULL) {
+                g_free (control->priv->default_sink_name);
+                control->priv->default_sink_name = NULL;
+        }
+
+        if (control->priv->pa_mainloop != NULL) {
+                pa_glib_mainloop_free (control->priv->pa_mainloop);
+                control->priv->pa_mainloop = NULL;
+        }
+
+        if (control->priv->all_streams != NULL) {
+                g_hash_table_destroy (control->priv->all_streams);
+                control->priv->all_streams = NULL;
+        }
+
+        if (control->priv->sinks != NULL) {
+                g_hash_table_destroy (control->priv->sinks);
+                control->priv->sinks = NULL;
+        }
+        if (control->priv->sources != NULL) {
+                g_hash_table_destroy (control->priv->sources);
+                control->priv->sources = NULL;
+        }
+        if (control->priv->sink_inputs != NULL) {
+                g_hash_table_destroy (control->priv->sink_inputs);
+                control->priv->sink_inputs = NULL;
+        }
+        if (control->priv->source_outputs != NULL) {
+                g_hash_table_destroy (control->priv->source_outputs);
+                control->priv->source_outputs = NULL;
+        }
+        if (control->priv->clients != NULL) {
+                g_hash_table_destroy (control->priv->clients);
+                control->priv->clients = NULL;
+        }
+        if (control->priv->cards != NULL) {
+                g_hash_table_destroy (control->priv->cards);
+                control->priv->cards = NULL;
+        }
+
+        G_OBJECT_CLASS (gvc_mixer_control_parent_class)->dispose (object);
+}
+
+static void
+gvc_mixer_control_set_property (GObject       *object,
+                                guint          prop_id,
+                                const GValue  *value,
+                                GParamSpec    *pspec)
+{
+        GvcMixerControl *self = GVC_MIXER_CONTROL (object);
+
+        switch (prop_id) {
+        case PROP_NAME:
+                g_free (self->priv->name);
+                self->priv->name = g_value_dup_string (value);
+                g_object_notify (G_OBJECT (self), "name");
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_mixer_control_get_property (GObject     *object,
+                                guint        prop_id,
+                                GValue      *value,
+                                GParamSpec  *pspec)
+{
+        GvcMixerControl *self = GVC_MIXER_CONTROL (object);
+
+        switch (prop_id) {
+        case PROP_NAME:
+                g_value_set_string (value, self->priv->name);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+
+static GObject *
+gvc_mixer_control_constructor (GType                  type,
+                               guint                  n_construct_properties,
+                               GObjectConstructParam *construct_params)
+{
+        GObject         *object;
+        GvcMixerControl *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_control_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_CONTROL (object);
+
+        gvc_mixer_new_pa_context (self);
+
+        return object;
+}
+
+static void
+gvc_mixer_control_class_init (GvcMixerControlClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_control_constructor;
+        object_class->dispose = gvc_mixer_control_dispose;
+        object_class->finalize = gvc_mixer_control_finalize;
+        object_class->set_property = gvc_mixer_control_set_property;
+        object_class->get_property = gvc_mixer_control_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_NAME,
+                                         g_param_spec_string ("name",
+                                                              "Name",
+                                                              "Name to display for this mixer control",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+
+        signals [CONNECTING] =
+                g_signal_new ("connecting",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, connecting),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE, 0);
+        signals [READY] =
+                g_signal_new ("ready",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, ready),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__VOID,
+                              G_TYPE_NONE, 0);
+        signals [STREAM_ADDED] =
+                g_signal_new ("stream-added",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, stream_added),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [STREAM_REMOVED] =
+                g_signal_new ("stream-removed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, stream_removed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [CARD_ADDED] =
+                g_signal_new ("card-added",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, card_added),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [CARD_REMOVED] =
+                g_signal_new ("card-removed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, card_removed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [DEFAULT_SINK_CHANGED] =
+                g_signal_new ("default-sink-changed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, default_sink_changed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+        signals [DEFAULT_SOURCE_CHANGED] =
+                g_signal_new ("default-source-changed",
+                              G_TYPE_FROM_CLASS (klass),
+                              G_SIGNAL_RUN_LAST,
+                              G_STRUCT_OFFSET (GvcMixerControlClass, default_source_changed),
+                              NULL, NULL,
+                              g_cclosure_marshal_VOID__UINT,
+                              G_TYPE_NONE, 1, G_TYPE_UINT);
+
+        g_type_class_add_private (klass, sizeof (GvcMixerControlPrivate));
+}
+
+static void
+gvc_mixer_control_init (GvcMixerControl *control)
+{
+        control->priv = GVC_MIXER_CONTROL_GET_PRIVATE (control);
+
+        control->priv->pa_mainloop = pa_glib_mainloop_new (g_main_context_default ());
+        g_assert (control->priv->pa_mainloop);
+
+        control->priv->pa_api = pa_glib_mainloop_get_api (control->priv->pa_mainloop);
+        g_assert (control->priv->pa_api);
+
+        control->priv->all_streams = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+        control->priv->sinks = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+        control->priv->sources = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+        control->priv->sink_inputs = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+        control->priv->source_outputs = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+        control->priv->cards = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_object_unref);
+
+        control->priv->clients = g_hash_table_new_full (NULL, NULL, NULL, (GDestroyNotify)g_free);
+}
+
+static void
+gvc_mixer_control_finalize (GObject *object)
+{
+        GvcMixerControl *mixer_control;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_CONTROL (object));
+
+        mixer_control = GVC_MIXER_CONTROL (object);
+        g_free (mixer_control->priv->name);
+        mixer_control->priv->name = NULL;
+
+        g_return_if_fail (mixer_control->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_control_parent_class)->finalize (object);
+}
+
+GvcMixerControl *
+gvc_mixer_control_new (const char *name)
+{
+        GObject *control;
+        control = g_object_new (GVC_TYPE_MIXER_CONTROL,
+                                "name", name,
+                                NULL);
+        return GVC_MIXER_CONTROL (control);
+}
diff --git a/panels/sound/gvc-mixer-control.h b/panels/sound/gvc-mixer-control.h
new file mode 100644
index 0000000..d32b204
--- /dev/null
+++ b/panels/sound/gvc-mixer-control.h
@@ -0,0 +1,96 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_CONTROL_H
+#define __GVC_MIXER_CONTROL_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+#include "gvc-mixer-card.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_CONTROL         (gvc_mixer_control_get_type ())
+#define GVC_MIXER_CONTROL(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControl))
+#define GVC_MIXER_CONTROL_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_CONTROL, GvcMixerControlClass))
+#define GVC_IS_MIXER_CONTROL(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_CONTROL))
+#define GVC_IS_MIXER_CONTROL_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_CONTROL))
+#define GVC_MIXER_CONTROL_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_CONTROL, GvcMixerControlClass))
+
+typedef struct GvcMixerControlPrivate GvcMixerControlPrivate;
+
+typedef struct
+{
+        GObject                 parent;
+        GvcMixerControlPrivate *priv;
+} GvcMixerControl;
+
+typedef struct
+{
+        GObjectClass            parent_class;
+
+        void (*connecting)             (GvcMixerControl *control);
+        void (*ready)                  (GvcMixerControl *control);
+        void (*stream_added)           (GvcMixerControl *control,
+                                        guint            id);
+        void (*stream_removed)         (GvcMixerControl *control,
+                                        guint            id);
+        void (*card_added)             (GvcMixerControl *control,
+                                        guint            id);
+        void (*card_removed)           (GvcMixerControl *control,
+                                        guint            id);
+        void (*default_sink_changed)   (GvcMixerControl *control,
+                                        guint            id);
+        void (*default_source_changed) (GvcMixerControl *control,
+                                        guint            id);
+} GvcMixerControlClass;
+
+GType               gvc_mixer_control_get_type            (void);
+
+GvcMixerControl *   gvc_mixer_control_new                 (const char *name);
+
+gboolean            gvc_mixer_control_open                (GvcMixerControl *control);
+gboolean            gvc_mixer_control_close               (GvcMixerControl *control);
+gboolean            gvc_mixer_control_is_ready            (GvcMixerControl *control);
+
+GSList *            gvc_mixer_control_get_cards           (GvcMixerControl *control);
+GSList *            gvc_mixer_control_get_streams         (GvcMixerControl *control);
+GSList *            gvc_mixer_control_get_sinks           (GvcMixerControl *control);
+GSList *            gvc_mixer_control_get_sources         (GvcMixerControl *control);
+GSList *            gvc_mixer_control_get_sink_inputs     (GvcMixerControl *control);
+GSList *            gvc_mixer_control_get_source_outputs  (GvcMixerControl *control);
+
+GvcMixerStream *    gvc_mixer_control_lookup_stream_id    (GvcMixerControl *control,
+                                                           guint            id);
+GvcMixerCard   *    gvc_mixer_control_lookup_card_id      (GvcMixerControl *control,
+                                                           guint            id);
+
+GvcMixerStream *    gvc_mixer_control_get_default_sink     (GvcMixerControl *control);
+GvcMixerStream *    gvc_mixer_control_get_default_source   (GvcMixerControl *control);
+GvcMixerStream *    gvc_mixer_control_get_event_sink_input (GvcMixerControl *control);
+
+gboolean            gvc_mixer_control_set_default_sink     (GvcMixerControl *control,
+                                                            GvcMixerStream  *stream);
+gboolean            gvc_mixer_control_set_default_source   (GvcMixerControl *control,
+                                                            GvcMixerStream  *stream);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_CONTROL_H */
diff --git a/panels/sound/gvc-mixer-dialog.c b/panels/sound/gvc-mixer-dialog.c
new file mode 100644
index 0000000..fa4ca3b
--- /dev/null
+++ b/panels/sound/gvc-mixer-dialog.c
@@ -0,0 +1,2091 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-channel-bar.h"
+#include "gvc-balance-bar.h"
+#include "gvc-combo-box.h"
+#include "gvc-mixer-control.h"
+#include "gvc-mixer-card.h"
+#include "gvc-mixer-sink.h"
+#include "gvc-mixer-source.h"
+#include "gvc-mixer-source-output.h"
+#include "gvc-mixer-dialog.h"
+#include "gvc-sound-theme-chooser.h"
+#include "gvc-level-bar.h"
+#include "gvc-speaker-test.h"
+#include "gvc-mixer-control-private.h"
+
+#define SCALE_SIZE 128
+
+#define GVC_MIXER_DIALOG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogPrivate))
+
+struct GvcMixerDialogPrivate
+{
+        GvcMixerControl *mixer_control;
+        GHashTable      *bars;
+        GtkWidget       *notebook;
+        GtkWidget       *output_bar;
+        GtkWidget       *input_bar;
+        GtkWidget       *input_level_bar;
+        GtkWidget       *effects_bar;
+        GtkWidget       *output_stream_box;
+        GtkWidget       *sound_effects_box;
+        GtkWidget       *hw_box;
+        GtkWidget       *hw_treeview;
+        GtkWidget       *hw_settings_box;
+        GtkWidget       *hw_profile_combo;
+        GtkWidget       *input_box;
+        GtkWidget       *output_box;
+        GtkWidget       *applications_box;
+        GtkWidget       *no_apps_label;
+        GtkWidget       *output_treeview;
+        GtkWidget       *output_settings_box;
+        GtkWidget       *output_balance_bar;
+        GtkWidget       *output_fade_bar;
+        GtkWidget       *output_lfe_bar;
+        GtkWidget       *output_port_combo;
+        GtkWidget       *input_treeview;
+        GtkWidget       *input_port_combo;
+        GtkWidget       *input_settings_box;
+        GtkWidget       *sound_theme_chooser;
+        GtkWidget       *click_feedback_button;
+        GtkWidget       *audible_bell_button;
+        GtkSizeGroup    *size_group;
+
+        gdouble          last_input_peak;
+        guint            num_apps;
+};
+
+enum {
+        NAME_COLUMN,
+        DEVICE_COLUMN,
+        ACTIVE_COLUMN,
+        ID_COLUMN,
+        SPEAKERS_COLUMN,
+        NUM_COLUMNS
+};
+
+enum {
+        HW_ID_COLUMN,
+        HW_ICON_COLUMN,
+        HW_NAME_COLUMN,
+        HW_STATUS_COLUMN,
+        HW_PROFILE_COLUMN,
+        HW_PROFILE_HUMAN_COLUMN,
+        HW_SENSITIVE_COLUMN,
+        HW_NUM_COLUMNS
+};
+
+enum
+{
+        PROP_0,
+        PROP_MIXER_CONTROL
+};
+
+static void     gvc_mixer_dialog_class_init (GvcMixerDialogClass *klass);
+static void     gvc_mixer_dialog_init       (GvcMixerDialog      *mixer_dialog);
+static void     gvc_mixer_dialog_finalize   (GObject             *object);
+
+static void     bar_set_stream              (GvcMixerDialog      *dialog,
+                                             GtkWidget           *bar,
+                                             GvcMixerStream      *stream);
+
+static void     on_adjustment_value_changed (GtkAdjustment  *adjustment,
+                                             GvcMixerDialog *dialog);
+
+G_DEFINE_TYPE (GvcMixerDialog, gvc_mixer_dialog, GTK_TYPE_VBOX)
+
+static void
+update_default_input (GvcMixerDialog *dialog)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        gboolean      ret;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
+        ret = gtk_tree_model_get_iter_first (model, &iter);
+        if (ret == FALSE) {
+                g_debug ("No default input selected or available");
+                return;
+        }
+        do {
+                gboolean        toggled;
+                gboolean        is_default;
+                guint           id;
+                GvcMixerStream *stream;
+
+                gtk_tree_model_get (model, &iter,
+                                    ID_COLUMN, &id,
+                                    ACTIVE_COLUMN, &toggled,
+                                    -1);
+
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+                if (stream == NULL) {
+                        g_warning ("Unable to find stream for id: %u", id);
+                        continue;
+                }
+
+                is_default = FALSE;
+                if (stream == gvc_mixer_control_get_default_source (dialog->priv->mixer_control)) {
+                        is_default = TRUE;
+                }
+
+                gtk_list_store_set (GTK_LIST_STORE (model),
+                                    &iter,
+                                    ACTIVE_COLUMN, is_default,
+                                    -1);
+        } while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+update_description (GvcMixerDialog *dialog,
+                    guint column,
+                    const char *value,
+                    GvcMixerStream *stream)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        guint         id;
+
+        if (GVC_IS_MIXER_SOURCE (stream))
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
+        else if (GVC_IS_MIXER_SINK (stream))
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
+        else
+                g_assert_not_reached ();
+        gtk_tree_model_get_iter_first (model, &iter);
+
+        id = gvc_mixer_stream_get_id (stream);
+        do {
+                guint       current_id;
+
+                gtk_tree_model_get (model, &iter,
+                                    ID_COLUMN, &current_id,
+                                    -1);
+                if (id != current_id)
+                        continue;
+
+                gtk_list_store_set (GTK_LIST_STORE (model),
+                                    &iter,
+                                    column, value,
+                                    -1);
+                break;
+        } while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+port_selection_changed (GvcComboBox *combo_box,
+                        const char  *port,
+                        GvcMixerDialog *dialog)
+{
+        GvcMixerStream *stream;
+
+        stream = g_object_get_data (G_OBJECT (combo_box), "stream");
+        if (stream == NULL) {
+                g_warning ("Could not find stream for port combo box");
+                return;
+        }
+        if (gvc_mixer_stream_change_port (stream, port) == FALSE) {
+                g_warning ("Could not change port for stream");
+        }
+}
+
+static void
+update_output_settings (GvcMixerDialog *dialog)
+{
+        GvcMixerStream      *stream;
+        const GvcChannelMap *map;
+        const GList         *ports;
+
+        g_debug ("Updating output settings");
+        if (dialog->priv->output_balance_bar != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box),
+                                      dialog->priv->output_balance_bar);
+                dialog->priv->output_balance_bar = NULL;
+        }
+        if (dialog->priv->output_fade_bar != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box),
+                                      dialog->priv->output_fade_bar);
+                dialog->priv->output_fade_bar = NULL;
+        }
+        if (dialog->priv->output_lfe_bar != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box),
+                                      dialog->priv->output_lfe_bar);
+                dialog->priv->output_lfe_bar = NULL;
+        }
+        if (dialog->priv->output_port_combo != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->output_settings_box),
+                                      dialog->priv->output_port_combo);
+                dialog->priv->output_port_combo = NULL;
+        }
+
+        stream = gvc_mixer_control_get_default_sink (dialog->priv->mixer_control);
+        if (stream == NULL) {
+                g_warning ("Default sink stream not found");
+                return;
+        }
+
+        gvc_channel_bar_set_base_volume (GVC_CHANNEL_BAR (dialog->priv->output_bar),
+                                         gvc_mixer_stream_get_base_volume (stream));
+        gvc_channel_bar_set_is_amplified (GVC_CHANNEL_BAR (dialog->priv->output_bar),
+                                          gvc_mixer_stream_get_can_decibel (stream));
+
+        map = gvc_mixer_stream_get_channel_map (stream);
+        if (map == NULL) {
+                g_warning ("Default sink stream has no channel map");
+                return;
+        }
+
+        dialog->priv->output_balance_bar = gvc_balance_bar_new (map, BALANCE_TYPE_RL);
+        if (dialog->priv->size_group != NULL) {
+                gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_balance_bar),
+                                                dialog->priv->size_group,
+                                                TRUE);
+        }
+        gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box),
+                            dialog->priv->output_balance_bar,
+                            FALSE, FALSE, 6);
+        gtk_widget_show (dialog->priv->output_balance_bar);
+
+        if (gvc_channel_map_can_fade (map)) {
+                dialog->priv->output_fade_bar = gvc_balance_bar_new (map, BALANCE_TYPE_FR);
+                if (dialog->priv->size_group != NULL) {
+                        gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_fade_bar),
+                                                        dialog->priv->size_group,
+                                                        TRUE);
+                }
+                gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box),
+                                    dialog->priv->output_fade_bar,
+                                    FALSE, FALSE, 6);
+                gtk_widget_show (dialog->priv->output_fade_bar);
+        }
+
+        if (gvc_channel_map_has_lfe (map)) {
+                dialog->priv->output_lfe_bar = gvc_balance_bar_new (map, BALANCE_TYPE_LFE);
+                if (dialog->priv->size_group != NULL) {
+                        gvc_balance_bar_set_size_group (GVC_BALANCE_BAR (dialog->priv->output_lfe_bar),
+                                                        dialog->priv->size_group,
+                                                        TRUE);
+                }
+                gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box),
+                                    dialog->priv->output_lfe_bar,
+                                    FALSE, FALSE, 6);
+                gtk_widget_show (dialog->priv->output_lfe_bar);
+        }
+
+        ports = gvc_mixer_stream_get_ports (stream);
+        if (ports != NULL) {
+                const GvcMixerStreamPort *port;
+                port = gvc_mixer_stream_get_port (stream);
+
+                dialog->priv->output_port_combo = gvc_combo_box_new (_("Co_nnector:"));
+                gvc_combo_box_set_ports (GVC_COMBO_BOX (dialog->priv->output_port_combo),
+                                         ports);
+                gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->output_port_combo), port->port);
+                g_object_set_data (G_OBJECT (dialog->priv->output_port_combo), "stream", stream);
+                g_signal_connect (G_OBJECT (dialog->priv->output_port_combo), "changed",
+                                  G_CALLBACK (port_selection_changed), dialog);
+
+                gtk_box_pack_start (GTK_BOX (dialog->priv->output_settings_box),
+                                    dialog->priv->output_port_combo,
+                                    TRUE, FALSE, 6);
+
+                gvc_combo_box_set_size_group (GVC_COMBO_BOX (dialog->priv->output_port_combo), dialog->priv->size_group, FALSE);
+
+                gtk_widget_show (dialog->priv->output_port_combo);
+        }
+
+        /* FIXME: We could make this into a "No settings" label instead */
+        gtk_widget_set_sensitive (dialog->priv->output_balance_bar, gvc_channel_map_can_balance (map));
+}
+
+static void
+update_default_output (GvcMixerDialog *dialog)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
+        gtk_tree_model_get_iter_first (model, &iter);
+        do {
+                gboolean        toggled;
+                gboolean        is_default;
+                guint           id;
+                GvcMixerStream *stream;
+
+                gtk_tree_model_get (model, &iter,
+                                    ID_COLUMN, &id,
+                                    ACTIVE_COLUMN, &toggled,
+                                    -1);
+
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+                if (stream == NULL) {
+                        g_warning ("Unable to find stream for id: %u", id);
+                        continue;
+                }
+
+                is_default = FALSE;
+                if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) {
+                        is_default = TRUE;
+                }
+
+                gtk_list_store_set (GTK_LIST_STORE (model),
+                                    &iter,
+                                    ACTIVE_COLUMN, is_default,
+                                    -1);
+        } while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+on_mixer_control_default_sink_changed (GvcMixerControl *control,
+                                       guint            id,
+                                       GvcMixerDialog  *dialog)
+{
+        GvcMixerStream *stream;
+
+        g_debug ("GvcMixerDialog: default sink changed: %u", id);
+
+        if (id == PA_INVALID_INDEX)
+                stream = NULL;
+        else
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control,
+                                                             id);
+        bar_set_stream (dialog, dialog->priv->output_bar, stream);
+
+        update_output_settings (dialog);
+
+        update_default_output (dialog);
+}
+
+
+#define DECAY_STEP .15
+
+static void
+update_input_peak (GvcMixerDialog *dialog,
+                   gdouble         v)
+{
+        GtkAdjustment *adj;
+
+        if (dialog->priv->last_input_peak >= DECAY_STEP) {
+                if (v < dialog->priv->last_input_peak - DECAY_STEP) {
+                        v = dialog->priv->last_input_peak - DECAY_STEP;
+                }
+        }
+
+        dialog->priv->last_input_peak = v;
+
+        adj = gvc_level_bar_get_peak_adjustment (GVC_LEVEL_BAR (dialog->priv->input_level_bar));
+        if (v >= 0) {
+                gtk_adjustment_set_value (adj, v);
+        } else {
+                gtk_adjustment_set_value (adj, 0.0);
+        }
+}
+
+static void
+update_input_meter (GvcMixerDialog *dialog,
+                    uint32_t        source_index,
+                    uint32_t        sink_input_idx,
+                    double          v)
+{
+        update_input_peak (dialog, v);
+}
+
+static void
+on_monitor_suspended_callback (pa_stream *s,
+                               void      *userdata)
+{
+        GvcMixerDialog *dialog;
+
+        dialog = userdata;
+
+        if (pa_stream_is_suspended (s)) {
+                g_debug ("Stream suspended");
+                update_input_meter (dialog,
+                                    pa_stream_get_device_index (s),
+                                    PA_INVALID_INDEX,
+                                    -1);
+        }
+}
+
+static void
+on_monitor_read_callback (pa_stream *s,
+                          size_t     length,
+                          void      *userdata)
+{
+        GvcMixerDialog *dialog;
+        const void     *data;
+        double          v;
+
+        dialog = userdata;
+
+        if (pa_stream_peek (s, &data, &length) < 0) {
+                g_warning ("Failed to read data from stream");
+                return;
+        }
+
+        assert (length > 0);
+        assert (length % sizeof (float) == 0);
+
+        v = ((const float *) data)[length / sizeof (float) -1];
+
+        pa_stream_drop (s);
+
+        if (v < 0) {
+                v = 0;
+        }
+        if (v > 1) {
+                v = 1;
+        }
+
+        update_input_meter (dialog,
+                            pa_stream_get_device_index (s),
+                            pa_stream_get_monitor_stream (s),
+                            v);
+}
+
+static void
+create_monitor_stream_for_source (GvcMixerDialog *dialog,
+                                  GvcMixerStream *stream)
+{
+        pa_stream     *s;
+        char           t[16];
+        pa_buffer_attr attr;
+        pa_sample_spec ss;
+        pa_context    *context;
+        int            res;
+        pa_proplist   *proplist;
+        gboolean       has_monitor;
+
+        if (stream == NULL) {
+                return;
+        }
+        has_monitor = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (stream), "has-monitor"));
+        if (has_monitor != FALSE) {
+                return;
+        }
+
+        g_debug ("Create monitor for %u",
+                 gvc_mixer_stream_get_index (stream));
+
+        context = gvc_mixer_control_get_pa_context (dialog->priv->mixer_control);
+
+        if (pa_context_get_server_protocol_version (context) < 13) {
+                return;
+        }
+
+        ss.channels = 1;
+        ss.format = PA_SAMPLE_FLOAT32;
+        ss.rate = 25;
+
+        memset (&attr, 0, sizeof (attr));
+        attr.fragsize = sizeof (float);
+        attr.maxlength = (uint32_t) -1;
+
+        snprintf (t, sizeof (t), "%u", gvc_mixer_stream_get_index (stream));
+
+        proplist = pa_proplist_new ();
+        pa_proplist_sets (proplist, PA_PROP_APPLICATION_ID, "org.gnome.VolumeControl");
+        s = pa_stream_new_with_proplist (context, _("Peak detect"), &ss, NULL, proplist);
+        pa_proplist_free (proplist);
+        if (s == NULL) {
+                g_warning ("Failed to create monitoring stream");
+                return;
+        }
+
+        pa_stream_set_read_callback (s, on_monitor_read_callback, dialog);
+        pa_stream_set_suspended_callback (s, on_monitor_suspended_callback, dialog);
+
+        res = pa_stream_connect_record (s,
+                                        t,
+                                        &attr,
+                                        (pa_stream_flags_t) (PA_STREAM_DONT_MOVE
+                                                             |PA_STREAM_PEAK_DETECT
+                                                             |PA_STREAM_ADJUST_LATENCY));
+        if (res < 0) {
+                g_warning ("Failed to connect monitoring stream");
+                pa_stream_unref (s);
+        } else {
+                g_object_set_data (G_OBJECT (stream), "has-monitor", GINT_TO_POINTER (TRUE));
+                g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream", s);
+                g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "stream", stream);
+        }
+}
+
+static void
+stop_monitor_stream_for_source (GvcMixerDialog *dialog)
+{
+        pa_stream      *s;
+        pa_context     *context;
+        int             res;
+        GvcMixerStream *stream;
+
+        s = g_object_get_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream");
+        if (s == NULL)
+                return;
+        stream = g_object_get_data (G_OBJECT (dialog->priv->input_level_bar), "stream");
+        g_assert (stream != NULL);
+
+        g_debug ("Stopping monitor for %u", pa_stream_get_index (s));
+
+        context = gvc_mixer_control_get_pa_context (dialog->priv->mixer_control);
+
+        if (pa_context_get_server_protocol_version (context) < 13) {
+                return;
+        }
+
+        res = pa_stream_disconnect (s);
+        if (res == 0)
+                g_object_set_data (G_OBJECT (stream), "has-monitor", GINT_TO_POINTER (FALSE));
+        g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "pa_stream", NULL);
+        g_object_set_data (G_OBJECT (dialog->priv->input_level_bar), "stream", NULL);
+}
+
+static void
+update_input_settings (GvcMixerDialog *dialog)
+{
+        const GList *ports;
+        GvcMixerStream *stream;
+
+        g_debug ("Updating input settings");
+
+        stop_monitor_stream_for_source (dialog);
+
+        if (dialog->priv->input_port_combo != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->input_settings_box),
+                                      dialog->priv->input_port_combo);
+                dialog->priv->input_port_combo = NULL;
+        }
+
+        stream = gvc_mixer_control_get_default_source (dialog->priv->mixer_control);
+        if (stream == NULL) {
+                g_debug ("Default source stream not found");
+                return;
+        }
+
+        gvc_channel_bar_set_base_volume (GVC_CHANNEL_BAR (dialog->priv->input_bar),
+                                         gvc_mixer_stream_get_base_volume (stream));
+        gvc_channel_bar_set_is_amplified (GVC_CHANNEL_BAR (dialog->priv->input_bar),
+                                          gvc_mixer_stream_get_can_decibel (stream));
+
+        ports = gvc_mixer_stream_get_ports (stream);
+        if (ports != NULL) {
+                const GvcMixerStreamPort *port;
+                port = gvc_mixer_stream_get_port (stream);
+
+                dialog->priv->input_port_combo = gvc_combo_box_new (_("Co_nnector:"));
+                gvc_combo_box_set_ports (GVC_COMBO_BOX (dialog->priv->input_port_combo),
+                                         ports);
+                gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->input_port_combo), port->port);
+                g_object_set_data (G_OBJECT (dialog->priv->input_port_combo), "stream", stream);
+                g_signal_connect (G_OBJECT (dialog->priv->input_port_combo), "changed",
+                                  G_CALLBACK (port_selection_changed), dialog);
+
+                gvc_combo_box_set_size_group (GVC_COMBO_BOX (dialog->priv->input_port_combo), dialog->priv->size_group, FALSE);
+                gtk_box_pack_start (GTK_BOX (dialog->priv->input_settings_box),
+                                    dialog->priv->input_port_combo,
+                                    TRUE, TRUE, 0);
+                gtk_widget_show (dialog->priv->input_port_combo);
+        }
+
+        create_monitor_stream_for_source (dialog, stream);
+}
+
+static void
+on_mixer_control_default_source_changed (GvcMixerControl *control,
+                                         guint            id,
+                                         GvcMixerDialog  *dialog)
+{
+        GvcMixerStream *stream;
+        GtkAdjustment *adj;
+
+        g_debug ("GvcMixerDialog: default source changed: %u", id);
+
+        if (id == PA_INVALID_INDEX)
+                stream = NULL;
+        else
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+
+        /* Disconnect the adj, otherwise it might change if is_amplified changes */
+        adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (dialog->priv->input_bar)));
+        g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog);
+
+        bar_set_stream (dialog, dialog->priv->input_bar, stream);
+        update_input_settings (dialog);
+
+        g_signal_connect (adj,
+                          "value-changed",
+                          G_CALLBACK (on_adjustment_value_changed),
+                          dialog);
+
+        update_default_input (dialog);
+}
+
+static void
+gvc_mixer_dialog_set_mixer_control (GvcMixerDialog  *dialog,
+                                    GvcMixerControl *control)
+{
+        g_return_if_fail (GVC_MIXER_DIALOG (dialog));
+        g_return_if_fail (GVC_IS_MIXER_CONTROL (control));
+
+        g_object_ref (control);
+
+        if (dialog->priv->mixer_control != NULL) {
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      G_CALLBACK (on_mixer_control_default_sink_changed),
+                                                      dialog);
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      G_CALLBACK (on_mixer_control_default_source_changed),
+                                                      dialog);
+                g_object_unref (dialog->priv->mixer_control);
+        }
+
+        dialog->priv->mixer_control = control;
+
+        g_signal_connect (dialog->priv->mixer_control,
+                          "default-sink-changed",
+                          G_CALLBACK (on_mixer_control_default_sink_changed),
+                          dialog);
+        g_signal_connect (dialog->priv->mixer_control,
+                          "default-source-changed",
+                          G_CALLBACK (on_mixer_control_default_source_changed),
+                          dialog);
+
+        g_object_notify (G_OBJECT (dialog), "mixer-control");
+}
+
+static GvcMixerControl *
+gvc_mixer_dialog_get_mixer_control (GvcMixerDialog *dialog)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_DIALOG (dialog), NULL);
+
+        return dialog->priv->mixer_control;
+}
+
+static void
+gvc_mixer_dialog_set_property (GObject       *object,
+                               guint          prop_id,
+                               const GValue  *value,
+                               GParamSpec    *pspec)
+{
+        GvcMixerDialog *self = GVC_MIXER_DIALOG (object);
+
+        switch (prop_id) {
+        case PROP_MIXER_CONTROL:
+                gvc_mixer_dialog_set_mixer_control (self, g_value_get_object (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_mixer_dialog_get_property (GObject     *object,
+                               guint        prop_id,
+                               GValue      *value,
+                               GParamSpec  *pspec)
+{
+        GvcMixerDialog *self = GVC_MIXER_DIALOG (object);
+
+        switch (prop_id) {
+        case PROP_MIXER_CONTROL:
+                g_value_set_object (value, gvc_mixer_dialog_get_mixer_control (self));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+on_adjustment_value_changed (GtkAdjustment  *adjustment,
+                             GvcMixerDialog *dialog)
+{
+        GvcMixerStream *stream;
+
+        stream = g_object_get_data (G_OBJECT (adjustment), "gvc-mixer-dialog-stream");
+        if (stream != NULL) {
+                GObject *bar;
+                gdouble volume, rounded;
+                char *name;
+
+                volume = gtk_adjustment_get_value (adjustment);
+                rounded = round (volume);
+
+                bar = g_object_get_data (G_OBJECT (adjustment), "gvc-mixer-dialog-bar");
+                g_object_get (bar, "name", &name, NULL);
+                g_debug ("Setting stream volume %lf (rounded: %lf) for bar '%s'", volume, rounded, name);
+                g_free (name);
+
+                /* FIXME would need to do that in the balance bar really... */
+                /* Make sure we do not unmute muted streams, there's a button for that */
+                if (volume == 0.0)
+                        gvc_mixer_stream_set_is_muted (stream, TRUE);
+                /* Only push the volume if it's actually changed */
+                if (gvc_mixer_stream_set_volume(stream, (pa_volume_t) rounded) != FALSE)
+                        gvc_mixer_stream_push_volume (stream);
+        }
+}
+
+static void
+on_bar_is_muted_notify (GObject        *object,
+                        GParamSpec     *pspec,
+                        GvcMixerDialog *dialog)
+{
+        gboolean        is_muted;
+        GvcMixerStream *stream;
+
+        is_muted = gvc_channel_bar_get_is_muted (GVC_CHANNEL_BAR (object));
+
+        stream = g_object_get_data (object, "gvc-mixer-dialog-stream");
+        if (stream != NULL) {
+                gvc_mixer_stream_change_is_muted (stream, is_muted);
+        } else {
+                char *name;
+                g_object_get (object, "name", &name, NULL);
+                g_warning ("Unable to find stream for bar '%s'", name);
+                g_free (name);
+        }
+}
+
+static GtkWidget *
+lookup_bar_for_stream (GvcMixerDialog *dialog,
+                       GvcMixerStream *stream)
+{
+        GtkWidget *bar;
+
+        bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)));
+
+        return bar;
+}
+
+static GtkWidget *
+lookup_combo_box_for_stream (GvcMixerDialog *dialog,
+                             GvcMixerStream *stream)
+{
+        GvcMixerStream *combo_stream;
+        guint id;
+
+        id = gvc_mixer_stream_get_id (stream);
+
+        if (dialog->priv->output_port_combo != NULL) {
+                combo_stream = g_object_get_data (G_OBJECT (dialog->priv->output_port_combo),
+                                                  "stream");
+                if (combo_stream != NULL) {
+                        if (id == gvc_mixer_stream_get_id (combo_stream))
+                                return dialog->priv->output_port_combo;
+                }
+        }
+
+        if (dialog->priv->input_port_combo != NULL) {
+                combo_stream = g_object_get_data (G_OBJECT (dialog->priv->input_port_combo),
+                                                  "stream");
+                if (combo_stream != NULL) {
+                        if (id == gvc_mixer_stream_get_id (combo_stream))
+                                return dialog->priv->input_port_combo;
+                }
+        }
+
+        return NULL;
+}
+
+static void
+on_stream_description_notify (GvcMixerStream *stream,
+                              GParamSpec     *pspec,
+                              GvcMixerDialog *dialog)
+{
+        update_description (dialog, NAME_COLUMN,
+                            gvc_mixer_stream_get_description (stream),
+                            stream);
+}
+
+static void
+on_stream_port_notify (GObject        *object,
+                       GParamSpec     *pspec,
+                       GvcMixerDialog *dialog)
+{
+        GvcComboBox *combo_box;
+        char *port;
+
+        combo_box = GVC_COMBO_BOX (lookup_combo_box_for_stream (dialog, GVC_MIXER_STREAM (object)));
+        if (combo_box == NULL)
+                return;
+
+        g_signal_handlers_block_by_func (G_OBJECT (combo_box),
+                                         port_selection_changed,
+                                         dialog);
+
+        g_object_get (object, "port", &port, NULL);
+        gvc_combo_box_set_active (GVC_COMBO_BOX (combo_box), port);
+
+        g_signal_handlers_unblock_by_func (G_OBJECT (combo_box),
+                                         port_selection_changed,
+                                         dialog);
+}
+
+static void
+on_stream_volume_notify (GObject        *object,
+                         GParamSpec     *pspec,
+                         GvcMixerDialog *dialog)
+{
+        GvcMixerStream *stream;
+        GtkWidget      *bar;
+        GtkAdjustment  *adj;
+
+        stream = GVC_MIXER_STREAM (object);
+
+        bar = lookup_bar_for_stream (dialog, stream);
+
+        if (bar == NULL) {
+                g_warning ("Unable to find bar for stream %s in on_stream_volume_notify()",
+                           gvc_mixer_stream_get_name (stream));
+                return;
+        }
+
+        adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar)));
+
+        g_signal_handlers_block_by_func (adj,
+                                         on_adjustment_value_changed,
+                                         dialog);
+
+        gtk_adjustment_set_value (adj,
+                                  gvc_mixer_stream_get_volume (stream));
+
+        g_signal_handlers_unblock_by_func (adj,
+                                           on_adjustment_value_changed,
+                                           dialog);
+}
+
+static void
+on_stream_is_muted_notify (GObject        *object,
+                           GParamSpec     *pspec,
+                           GvcMixerDialog *dialog)
+{
+        GvcMixerStream *stream;
+        GtkWidget      *bar;
+        gboolean        is_muted;
+
+        stream = GVC_MIXER_STREAM (object);
+        bar = lookup_bar_for_stream (dialog, stream);
+
+        if (bar == NULL) {
+                g_warning ("Unable to find bar for stream %s in on_stream_is_muted_notify()",
+                           gvc_mixer_stream_get_name (stream));
+                return;
+        }
+
+        is_muted = gvc_mixer_stream_get_is_muted (stream);
+        gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (bar),
+                                      is_muted);
+
+        if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) {
+                gtk_widget_set_sensitive (dialog->priv->applications_box,
+                                          !is_muted);
+        }
+
+}
+
+static void
+save_bar_for_stream (GvcMixerDialog *dialog,
+                     GvcMixerStream *stream,
+                     GtkWidget      *bar)
+{
+        g_hash_table_insert (dialog->priv->bars,
+                             GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)),
+                             bar);
+}
+
+static GtkWidget *
+create_bar (GvcMixerDialog *dialog,
+            gboolean        symmetric)
+{
+        GtkWidget *bar;
+
+        bar = gvc_channel_bar_new ();
+        gtk_widget_set_sensitive (bar, FALSE);
+        gvc_channel_bar_set_size_group (GVC_CHANNEL_BAR (bar),
+                                        dialog->priv->size_group,
+                                        symmetric);
+        gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (bar),
+                                         GTK_ORIENTATION_HORIZONTAL);
+        gvc_channel_bar_set_show_mute (GVC_CHANNEL_BAR (bar),
+                                       TRUE);
+        g_signal_connect (bar,
+                          "notify::is-muted",
+                          G_CALLBACK (on_bar_is_muted_notify),
+                          dialog);
+        return bar;
+}
+
+static GtkWidget *
+create_app_bar (GvcMixerDialog *dialog,
+                const char     *name,
+                const char     *icon_name)
+{
+        GtkWidget *bar;
+
+        bar = create_bar (dialog, FALSE);
+        gvc_channel_bar_set_ellipsize (GVC_CHANNEL_BAR (bar), TRUE);
+        gvc_channel_bar_set_icon_name (GVC_CHANNEL_BAR (bar), icon_name);
+        if (name == NULL || strchr (name, '_') == NULL) {
+                gvc_channel_bar_set_name (GVC_CHANNEL_BAR (bar), name);
+        } else {
+                char **tokens, *escaped;
+
+                tokens = g_strsplit (name, "_", -1);
+                escaped = g_strjoinv ("__", tokens);
+                g_strfreev (tokens);
+                gvc_channel_bar_set_name (GVC_CHANNEL_BAR (bar), escaped);
+                g_free (escaped);
+        }
+
+        return bar;
+}
+
+static void
+bar_set_stream (GvcMixerDialog *dialog,
+                GtkWidget      *bar,
+                GvcMixerStream *stream)
+{
+        GtkAdjustment  *adj;
+        GvcMixerStream *old_stream;
+
+        g_assert (bar != NULL);
+
+        old_stream = g_object_get_data (G_OBJECT (bar), "gvc-mixer-dialog-stream");
+        if (old_stream != NULL) {
+                char *name;
+
+                g_object_get (bar, "name", &name, NULL);
+                g_debug ("Disconnecting old stream '%s' from bar '%s'",
+                         gvc_mixer_stream_get_name (old_stream), name);
+                g_free (name);
+
+                g_signal_handlers_disconnect_by_func (old_stream, on_stream_is_muted_notify, dialog);
+                g_signal_handlers_disconnect_by_func (old_stream, on_stream_volume_notify, dialog);
+                g_signal_handlers_disconnect_by_func (old_stream, on_stream_port_notify, dialog);
+                g_hash_table_remove (dialog->priv->bars, GUINT_TO_POINTER (gvc_mixer_stream_get_id (old_stream)));
+        }
+
+        gtk_widget_set_sensitive (bar, (stream != NULL));
+
+        adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar)));
+
+        g_signal_handlers_disconnect_by_func (adj, on_adjustment_value_changed, dialog);
+
+        g_object_set_data (G_OBJECT (bar), "gvc-mixer-dialog-stream", stream);
+        g_object_set_data (G_OBJECT (adj), "gvc-mixer-dialog-stream", stream);
+        g_object_set_data (G_OBJECT (adj), "gvc-mixer-dialog-bar", bar);
+
+        if (stream != NULL) {
+                gboolean is_muted;
+
+                is_muted = gvc_mixer_stream_get_is_muted (stream);
+                gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (bar), is_muted);
+
+                save_bar_for_stream (dialog, stream, bar);
+
+                gtk_adjustment_set_value (adj,
+                                          gvc_mixer_stream_get_volume (stream));
+
+                g_signal_connect (stream,
+                                  "notify::is-muted",
+                                  G_CALLBACK (on_stream_is_muted_notify),
+                                  dialog);
+                g_signal_connect (stream,
+                                  "notify::volume",
+                                  G_CALLBACK (on_stream_volume_notify),
+                                  dialog);
+                g_signal_connect (stream,
+                                  "notify::port",
+                                  G_CALLBACK (on_stream_port_notify),
+                                  dialog);
+                g_signal_connect (adj,
+                                  "value-changed",
+                                  G_CALLBACK (on_adjustment_value_changed),
+                                  dialog);
+        }
+}
+
+static void
+add_stream (GvcMixerDialog *dialog,
+            GvcMixerStream *stream)
+{
+        GtkWidget     *bar;
+        gboolean       is_muted;
+        gboolean       is_default;
+        GtkAdjustment *adj;
+        const char    *id;
+
+        g_assert (stream != NULL);
+
+        if (gvc_mixer_stream_is_event_stream (stream) != FALSE)
+                return;
+
+        bar = NULL;
+        is_default = FALSE;
+        id = gvc_mixer_stream_get_application_id (stream);
+
+        if (stream == gvc_mixer_control_get_default_sink (dialog->priv->mixer_control)) {
+                bar = dialog->priv->output_bar;
+                is_muted = gvc_mixer_stream_get_is_muted (stream);
+                is_default = TRUE;
+                gtk_widget_set_sensitive (dialog->priv->applications_box,
+                                          !is_muted);
+                adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar)));
+                g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog);
+                update_output_settings (dialog);
+        } else if (stream == gvc_mixer_control_get_default_source (dialog->priv->mixer_control)) {
+                bar = dialog->priv->input_bar;
+                adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (bar)));
+                g_signal_handlers_disconnect_by_func(adj, on_adjustment_value_changed, dialog);
+                update_input_settings (dialog);
+                is_default = TRUE;
+        } else if (stream == gvc_mixer_control_get_event_sink_input (dialog->priv->mixer_control)) {
+                bar = dialog->priv->effects_bar;
+                g_debug ("Adding effects stream");
+        } else if (! GVC_IS_MIXER_SOURCE (stream)
+                   && !GVC_IS_MIXER_SINK (stream)
+                   && !gvc_mixer_stream_is_virtual (stream)
+                   && g_strcmp0 (id, "org.gnome.VolumeControl") != 0
+                   && g_strcmp0 (id, "org.PulseAudio.pavucontrol") != 0) {
+                const char *name;
+
+                name = gvc_mixer_stream_get_name (stream);
+                bar = create_app_bar (dialog, name,
+                                      gvc_mixer_stream_get_icon_name (stream));
+
+                gtk_box_pack_start (GTK_BOX (dialog->priv->applications_box), bar, FALSE, FALSE, 12);
+                dialog->priv->num_apps++;
+                gtk_widget_hide (dialog->priv->no_apps_label);
+        }
+
+        if (GVC_IS_MIXER_SOURCE (stream)) {
+                GtkTreeModel *model;
+                GtkTreeIter   iter;
+
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
+                gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+                gtk_list_store_set (GTK_LIST_STORE (model),
+                                    &iter,
+                                    NAME_COLUMN, gvc_mixer_stream_get_description (stream),
+                                    DEVICE_COLUMN, "",
+                                    ACTIVE_COLUMN, is_default,
+                                    ID_COLUMN, gvc_mixer_stream_get_id (stream),
+                                    -1);
+                g_signal_connect (stream,
+                                  "notify::description",
+                                  G_CALLBACK (on_stream_description_notify),
+                                  dialog);
+        } else if (GVC_IS_MIXER_SINK (stream)) {
+                GtkTreeModel        *model;
+                GtkTreeIter          iter;
+                const GvcChannelMap *map;
+
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
+                gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+                map = gvc_mixer_stream_get_channel_map (stream);
+                gtk_list_store_set (GTK_LIST_STORE (model),
+                                    &iter,
+                                    NAME_COLUMN, gvc_mixer_stream_get_description (stream),
+                                    DEVICE_COLUMN, "",
+                                    ACTIVE_COLUMN, is_default,
+                                    ID_COLUMN, gvc_mixer_stream_get_id (stream),
+                                    SPEAKERS_COLUMN, gvc_channel_map_get_mapping (map),
+                                    -1);
+                g_signal_connect (stream,
+                                  "notify::description",
+                                  G_CALLBACK (on_stream_description_notify),
+                                  dialog);
+        }
+
+        if (bar != NULL) {
+                bar_set_stream (dialog, bar, stream);
+                gtk_widget_show (bar);
+        }
+}
+
+static void
+on_control_stream_added (GvcMixerControl *control,
+                         guint            id,
+                         GvcMixerDialog  *dialog)
+{
+        GvcMixerStream *stream;
+        GtkWidget      *bar;
+
+        bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (id));
+        if (bar != NULL) {
+                g_debug ("GvcMixerDialog: Stream %u already added", id);
+                return;
+        }
+
+        stream = gvc_mixer_control_lookup_stream_id (control, id);
+        if (stream != NULL) {
+                add_stream (dialog, stream);
+        }
+}
+
+static gboolean
+find_item_by_id (GtkTreeModel *model,
+                   guint         id,
+                   guint         column,
+                   GtkTreeIter  *iter)
+{
+        gboolean found_item;
+
+        found_item = FALSE;
+
+        if (!gtk_tree_model_get_iter_first (model, iter)) {
+                return FALSE;
+        }
+
+        do {
+                guint t_id;
+
+                gtk_tree_model_get (model, iter,
+                                    column, &t_id, -1);
+
+                if (id == t_id) {
+                        found_item = TRUE;
+                }
+        } while (!found_item && gtk_tree_model_iter_next (model, iter));
+
+        return found_item;
+}
+
+static void
+remove_stream (GvcMixerDialog  *dialog,
+               guint            id)
+{
+        GtkWidget    *bar;
+        gboolean      found;
+        GtkTreeIter   iter;
+        GtkTreeModel *model;
+
+        /* remove bars for applications and reset fixed bars */
+        bar = g_hash_table_lookup (dialog->priv->bars, GUINT_TO_POINTER (id));
+        if (bar == dialog->priv->output_bar
+            || bar == dialog->priv->input_bar
+            || bar == dialog->priv->effects_bar) {
+                char *name;
+                g_object_get (bar, "name", &name, NULL);
+                g_debug ("Removing stream for bar '%s'", name);
+                g_free (name);
+                bar_set_stream (dialog, bar, NULL);
+        } else if (bar != NULL) {
+                g_hash_table_remove (dialog->priv->bars, GUINT_TO_POINTER (id));
+                gtk_container_remove (GTK_CONTAINER (gtk_widget_get_parent (bar)),
+                                      bar);
+                dialog->priv->num_apps--;
+                if (dialog->priv->num_apps == 0) {
+                        gtk_widget_show (dialog->priv->no_apps_label);
+                }
+        }
+
+        /* remove from any models */
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
+        found = find_item_by_id (GTK_TREE_MODEL (model), id, ID_COLUMN, &iter);
+        if (found) {
+                gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+        }
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
+        found = find_item_by_id (GTK_TREE_MODEL (model), id, ID_COLUMN, &iter);
+        if (found) {
+                gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+        }
+}
+
+static void
+on_control_stream_removed (GvcMixerControl *control,
+                           guint            id,
+                           GvcMixerDialog  *dialog)
+{
+        remove_stream (dialog, id);
+}
+
+static void
+add_card (GvcMixerDialog *dialog,
+          GvcMixerCard   *card)
+{
+        GtkTreeModel        *model;
+        GtkTreeIter          iter;
+        GtkTreeSelection    *selection;
+        GvcMixerCardProfile *profile;
+        GIcon               *icon;
+        guint                index;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview));
+        index = gvc_mixer_card_get_index (card);
+        if (find_item_by_id (GTK_TREE_MODEL (model), index, HW_ID_COLUMN, &iter) == FALSE)
+                gtk_list_store_append (GTK_LIST_STORE (model), &iter);
+        profile = gvc_mixer_card_get_profile (card);
+        g_assert (profile != NULL);
+        icon = g_themed_icon_new_with_default_fallbacks (gvc_mixer_card_get_icon_name (card));
+        //FIXME we need the status (default for a profile?) here
+        gtk_list_store_set (GTK_LIST_STORE (model),
+                            &iter,
+                            HW_NAME_COLUMN, gvc_mixer_card_get_name (card),
+                            HW_ID_COLUMN, index,
+                            HW_ICON_COLUMN, icon,
+                            HW_PROFILE_COLUMN, profile->profile,
+                            HW_PROFILE_HUMAN_COLUMN, profile->human_profile,
+                            HW_STATUS_COLUMN, profile->status,
+                            HW_SENSITIVE_COLUMN, g_strcmp0 (profile->profile, "off") != 0,
+                            -1);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->priv->hw_treeview));
+        if (gtk_tree_selection_get_selected (selection, NULL, NULL) == FALSE) {
+                gtk_tree_selection_select_iter (selection, &iter);
+        } else if (dialog->priv->hw_profile_combo != NULL) {
+                GvcMixerCard *selected;
+
+                /* Set the current profile if it changed for the selected card */
+                selected = g_object_get_data (G_OBJECT (dialog->priv->hw_profile_combo), "card");
+                if (gvc_mixer_card_get_index (selected) == gvc_mixer_card_get_index (card)) {
+                        gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->hw_profile_combo),
+                                                  profile->profile);
+                        g_object_set (G_OBJECT (dialog->priv->hw_profile_combo),
+                                      "show-button", profile->n_sinks == 1,
+                                      NULL);
+                }
+        }
+}
+
+static void
+on_control_card_added (GvcMixerControl *control,
+                       guint            id,
+                       GvcMixerDialog  *dialog)
+{
+        GvcMixerCard *card;
+
+        card = gvc_mixer_control_lookup_card_id (control, id);
+        if (card != NULL) {
+                add_card (dialog, card);
+        }
+}
+
+static void
+remove_card (GvcMixerDialog  *dialog,
+             guint            id)
+{
+        gboolean      found;
+        GtkTreeIter   iter;
+        GtkTreeModel *model;
+
+        /* remove from any models */
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview));
+        found = find_item_by_id (GTK_TREE_MODEL (model), id, HW_ID_COLUMN, &iter);
+        if (found) {
+                gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+        }
+}
+static void
+on_control_card_removed (GvcMixerControl *control,
+                         guint            id,
+                         GvcMixerDialog  *dialog)
+{
+        remove_card (dialog, id);
+}
+
+static void
+_gtk_label_make_bold (GtkLabel *label)
+{
+        PangoFontDescription *font_desc;
+
+        font_desc = pango_font_description_new ();
+
+        pango_font_description_set_weight (font_desc,
+                                           PANGO_WEIGHT_BOLD);
+
+        /* This will only affect the weight of the font, the rest is
+         * from the current state of the widget, which comes from the
+         * theme or user prefs, since the font desc only has the
+         * weight flag turned on.
+         */
+        gtk_widget_modify_font (GTK_WIDGET (label), font_desc);
+
+        pango_font_description_free (font_desc);
+}
+
+static void
+on_input_radio_toggled (GtkCellRendererToggle *renderer,
+                        char                  *path_str,
+                        GvcMixerDialog        *dialog)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        GtkTreePath  *path;
+        gboolean      toggled;
+        guint         id;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->input_treeview));
+
+        path = gtk_tree_path_new_from_string (path_str);
+        gtk_tree_model_get_iter (model, &iter, path);
+        gtk_tree_path_free (path);
+
+        gtk_tree_model_get (model, &iter,
+                            ID_COLUMN, &id,
+                            ACTIVE_COLUMN, &toggled,
+                            -1);
+
+        toggled ^= 1;
+        if (toggled) {
+                GvcMixerStream *stream;
+
+                g_debug ("Default input selected: %u", id);
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+                if (stream == NULL) {
+                        g_warning ("Unable to find stream for id: %u", id);
+                        return;
+                }
+
+                gvc_mixer_control_set_default_source (dialog->priv->mixer_control, stream);
+        }
+}
+
+static void
+on_output_radio_toggled (GtkCellRendererToggle *renderer,
+                         char                  *path_str,
+                         GvcMixerDialog        *dialog)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        GtkTreePath  *path;
+        gboolean      toggled;
+        guint         id;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->output_treeview));
+
+        path = gtk_tree_path_new_from_string (path_str);
+        gtk_tree_model_get_iter (model, &iter, path);
+        gtk_tree_path_free (path);
+
+        gtk_tree_model_get (model, &iter,
+                            ID_COLUMN, &id,
+                            ACTIVE_COLUMN, &toggled,
+                            -1);
+
+        toggled ^= 1;
+        if (toggled) {
+                GvcMixerStream *stream;
+
+                g_debug ("Default output selected: %u", id);
+                stream = gvc_mixer_control_lookup_stream_id (dialog->priv->mixer_control, id);
+                if (stream == NULL) {
+                        g_warning ("Unable to find stream for id: %u", id);
+                        return;
+                }
+
+                gvc_mixer_control_set_default_sink (dialog->priv->mixer_control, stream);
+        }
+}
+
+static void
+name_to_text (GtkTreeViewColumn *column,
+              GtkCellRenderer *cell,
+              GtkTreeModel *model,
+              GtkTreeIter *iter,
+              gpointer user_data)
+{
+        char *name, *mapping;
+
+        gtk_tree_model_get(model, iter,
+                           NAME_COLUMN, &name,
+                           SPEAKERS_COLUMN, &mapping,
+                           -1);
+
+        if (mapping == NULL) {
+                g_object_set (cell, "text", name, NULL);
+        } else {
+                char *str;
+
+                str = g_strdup_printf ("%s\n<i>%s</i>",
+                                       name, mapping);
+                g_object_set (cell, "markup", str, NULL);
+                g_free (str);
+        }
+
+        g_free (name);
+        g_free (mapping);
+}
+
+static GtkWidget *
+create_stream_treeview (GvcMixerDialog *dialog,
+                        GCallback       on_toggled)
+{
+        GtkWidget         *treeview;
+        GtkListStore      *store;
+        GtkCellRenderer   *renderer;
+        GtkTreeViewColumn *column;
+
+        treeview = gtk_tree_view_new ();
+        gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
+
+        store = gtk_list_store_new (NUM_COLUMNS,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_BOOLEAN,
+                                    G_TYPE_UINT,
+                                    G_TYPE_STRING);
+        gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
+                                 GTK_TREE_MODEL (store));
+
+        renderer = gtk_cell_renderer_toggle_new ();
+        gtk_cell_renderer_toggle_set_radio (GTK_CELL_RENDERER_TOGGLE (renderer),
+                                            TRUE);
+        column = gtk_tree_view_column_new_with_attributes (NULL,
+                                                           renderer,
+                                                           "active", ACTIVE_COLUMN,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+        g_signal_connect (renderer,
+                          "toggled",
+                          G_CALLBACK (on_toggled),
+                          dialog);
+
+        gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1,
+                                                    _("Name"), gtk_cell_renderer_text_new (),
+                                                    name_to_text, NULL, NULL);
+
+#if 0
+        renderer = gtk_cell_renderer_text_new ();
+        column = gtk_tree_view_column_new_with_attributes (_("Device"),
+                                                           renderer,
+                                                           "text", DEVICE_COLUMN,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+#endif
+        return treeview;
+}
+
+static void
+on_profile_changed (GvcComboBox *widget,
+                    const char  *profile,
+                    gpointer     user_data)
+{
+        GvcMixerCard        *card;
+
+        card = g_object_get_data (G_OBJECT (widget), "card");
+        if (card == NULL) {
+                g_warning ("Could not find card for combobox");
+                return;
+        }
+
+        g_debug ("Profile changed to %s for card %s", profile,
+                 gvc_mixer_card_get_name (card));
+
+        gvc_mixer_card_change_profile (card, profile);
+}
+
+static void
+on_test_speakers_clicked (GvcComboBox *widget,
+                          gpointer     user_data)
+{
+        GvcMixerDialog      *dialog = GVC_MIXER_DIALOG (user_data);
+        GvcMixerCard        *card;
+        GvcMixerCardProfile *profile;
+        GtkWidget           *d, *speaker_test, *container;
+        char                *title;
+
+        card = g_object_get_data (G_OBJECT (widget), "card");
+        if (card == NULL) {
+                g_warning ("Could not find card for combobox");
+                return;
+        }
+        profile = gvc_mixer_card_get_profile (card);
+
+        g_debug ("XXX Start speaker testing for profile '%s', card %s XXX",
+                 profile->profile, gvc_mixer_card_get_name (card));
+
+        title = g_strdup_printf (_("Speaker Testing for %s"), gvc_mixer_card_get_name (card));
+        // FIXME
+        // set parent dialogue
+        // https://bugzilla.gnome.org/show_bug.cgi?id=621940
+        d = gtk_dialog_new_with_buttons (title,
+                                         NULL,
+                                         GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
+                                         NULL);
+        g_free (title);
+        speaker_test = gvc_speaker_test_new (dialog->priv->mixer_control,
+                                             card);
+        gtk_widget_show (speaker_test);
+        container = gtk_dialog_get_content_area (GTK_DIALOG (d));
+        gtk_container_add (GTK_CONTAINER (container), speaker_test);
+
+        gtk_dialog_run (GTK_DIALOG (d));
+        gtk_widget_destroy (d);
+}
+
+static void
+on_card_selection_changed (GtkTreeSelection *selection,
+                           gpointer          user_data)
+{
+        GvcMixerDialog      *dialog = GVC_MIXER_DIALOG (user_data);
+        GtkTreeModel        *model;
+        GtkTreeIter          iter;
+        const GList         *profiles;
+        guint                id;
+        GvcMixerCard        *card;
+        GvcMixerCardProfile *current_profile;
+
+        g_debug ("Card selection changed");
+
+        if (dialog->priv->hw_profile_combo != NULL) {
+                gtk_container_remove (GTK_CONTAINER (dialog->priv->hw_settings_box),
+                                      dialog->priv->hw_profile_combo);
+                dialog->priv->hw_profile_combo = NULL;
+        }
+
+        if (gtk_tree_selection_get_selected (selection,
+                                             NULL,
+                                             &iter) == FALSE) {
+                return;
+        }
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->priv->hw_treeview));
+        gtk_tree_model_get (model, &iter,
+                            HW_ID_COLUMN, &id,
+                            -1);
+        card = gvc_mixer_control_lookup_card_id (dialog->priv->mixer_control, id);
+        if (card == NULL) {
+                g_warning ("Unable to find card for id: %u", id);
+                return;
+        }
+
+        current_profile = gvc_mixer_card_get_profile (card);
+        profiles = gvc_mixer_card_get_profiles (card);
+        dialog->priv->hw_profile_combo = gvc_combo_box_new (_("_Profile:"));
+        g_object_set (G_OBJECT (dialog->priv->hw_profile_combo), "button-label", _("Test Speakers"), NULL);
+        gvc_combo_box_set_profiles (GVC_COMBO_BOX (dialog->priv->hw_profile_combo), profiles);
+        gvc_combo_box_set_active (GVC_COMBO_BOX (dialog->priv->hw_profile_combo), current_profile->profile);
+
+        gtk_box_pack_start (GTK_BOX (dialog->priv->hw_settings_box),
+                            dialog->priv->hw_profile_combo,
+                            TRUE, TRUE, 6);
+        g_object_set (G_OBJECT (dialog->priv->hw_profile_combo),
+                      "show-button", current_profile->n_sinks == 1,
+                      NULL);
+        gtk_widget_show (dialog->priv->hw_profile_combo);
+
+        g_object_set_data (G_OBJECT (dialog->priv->hw_profile_combo), "card", card);
+        g_signal_connect (G_OBJECT (dialog->priv->hw_profile_combo), "changed",
+                          G_CALLBACK (on_profile_changed), dialog);
+        g_signal_connect (G_OBJECT (dialog->priv->hw_profile_combo), "button-clicked",
+                          G_CALLBACK (on_test_speakers_clicked), dialog);
+}
+
+static void
+card_to_text (GtkTreeViewColumn *column,
+              GtkCellRenderer *cell,
+              GtkTreeModel *model,
+              GtkTreeIter *iter,
+              gpointer user_data)
+{
+        char *name, *status, *profile, *str;
+        gboolean sensitive;
+
+        gtk_tree_model_get(model, iter,
+                           HW_NAME_COLUMN, &name,
+                           HW_STATUS_COLUMN, &status,
+                           HW_PROFILE_HUMAN_COLUMN, &profile,
+                           HW_SENSITIVE_COLUMN, &sensitive,
+                           -1);
+
+        str = g_strdup_printf ("%s\n<i>%s</i>\n<i>%s</i>",
+                               name, status, profile);
+        g_object_set (cell,
+                      "markup", str,
+                      "sensitive", sensitive,
+                      NULL);
+        g_free (str);
+
+        g_free (name);
+        g_free (status);
+        g_free (profile);
+}
+
+static GtkWidget *
+create_cards_treeview (GvcMixerDialog *dialog,
+                       GCallback       on_changed)
+{
+        GtkWidget         *treeview;
+        GtkListStore      *store;
+        GtkCellRenderer   *renderer;
+        GtkTreeViewColumn *column;
+        GtkTreeSelection  *selection;
+
+        treeview = gtk_tree_view_new ();
+        gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+        g_signal_connect (G_OBJECT (selection), "changed",
+                          on_changed, dialog);
+
+        store = gtk_list_store_new (HW_NUM_COLUMNS,
+                                    G_TYPE_UINT,
+                                    G_TYPE_ICON,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_BOOLEAN);
+        gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
+                                 GTK_TREE_MODEL (store));
+
+        renderer = gtk_cell_renderer_pixbuf_new ();
+        g_object_set (G_OBJECT (renderer), "stock-size", GTK_ICON_SIZE_DIALOG, NULL);
+        column = gtk_tree_view_column_new_with_attributes (NULL,
+                                                           renderer,
+                                                           "gicon", HW_ICON_COLUMN,
+                                                           "sensitive", HW_SENSITIVE_COLUMN,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+        gtk_tree_view_insert_column_with_data_func (GTK_TREE_VIEW (treeview), -1,
+                                                    _("Name"), gtk_cell_renderer_text_new (),
+                                                    card_to_text, NULL, NULL);
+
+        return treeview;
+}
+
+static GObject *
+gvc_mixer_dialog_constructor (GType                  type,
+                              guint                  n_construct_properties,
+                              GObjectConstructParam *construct_params)
+{
+        GObject          *object;
+        GvcMixerDialog   *self;
+        GtkWidget        *main_vbox;
+        GtkWidget        *label;
+        GtkWidget        *alignment;
+        GtkWidget        *box;
+        GtkWidget        *sbox;
+        GtkWidget        *ebox;
+        GSList           *streams;
+        GSList           *cards;
+        GSList           *l;
+        GvcMixerStream   *stream;
+        GvcMixerCard     *card;
+        GtkTreeSelection *selection;
+
+        object = G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_DIALOG (object);
+
+        main_vbox = GTK_WIDGET (self);
+        gtk_box_set_spacing (GTK_BOX (main_vbox), 2);
+
+        gtk_container_set_border_width (GTK_CONTAINER (self), 6);
+
+        self->priv->output_stream_box = gtk_hbox_new (FALSE, 12);
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 12, 0, 0, 0);
+        gtk_container_add (GTK_CONTAINER (alignment), self->priv->output_stream_box);
+        gtk_box_pack_start (GTK_BOX (main_vbox),
+                            alignment,
+                            FALSE, FALSE, 0);
+        self->priv->output_bar = create_bar (self, TRUE);
+        gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->output_bar),
+                                  _("_Output volume: "));
+        gtk_widget_set_sensitive (self->priv->output_bar, FALSE);
+        gtk_box_pack_start (GTK_BOX (self->priv->output_stream_box),
+                            self->priv->output_bar, TRUE, TRUE, 12);
+
+        self->priv->notebook = gtk_notebook_new ();
+        gtk_box_pack_start (GTK_BOX (main_vbox),
+                            self->priv->notebook,
+                            TRUE, TRUE, 0);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->notebook), 5);
+
+        /* Effects page */
+        self->priv->sound_effects_box = gtk_vbox_new (FALSE, 6);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->sound_effects_box), 12);
+        label = gtk_label_new (_("Sound Effects"));
+        gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
+                                  self->priv->sound_effects_box,
+                                  label);
+
+        self->priv->effects_bar = create_bar (self, TRUE);
+        gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->effects_bar),
+                                  _("_Alert volume: "));
+        gtk_widget_set_sensitive (self->priv->effects_bar, FALSE);
+        gtk_box_pack_start (GTK_BOX (self->priv->sound_effects_box),
+                            self->priv->effects_bar, FALSE, FALSE, 0);
+
+        self->priv->sound_theme_chooser = gvc_sound_theme_chooser_new ();
+        gtk_box_pack_start (GTK_BOX (self->priv->sound_effects_box),
+                            self->priv->sound_theme_chooser,
+                            TRUE, TRUE, 6);
+
+        /* Hardware page */
+        self->priv->hw_box = gtk_vbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->hw_box), 12);
+        label = gtk_label_new (_("Hardware"));
+        gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
+                                  self->priv->hw_box,
+                                  label);
+
+        box = gtk_frame_new (_("C_hoose a device to configure:"));
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        _gtk_label_make_bold (GTK_LABEL (label));
+        gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+        gtk_box_pack_start (GTK_BOX (self->priv->hw_box), box, TRUE, TRUE, 0);
+
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_container_add (GTK_CONTAINER (box), alignment);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+
+        self->priv->hw_treeview = create_cards_treeview (self,
+                                                         G_CALLBACK (on_card_selection_changed));
+        gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->hw_treeview);
+
+        box = gtk_scrolled_window_new (NULL, NULL);
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box),
+                                        GTK_POLICY_NEVER,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box),
+                                             GTK_SHADOW_IN);
+        gtk_container_add (GTK_CONTAINER (box), self->priv->hw_treeview);
+        gtk_container_add (GTK_CONTAINER (alignment), box);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->hw_treeview));
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+        box = gtk_frame_new (_("Settings for the selected device:"));
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        _gtk_label_make_bold (GTK_LABEL (label));
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+        gtk_box_pack_start (GTK_BOX (self->priv->hw_box), box, FALSE, TRUE, 12);
+        self->priv->hw_settings_box = gtk_vbox_new (FALSE, 12);
+        gtk_container_add (GTK_CONTAINER (box), self->priv->hw_settings_box);
+
+        /* Input page */
+        self->priv->input_box = gtk_vbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->input_box), 12);
+        label = gtk_label_new (_("Input"));
+        gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
+                                  self->priv->input_box,
+                                  label);
+
+        self->priv->input_bar = create_bar (self, TRUE);
+        gvc_channel_bar_set_name (GVC_CHANNEL_BAR (self->priv->input_bar),
+                                  _("_Input volume: "));
+        gvc_channel_bar_set_low_icon_name (GVC_CHANNEL_BAR (self->priv->input_bar),
+                                           "audio-input-microphone-low");
+        gvc_channel_bar_set_high_icon_name (GVC_CHANNEL_BAR (self->priv->input_bar),
+                                            "audio-input-microphone-high");
+        gtk_widget_set_sensitive (self->priv->input_bar, FALSE);
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+        gtk_container_add (GTK_CONTAINER (alignment), self->priv->input_bar);
+        gtk_box_pack_start (GTK_BOX (self->priv->input_box),
+                            alignment,
+                            FALSE, FALSE, 0);
+
+        box = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (self->priv->input_box),
+                            box,
+                            FALSE, FALSE, 6);
+
+        sbox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box),
+                            sbox,
+                            FALSE, FALSE, 0);
+
+        label = gtk_label_new (_("Input level:"));
+        gtk_box_pack_start (GTK_BOX (sbox),
+                            label,
+                            FALSE, FALSE, 0);
+        gtk_size_group_add_widget (self->priv->size_group, sbox);
+
+        self->priv->input_level_bar = gvc_level_bar_new ();
+        gvc_level_bar_set_orientation (GVC_LEVEL_BAR (self->priv->input_level_bar),
+                                       GTK_ORIENTATION_HORIZONTAL);
+        gvc_level_bar_set_scale (GVC_LEVEL_BAR (self->priv->input_level_bar),
+                                 GVC_LEVEL_SCALE_LINEAR);
+        gtk_box_pack_start (GTK_BOX (box),
+                            self->priv->input_level_bar,
+                            TRUE, TRUE, 6);
+
+        ebox = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (box),
+                            ebox,
+                            FALSE, FALSE, 0);
+        gtk_size_group_add_widget (self->priv->size_group, ebox);
+
+        self->priv->input_settings_box = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (self->priv->input_box),
+                            self->priv->input_settings_box,
+                            FALSE, FALSE, 0);
+
+        box = gtk_frame_new (_("C_hoose a device for sound input:"));
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        _gtk_label_make_bold (GTK_LABEL (label));
+        gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+        gtk_box_pack_start (GTK_BOX (self->priv->input_box), box, TRUE, TRUE, 0);
+
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_container_add (GTK_CONTAINER (box), alignment);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+
+        self->priv->input_treeview = create_stream_treeview (self,
+                                                             G_CALLBACK (on_input_radio_toggled));
+        gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->input_treeview);
+
+        box = gtk_scrolled_window_new (NULL, NULL);
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box),
+                                        GTK_POLICY_NEVER,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box),
+                                             GTK_SHADOW_IN);
+        gtk_container_add (GTK_CONTAINER (box), self->priv->input_treeview);
+        gtk_container_add (GTK_CONTAINER (alignment), box);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->input_treeview));
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+        /* Output page */
+        self->priv->output_box = gtk_vbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->output_box), 12);
+        label = gtk_label_new (_("Output"));
+        gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
+                                  self->priv->output_box,
+                                  label);
+
+        box = gtk_frame_new (_("C_hoose a device for sound output:"));
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        _gtk_label_make_bold (GTK_LABEL (label));
+        gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+        gtk_box_pack_start (GTK_BOX (self->priv->output_box), box, TRUE, TRUE, 0);
+
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_container_add (GTK_CONTAINER (box), alignment);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+
+        self->priv->output_treeview = create_stream_treeview (self,
+                                                              G_CALLBACK (on_output_radio_toggled));
+        gtk_label_set_mnemonic_widget (GTK_LABEL (label), self->priv->output_treeview);
+
+        box = gtk_scrolled_window_new (NULL, NULL);
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box),
+                                        GTK_POLICY_NEVER,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (box),
+                                             GTK_SHADOW_IN);
+        gtk_container_add (GTK_CONTAINER (box), self->priv->output_treeview);
+        gtk_container_add (GTK_CONTAINER (alignment), box);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (self->priv->output_treeview));
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+
+        box = gtk_frame_new (_("Settings for the selected device:"));
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        _gtk_label_make_bold (GTK_LABEL (label));
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+        gtk_box_pack_start (GTK_BOX (self->priv->output_box), box, FALSE, FALSE, 12);
+        self->priv->output_settings_box = gtk_vbox_new (FALSE, 0);
+        gtk_container_add (GTK_CONTAINER (box), self->priv->output_settings_box);
+
+        /* Applications */
+        self->priv->applications_box = gtk_vbox_new (FALSE, 12);
+        gtk_container_set_border_width (GTK_CONTAINER (self->priv->applications_box), 12);
+        label = gtk_label_new (_("Applications"));
+        gtk_notebook_append_page (GTK_NOTEBOOK (self->priv->notebook),
+                                  self->priv->applications_box,
+                                  label);
+        self->priv->no_apps_label = gtk_label_new (_("No application is currently playing or recording audio."));
+        gtk_box_pack_start (GTK_BOX (self->priv->applications_box),
+                            self->priv->no_apps_label,
+                            TRUE, TRUE, 0);
+
+        g_signal_connect (self->priv->mixer_control,
+                          "stream-added",
+                          G_CALLBACK (on_control_stream_added),
+                          self);
+        g_signal_connect (self->priv->mixer_control,
+                          "stream-removed",
+                          G_CALLBACK (on_control_stream_removed),
+                          self);
+        g_signal_connect (self->priv->mixer_control,
+                          "card-added",
+                          G_CALLBACK (on_control_card_added),
+                          self);
+        g_signal_connect (self->priv->mixer_control,
+                          "card-removed",
+                          G_CALLBACK (on_control_card_removed),
+                          self);
+
+        gtk_widget_show_all (main_vbox);
+
+        streams = gvc_mixer_control_get_streams (self->priv->mixer_control);
+        for (l = streams; l != NULL; l = l->next) {
+                stream = l->data;
+                add_stream (self, stream);
+        }
+        g_slist_free (streams);
+
+        cards = gvc_mixer_control_get_cards (self->priv->mixer_control);
+        for (l = cards; l != NULL; l = l->next) {
+                card = l->data;
+                add_card (self, card);
+        }
+        g_slist_free (cards);
+
+        return object;
+}
+
+static void
+gvc_mixer_dialog_dispose (GObject *object)
+{
+        GvcMixerDialog *dialog = GVC_MIXER_DIALOG (object);
+
+        if (dialog->priv->mixer_control != NULL) {
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      on_control_stream_added,
+                                                      dialog);
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      on_control_stream_removed,
+                                                      dialog);
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      on_control_card_added,
+                                                      dialog);
+                g_signal_handlers_disconnect_by_func (dialog->priv->mixer_control,
+                                                      on_control_card_removed,
+                                                      dialog);
+
+                g_object_unref (dialog->priv->mixer_control);
+                dialog->priv->mixer_control = NULL;
+        }
+
+        if (dialog->priv->bars != NULL) {
+                g_hash_table_destroy (dialog->priv->bars);
+                dialog->priv->bars = NULL;
+        }
+
+        G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->dispose (object);
+}
+
+static void
+gvc_mixer_dialog_class_init (GvcMixerDialogClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_dialog_constructor;
+        object_class->dispose = gvc_mixer_dialog_dispose;
+        object_class->finalize = gvc_mixer_dialog_finalize;
+        object_class->set_property = gvc_mixer_dialog_set_property;
+        object_class->get_property = gvc_mixer_dialog_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_MIXER_CONTROL,
+                                         g_param_spec_object ("mixer-control",
+                                                              "mixer control",
+                                                              "mixer control",
+                                                              GVC_TYPE_MIXER_CONTROL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_type_class_add_private (klass, sizeof (GvcMixerDialogPrivate));
+}
+
+
+static void
+gvc_mixer_dialog_init (GvcMixerDialog *dialog)
+{
+        dialog->priv = GVC_MIXER_DIALOG_GET_PRIVATE (dialog);
+        dialog->priv->bars = g_hash_table_new (NULL, NULL);
+        dialog->priv->size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+}
+
+static void
+gvc_mixer_dialog_finalize (GObject *object)
+{
+        GvcMixerDialog *mixer_dialog;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_DIALOG (object));
+
+        mixer_dialog = GVC_MIXER_DIALOG (object);
+
+        g_return_if_fail (mixer_dialog->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_dialog_parent_class)->finalize (object);
+}
+
+GvcMixerDialog *
+gvc_mixer_dialog_new (GvcMixerControl *control)
+{
+        GObject *dialog;
+        dialog = g_object_new (GVC_TYPE_MIXER_DIALOG,
+                               "mixer-control", control,
+                               NULL);
+        return GVC_MIXER_DIALOG (dialog);
+}
+
+enum {
+        PAGE_EVENTS,
+        PAGE_HARDWARE,
+        PAGE_INPUT,
+        PAGE_OUTPUT,
+        PAGE_APPLICATIONS
+};
+
+gboolean
+gvc_mixer_dialog_set_page (GvcMixerDialog *self,
+                           const char     *page)
+{
+        guint num;
+
+        g_return_val_if_fail (self != NULL, FALSE);
+
+        if (page == NULL)
+                num = 0;
+        else if (g_str_equal (page, "effects"))
+                num = PAGE_EVENTS;
+        else if (g_str_equal (page, "hardware"))
+                num = PAGE_HARDWARE;
+        else if (g_str_equal (page, "input"))
+                num = PAGE_INPUT;
+        else if (g_str_equal (page, "output"))
+                num = PAGE_OUTPUT;
+        else if (g_str_equal (page, "applications"))
+                num = PAGE_APPLICATIONS;
+        else
+                num = 0;
+
+        gtk_notebook_set_current_page (GTK_NOTEBOOK (self->priv->notebook), num);
+
+        return TRUE;
+}
diff --git a/panels/sound/gvc-mixer-dialog.h b/panels/sound/gvc-mixer-dialog.h
new file mode 100644
index 0000000..e95a7c7
--- /dev/null
+++ b/panels/sound/gvc-mixer-dialog.h
@@ -0,0 +1,56 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_DIALOG_H
+#define __GVC_MIXER_DIALOG_H
+
+#include <glib-object.h>
+#include "gvc-mixer-control.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_DIALOG         (gvc_mixer_dialog_get_type ())
+#define GVC_MIXER_DIALOG(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialog))
+#define GVC_MIXER_DIALOG_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogClass))
+#define GVC_IS_MIXER_DIALOG(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_DIALOG))
+#define GVC_IS_MIXER_DIALOG_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_DIALOG))
+#define GVC_MIXER_DIALOG_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_DIALOG, GvcMixerDialogClass))
+
+typedef struct GvcMixerDialogPrivate GvcMixerDialogPrivate;
+
+typedef struct
+{
+        GtkVBox                parent;
+        GvcMixerDialogPrivate *priv;
+} GvcMixerDialog;
+
+typedef struct
+{
+        GtkVBoxClass           parent_class;
+} GvcMixerDialogClass;
+
+GType               gvc_mixer_dialog_get_type            (void);
+
+GvcMixerDialog *    gvc_mixer_dialog_new                 (GvcMixerControl *control);
+gboolean            gvc_mixer_dialog_set_page            (GvcMixerDialog *dialog, const gchar* page);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_DIALOG_H */
diff --git a/panels/sound/gvc-mixer-event-role.c b/panels/sound/gvc-mixer-event-role.c
new file mode 100644
index 0000000..7eb3d00
--- /dev/null
+++ b/panels/sound/gvc-mixer-event-role.c
@@ -0,0 +1,250 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+#include <pulse/ext-stream-restore.h>
+
+#include "gvc-mixer-event-role.h"
+#include "gvc-mixer-stream-private.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_MIXER_EVENT_ROLE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRolePrivate))
+
+struct GvcMixerEventRolePrivate
+{
+        char          *device;
+};
+
+enum
+{
+        PROP_0,
+        PROP_DEVICE
+};
+
+static void     gvc_mixer_event_role_class_init (GvcMixerEventRoleClass *klass);
+static void     gvc_mixer_event_role_init       (GvcMixerEventRole      *mixer_event_role);
+static void     gvc_mixer_event_role_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcMixerEventRole, gvc_mixer_event_role, GVC_TYPE_MIXER_STREAM)
+
+static gboolean
+update_settings (GvcMixerEventRole *role,
+                 gboolean           is_muted,
+                 gpointer          *op)
+{
+        pa_operation              *o;
+        guint                      index;
+        const GvcChannelMap       *map;
+        pa_context                *context;
+        pa_ext_stream_restore_info info;
+
+        index = gvc_mixer_stream_get_index (GVC_MIXER_STREAM (role));
+
+        map = gvc_mixer_stream_get_channel_map (GVC_MIXER_STREAM(role));
+
+        info.volume = *gvc_channel_map_get_cvolume(map);
+        info.name = "sink-input-by-media-role:event";
+        info.channel_map = *gvc_channel_map_get_pa_channel_map(map);
+        info.device = role->priv->device;
+        info.mute = is_muted;
+
+        context = gvc_mixer_stream_get_pa_context (GVC_MIXER_STREAM (role));
+
+        o = pa_ext_stream_restore_write (context,
+                                         PA_UPDATE_REPLACE,
+                                         &info,
+                                         1,
+                                         TRUE,
+                                         NULL,
+                                         NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_ext_stream_restore_write() failed");
+                return FALSE;
+        }
+
+        if (op != NULL)
+                *op = o;
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_event_role_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        return update_settings (GVC_MIXER_EVENT_ROLE (stream),
+                                gvc_mixer_stream_get_is_muted (stream), op);
+}
+
+static gboolean
+gvc_mixer_event_role_change_is_muted (GvcMixerStream *stream,
+                                      gboolean        is_muted)
+{
+        return update_settings (GVC_MIXER_EVENT_ROLE (stream),
+                                is_muted, NULL);
+}
+
+static gboolean
+gvc_mixer_event_role_set_device (GvcMixerEventRole *role,
+                                 const char        *device)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_EVENT_ROLE (role), FALSE);
+
+        g_free (role->priv->device);
+        role->priv->device = g_strdup (device);
+        g_object_notify (G_OBJECT (role), "device");
+
+        return TRUE;
+}
+
+static void
+gvc_mixer_event_role_set_property (GObject       *object,
+                                   guint          prop_id,
+                                   const GValue  *value,
+                                   GParamSpec    *pspec)
+{
+        GvcMixerEventRole *self = GVC_MIXER_EVENT_ROLE (object);
+
+        switch (prop_id) {
+        case PROP_DEVICE:
+                gvc_mixer_event_role_set_device (self, g_value_get_string (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_mixer_event_role_get_property (GObject     *object,
+                                   guint        prop_id,
+                                   GValue      *value,
+                                   GParamSpec  *pspec)
+{
+        GvcMixerEventRole *self = GVC_MIXER_EVENT_ROLE (object);
+
+        switch (prop_id) {
+        case PROP_DEVICE:
+                g_value_set_string (value, self->priv->device);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_mixer_event_role_constructor (GType                  type,
+                                  guint                  n_construct_properties,
+                                  GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcMixerEventRole *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_event_role_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_EVENT_ROLE (object);
+
+        return object;
+}
+
+static void
+gvc_mixer_event_role_class_init (GvcMixerEventRoleClass *klass)
+{
+        GObjectClass        *object_class = G_OBJECT_CLASS (klass);
+        GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_event_role_constructor;
+        object_class->finalize = gvc_mixer_event_role_finalize;
+        object_class->set_property = gvc_mixer_event_role_set_property;
+        object_class->get_property = gvc_mixer_event_role_get_property;
+
+        stream_class->push_volume = gvc_mixer_event_role_push_volume;
+        stream_class->change_is_muted = gvc_mixer_event_role_change_is_muted;
+
+        g_object_class_install_property (object_class,
+                                         PROP_DEVICE,
+                                         g_param_spec_string ("device",
+                                                              "Device",
+                                                              "Device",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_type_class_add_private (klass, sizeof (GvcMixerEventRolePrivate));
+}
+
+static void
+gvc_mixer_event_role_init (GvcMixerEventRole *event_role)
+{
+        event_role->priv = GVC_MIXER_EVENT_ROLE_GET_PRIVATE (event_role);
+
+}
+
+static void
+gvc_mixer_event_role_finalize (GObject *object)
+{
+        GvcMixerEventRole *mixer_event_role;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_EVENT_ROLE (object));
+
+        mixer_event_role = GVC_MIXER_EVENT_ROLE (object);
+
+        g_return_if_fail (mixer_event_role->priv != NULL);
+
+        g_free (mixer_event_role->priv->device);
+
+        G_OBJECT_CLASS (gvc_mixer_event_role_parent_class)->finalize (object);
+}
+
+/**
+ * gvc_mixer_event_role_new: (skip)
+ *
+ * @context:
+ * @index:
+ * @channel_map:
+ *
+ * Returns:
+ */
+GvcMixerStream *
+gvc_mixer_event_role_new (pa_context *context,
+                          const char *device,
+                          GvcChannelMap *channel_map)
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_EVENT_ROLE,
+                               "pa-context", context,
+                               "index", 0,
+                               "device", device,
+                               "channel-map", channel_map,
+                               NULL);
+
+        return GVC_MIXER_STREAM (object);
+}
diff --git a/panels/sound/gvc-mixer-event-role.h b/panels/sound/gvc-mixer-event-role.h
new file mode 100644
index 0000000..ab4c509
--- /dev/null
+++ b/panels/sound/gvc-mixer-event-role.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_EVENT_ROLE_H
+#define __GVC_MIXER_EVENT_ROLE_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_EVENT_ROLE         (gvc_mixer_event_role_get_type ())
+#define GVC_MIXER_EVENT_ROLE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRole))
+#define GVC_MIXER_EVENT_ROLE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRoleClass))
+#define GVC_IS_MIXER_EVENT_ROLE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_EVENT_ROLE))
+#define GVC_IS_MIXER_EVENT_ROLE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_EVENT_ROLE))
+#define GVC_MIXER_EVENT_ROLE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_EVENT_ROLE, GvcMixerEventRoleClass))
+
+typedef struct GvcMixerEventRolePrivate GvcMixerEventRolePrivate;
+
+typedef struct
+{
+        GvcMixerStream            parent;
+        GvcMixerEventRolePrivate *priv;
+} GvcMixerEventRole;
+
+typedef struct
+{
+        GvcMixerStreamClass parent_class;
+} GvcMixerEventRoleClass;
+
+GType               gvc_mixer_event_role_get_type      (void);
+
+GvcMixerStream *    gvc_mixer_event_role_new           (pa_context    *context,
+                                                        const char    *device,
+                                                        GvcChannelMap *channel_map);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_EVENT_ROLE_H */
diff --git a/panels/sound/gvc-mixer-sink-input.c b/panels/sound/gvc-mixer-sink-input.c
new file mode 100644
index 0000000..9429eca
--- /dev/null
+++ b/panels/sound/gvc-mixer-sink-input.c
@@ -0,0 +1,199 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-sink-input.h"
+#include "gvc-mixer-stream-private.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_MIXER_SINK_INPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputPrivate))
+
+struct GvcMixerSinkInputPrivate
+{
+        gpointer dummy;
+};
+
+static void     gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass);
+static void     gvc_mixer_sink_input_init       (GvcMixerSinkInput      *mixer_sink_input);
+static void     gvc_mixer_sink_input_finalize   (GObject                *object);
+static void     gvc_mixer_sink_input_dispose    (GObject                *object);
+
+G_DEFINE_TYPE (GvcMixerSinkInput, gvc_mixer_sink_input, GVC_TYPE_MIXER_STREAM)
+
+static gboolean
+gvc_mixer_sink_input_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        pa_operation        *o;
+        guint                index;
+        const GvcChannelMap *map;
+        pa_context          *context;
+        const pa_cvolume    *cv;
+        guint                num_channels;
+
+        index = gvc_mixer_stream_get_index (stream);
+
+        map = gvc_mixer_stream_get_channel_map (stream);
+        num_channels = gvc_channel_map_get_num_channels (map);
+
+        cv = gvc_channel_map_get_cvolume(map);
+
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_sink_input_volume (context,
+                                              index,
+                                              cv,
+                                              NULL,
+                                              NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_sink_input_volume() failed");
+                return FALSE;
+        }
+
+        *op = o;
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_sink_input_change_is_muted (GvcMixerStream *stream,
+                                      gboolean        is_muted)
+{
+        pa_operation *o;
+        guint         index;
+        pa_context   *context;
+
+        index = gvc_mixer_stream_get_index (stream);
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_sink_input_mute (context,
+                                            index,
+                                            is_muted,
+                                            NULL,
+                                            NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_sink_input_mute_by_index() failed");
+                return FALSE;
+        }
+
+        pa_operation_unref(o);
+
+        return TRUE;
+}
+
+static GObject *
+gvc_mixer_sink_input_constructor (GType                  type,
+                                  guint                  n_construct_properties,
+                                  GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcMixerSinkInput *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_SINK_INPUT (object);
+
+        return object;
+}
+
+static void
+gvc_mixer_sink_input_class_init (GvcMixerSinkInputClass *klass)
+{
+        GObjectClass        *object_class = G_OBJECT_CLASS (klass);
+        GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_sink_input_constructor;
+        object_class->dispose = gvc_mixer_sink_input_dispose;
+        object_class->finalize = gvc_mixer_sink_input_finalize;
+
+        stream_class->push_volume = gvc_mixer_sink_input_push_volume;
+        stream_class->change_is_muted = gvc_mixer_sink_input_change_is_muted;
+
+        g_type_class_add_private (klass, sizeof (GvcMixerSinkInputPrivate));
+}
+
+static void
+gvc_mixer_sink_input_init (GvcMixerSinkInput *sink_input)
+{
+        sink_input->priv = GVC_MIXER_SINK_INPUT_GET_PRIVATE (sink_input);
+}
+
+static void
+gvc_mixer_sink_input_dispose (GObject *object)
+{
+        GvcMixerSinkInput *mixer_sink_input;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SINK_INPUT (object));
+
+        mixer_sink_input = GVC_MIXER_SINK_INPUT (object);
+
+        G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->dispose (object);
+}
+
+static void
+gvc_mixer_sink_input_finalize (GObject *object)
+{
+        GvcMixerSinkInput *mixer_sink_input;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SINK_INPUT (object));
+
+        mixer_sink_input = GVC_MIXER_SINK_INPUT (object);
+
+        g_return_if_fail (mixer_sink_input->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_sink_input_parent_class)->finalize (object);
+}
+
+/**
+ * gvc_mixer_sink_input_new: (skip)
+ *
+ * @context:
+ * @index:
+ * @channel_map:
+ *
+ * Returns:
+ */
+GvcMixerStream *
+gvc_mixer_sink_input_new (pa_context    *context,
+                          guint          index,
+                          GvcChannelMap *channel_map)
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_SINK_INPUT,
+                               "pa-context", context,
+                               "index", index,
+                               "channel-map", channel_map,
+                               NULL);
+
+        return GVC_MIXER_STREAM (object);
+}
diff --git a/panels/sound/gvc-mixer-sink-input.h b/panels/sound/gvc-mixer-sink-input.h
new file mode 100644
index 0000000..8a4b714
--- /dev/null
+++ b/panels/sound/gvc-mixer-sink-input.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_SINK_INPUT_H
+#define __GVC_MIXER_SINK_INPUT_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_SINK_INPUT         (gvc_mixer_sink_input_get_type ())
+#define GVC_MIXER_SINK_INPUT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInput))
+#define GVC_MIXER_SINK_INPUT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputClass))
+#define GVC_IS_MIXER_SINK_INPUT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SINK_INPUT))
+#define GVC_IS_MIXER_SINK_INPUT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SINK_INPUT))
+#define GVC_MIXER_SINK_INPUT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SINK_INPUT, GvcMixerSinkInputClass))
+
+typedef struct GvcMixerSinkInputPrivate GvcMixerSinkInputPrivate;
+
+typedef struct
+{
+        GvcMixerStream            parent;
+        GvcMixerSinkInputPrivate *priv;
+} GvcMixerSinkInput;
+
+typedef struct
+{
+        GvcMixerStreamClass parent_class;
+} GvcMixerSinkInputClass;
+
+GType               gvc_mixer_sink_input_get_type      (void);
+
+GvcMixerStream *    gvc_mixer_sink_input_new           (pa_context    *context,
+                                                        guint          index,
+                                                        GvcChannelMap *map);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_SINK_INPUT_H */
diff --git a/panels/sound/gvc-mixer-sink.c b/panels/sound/gvc-mixer-sink.c
new file mode 100644
index 0000000..30fceac
--- /dev/null
+++ b/panels/sound/gvc-mixer-sink.c
@@ -0,0 +1,231 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-sink.h"
+#include "gvc-mixer-stream-private.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_MIXER_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SINK, GvcMixerSinkPrivate))
+
+struct GvcMixerSinkPrivate
+{
+        gpointer dummy;
+};
+
+static void     gvc_mixer_sink_class_init (GvcMixerSinkClass *klass);
+static void     gvc_mixer_sink_init       (GvcMixerSink      *mixer_sink);
+static void     gvc_mixer_sink_finalize   (GObject           *object);
+static void     gvc_mixer_sink_dispose    (GObject           *object);
+
+G_DEFINE_TYPE (GvcMixerSink, gvc_mixer_sink, GVC_TYPE_MIXER_STREAM)
+
+static gboolean
+gvc_mixer_sink_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        pa_operation        *o;
+        guint                index;
+        const GvcChannelMap *map;
+        pa_context          *context;
+        const pa_cvolume    *cv;
+
+        index = gvc_mixer_stream_get_index (stream);
+
+        map = gvc_mixer_stream_get_channel_map (stream);
+
+        /* set the volume */
+        cv = gvc_channel_map_get_cvolume(map);
+
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_sink_volume_by_index (context,
+                                                 index,
+                                                 cv,
+                                                 NULL,
+                                                 NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_sink_volume_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        *op = o;
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_sink_change_is_muted (GvcMixerStream *stream,
+                                gboolean        is_muted)
+{
+        pa_operation *o;
+        guint         index;
+        pa_context   *context;
+
+        index = gvc_mixer_stream_get_index (stream);
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_sink_mute_by_index (context,
+                                               index,
+                                               is_muted,
+                                               NULL,
+                                               NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_sink_mute_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        pa_operation_unref(o);
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_sink_change_port (GvcMixerStream *stream,
+                            const char     *port)
+{
+#if PA_MICRO > 15
+        pa_operation *o;
+        guint         index;
+        pa_context   *context;
+
+        index = gvc_mixer_stream_get_index (stream);
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_sink_port_by_index (context,
+                                               index,
+                                               port,
+                                               NULL,
+                                               NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_sink_port_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        pa_operation_unref(o);
+
+        return TRUE;
+#else
+        return FALSE;
+#endif /* PA_MICRO > 15 */
+}
+
+static GObject *
+gvc_mixer_sink_constructor (GType                  type,
+                            guint                  n_construct_properties,
+                            GObjectConstructParam *construct_params)
+{
+        GObject      *object;
+        GvcMixerSink *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_SINK (object);
+
+        return object;
+}
+
+static void
+gvc_mixer_sink_class_init (GvcMixerSinkClass *klass)
+{
+        GObjectClass        *object_class = G_OBJECT_CLASS (klass);
+        GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_sink_constructor;
+        object_class->dispose = gvc_mixer_sink_dispose;
+        object_class->finalize = gvc_mixer_sink_finalize;
+
+        stream_class->push_volume = gvc_mixer_sink_push_volume;
+        stream_class->change_port = gvc_mixer_sink_change_port;
+        stream_class->change_is_muted = gvc_mixer_sink_change_is_muted;
+
+        g_type_class_add_private (klass, sizeof (GvcMixerSinkPrivate));
+}
+
+static void
+gvc_mixer_sink_init (GvcMixerSink *sink)
+{
+        sink->priv = GVC_MIXER_SINK_GET_PRIVATE (sink);
+}
+
+static void
+gvc_mixer_sink_dispose (GObject *object)
+{
+        GvcMixerSink *mixer_sink;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SINK (object));
+
+        mixer_sink = GVC_MIXER_SINK (object);
+
+        G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->dispose (object);
+}
+
+static void
+gvc_mixer_sink_finalize (GObject *object)
+{
+        GvcMixerSink *mixer_sink;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SINK (object));
+
+        mixer_sink = GVC_MIXER_SINK (object);
+
+        g_return_if_fail (mixer_sink->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_sink_parent_class)->finalize (object);
+}
+
+/**
+ * gvc_mixer_sink_new: (skip)
+ *
+ * @context:
+ * @index:
+ * @channel_map:
+ *
+ * Returns:
+ */
+GvcMixerStream *
+gvc_mixer_sink_new (pa_context    *context,
+                    guint          index,
+                    GvcChannelMap *channel_map)
+
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_SINK,
+                               "pa-context", context,
+                               "index", index,
+                               "channel-map", channel_map,
+                               NULL);
+
+        return GVC_MIXER_STREAM (object);
+}
diff --git a/panels/sound/gvc-mixer-sink.h b/panels/sound/gvc-mixer-sink.h
new file mode 100644
index 0000000..2a4a4ba
--- /dev/null
+++ b/panels/sound/gvc-mixer-sink.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_SINK_H
+#define __GVC_MIXER_SINK_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_SINK         (gvc_mixer_sink_get_type ())
+#define GVC_MIXER_SINK(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SINK, GvcMixerSink))
+#define GVC_MIXER_SINK_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SINK, GvcMixerSinkClass))
+#define GVC_IS_MIXER_SINK(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SINK))
+#define GVC_IS_MIXER_SINK_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SINK))
+#define GVC_MIXER_SINK_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SINK, GvcMixerSinkClass))
+
+typedef struct GvcMixerSinkPrivate GvcMixerSinkPrivate;
+
+typedef struct
+{
+        GvcMixerStream       parent;
+        GvcMixerSinkPrivate *priv;
+} GvcMixerSink;
+
+typedef struct
+{
+        GvcMixerStreamClass parent_class;
+} GvcMixerSinkClass;
+
+GType               gvc_mixer_sink_get_type            (void);
+
+GvcMixerStream *    gvc_mixer_sink_new                 (pa_context    *context,
+                                                        guint          index,
+                                                        GvcChannelMap *map);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_SINK_H */
diff --git a/panels/sound/gvc-mixer-source-output.c b/panels/sound/gvc-mixer-source-output.c
new file mode 100644
index 0000000..636fc2e
--- /dev/null
+++ b/panels/sound/gvc-mixer-source-output.c
@@ -0,0 +1,137 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-source-output.h"
+
+#define GVC_MIXER_SOURCE_OUTPUT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputPrivate))
+
+struct GvcMixerSourceOutputPrivate
+{
+        gpointer dummy;
+};
+
+static void     gvc_mixer_source_output_class_init (GvcMixerSourceOutputClass *klass);
+static void     gvc_mixer_source_output_init       (GvcMixerSourceOutput      *mixer_source_output);
+static void     gvc_mixer_source_output_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcMixerSourceOutput, gvc_mixer_source_output, GVC_TYPE_MIXER_STREAM)
+
+static gboolean
+gvc_mixer_source_output_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        /* FIXME: */
+        *op = NULL;
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_source_output_change_is_muted (GvcMixerStream *stream,
+                                      gboolean        is_muted)
+{
+        /* FIXME: */
+        return TRUE;
+}
+
+static GObject *
+gvc_mixer_source_output_constructor (GType                  type,
+                                  guint                  n_construct_properties,
+                                  GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcMixerSourceOutput *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_source_output_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_SOURCE_OUTPUT (object);
+
+        return object;
+}
+
+static void
+gvc_mixer_source_output_class_init (GvcMixerSourceOutputClass *klass)
+{
+        GObjectClass        *object_class = G_OBJECT_CLASS (klass);
+        GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_source_output_constructor;
+        object_class->finalize = gvc_mixer_source_output_finalize;
+
+        stream_class->push_volume = gvc_mixer_source_output_push_volume;
+        stream_class->change_is_muted = gvc_mixer_source_output_change_is_muted;
+
+        g_type_class_add_private (klass, sizeof (GvcMixerSourceOutputPrivate));
+}
+
+static void
+gvc_mixer_source_output_init (GvcMixerSourceOutput *source_output)
+{
+        source_output->priv = GVC_MIXER_SOURCE_OUTPUT_GET_PRIVATE (source_output);
+
+}
+
+static void
+gvc_mixer_source_output_finalize (GObject *object)
+{
+        GvcMixerSourceOutput *mixer_source_output;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SOURCE_OUTPUT (object));
+
+        mixer_source_output = GVC_MIXER_SOURCE_OUTPUT (object);
+
+        g_return_if_fail (mixer_source_output->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_source_output_parent_class)->finalize (object);
+}
+
+/**
+ * gvc_mixer_source_output_new: (skip)
+ *
+ * @context:
+ * @index:
+ * @channel_map:
+ *
+ * Returns:
+ */
+GvcMixerStream *
+gvc_mixer_source_output_new (pa_context    *context,
+                             guint          index,
+                             GvcChannelMap *channel_map)
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_SOURCE_OUTPUT,
+                               "pa-context", context,
+                               "index", index,
+                               "channel-map", channel_map,
+                               NULL);
+
+        return GVC_MIXER_STREAM (object);
+}
diff --git a/panels/sound/gvc-mixer-source-output.h b/panels/sound/gvc-mixer-source-output.h
new file mode 100644
index 0000000..2283e3b
--- /dev/null
+++ b/panels/sound/gvc-mixer-source-output.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_SOURCE_OUTPUT_H
+#define __GVC_MIXER_SOURCE_OUTPUT_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_SOURCE_OUTPUT         (gvc_mixer_source_output_get_type ())
+#define GVC_MIXER_SOURCE_OUTPUT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutput))
+#define GVC_MIXER_SOURCE_OUTPUT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputClass))
+#define GVC_IS_MIXER_SOURCE_OUTPUT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT))
+#define GVC_IS_MIXER_SOURCE_OUTPUT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SOURCE_OUTPUT))
+#define GVC_MIXER_SOURCE_OUTPUT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SOURCE_OUTPUT, GvcMixerSourceOutputClass))
+
+typedef struct GvcMixerSourceOutputPrivate GvcMixerSourceOutputPrivate;
+
+typedef struct
+{
+        GvcMixerStream               parent;
+        GvcMixerSourceOutputPrivate *priv;
+} GvcMixerSourceOutput;
+
+typedef struct
+{
+        GvcMixerStreamClass parent_class;
+} GvcMixerSourceOutputClass;
+
+GType               gvc_mixer_source_output_get_type      (void);
+
+GvcMixerStream *    gvc_mixer_source_output_new           (pa_context    *context,
+                                                           guint          index,
+                                                           GvcChannelMap *map);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_SOURCE_OUTPUT_H */
diff --git a/panels/sound/gvc-mixer-source.c b/panels/sound/gvc-mixer-source.c
new file mode 100644
index 0000000..46d6403
--- /dev/null
+++ b/panels/sound/gvc-mixer-source.c
@@ -0,0 +1,231 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-source.h"
+#include "gvc-mixer-stream-private.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_MIXER_SOURCE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSourcePrivate))
+
+struct GvcMixerSourcePrivate
+{
+        gpointer dummy;
+};
+
+static void     gvc_mixer_source_class_init (GvcMixerSourceClass *klass);
+static void     gvc_mixer_source_init       (GvcMixerSource      *mixer_source);
+static void     gvc_mixer_source_finalize   (GObject            *object);
+static void     gvc_mixer_source_dispose    (GObject           *object);
+
+G_DEFINE_TYPE (GvcMixerSource, gvc_mixer_source, GVC_TYPE_MIXER_STREAM)
+
+static gboolean
+gvc_mixer_source_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        pa_operation        *o;
+        guint                index;
+        const GvcChannelMap *map;
+        pa_context          *context;
+        const pa_cvolume    *cv;
+
+        index = gvc_mixer_stream_get_index (stream);
+
+        map = gvc_mixer_stream_get_channel_map (stream);
+
+        /* set the volume */
+        cv = gvc_channel_map_get_cvolume (map);
+
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_source_volume_by_index (context,
+                                                   index,
+                                                   cv,
+                                                   NULL,
+                                                   NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_source_volume_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        *op = o;
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_source_change_is_muted (GvcMixerStream *stream,
+                                gboolean        is_muted)
+{
+        pa_operation *o;
+        guint         index;
+        pa_context   *context;
+
+        index = gvc_mixer_stream_get_index (stream);
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_source_mute_by_index (context,
+                                                 index,
+                                                 is_muted,
+                                                 NULL,
+                                                 NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_source_mute_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        pa_operation_unref(o);
+
+        return TRUE;
+}
+
+static gboolean
+gvc_mixer_source_change_port (GvcMixerStream *stream,
+                              const char     *port)
+{
+#if PA_MICRO > 15
+        pa_operation *o;
+        guint         index;
+        pa_context   *context;
+
+        index = gvc_mixer_stream_get_index (stream);
+        context = gvc_mixer_stream_get_pa_context (stream);
+
+        o = pa_context_set_source_port_by_index (context,
+                                                 index,
+                                                 port,
+                                                 NULL,
+                                                 NULL);
+
+        if (o == NULL) {
+                g_warning ("pa_context_set_source_port_by_index() failed: %s", pa_strerror(pa_context_errno(context)));
+                return FALSE;
+        }
+
+        pa_operation_unref(o);
+
+        return TRUE;
+#else
+        return FALSE;
+#endif /* PA_MICRO > 15 */
+}
+
+static GObject *
+gvc_mixer_source_constructor (GType                  type,
+                            guint                  n_construct_properties,
+                            GObjectConstructParam *construct_params)
+{
+        GObject        *object;
+        GvcMixerSource *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_source_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_SOURCE (object);
+
+        return object;
+}
+
+static void
+gvc_mixer_source_class_init (GvcMixerSourceClass *klass)
+{
+        GObjectClass        *object_class = G_OBJECT_CLASS (klass);
+        GvcMixerStreamClass *stream_class = GVC_MIXER_STREAM_CLASS (klass);
+
+        object_class->constructor = gvc_mixer_source_constructor;
+        object_class->dispose = gvc_mixer_source_dispose;
+        object_class->finalize = gvc_mixer_source_finalize;
+
+        stream_class->push_volume = gvc_mixer_source_push_volume;
+        stream_class->change_is_muted = gvc_mixer_source_change_is_muted;
+        stream_class->change_port = gvc_mixer_source_change_port;
+
+        g_type_class_add_private (klass, sizeof (GvcMixerSourcePrivate));
+}
+
+static void
+gvc_mixer_source_init (GvcMixerSource *source)
+{
+        source->priv = GVC_MIXER_SOURCE_GET_PRIVATE (source);
+}
+
+static void
+gvc_mixer_source_dispose (GObject *object)
+{
+        GvcMixerSource *mixer_source;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SOURCE (object));
+
+        mixer_source = GVC_MIXER_SOURCE (object);
+
+        G_OBJECT_CLASS (gvc_mixer_source_parent_class)->dispose (object);
+}
+
+static void
+gvc_mixer_source_finalize (GObject *object)
+{
+        GvcMixerSource *mixer_source;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_SOURCE (object));
+
+        mixer_source = GVC_MIXER_SOURCE (object);
+
+        g_return_if_fail (mixer_source->priv != NULL);
+        G_OBJECT_CLASS (gvc_mixer_source_parent_class)->finalize (object);
+}
+
+/**
+ * gvc_mixer_source_new: (skip)
+ *
+ * @context:
+ * @index:
+ * @channel_map:
+ *
+ * Returns:
+ */
+GvcMixerStream *
+gvc_mixer_source_new (pa_context    *context,
+                      guint          index,
+                      GvcChannelMap *channel_map)
+
+{
+        GObject *object;
+
+        object = g_object_new (GVC_TYPE_MIXER_SOURCE,
+                               "pa-context", context,
+                               "index", index,
+                               "channel-map", channel_map,
+                               NULL);
+
+        return GVC_MIXER_STREAM (object);
+}
diff --git a/panels/sound/gvc-mixer-source.h b/panels/sound/gvc-mixer-source.h
new file mode 100644
index 0000000..503f1b5
--- /dev/null
+++ b/panels/sound/gvc-mixer-source.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_SOURCE_H
+#define __GVC_MIXER_SOURCE_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_SOURCE         (gvc_mixer_source_get_type ())
+#define GVC_MIXER_SOURCE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSource))
+#define GVC_MIXER_SOURCE_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_SOURCE, GvcMixerSourceClass))
+#define GVC_IS_MIXER_SOURCE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_SOURCE))
+#define GVC_IS_MIXER_SOURCE_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_SOURCE))
+#define GVC_MIXER_SOURCE_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_SOURCE, GvcMixerSourceClass))
+
+typedef struct GvcMixerSourcePrivate GvcMixerSourcePrivate;
+
+typedef struct
+{
+        GvcMixerStream       parent;
+        GvcMixerSourcePrivate *priv;
+} GvcMixerSource;
+
+typedef struct
+{
+        GvcMixerStreamClass parent_class;
+} GvcMixerSourceClass;
+
+GType               gvc_mixer_source_get_type            (void);
+
+GvcMixerStream *    gvc_mixer_source_new               (pa_context    *context,
+                                                        guint          index,
+                                                        GvcChannelMap *map);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_SOURCE_H */
diff --git a/panels/sound/gvc-mixer-stream-private.h b/panels/sound/gvc-mixer-stream-private.h
new file mode 100644
index 0000000..b97ecf5
--- /dev/null
+++ b/panels/sound/gvc-mixer-stream-private.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_STREAM_PRIVATE_H
+#define __GVC_MIXER_STREAM_PRIVATE_H
+
+#include <glib-object.h>
+
+#include "gvc-channel-map.h"
+
+G_BEGIN_DECLS
+
+pa_context *        gvc_mixer_stream_get_pa_context  (GvcMixerStream *stream);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_STREAM_PRIVATE_H */
diff --git a/panels/sound/gvc-mixer-stream.c b/panels/sound/gvc-mixer-stream.c
new file mode 100644
index 0000000..3b4953a
--- /dev/null
+++ b/panels/sound/gvc-mixer-stream.c
@@ -0,0 +1,944 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-stream.h"
+#include "gvc-mixer-stream-private.h"
+#include "gvc-channel-map-private.h"
+
+#define GVC_MIXER_STREAM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStreamPrivate))
+
+static guint32 stream_serial = 1;
+
+struct GvcMixerStreamPrivate
+{
+        pa_context    *pa_context;
+        guint          id;
+        guint          index;
+        gint           card_index;
+        GvcChannelMap *channel_map;
+        char          *name;
+        char          *description;
+        char          *application_id;
+        char          *icon_name;
+        gboolean       is_muted;
+        gboolean       can_decibel;
+        gboolean       is_event_stream;
+        gboolean       is_virtual;
+        pa_volume_t    base_volume;
+        pa_operation  *change_volume_op;
+        char          *port;
+        char          *human_port;
+        GList         *ports;
+};
+
+enum
+{
+        PROP_0,
+        PROP_ID,
+        PROP_PA_CONTEXT,
+        PROP_CHANNEL_MAP,
+        PROP_INDEX,
+        PROP_NAME,
+        PROP_DESCRIPTION,
+        PROP_APPLICATION_ID,
+        PROP_ICON_NAME,
+        PROP_VOLUME,
+        PROP_DECIBEL,
+        PROP_IS_MUTED,
+        PROP_CAN_DECIBEL,
+        PROP_IS_EVENT_STREAM,
+        PROP_IS_VIRTUAL,
+        PROP_CARD_INDEX,
+        PROP_PORT,
+};
+
+static void     gvc_mixer_stream_class_init (GvcMixerStreamClass *klass);
+static void     gvc_mixer_stream_init       (GvcMixerStream      *mixer_stream);
+static void     gvc_mixer_stream_finalize   (GObject            *object);
+
+G_DEFINE_ABSTRACT_TYPE (GvcMixerStream, gvc_mixer_stream, G_TYPE_OBJECT)
+
+static guint32
+get_next_stream_serial (void)
+{
+        guint32 serial;
+
+        serial = stream_serial++;
+
+        if ((gint32)stream_serial < 0) {
+                stream_serial = 1;
+        }
+
+        return serial;
+}
+
+pa_context *
+gvc_mixer_stream_get_pa_context (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+        return stream->priv->pa_context;
+}
+
+guint
+gvc_mixer_stream_get_index (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+        return stream->priv->index;
+}
+
+guint
+gvc_mixer_stream_get_id (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+        return stream->priv->id;
+}
+
+const GvcChannelMap *
+gvc_mixer_stream_get_channel_map (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        return stream->priv->channel_map;
+}
+
+/**
+ * gvc_mixer_stream_get_volume:
+ *
+ * @stream:
+ *
+ * Returns: (type guint32) (transfer none):
+ */
+pa_volume_t
+gvc_mixer_stream_get_volume (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+
+        return (pa_volume_t) gvc_channel_map_get_volume(stream->priv->channel_map)[VOLUME];
+}
+
+gdouble
+gvc_mixer_stream_get_decibel (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+
+        return pa_sw_volume_to_dB(
+                        (pa_volume_t) gvc_channel_map_get_volume(stream->priv->channel_map)[VOLUME]);
+}
+
+/**
+ * gvc_mixer_stream_set_volume:
+ *
+ * @stream:
+ * @volume: (type guint32):
+ *
+ * Returns:
+ */
+gboolean
+gvc_mixer_stream_set_volume (GvcMixerStream *stream,
+                              pa_volume_t     volume)
+{
+        pa_cvolume cv;
+
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        cv = *gvc_channel_map_get_cvolume(stream->priv->channel_map);
+        pa_cvolume_scale(&cv, volume);
+
+        if (!pa_cvolume_equal(gvc_channel_map_get_cvolume(stream->priv->channel_map), &cv)) {
+                gvc_channel_map_volume_changed(stream->priv->channel_map, &cv, FALSE);
+                g_object_notify (G_OBJECT (stream), "volume");
+                return TRUE;
+        }
+
+        return FALSE;
+}
+
+gboolean
+gvc_mixer_stream_set_decibel (GvcMixerStream *stream,
+                              gdouble         db)
+{
+        pa_cvolume cv;
+
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        cv = *gvc_channel_map_get_cvolume(stream->priv->channel_map);
+        pa_cvolume_scale(&cv, pa_sw_volume_from_dB(db));
+
+        if (!pa_cvolume_equal(gvc_channel_map_get_cvolume(stream->priv->channel_map), &cv)) {
+                gvc_channel_map_volume_changed(stream->priv->channel_map, &cv, FALSE);
+                g_object_notify (G_OBJECT (stream), "volume");
+        }
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_get_is_muted  (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        return stream->priv->is_muted;
+}
+
+gboolean
+gvc_mixer_stream_get_can_decibel (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        return stream->priv->can_decibel;
+}
+
+gboolean
+gvc_mixer_stream_set_is_muted  (GvcMixerStream *stream,
+                                gboolean        is_muted)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        if (is_muted != stream->priv->is_muted) {
+                stream->priv->is_muted = is_muted;
+                g_object_notify (G_OBJECT (stream), "is-muted");
+        }
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_set_can_decibel  (GvcMixerStream *stream,
+                                   gboolean        can_decibel)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        if (can_decibel != stream->priv->can_decibel) {
+                stream->priv->can_decibel = can_decibel;
+                g_object_notify (G_OBJECT (stream), "can-decibel");
+        }
+
+        return TRUE;
+}
+
+const char *
+gvc_mixer_stream_get_name (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        return stream->priv->name;
+}
+
+const char *
+gvc_mixer_stream_get_description (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        return stream->priv->description;
+}
+
+gboolean
+gvc_mixer_stream_set_name (GvcMixerStream *stream,
+                           const char     *name)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        g_free (stream->priv->name);
+        stream->priv->name = g_strdup (name);
+        g_object_notify (G_OBJECT (stream), "name");
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_set_description (GvcMixerStream *stream,
+                                  const char     *description)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        g_free (stream->priv->description);
+        stream->priv->description = g_strdup (description);
+        g_object_notify (G_OBJECT (stream), "description");
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_is_event_stream (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        return stream->priv->is_event_stream;
+}
+
+gboolean
+gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream,
+                                      gboolean is_event_stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        stream->priv->is_event_stream = is_event_stream;
+        g_object_notify (G_OBJECT (stream), "is-event-stream");
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_is_virtual (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        return stream->priv->is_virtual;
+}
+
+gboolean
+gvc_mixer_stream_set_is_virtual (GvcMixerStream *stream,
+                                 gboolean is_virtual)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        stream->priv->is_virtual = is_virtual;
+        g_object_notify (G_OBJECT (stream), "is-virtual");
+
+        return TRUE;
+}
+
+const char *
+gvc_mixer_stream_get_application_id (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        return stream->priv->application_id;
+}
+
+gboolean
+gvc_mixer_stream_set_application_id (GvcMixerStream *stream,
+                                     const char *application_id)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        g_free (stream->priv->application_id);
+        stream->priv->application_id = g_strdup (application_id);
+        g_object_notify (G_OBJECT (stream), "application-id");
+
+        return TRUE;
+}
+
+static void
+on_channel_map_volume_changed (GvcChannelMap  *channel_map,
+                               gboolean        set,
+                               GvcMixerStream *stream)
+{
+        if (set == TRUE)
+                gvc_mixer_stream_push_volume (stream);
+
+        g_object_notify (G_OBJECT (stream), "volume");
+}
+
+static gboolean
+gvc_mixer_stream_set_channel_map (GvcMixerStream *stream,
+                                  GvcChannelMap  *channel_map)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        if (channel_map != NULL) {
+                g_object_ref (channel_map);
+        }
+
+        if (stream->priv->channel_map != NULL) {
+                g_signal_handlers_disconnect_by_func (stream->priv->channel_map,
+                                                      on_channel_map_volume_changed,
+                                                      stream);
+                g_object_unref (stream->priv->channel_map);
+        }
+
+        stream->priv->channel_map = channel_map;
+
+        if (stream->priv->channel_map != NULL) {
+                g_signal_connect (stream->priv->channel_map,
+                                  "volume-changed",
+                                  G_CALLBACK (on_channel_map_volume_changed),
+                                  stream);
+
+                g_object_notify (G_OBJECT (stream), "channel-map");
+        }
+
+        return TRUE;
+}
+
+const char *
+gvc_mixer_stream_get_icon_name (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        return stream->priv->icon_name;
+}
+
+gboolean
+gvc_mixer_stream_set_icon_name (GvcMixerStream *stream,
+                                const char     *icon_name)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        g_free (stream->priv->icon_name);
+        stream->priv->icon_name = g_strdup (icon_name);
+        g_object_notify (G_OBJECT (stream), "icon-name");
+
+        return TRUE;
+}
+
+/**
+ * gvc_mixer_stream_get_base_volume:
+ *
+ * @stream:
+ *
+ * Returns: (type guint32) (transfer none):
+ */
+pa_volume_t
+gvc_mixer_stream_get_base_volume (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), 0);
+
+        return stream->priv->base_volume;
+}
+
+/**
+ * gvc_mixer_stream_set_base_volume:
+ *
+ * @stream:
+ * @base_volume: (type guint32):
+ *
+ * Returns:
+ */
+gboolean
+gvc_mixer_stream_set_base_volume (GvcMixerStream *stream,
+                                  pa_volume_t base_volume)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        stream->priv->base_volume = base_volume;
+
+        return TRUE;
+}
+
+const GvcMixerStreamPort *
+gvc_mixer_stream_get_port (GvcMixerStream *stream)
+{
+        GList *l;
+
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), NULL);
+        g_return_val_if_fail (stream->priv->ports != NULL, NULL);
+
+        for (l = stream->priv->ports; l != NULL; l = l->next) {
+                GvcMixerStreamPort *p = l->data;
+                if (g_strcmp0 (stream->priv->port, p->port) == 0) {
+                        return p;
+                }
+        }
+
+        g_assert_not_reached ();
+
+        return NULL;
+}
+
+gboolean
+gvc_mixer_stream_set_port (GvcMixerStream *stream,
+                           const char     *port)
+{
+        GList *l;
+
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        g_return_val_if_fail (stream->priv->ports != NULL, FALSE);
+
+        g_free (stream->priv->port);
+        stream->priv->port = g_strdup (port);
+
+        g_free (stream->priv->human_port);
+        stream->priv->human_port = NULL;
+
+        for (l = stream->priv->ports; l != NULL; l = l->next) {
+                GvcMixerStreamPort *p = l->data;
+                if (g_str_equal (stream->priv->port, p->port)) {
+                        stream->priv->human_port = g_strdup (p->human_port);
+                        break;
+                }
+        }
+
+        g_object_notify (G_OBJECT (stream), "port");
+
+        return TRUE;
+}
+
+gboolean
+gvc_mixer_stream_change_port (GvcMixerStream *stream,
+                              const char     *port)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        return GVC_MIXER_STREAM_GET_CLASS (stream)->change_port (stream, port);
+}
+
+const GList *
+gvc_mixer_stream_get_ports (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        return stream->priv->ports;
+}
+
+static int
+sort_ports (GvcMixerStreamPort *a,
+            GvcMixerStreamPort *b)
+{
+        if (a->priority == b->priority)
+                return 0;
+        if (a->priority > b->priority)
+                return 1;
+        return -1;
+}
+
+gboolean
+gvc_mixer_stream_set_ports (GvcMixerStream *stream,
+                            GList          *ports)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        g_return_val_if_fail (stream->priv->ports == NULL, FALSE);
+
+        stream->priv->ports = g_list_sort (ports, (GCompareFunc) sort_ports);
+
+        return TRUE;
+}
+
+gint
+gvc_mixer_stream_get_card_index (GvcMixerStream *stream)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), PA_INVALID_INDEX);
+        return stream->priv->card_index;
+}
+
+gboolean
+gvc_mixer_stream_set_card_index (GvcMixerStream *stream,
+                                 gint            card_index)
+{
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        stream->priv->card_index = card_index;
+        g_object_notify (G_OBJECT (stream), "card-index");
+
+        return TRUE;
+}
+
+static void
+gvc_mixer_stream_set_property (GObject       *object,
+                               guint          prop_id,
+                               const GValue  *value,
+                               GParamSpec    *pspec)
+{
+        GvcMixerStream *self = GVC_MIXER_STREAM (object);
+
+        switch (prop_id) {
+        case PROP_PA_CONTEXT:
+                self->priv->pa_context = g_value_get_pointer (value);
+                break;
+        case PROP_INDEX:
+                self->priv->index = g_value_get_ulong (value);
+                break;
+        case PROP_ID:
+                self->priv->id = g_value_get_ulong (value);
+                break;
+        case PROP_CHANNEL_MAP:
+                gvc_mixer_stream_set_channel_map (self, g_value_get_object (value));
+                break;
+        case PROP_NAME:
+                gvc_mixer_stream_set_name (self, g_value_get_string (value));
+                break;
+        case PROP_DESCRIPTION:
+                gvc_mixer_stream_set_description (self, g_value_get_string (value));
+                break;
+        case PROP_APPLICATION_ID:
+                gvc_mixer_stream_set_application_id (self, g_value_get_string (value));
+                break;
+        case PROP_ICON_NAME:
+                gvc_mixer_stream_set_icon_name (self, g_value_get_string (value));
+                break;
+        case PROP_VOLUME:
+                gvc_mixer_stream_set_volume (self, g_value_get_ulong (value));
+                break;
+        case PROP_DECIBEL:
+                gvc_mixer_stream_set_decibel (self, g_value_get_double (value));
+                break;
+        case PROP_IS_MUTED:
+                gvc_mixer_stream_set_is_muted (self, g_value_get_boolean (value));
+                break;
+        case PROP_IS_EVENT_STREAM:
+                gvc_mixer_stream_set_is_event_stream (self, g_value_get_boolean (value));
+                break;
+        case PROP_IS_VIRTUAL:
+                gvc_mixer_stream_set_is_virtual (self, g_value_get_boolean (value));
+                break;
+        case PROP_CAN_DECIBEL:
+                gvc_mixer_stream_set_can_decibel (self, g_value_get_boolean (value));
+                break;
+        case PROP_PORT:
+                gvc_mixer_stream_set_port (self, g_value_get_string (value));
+                break;
+        case PROP_CARD_INDEX:
+                self->priv->card_index = g_value_get_long (value);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_mixer_stream_get_property (GObject     *object,
+                               guint        prop_id,
+                               GValue      *value,
+                               GParamSpec  *pspec)
+{
+        GvcMixerStream *self = GVC_MIXER_STREAM (object);
+
+        switch (prop_id) {
+        case PROP_PA_CONTEXT:
+                g_value_set_pointer (value, self->priv->pa_context);
+                break;
+        case PROP_INDEX:
+                g_value_set_ulong (value, self->priv->index);
+                break;
+        case PROP_ID:
+                g_value_set_ulong (value, self->priv->id);
+                break;
+        case PROP_CHANNEL_MAP:
+                g_value_set_object (value, self->priv->channel_map);
+                break;
+        case PROP_NAME:
+                g_value_set_string (value, self->priv->name);
+                break;
+        case PROP_DESCRIPTION:
+                g_value_set_string (value, self->priv->description);
+                break;
+        case PROP_APPLICATION_ID:
+                g_value_set_string (value, self->priv->application_id);
+                break;
+        case PROP_ICON_NAME:
+                g_value_set_string (value, self->priv->icon_name);
+                break;
+        case PROP_VOLUME:
+                g_value_set_ulong (value,
+                                   pa_cvolume_max(gvc_channel_map_get_cvolume(self->priv->channel_map)));
+                break;
+        case PROP_DECIBEL:
+                g_value_set_double (value,
+                                    pa_sw_volume_to_dB(pa_cvolume_max(gvc_channel_map_get_cvolume(self->priv->channel_map))));
+                break;
+        case PROP_IS_MUTED:
+                g_value_set_boolean (value, self->priv->is_muted);
+                break;
+        case PROP_IS_EVENT_STREAM:
+                g_value_set_boolean (value, self->priv->is_event_stream);
+                break;
+        case PROP_IS_VIRTUAL:
+                g_value_set_boolean (value, self->priv->is_virtual);
+                break;
+        case PROP_CAN_DECIBEL:
+                g_value_set_boolean (value, self->priv->can_decibel);
+                break;
+        case PROP_PORT:
+                g_value_set_string (value, self->priv->port);
+                break;
+        case PROP_CARD_INDEX:
+                g_value_set_long (value, self->priv->card_index);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static GObject *
+gvc_mixer_stream_constructor (GType                  type,
+                              guint                  n_construct_properties,
+                              GObjectConstructParam *construct_params)
+{
+        GObject       *object;
+        GvcMixerStream *self;
+
+        object = G_OBJECT_CLASS (gvc_mixer_stream_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_MIXER_STREAM (object);
+
+        self->priv->id = get_next_stream_serial ();
+
+        return object;
+}
+
+static gboolean
+gvc_mixer_stream_real_change_port (GvcMixerStream *stream,
+                                   const char     *port)
+{
+        return FALSE;
+}
+
+static gboolean
+gvc_mixer_stream_real_push_volume (GvcMixerStream *stream, gpointer *op)
+{
+        return FALSE;
+}
+
+static gboolean
+gvc_mixer_stream_real_change_is_muted (GvcMixerStream *stream,
+                                       gboolean        is_muted)
+{
+        return FALSE;
+}
+
+gboolean
+gvc_mixer_stream_push_volume (GvcMixerStream *stream)
+{
+        pa_operation *op;
+        gboolean ret;
+
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+
+        if (stream->priv->is_event_stream != FALSE)
+                return TRUE;
+
+        g_debug ("Pushing new volume to stream '%s' (%s)",
+                 stream->priv->description, stream->priv->name);
+
+        ret = GVC_MIXER_STREAM_GET_CLASS (stream)->push_volume (stream, (gpointer *) &op);
+        if (ret) {
+                if (stream->priv->change_volume_op != NULL)
+                        pa_operation_unref (stream->priv->change_volume_op);
+                stream->priv->change_volume_op = op;
+        }
+        return ret;
+}
+
+gboolean
+gvc_mixer_stream_change_is_muted (GvcMixerStream *stream,
+                                  gboolean        is_muted)
+{
+        gboolean ret;
+        g_return_val_if_fail (GVC_IS_MIXER_STREAM (stream), FALSE);
+        ret = GVC_MIXER_STREAM_GET_CLASS (stream)->change_is_muted (stream, is_muted);
+        return ret;
+}
+
+gboolean
+gvc_mixer_stream_is_running (GvcMixerStream *stream)
+{
+        if (stream->priv->change_volume_op == NULL)
+                return FALSE;
+
+        if ((pa_operation_get_state(stream->priv->change_volume_op) == PA_OPERATION_RUNNING))
+                return TRUE;
+
+        pa_operation_unref(stream->priv->change_volume_op);
+        stream->priv->change_volume_op = NULL;
+
+        return FALSE;
+}
+
+static void
+gvc_mixer_stream_class_init (GvcMixerStreamClass *klass)
+{
+        GObjectClass   *gobject_class = G_OBJECT_CLASS (klass);
+
+        gobject_class->constructor = gvc_mixer_stream_constructor;
+        gobject_class->finalize = gvc_mixer_stream_finalize;
+        gobject_class->set_property = gvc_mixer_stream_set_property;
+        gobject_class->get_property = gvc_mixer_stream_get_property;
+
+        klass->push_volume = gvc_mixer_stream_real_push_volume;
+        klass->change_port = gvc_mixer_stream_real_change_port;
+        klass->change_is_muted = gvc_mixer_stream_real_change_is_muted;
+
+        g_object_class_install_property (gobject_class,
+                                         PROP_INDEX,
+                                         g_param_spec_ulong ("index",
+                                                             "Index",
+                                                             "The index for this stream",
+                                                             0, G_MAXULONG, 0,
+                                                             G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_ID,
+                                         g_param_spec_ulong ("id",
+                                                             "id",
+                                                             "The id for this stream",
+                                                             0, G_MAXULONG, 0,
+                                                             G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_CHANNEL_MAP,
+                                         g_param_spec_object ("channel-map",
+                                                              "channel map",
+                                                              "The channel map for this stream",
+                                                              GVC_TYPE_CHANNEL_MAP,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_PA_CONTEXT,
+                                         g_param_spec_pointer ("pa-context",
+                                                               "PulseAudio context",
+                                                               "The PulseAudio context for this stream",
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_object_class_install_property (gobject_class,
+                                         PROP_VOLUME,
+                                         g_param_spec_ulong ("volume",
+                                                             "Volume",
+                                                             "The volume for this stream",
+                                                             0, G_MAXULONG, 0,
+                                                             G_PARAM_READWRITE));
+        g_object_class_install_property (gobject_class,
+                                         PROP_DECIBEL,
+                                         g_param_spec_double ("decibel",
+                                                              "Decibel",
+                                                              "The decibel level for this stream",
+                                                              -G_MAXDOUBLE, G_MAXDOUBLE, 0,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_object_class_install_property (gobject_class,
+                                         PROP_NAME,
+                                         g_param_spec_string ("name",
+                                                              "Name",
+                                                              "Name to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_DESCRIPTION,
+                                         g_param_spec_string ("description",
+                                                              "Description",
+                                                              "Description to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_APPLICATION_ID,
+                                         g_param_spec_string ("application-id",
+                                                              "Application identifier",
+                                                              "Application identifier for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_ICON_NAME,
+                                         g_param_spec_string ("icon-name",
+                                                              "Icon Name",
+                                                              "Name of icon to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_IS_MUTED,
+                                         g_param_spec_boolean ("is-muted",
+                                                               "is muted",
+                                                               "Whether stream is muted",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_CAN_DECIBEL,
+                                         g_param_spec_boolean ("can-decibel",
+                                                               "can decibel",
+                                                               "Whether stream volume can be converted to decibel units",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_IS_EVENT_STREAM,
+                                         g_param_spec_boolean ("is-event-stream",
+                                                               "is event stream",
+                                                               "Whether stream's role is to play an event",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_IS_VIRTUAL,
+                                         g_param_spec_boolean ("is-virtual",
+                                                               "is virtual stream",
+                                                               "Whether the stream is virtual",
+                                                               FALSE,
+                                                               G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (gobject_class,
+                                         PROP_PORT,
+                                         g_param_spec_string ("port",
+                                                              "Port",
+                                                              "The name of the current port for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE));
+        g_object_class_install_property (gobject_class,
+                                         PROP_CARD_INDEX,
+                                         g_param_spec_long ("card-index",
+                                                             "Card index",
+                                                             "The index of the card for this stream",
+                                                             PA_INVALID_INDEX, G_MAXLONG, PA_INVALID_INDEX,
+                                                             G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_type_class_add_private (klass, sizeof (GvcMixerStreamPrivate));
+}
+
+static void
+gvc_mixer_stream_init (GvcMixerStream *stream)
+{
+        stream->priv = GVC_MIXER_STREAM_GET_PRIVATE (stream);
+}
+
+static void
+free_port (GvcMixerStreamPort *p)
+{
+        g_free (p->port);
+        g_free (p->human_port);
+        g_free (p);
+}
+
+static void
+gvc_mixer_stream_finalize (GObject *object)
+{
+        GvcMixerStream *mixer_stream;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_MIXER_STREAM (object));
+
+        mixer_stream = GVC_MIXER_STREAM (object);
+
+        g_return_if_fail (mixer_stream->priv != NULL);
+
+        g_object_unref (mixer_stream->priv->channel_map);
+        mixer_stream->priv->channel_map = NULL;
+
+        g_free (mixer_stream->priv->name);
+        mixer_stream->priv->name = NULL;
+
+        g_free (mixer_stream->priv->description);
+        mixer_stream->priv->description = NULL;
+
+        g_free (mixer_stream->priv->application_id);
+        mixer_stream->priv->application_id = NULL;
+
+        g_free (mixer_stream->priv->icon_name);
+        mixer_stream->priv->icon_name = NULL;
+
+        g_free (mixer_stream->priv->port);
+        mixer_stream->priv->port = NULL;
+
+        g_free (mixer_stream->priv->human_port);
+        mixer_stream->priv->human_port = NULL;
+
+        g_list_foreach (mixer_stream->priv->ports, (GFunc) free_port, NULL);
+        g_list_free (mixer_stream->priv->ports);
+        mixer_stream->priv->ports = NULL;
+
+       if (mixer_stream->priv->change_volume_op) {
+               pa_operation_unref(mixer_stream->priv->change_volume_op);
+               mixer_stream->priv->change_volume_op = NULL;
+       }
+
+        G_OBJECT_CLASS (gvc_mixer_stream_parent_class)->finalize (object);
+}
diff --git a/panels/sound/gvc-mixer-stream.h b/panels/sound/gvc-mixer-stream.h
new file mode 100644
index 0000000..53b7eb6
--- /dev/null
+++ b/panels/sound/gvc-mixer-stream.h
@@ -0,0 +1,125 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_MIXER_STREAM_H
+#define __GVC_MIXER_STREAM_H
+
+#include <glib-object.h>
+#include "gvc-pulseaudio-fake.h"
+#include "gvc-channel-map.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_MIXER_STREAM         (gvc_mixer_stream_get_type ())
+#define GVC_MIXER_STREAM(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStream))
+#define GVC_MIXER_STREAM_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_MIXER_STREAM, GvcMixerStreamClass))
+#define GVC_IS_MIXER_STREAM(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_MIXER_STREAM))
+#define GVC_IS_MIXER_STREAM_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_MIXER_STREAM))
+#define GVC_MIXER_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_MIXER_STREAM, GvcMixerStreamClass))
+
+typedef struct GvcMixerStreamPrivate GvcMixerStreamPrivate;
+
+typedef struct
+{
+        GObject                parent;
+        GvcMixerStreamPrivate *priv;
+} GvcMixerStream;
+
+typedef struct
+{
+        GObjectClass           parent_class;
+
+        /* vtable */
+        gboolean (*push_volume)     (GvcMixerStream *stream,
+                                     gpointer *operation);
+        gboolean (*change_is_muted) (GvcMixerStream *stream,
+                                     gboolean        is_muted);
+        gboolean (*change_port)     (GvcMixerStream *stream,
+                                     const char     *port);
+} GvcMixerStreamClass;
+
+typedef struct
+{
+        char *port;
+        char *human_port;
+        guint priority;
+} GvcMixerStreamPort;
+
+GType               gvc_mixer_stream_get_type        (void);
+
+guint               gvc_mixer_stream_get_index       (GvcMixerStream *stream);
+guint               gvc_mixer_stream_get_id          (GvcMixerStream *stream);
+const GvcChannelMap *gvc_mixer_stream_get_channel_map(GvcMixerStream *stream);
+const GvcMixerStreamPort *gvc_mixer_stream_get_port  (GvcMixerStream *stream);
+const GList *       gvc_mixer_stream_get_ports       (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_change_port     (GvcMixerStream *stream,
+                                                      const char     *port);
+
+pa_volume_t         gvc_mixer_stream_get_volume      (GvcMixerStream *stream);
+gdouble             gvc_mixer_stream_get_decibel     (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_push_volume     (GvcMixerStream *stream);
+pa_volume_t         gvc_mixer_stream_get_base_volume (GvcMixerStream *stream);
+
+gboolean            gvc_mixer_stream_get_is_muted    (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_get_can_decibel (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_change_is_muted (GvcMixerStream *stream,
+                                                      gboolean        is_muted);
+gboolean            gvc_mixer_stream_is_running      (GvcMixerStream *stream);
+const char *        gvc_mixer_stream_get_name        (GvcMixerStream *stream);
+const char *        gvc_mixer_stream_get_icon_name   (GvcMixerStream *stream);
+const char *        gvc_mixer_stream_get_description (GvcMixerStream *stream);
+const char *        gvc_mixer_stream_get_application_id (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_is_event_stream (GvcMixerStream *stream);
+gboolean            gvc_mixer_stream_is_virtual      (GvcMixerStream *stream);
+gint                gvc_mixer_stream_get_card_index  (GvcMixerStream *stream);
+
+/* private */
+gboolean            gvc_mixer_stream_set_volume      (GvcMixerStream *stream,
+                                                      pa_volume_t     volume);
+gboolean            gvc_mixer_stream_set_decibel     (GvcMixerStream *stream,
+                                                      gdouble         db);
+gboolean            gvc_mixer_stream_set_is_muted    (GvcMixerStream *stream,
+                                                      gboolean        is_muted);
+gboolean            gvc_mixer_stream_set_can_decibel (GvcMixerStream *stream,
+                                                      gboolean        can_decibel);
+gboolean            gvc_mixer_stream_set_name        (GvcMixerStream *stream,
+                                                      const char     *name);
+gboolean            gvc_mixer_stream_set_description (GvcMixerStream *stream,
+                                                      const char     *description);
+gboolean            gvc_mixer_stream_set_icon_name   (GvcMixerStream *stream,
+                                                      const char     *name);
+gboolean            gvc_mixer_stream_set_is_event_stream (GvcMixerStream *stream,
+                                                          gboolean is_event_stream);
+gboolean            gvc_mixer_stream_set_is_virtual  (GvcMixerStream *stream,
+                                                      gboolean is_event_stream);
+gboolean            gvc_mixer_stream_set_application_id (GvcMixerStream *stream,
+                                                         const char *application_id);
+gboolean            gvc_mixer_stream_set_base_volume (GvcMixerStream *stream,
+                                                      pa_volume_t     base_volume);
+gboolean            gvc_mixer_stream_set_port        (GvcMixerStream *stream,
+                                                      const char     *port);
+gboolean            gvc_mixer_stream_set_ports       (GvcMixerStream *stream,
+                                                      GList          *ports);
+gboolean            gvc_mixer_stream_set_card_index  (GvcMixerStream *stream,
+                                                      gint            card_index);
+
+G_END_DECLS
+
+#endif /* __GVC_MIXER_STREAM_H */
diff --git a/panels/sound/gvc-pulseaudio-fake.h b/panels/sound/gvc-pulseaudio-fake.h
new file mode 100644
index 0000000..65293cd
--- /dev/null
+++ b/panels/sound/gvc-pulseaudio-fake.h
@@ -0,0 +1,34 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_PULSEAUDIO_FAKE_H
+#define __GVC_PULSEAUDIO_FAKE_H
+
+#ifdef WITH_INTROSPECTION
+
+#ifndef PA_API_VERSION
+typedef int pa_channel_position_t;
+typedef guint32 pa_volume_t;
+typedef gpointer pa_context;
+#endif /* PA_API_VERSION */
+
+#endif /* WITH_INTROSPECTION */
+
+#endif /* __GVC_PULSEAUDIO_FAKE_H */
diff --git a/panels/sound/gvc-sound-theme-chooser.c b/panels/sound/gvc-sound-theme-chooser.c
new file mode 100644
index 0000000..676c510
--- /dev/null
+++ b/panels/sound/gvc-sound-theme-chooser.c
@@ -0,0 +1,1145 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Bastien Nocera <hadess hadess net>
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <utime.h>
+#include <errno.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+#include <libxml/tree.h>
+
+#include <gconf/gconf-client.h>
+
+#include "gvc-sound-theme-chooser.h"
+#include "sound-theme-file-utils.h"
+
+#define GVC_SOUND_THEME_CHOOSER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_SOUND_THEME_CHOOSER, GvcSoundThemeChooserPrivate))
+
+struct GvcSoundThemeChooserPrivate
+{
+        GtkWidget *combo_box;
+        GtkWidget *treeview;
+        GtkWidget *theme_box;
+        GtkWidget *selection_box;
+        GtkWidget *click_feedback_button;
+        GConfClient *client;
+        guint sounds_dir_id;
+        guint metacity_dir_id;
+};
+
+static void     gvc_sound_theme_chooser_class_init (GvcSoundThemeChooserClass *klass);
+static void     gvc_sound_theme_chooser_init       (GvcSoundThemeChooser      *sound_theme_chooser);
+static void     gvc_sound_theme_chooser_finalize   (GObject            *object);
+
+G_DEFINE_TYPE (GvcSoundThemeChooser, gvc_sound_theme_chooser, GTK_TYPE_VBOX)
+
+#define KEY_SOUNDS_DIR             "/desktop/gnome/sound"
+#define EVENT_SOUNDS_KEY           KEY_SOUNDS_DIR "/event_sounds"
+#define INPUT_SOUNDS_KEY           KEY_SOUNDS_DIR "/input_feedback_sounds"
+#define SOUND_THEME_KEY            KEY_SOUNDS_DIR "/theme_name"
+#define KEY_METACITY_DIR           "/apps/metacity/general"
+#define AUDIO_BELL_KEY             KEY_METACITY_DIR "/audible_bell"
+
+#define DEFAULT_ALERT_ID        "__default"
+#define CUSTOM_THEME_NAME       "__custom"
+#define NO_SOUNDS_THEME_NAME    "__no_sounds"
+
+enum {
+        THEME_DISPLAY_COL,
+        THEME_IDENTIFIER_COL,
+        THEME_PARENT_ID_COL,
+        THEME_NUM_COLS
+};
+
+enum {
+        ALERT_DISPLAY_COL,
+        ALERT_IDENTIFIER_COL,
+        ALERT_SOUND_TYPE_COL,
+        ALERT_NUM_COLS
+};
+
+enum {
+        SOUND_TYPE_UNSET,
+        SOUND_TYPE_OFF,
+        SOUND_TYPE_DEFAULT_FROM_THEME,
+        SOUND_TYPE_BUILTIN,
+        SOUND_TYPE_CUSTOM
+};
+
+static void
+on_combobox_changed (GtkComboBox          *widget,
+                     GvcSoundThemeChooser *chooser)
+{
+        GtkTreeIter   iter;
+        GtkTreeModel *model;
+        char         *theme_name;
+
+        if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (chooser->priv->combo_box), &iter) == FALSE) {
+                return;
+        }
+
+        model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser->priv->combo_box));
+        gtk_tree_model_get (model, &iter, THEME_IDENTIFIER_COL, &theme_name, -1);
+
+        g_assert (theme_name != NULL);
+
+        /* special case for no sounds */
+        if (strcmp (theme_name, NO_SOUNDS_THEME_NAME) == 0) {
+                gconf_client_set_bool (chooser->priv->client, EVENT_SOUNDS_KEY, FALSE, NULL);
+                return;
+        } else {
+                gconf_client_set_bool (chooser->priv->client, EVENT_SOUNDS_KEY, TRUE, NULL);
+        }
+
+        gconf_client_set_string (chooser->priv->client, SOUND_THEME_KEY, theme_name, NULL);
+
+        g_free (theme_name);
+
+        /* FIXME: reset alert model */
+}
+
+static char *
+load_index_theme_name (const char *index,
+                       char      **parent)
+{
+        GKeyFile *file;
+        char *indexname = NULL;
+        gboolean hidden;
+
+        file = g_key_file_new ();
+        if (g_key_file_load_from_file (file, index, G_KEY_FILE_KEEP_TRANSLATIONS, NULL) == FALSE) {
+                g_key_file_free (file);
+                return NULL;
+        }
+        /* Don't add hidden themes to the list */
+        hidden = g_key_file_get_boolean (file, "Sound Theme", "Hidden", NULL);
+        if (!hidden) {
+                indexname = g_key_file_get_locale_string (file,
+                                                          "Sound Theme",
+                                                          "Name",
+                                                          NULL,
+                                                          NULL);
+
+                /* Save the parent theme, if there's one */
+                if (parent != NULL) {
+                        *parent = g_key_file_get_string (file,
+                                                         "Sound Theme",
+                                                         "Inherits",
+                                                         NULL);
+                }
+        }
+
+        g_key_file_free (file);
+        return indexname;
+}
+
+static void
+sound_theme_in_dir (GHashTable *hash,
+                    const char *dir)
+{
+        GDir *d;
+        const char *name;
+
+        d = g_dir_open (dir, 0, NULL);
+        if (d == NULL) {
+                return;
+        }
+
+        while ((name = g_dir_read_name (d)) != NULL) {
+                char *dirname, *index, *indexname;
+
+                /* Look for directories */
+                dirname = g_build_filename (dir, name, NULL);
+                if (g_file_test (dirname, G_FILE_TEST_IS_DIR) == FALSE) {
+                        g_free (dirname);
+                        continue;
+                }
+
+                /* Look for index files */
+                index = g_build_filename (dirname, "index.theme", NULL);
+                g_free (dirname);
+
+                /* Check the name of the theme in the index.theme file */
+                indexname = load_index_theme_name (index, NULL);
+                g_free (index);
+                if (indexname == NULL) {
+                        continue;
+                }
+
+                g_hash_table_insert (hash, g_strdup (name), indexname);
+        }
+
+        g_dir_close (d);
+}
+
+static void
+add_theme_to_store (const char   *key,
+                    const char   *value,
+                    GtkListStore *store)
+{
+        char *parent;
+
+        parent = NULL;
+
+        /* Get the parent, if we're checking the custom theme */
+        if (strcmp (key, CUSTOM_THEME_NAME) == 0) {
+                char *name, *path;
+
+                path = custom_theme_dir_path ("index.theme");
+                name = load_index_theme_name (path, &parent);
+                g_free (name);
+                g_free (path);
+        }
+        gtk_list_store_insert_with_values (store, NULL, G_MAXINT,
+                                           THEME_DISPLAY_COL, value,
+                                           THEME_IDENTIFIER_COL, key,
+                                           THEME_PARENT_ID_COL, parent,
+                                           -1);
+        g_free (parent);
+}
+
+static void
+set_combox_for_theme_name (GvcSoundThemeChooser *chooser,
+                           const char           *name)
+{
+        GtkTreeIter   iter;
+        GtkTreeModel *model;
+        gboolean      found;
+
+        /* If the name is empty, use "freedesktop" */
+        if (name == NULL || *name == '\0') {
+                name = "freedesktop";
+        }
+
+        model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser->priv->combo_box));
+
+        if (gtk_tree_model_get_iter_first (model, &iter) == FALSE) {
+                return;
+        }
+
+        do {
+                char *value;
+
+                gtk_tree_model_get (model, &iter, THEME_IDENTIFIER_COL, &value, -1);
+                found = (value != NULL && strcmp (value, name) == 0);
+                g_free (value);
+
+        } while (!found && gtk_tree_model_iter_next (model, &iter));
+
+        /* When we can't find the theme we need to set, try to set the default
+         * one "freedesktop" */
+        if (found) {
+                gtk_combo_box_set_active_iter (GTK_COMBO_BOX (chooser->priv->combo_box), &iter);
+        } else if (strcmp (name, "freedesktop") != 0) {
+                g_debug ("not found, falling back to fdo");
+                set_combox_for_theme_name (chooser, "freedesktop");
+        }
+}
+
+static void
+set_input_feedback_enabled (GvcSoundThemeChooser *chooser,
+                            gboolean              enabled)
+{
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser->priv->click_feedback_button),
+                                      enabled);
+}
+
+static void
+setup_theme_selector (GvcSoundThemeChooser *chooser)
+{
+        GHashTable           *hash;
+        GtkListStore         *store;
+        GtkCellRenderer      *renderer;
+        const char * const   *data_dirs;
+        const char           *data_dir;
+        char                 *dir;
+        guint                 i;
+
+        /* Add the theme names and their display name to a hash table,
+         * makes it easy to avoid duplicate themes */
+        hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+        data_dirs = g_get_system_data_dirs ();
+        for (i = 0; data_dirs[i] != NULL; i++) {
+                dir = g_build_filename (data_dirs[i], "sounds", NULL);
+                sound_theme_in_dir (hash, dir);
+                g_free (dir);
+        }
+
+        data_dir = g_get_user_data_dir ();
+        dir = g_build_filename (data_dir, "sounds", NULL);
+        sound_theme_in_dir (hash, dir);
+        g_free (dir);
+
+        /* If there isn't at least one theme, make everything
+         * insensitive, LAME! */
+        if (g_hash_table_size (hash) == 0) {
+                gtk_widget_set_sensitive (GTK_WIDGET (chooser), FALSE);
+                g_warning ("Bad setup, install the freedesktop sound theme");
+                g_hash_table_destroy (hash);
+                return;
+        }
+
+        /* Setup the tree model, 3 columns:
+         * - internal theme name/directory
+         * - display theme name
+         * - the internal id for the parent theme, used for the custom theme */
+        store = gtk_list_store_new (THEME_NUM_COLS,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING);
+
+        /* Add the themes to a combobox */
+        gtk_list_store_insert_with_values (store,
+                                           NULL,
+                                           G_MAXINT,
+                                           THEME_DISPLAY_COL, _("No sounds"),
+                                           THEME_IDENTIFIER_COL, "__no_sounds",
+                                           THEME_PARENT_ID_COL, NULL,
+                                           -1);
+        g_hash_table_foreach (hash, (GHFunc) add_theme_to_store, store);
+        g_hash_table_destroy (hash);
+
+        /* Set the display */
+        gtk_combo_box_set_model (GTK_COMBO_BOX (chooser->priv->combo_box),
+                                 GTK_TREE_MODEL (store));
+
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (chooser->priv->combo_box),
+                                    renderer,
+                                    TRUE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (chooser->priv->combo_box),
+                                        renderer,
+                                        "text", THEME_DISPLAY_COL,
+                                        NULL);
+
+        g_signal_connect (chooser->priv->combo_box,
+                          "changed",
+                          G_CALLBACK (on_combobox_changed),
+                          chooser);
+}
+
+#define GVC_SOUND_SOUND    (xmlChar *) "sound"
+#define GVC_SOUND_NAME     (xmlChar *) "name"
+#define GVC_SOUND_FILENAME (xmlChar *) "filename"
+
+/* Adapted from yelp-toc-pager.c */
+static xmlChar *
+xml_get_and_trim_names (xmlNodePtr node)
+{
+        xmlNodePtr cur, keep = NULL;
+        xmlChar *keep_lang = NULL;
+        xmlChar *value;
+        int j, keep_pri = INT_MAX;
+
+        const gchar * const * langs = g_get_language_names ();
+
+        value = NULL;
+
+        for (cur = node->children; cur; cur = cur->next) {
+                if (! xmlStrcmp (cur->name, GVC_SOUND_NAME)) {
+                        xmlChar *cur_lang = NULL;
+                        int cur_pri = INT_MAX;
+
+                        cur_lang = xmlNodeGetLang (cur);
+
+                        if (cur_lang) {
+                                for (j = 0; langs[j]; j++) {
+                                        if (g_str_equal (cur_lang, langs[j])) {
+                                                cur_pri = j;
+                                                break;
+                                        }
+                                }
+                        } else {
+                                cur_pri = INT_MAX - 1;
+                        }
+
+                        if (cur_pri <= keep_pri) {
+                                if (keep_lang)
+                                        xmlFree (keep_lang);
+                                if (value)
+                                        xmlFree (value);
+
+                                value = xmlNodeGetContent (cur);
+
+                                keep_lang = cur_lang;
+                                keep_pri = cur_pri;
+                                keep = cur;
+                        } else {
+                                if (cur_lang)
+                                        xmlFree (cur_lang);
+                        }
+                }
+        }
+
+        /* Delete all GVC_SOUND_NAME nodes */
+        cur = node->children;
+        while (cur) {
+                xmlNodePtr this = cur;
+                cur = cur->next;
+                if (! xmlStrcmp (this->name, GVC_SOUND_NAME)) {
+                        xmlUnlinkNode (this);
+                        xmlFreeNode (this);
+                }
+        }
+
+        return value;
+}
+
+static void
+populate_model_from_node (GvcSoundThemeChooser *chooser,
+                          GtkTreeModel         *model,
+                          xmlNodePtr            node)
+{
+        xmlNodePtr child;
+        xmlChar   *filename;
+        xmlChar   *name;
+
+        filename = NULL;
+        name = xml_get_and_trim_names (node);
+        for (child = node->children; child; child = child->next) {
+                if (xmlNodeIsText (child)) {
+                        continue;
+                }
+
+                if (xmlStrcmp (child->name, GVC_SOUND_FILENAME) == 0) {
+                        filename = xmlNodeGetContent (child);
+                } else if (xmlStrcmp (child->name, GVC_SOUND_NAME) == 0) {
+                        /* EH? should have been trimmed */
+                }
+        }
+
+        if (filename != NULL && name != NULL) {
+                gtk_list_store_insert_with_values (GTK_LIST_STORE (model),
+                                                   NULL,
+                                                   G_MAXINT,
+                                                   ALERT_IDENTIFIER_COL, filename,
+                                                   ALERT_DISPLAY_COL, name,
+                                                   ALERT_SOUND_TYPE_COL, _("Built-in"),
+                                                   -1);
+        }
+
+        xmlFree (filename);
+        xmlFree (name);
+}
+
+static void
+populate_model_from_file (GvcSoundThemeChooser *chooser,
+                          GtkTreeModel         *model,
+                          const char           *filename)
+{
+        xmlDocPtr  doc;
+        xmlNodePtr root;
+        xmlNodePtr child;
+        gboolean   exists;
+
+        exists = g_file_test (filename, G_FILE_TEST_EXISTS);
+        if (! exists) {
+                return;
+        }
+
+        doc = xmlParseFile (filename);
+        if (doc == NULL) {
+                return;
+        }
+
+        root = xmlDocGetRootElement (doc);
+
+        for (child = root->children; child; child = child->next) {
+                if (xmlNodeIsText (child)) {
+                        continue;
+                }
+                if (xmlStrcmp (child->name, GVC_SOUND_SOUND) != 0) {
+                        continue;
+                }
+
+                populate_model_from_node (chooser, model, child);
+        }
+
+        xmlFreeDoc (doc);
+}
+
+static void
+populate_model_from_dir (GvcSoundThemeChooser *chooser,
+                         GtkTreeModel         *model,
+                         const char           *dirname)
+{
+        GDir       *d;
+        const char *name;
+
+        d = g_dir_open (dirname, 0, NULL);
+        if (d == NULL) {
+                return;
+        }
+
+        while ((name = g_dir_read_name (d)) != NULL) {
+                char *path;
+
+                if (! g_str_has_suffix (name, ".xml")) {
+                        continue;
+                }
+
+                path = g_build_filename (dirname, name, NULL);
+                populate_model_from_file (chooser, model, path);
+                g_free (path);
+        }
+}
+
+static gboolean
+save_alert_sounds (GvcSoundThemeChooser  *chooser,
+                   const char            *id)
+{
+        const char *sounds[3] = { "bell-terminal", "bell-window-system", NULL };
+        char *path;
+
+        if (strcmp (id, DEFAULT_ALERT_ID) == 0) {
+                delete_old_files (sounds);
+                delete_disabled_files (sounds);
+        } else {
+                delete_old_files (sounds);
+                delete_disabled_files (sounds);
+                add_custom_file (sounds, id);
+        }
+
+        /* And poke the directory so the theme gets updated */
+        path = custom_theme_dir_path (NULL);
+        if (utime (path, NULL) != 0) {
+                g_warning ("Failed to update mtime for directory '%s': %s",
+                           path, g_strerror (errno));
+        }
+        g_free (path);
+
+        return FALSE;
+}
+
+
+static void
+update_alert_model (GvcSoundThemeChooser  *chooser,
+                    const char            *id)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (chooser->priv->treeview));
+        gtk_tree_model_get_iter_first (model, &iter);
+        do {
+                char    *this_id;
+
+                gtk_tree_model_get (model, &iter,
+                                    ALERT_IDENTIFIER_COL, &this_id,
+                                    -1);
+
+                if (strcmp (this_id, id) == 0) {
+                        GtkTreeSelection *selection;
+
+                        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (chooser->priv->treeview));
+                        gtk_tree_selection_select_iter (selection, &iter);
+                }
+
+                g_free (this_id);
+        } while (gtk_tree_model_iter_next (model, &iter));
+}
+
+static void
+update_alert (GvcSoundThemeChooser *chooser,
+              const char           *alert_id)
+{
+        GtkTreeModel *theme_model;
+        GtkTreeIter   iter;
+        char         *theme;
+        char         *parent;
+        gboolean      is_custom;
+        gboolean      is_default;
+        gboolean      add_custom;
+        gboolean      remove_custom;
+
+        theme_model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser->priv->combo_box));
+        /* Get the current theme's name, and set the parent */
+        if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (chooser->priv->combo_box), &iter) == FALSE) {
+                return;
+        }
+
+        gtk_tree_model_get (theme_model, &iter,
+                            THEME_IDENTIFIER_COL, &theme,
+                            THEME_IDENTIFIER_COL, &parent,
+                            -1);
+        is_custom = strcmp (theme, CUSTOM_THEME_NAME) == 0;
+        is_default = strcmp (alert_id, DEFAULT_ALERT_ID) == 0;
+
+        /* So a few possibilities:
+         * 1. Named theme, default alert selected: noop
+         * 2. Named theme, alternate alert selected: create new custom with sound
+         * 3. Custom theme, default alert selected: remove sound and possibly custom
+         * 4. Custom theme, alternate alert selected: update custom sound
+         */
+        add_custom = FALSE;
+        remove_custom = FALSE;
+        if (! is_custom && is_default) {
+                /* remove custom just in case */
+                remove_custom = TRUE;
+        } else if (! is_custom && ! is_default) {
+                create_custom_theme (parent);
+                save_alert_sounds (chooser, alert_id);
+                add_custom = TRUE;
+        } else if (is_custom && is_default) {
+                save_alert_sounds (chooser, alert_id);
+                /* after removing files check if it is empty */
+                if (custom_theme_dir_is_empty ()) {
+                        remove_custom = TRUE;
+                }
+        } else if (is_custom && ! is_default) {
+                save_alert_sounds (chooser, alert_id);
+        }
+
+        if (add_custom) {
+                gtk_list_store_insert_with_values (GTK_LIST_STORE (theme_model),
+                                                   NULL,
+                                                   G_MAXINT,
+                                                   THEME_DISPLAY_COL, _("Custom"),
+                                                   THEME_IDENTIFIER_COL, CUSTOM_THEME_NAME,
+                                                   THEME_PARENT_ID_COL, theme,
+                                                   -1);
+                set_combox_for_theme_name (chooser, CUSTOM_THEME_NAME);
+        } else if (remove_custom) {
+                gtk_tree_model_get_iter_first (theme_model, &iter);
+                do {
+                        char *this_parent;
+
+                        gtk_tree_model_get (theme_model, &iter,
+                                            THEME_PARENT_ID_COL, &this_parent,
+                                            -1);
+                        if (this_parent != NULL && strcmp (this_parent, CUSTOM_THEME_NAME) != 0) {
+                                g_free (this_parent);
+                                gtk_list_store_remove (GTK_LIST_STORE (theme_model), &iter);
+                                break;
+                        }
+                        g_free (this_parent);
+                } while (gtk_tree_model_iter_next (theme_model, &iter));
+
+                delete_custom_theme_dir ();
+
+                set_combox_for_theme_name (chooser, parent);
+        }
+
+        update_alert_model (chooser, alert_id);
+
+        g_free (theme);
+        g_free (parent);
+}
+
+static void
+play_preview_for_id (GvcSoundThemeChooser *chooser,
+                     const char           *id)
+{
+        GtkTreeIter   theme_iter;
+        char         *parent_theme;
+
+        g_return_if_fail (id != NULL);
+
+        parent_theme = NULL;
+        if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (chooser->priv->combo_box), &theme_iter)) {
+                GtkTreeModel *theme_model;
+                char         *theme_id;
+                char         *parent_id;
+
+                theme_model = gtk_combo_box_get_model (GTK_COMBO_BOX (chooser->priv->combo_box));
+                theme_id = NULL;
+                parent_id = NULL;
+                gtk_tree_model_get (theme_model, &theme_iter,
+                                    THEME_IDENTIFIER_COL, &theme_id,
+                                    THEME_PARENT_ID_COL, &parent_id, -1);
+                if (theme_id && strcmp (theme_id, CUSTOM_THEME_NAME) == 0) {
+                        parent_theme = g_strdup (parent_id);
+                }
+                g_free (theme_id);
+                g_free (parent_id);
+        }
+
+        /* special case: for the default item on custom themes
+         * play the alert for the parent theme */
+        if (strcmp (id, DEFAULT_ALERT_ID) == 0) {
+                if (parent_theme != NULL) {
+                        ca_gtk_play_for_widget (GTK_WIDGET (chooser), 0,
+                                                CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+                                                CA_PROP_EVENT_ID, "bell-window-system",
+                                                CA_PROP_CANBERRA_XDG_THEME_NAME, parent_theme,
+                                                CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+                                                CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+                                                CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+#ifdef CA_PROP_CANBERRA_ENABLE
+                                                CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+                                                NULL);
+                } else {
+                        ca_gtk_play_for_widget (GTK_WIDGET (chooser), 0,
+                                                CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+                                                CA_PROP_EVENT_ID, "bell-window-system",
+                                                CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+                                                CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+                                                CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+#ifdef CA_PROP_CANBERRA_ENABLE
+                                                CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+                                                NULL);
+                }
+        } else {
+                ca_gtk_play_for_widget (GTK_WIDGET (chooser), 0,
+                                        CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+                                        CA_PROP_MEDIA_FILENAME, id,
+                                        CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+                                        CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+                                        CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+#ifdef CA_PROP_CANBERRA_ENABLE
+                                        CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+                                        NULL);
+
+        }
+        g_free (parent_theme);
+}
+
+static void
+on_treeview_selection_changed (GtkTreeSelection     *selection,
+                               GvcSoundThemeChooser *chooser)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        char         *id;
+
+        if (chooser->priv->treeview == NULL) {
+                return;
+        }
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (chooser->priv->treeview));
+
+        if (gtk_tree_selection_get_selected (selection, &model, &iter) == FALSE) {
+                return;
+        }
+
+        id = NULL;
+        gtk_tree_model_get (model, &iter,
+                            ALERT_IDENTIFIER_COL, &id,
+                            -1);
+        if (id == NULL) {
+                return;
+        }
+
+        play_preview_for_id (chooser, id);
+        update_alert (chooser, id);
+        g_free (id);
+}
+
+static gboolean
+on_treeview_button_pressed (GtkTreeView          *treeview,
+                            GdkEventButton       *event,
+                            GvcSoundThemeChooser *chooser)
+{
+        GtkTreeSelection *selection;
+        GtkTreePath      *path;
+
+        selection = gtk_tree_view_get_selection (treeview);
+        if (gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (treeview),
+                                           event->x, event->y, &path, NULL, NULL, NULL) == FALSE) {
+                return FALSE;
+        }
+
+        if (gtk_tree_selection_path_is_selected (selection, path) == FALSE) {
+                gtk_tree_path_free (path);
+                return FALSE;
+        }
+        gtk_tree_path_free (path);
+
+        on_treeview_selection_changed (selection, chooser);
+
+        return FALSE;
+}
+
+static GtkWidget *
+create_alert_treeview (GvcSoundThemeChooser *chooser)
+{
+        GtkListStore         *store;
+        GtkWidget            *treeview;
+        GtkCellRenderer      *renderer;
+        GtkTreeViewColumn    *column;
+        GtkTreeSelection     *selection;
+
+        treeview = gtk_tree_view_new ();
+        g_signal_connect (treeview,
+                          "button-press-event",
+                          G_CALLBACK (on_treeview_button_pressed),
+                          chooser);
+
+        selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+        gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
+        g_signal_connect (selection,
+                          "changed",
+                          G_CALLBACK (on_treeview_selection_changed),
+                          chooser);
+
+        /* Setup the tree model, 3 columns:
+         * - display name
+         * - sound id
+         * - sound type
+         */
+        store = gtk_list_store_new (ALERT_NUM_COLS,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING);
+
+        gtk_list_store_insert_with_values (store,
+                                           NULL,
+                                           G_MAXINT,
+                                           ALERT_IDENTIFIER_COL, DEFAULT_ALERT_ID,
+                                           ALERT_DISPLAY_COL, _("Default"),
+                                           ALERT_SOUND_TYPE_COL, _("From theme"),
+                                           -1);
+
+        populate_model_from_dir (chooser, GTK_TREE_MODEL (store), SOUND_SET_DIR);
+
+        gtk_tree_view_set_model (GTK_TREE_VIEW (treeview),
+                                 GTK_TREE_MODEL (store));
+
+        renderer = gtk_cell_renderer_text_new ();
+        column = gtk_tree_view_column_new_with_attributes (_("Name"),
+                                                           renderer,
+                                                           "text", ALERT_DISPLAY_COL,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+        renderer = gtk_cell_renderer_text_new ();
+        column = gtk_tree_view_column_new_with_attributes (_("Type"),
+                                                           renderer,
+                                                           "text", ALERT_SOUND_TYPE_COL,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (treeview), column);
+
+        return treeview;
+}
+
+static int
+get_file_type (const char *sound_name,
+               char      **linked_name)
+{
+        char *name, *filename;
+
+        *linked_name = NULL;
+
+        name = g_strdup_printf ("%s.disabled", sound_name);
+        filename = custom_theme_dir_path (name);
+        g_free (name);
+
+        if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) != FALSE) {
+                g_free (filename);
+                return SOUND_TYPE_OFF;
+        }
+        g_free (filename);
+
+        /* We only check for .ogg files because those are the
+         * only ones we create */
+        name = g_strdup_printf ("%s.ogg", sound_name);
+        filename = custom_theme_dir_path (name);
+        g_free (name);
+
+        if (g_file_test (filename, G_FILE_TEST_IS_SYMLINK) != FALSE) {
+                *linked_name = g_file_read_link (filename, NULL);
+                g_free (filename);
+                return SOUND_TYPE_CUSTOM;
+        }
+        g_free (filename);
+
+        return SOUND_TYPE_BUILTIN;
+}
+
+static void
+update_alerts_from_theme_name (GvcSoundThemeChooser *chooser,
+                               const char           *name)
+{
+        if (strcmp (name, CUSTOM_THEME_NAME) != 0) {
+                /* reset alert to default */
+                update_alert (chooser, DEFAULT_ALERT_ID);
+        } else {
+                int   sound_type;
+                char *linkname;
+
+                linkname = NULL;
+                sound_type = get_file_type ("bell-terminal", &linkname);
+                g_debug ("Found link: %s", linkname);
+                if (sound_type == SOUND_TYPE_CUSTOM) {
+                        update_alert (chooser, linkname);
+                }
+        }
+}
+
+static void
+update_theme (GvcSoundThemeChooser *chooser)
+{
+        char        *theme_name;
+        gboolean     events_enabled;
+        gboolean     bell_enabled;
+        gboolean     feedback_enabled;
+
+        bell_enabled = gconf_client_get_bool (chooser->priv->client, AUDIO_BELL_KEY, NULL);
+        //set_audible_bell_enabled (chooser, bell_enabled);
+
+        feedback_enabled = gconf_client_get_bool (chooser->priv->client, INPUT_SOUNDS_KEY, NULL);
+        set_input_feedback_enabled (chooser, feedback_enabled);
+
+        events_enabled = gconf_client_get_bool (chooser->priv->client, EVENT_SOUNDS_KEY, NULL);
+        if (events_enabled) {
+                theme_name = gconf_client_get_string (chooser->priv->client, SOUND_THEME_KEY, NULL);
+        } else {
+                theme_name = g_strdup (NO_SOUNDS_THEME_NAME);
+        }
+
+        gtk_widget_set_sensitive (chooser->priv->selection_box, events_enabled);
+        gtk_widget_set_sensitive (chooser->priv->click_feedback_button, events_enabled);
+
+        set_combox_for_theme_name (chooser, theme_name);
+
+        update_alerts_from_theme_name (chooser, theme_name);
+
+        g_free (theme_name);
+}
+
+static GObject *
+gvc_sound_theme_chooser_constructor (GType                  type,
+                                     guint                  n_construct_properties,
+                                     GObjectConstructParam *construct_params)
+{
+        GObject              *object;
+        GvcSoundThemeChooser *self;
+
+        object = G_OBJECT_CLASS (gvc_sound_theme_chooser_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_SOUND_THEME_CHOOSER (object);
+
+        setup_theme_selector (self);
+
+        update_theme (self);
+
+        return object;
+}
+
+static void
+gvc_sound_theme_chooser_class_init (GvcSoundThemeChooserClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_sound_theme_chooser_constructor;
+        object_class->finalize = gvc_sound_theme_chooser_finalize;
+
+        g_type_class_add_private (klass, sizeof (GvcSoundThemeChooserPrivate));
+}
+
+static void
+on_click_feedback_toggled (GtkToggleButton      *button,
+                           GvcSoundThemeChooser *chooser)
+{
+        gboolean     enabled;
+
+        enabled = gtk_toggle_button_get_active (button);
+
+        gconf_client_set_bool (chooser->priv->client, INPUT_SOUNDS_KEY, enabled, NULL);
+}
+
+static void
+on_key_changed (GConfClient          *client,
+                guint                 cnxn_id,
+                GConfEntry           *entry,
+                GvcSoundThemeChooser *chooser)
+{
+        const char *key;
+        GConfValue *value;
+
+        key = gconf_entry_get_key (entry);
+
+        if (! g_str_has_prefix (key, KEY_SOUNDS_DIR)
+            && ! g_str_has_prefix (key, KEY_METACITY_DIR)) {
+                return;
+        }
+
+        value = gconf_entry_get_value (entry);
+        if (strcmp (key, EVENT_SOUNDS_KEY) == 0) {
+                update_theme (chooser);
+        } else if (strcmp (key, SOUND_THEME_KEY) == 0) {
+                update_theme (chooser);
+        } else if (strcmp (key, INPUT_SOUNDS_KEY) == 0) {
+                update_theme (chooser);
+        } else if (strcmp (key, AUDIO_BELL_KEY) == 0) {
+                update_theme (chooser);
+        }
+}
+
+static void
+constrain_list_size (GtkWidget      *widget,
+                     GtkRequisition *requisition,
+                     GtkWidget      *to_size)
+{
+        GtkRequisition req;
+        int            max_height;
+
+        /* constrain height to be the tree height up to a max */
+        max_height = (gdk_screen_get_height (gtk_widget_get_screen (widget))) / 4;
+
+        gtk_widget_get_preferred_size (to_size, NULL, &req);
+
+        requisition->height = MIN (req.height, max_height);
+}
+
+static void
+setup_list_size_constraint (GtkWidget *widget,
+                            GtkWidget *to_size)
+{
+        g_signal_connect (widget,
+                          "size-request",
+                          G_CALLBACK (constrain_list_size),
+                          to_size);
+}
+
+static void
+gvc_sound_theme_chooser_init (GvcSoundThemeChooser *chooser)
+{
+        GtkWidget   *box;
+        GtkWidget   *label;
+        GtkWidget   *scrolled_window;
+        GtkWidget   *alignment;
+        char        *str;
+
+        chooser->priv = GVC_SOUND_THEME_CHOOSER_GET_PRIVATE (chooser);
+
+        chooser->priv->theme_box = gtk_hbox_new (FALSE, 0);
+        gtk_box_pack_start (GTK_BOX (chooser),
+                            chooser->priv->theme_box, FALSE, FALSE, 0);
+
+        label = gtk_label_new_with_mnemonic (_("Sound _theme:"));
+        gtk_box_pack_start (GTK_BOX (chooser->priv->theme_box), label, FALSE, FALSE, 0);
+        chooser->priv->combo_box = gtk_combo_box_new ();
+        gtk_box_pack_start (GTK_BOX (chooser->priv->theme_box), chooser->priv->combo_box, FALSE, FALSE, 6);
+        gtk_label_set_mnemonic_widget (GTK_LABEL (label), chooser->priv->combo_box);
+
+        chooser->priv->client = gconf_client_get_default ();
+
+        str = g_strdup_printf ("<b>%s</b>", _("C_hoose an alert sound:"));
+        chooser->priv->selection_box = box = gtk_frame_new (str);
+        g_free (str);
+        label = gtk_frame_get_label_widget (GTK_FRAME (box));
+        gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
+        gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+        gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_NONE);
+
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+        gtk_container_add (GTK_CONTAINER (alignment), box);
+        gtk_box_pack_start (GTK_BOX (chooser), alignment, TRUE, TRUE, 6);
+
+        alignment = gtk_alignment_new (0, 0, 1, 1);
+        gtk_alignment_set_padding (GTK_ALIGNMENT (alignment), 6, 0, 0, 0);
+        gtk_container_add (GTK_CONTAINER (box), alignment);
+
+        chooser->priv->treeview = create_alert_treeview (chooser);
+        gtk_label_set_mnemonic_widget (GTK_LABEL (label), chooser->priv->treeview);
+
+        scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+        setup_list_size_constraint (scrolled_window, chooser->priv->treeview);
+
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+                                        GTK_POLICY_NEVER,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
+                                             GTK_SHADOW_IN);
+        gtk_container_add (GTK_CONTAINER (scrolled_window), chooser->priv->treeview);
+        gtk_container_add (GTK_CONTAINER (alignment), scrolled_window);
+
+        chooser->priv->click_feedback_button = gtk_check_button_new_with_mnemonic (_("Enable _window and button sounds"));
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (chooser->priv->click_feedback_button),
+                                      gconf_client_get_bool (chooser->priv->client, INPUT_SOUNDS_KEY, NULL));
+        gtk_box_pack_start (GTK_BOX (chooser),
+                            chooser->priv->click_feedback_button,
+                            FALSE, FALSE, 0);
+        g_signal_connect (chooser->priv->click_feedback_button,
+                          "toggled",
+                          G_CALLBACK (on_click_feedback_toggled),
+                          chooser);
+
+
+        gconf_client_add_dir (chooser->priv->client, KEY_SOUNDS_DIR,
+                              GCONF_CLIENT_PRELOAD_ONELEVEL,
+                              NULL);
+        chooser->priv->sounds_dir_id = gconf_client_notify_add (chooser->priv->client,
+                                                                KEY_SOUNDS_DIR,
+                                                                (GConfClientNotifyFunc)on_key_changed,
+                                                                chooser, NULL, NULL);
+        gconf_client_add_dir (chooser->priv->client, KEY_METACITY_DIR,
+                              GCONF_CLIENT_PRELOAD_ONELEVEL,
+                              NULL);
+        chooser->priv->metacity_dir_id = gconf_client_notify_add (chooser->priv->client,
+                                                                  KEY_METACITY_DIR,
+                                                                  (GConfClientNotifyFunc)on_key_changed,
+                                                                  chooser, NULL, NULL);
+
+        /* FIXME: should accept drag and drop themes.  should also
+           add an "Add Theme..." item to the theme combobox */
+}
+
+static void
+gvc_sound_theme_chooser_finalize (GObject *object)
+{
+        GvcSoundThemeChooser *sound_theme_chooser;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_SOUND_THEME_CHOOSER (object));
+
+        sound_theme_chooser = GVC_SOUND_THEME_CHOOSER (object);
+
+        if (sound_theme_chooser->priv != NULL) {
+                if (sound_theme_chooser->priv->sounds_dir_id > 0) {
+                        gconf_client_notify_remove (sound_theme_chooser->priv->client,
+                                                    sound_theme_chooser->priv->sounds_dir_id);
+                        sound_theme_chooser->priv->sounds_dir_id = 0;
+                }
+                if (sound_theme_chooser->priv->metacity_dir_id > 0) {
+                        gconf_client_notify_remove (sound_theme_chooser->priv->client,
+                                                    sound_theme_chooser->priv->metacity_dir_id);
+                        sound_theme_chooser->priv->metacity_dir_id = 0;
+                }
+                g_object_unref (sound_theme_chooser->priv->client);
+                sound_theme_chooser->priv->client = NULL;
+        }
+
+        G_OBJECT_CLASS (gvc_sound_theme_chooser_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_sound_theme_chooser_new (void)
+{
+        GObject *chooser;
+        chooser = g_object_new (GVC_TYPE_SOUND_THEME_CHOOSER,
+                                "spacing", 6,
+                                NULL);
+        return GTK_WIDGET (chooser);
+}
diff --git a/panels/sound/gvc-sound-theme-chooser.h b/panels/sound/gvc-sound-theme-chooser.h
new file mode 100644
index 0000000..6701aad
--- /dev/null
+++ b/panels/sound/gvc-sound-theme-chooser.h
@@ -0,0 +1,54 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_SOUND_THEME_CHOOSER_H
+#define __GVC_SOUND_THEME_CHOOSER_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_SOUND_THEME_CHOOSER         (gvc_sound_theme_chooser_get_type ())
+#define GVC_SOUND_THEME_CHOOSER(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_SOUND_THEME_CHOOSER, GvcSoundThemeChooser))
+#define GVC_SOUND_THEME_CHOOSER_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_SOUND_THEME_CHOOSER, GvcSoundThemeChooserClass))
+#define GVC_IS_SOUND_THEME_CHOOSER(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_SOUND_THEME_CHOOSER))
+#define GVC_IS_SOUND_THEME_CHOOSER_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_SOUND_THEME_CHOOSER))
+#define GVC_SOUND_THEME_CHOOSER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_SOUND_THEME_CHOOSER, GvcSoundThemeChooserClass))
+
+typedef struct GvcSoundThemeChooserPrivate GvcSoundThemeChooserPrivate;
+
+typedef struct
+{
+        GtkVBox                      parent;
+        GvcSoundThemeChooserPrivate *priv;
+} GvcSoundThemeChooser;
+
+typedef struct
+{
+        GtkVBoxClass          parent_class;
+} GvcSoundThemeChooserClass;
+
+GType               gvc_sound_theme_chooser_get_type            (void);
+
+GtkWidget *         gvc_sound_theme_chooser_new                 (void);
+
+G_END_DECLS
+
+#endif /* __GVC_SOUND_THEME_CHOOSER_H */
diff --git a/panels/sound/gvc-sound-theme-editor.c b/panels/sound/gvc-sound-theme-editor.c
new file mode 100644
index 0000000..cec408e
--- /dev/null
+++ b/panels/sound/gvc-sound-theme-editor.c
@@ -0,0 +1,1397 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Bastien Nocera <hadess hadess net>
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra-gtk.h>
+
+#include <gconf/gconf-client.h>
+
+#include "gvc-sound-theme-editor.h"
+#include "sound-theme-file-utils.h"
+
+#define GVC_SOUND_THEME_EDITOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_SOUND_THEME_EDITOR, GvcSoundThemeEditorPrivate))
+
+struct GvcSoundThemeEditorPrivate
+{
+        GtkWidget *treeview;
+        GtkWidget *theme_box;
+        GtkWidget *selection_box;
+        GtkWidget *click_feedback_button;
+        GConfClient *client;
+        guint sounds_dir_id;
+        guint metacity_dir_id;
+};
+
+static void     gvc_sound_theme_editor_class_init (GvcSoundThemeEditorClass *klass);
+static void     gvc_sound_theme_editor_init       (GvcSoundThemeEditor      *sound_theme_editor);
+static void     gvc_sound_theme_editor_finalize   (GObject                  *object);
+
+G_DEFINE_TYPE (GvcSoundThemeEditor, gvc_sound_theme_editor, GTK_TYPE_VBOX)
+
+typedef enum {
+        CATEGORY_INVALID,
+        CATEGORY_BELL,
+        CATEGORY_WINDOWS_BUTTONS,
+        CATEGORY_DESKTOP,
+        CATEGORY_ALERTS,
+        NUM_CATEGORIES
+} CategoryType;
+
+typedef enum {
+        SOUND_TYPE_NORMAL,
+        SOUND_TYPE_AUDIO_BELL,
+        SOUND_TYPE_FEEDBACK
+} SoundType;
+
+static struct {
+        CategoryType category;
+        SoundType    type;
+        const char  *display_name;
+        const char  *names[6];
+} sounds[20] = {
+        /* Bell */
+        { CATEGORY_BELL, SOUND_TYPE_AUDIO_BELL, NC_("Sound event", "Alert sound"), { "bell-terminal", "bell-window-system", NULL } },
+        /* Windows and buttons */
+        { CATEGORY_WINDOWS_BUTTONS, -1, NC_("Sound event", "Windows and Buttons"), { NULL } },
+        { CATEGORY_WINDOWS_BUTTONS, SOUND_TYPE_FEEDBACK, NC_("Sound event", "Button clicked"), { "button-pressed", "menu-click", "menu-popup", "menu-popdown", "menu-replace", NULL } },
+        { CATEGORY_WINDOWS_BUTTONS, SOUND_TYPE_FEEDBACK, NC_("Sound event", "Toggle button clicked"), { "button-toggle-off", "button-toggle-on", NULL } },
+        { CATEGORY_WINDOWS_BUTTONS, SOUND_TYPE_FEEDBACK, NC_("Sound event", "Window maximized"), { "window-maximized", NULL } },
+        { CATEGORY_WINDOWS_BUTTONS, SOUND_TYPE_FEEDBACK, NC_("Sound event", "Window unmaximized"), { "window-unmaximized", NULL } },
+        { CATEGORY_WINDOWS_BUTTONS, SOUND_TYPE_FEEDBACK, NC_("Sound event", "Window minimised"), { "window-minimized", NULL } },
+        /* Desktop */
+        { CATEGORY_DESKTOP, -1, NC_("Sound event", "Desktop"), { NULL } },
+        { CATEGORY_DESKTOP, SOUND_TYPE_NORMAL, NC_("Sound event", "Login"), { "desktop-login", NULL } },
+        { CATEGORY_DESKTOP, SOUND_TYPE_NORMAL, NC_("Sound event", "Logout"), { "desktop-logout", NULL } },
+        { CATEGORY_DESKTOP, SOUND_TYPE_NORMAL, NC_("Sound event", "New e-mail"), { "message-new-email", NULL } },
+        { CATEGORY_DESKTOP, SOUND_TYPE_NORMAL, NC_("Sound event", "Empty trash"), { "trash-empty", NULL } },
+        { CATEGORY_DESKTOP, SOUND_TYPE_NORMAL, NC_("Sound event", "Long action completed (download, CD burning, etc.)"), { "complete-copy", "complete-download", "complete-media-burn", "complete-media-rip", "complete-scan", NULL } },
+        /* Alerts? */
+        { CATEGORY_ALERTS, -1, NC_("Sound event", "Alerts"), { NULL } },
+        { CATEGORY_ALERTS, SOUND_TYPE_NORMAL, NC_("Sound event", "Information or question"), { "dialog-information", "dialog-question", NULL } },
+        { CATEGORY_ALERTS, SOUND_TYPE_NORMAL, NC_("Sound event", "Warning"), { "dialog-warning", NULL } },
+        { CATEGORY_ALERTS, SOUND_TYPE_NORMAL, NC_("Sound event", "Error"), { "dialog-error", NULL } },
+        { CATEGORY_ALERTS, SOUND_TYPE_NORMAL, NC_("Sound event", "Battery warning"), { "power-unplug-battery-low", "battery-low", "battery-caution", NULL } },
+        /* Finish off */
+        { -1, -1, NULL, { NULL } }
+};
+
+#define KEY_SOUNDS_DIR             "/desktop/gnome/sound"
+#define EVENT_SOUNDS_KEY           KEY_SOUNDS_DIR "/event_sounds"
+#define INPUT_SOUNDS_KEY           KEY_SOUNDS_DIR "/input_feedback_sounds"
+#define SOUND_THEME_KEY            KEY_SOUNDS_DIR "/theme_name"
+#define KEY_METACITY_DIR           "/apps/metacity/general"
+#define AUDIO_BELL_KEY             KEY_METACITY_DIR "/audible_bell"
+
+#define CUSTOM_THEME_NAME       "__custom"
+#define NO_SOUNDS_THEME_NAME    "__no_sounds"
+#define PREVIEW_BUTTON_XPAD     5
+
+enum {
+        THEME_DISPLAY_COL,
+        THEME_IDENTIFIER_COL,
+        THEME_PARENT_ID_COL,
+        THEME_NUM_COLS
+};
+
+enum {
+        SOUND_UNSET,
+        SOUND_OFF,
+        SOUND_BUILTIN,
+        SOUND_CUSTOM,
+        SOUND_CUSTOM_OLD
+};
+
+enum {
+        DISPLAY_COL,
+        SETTING_COL,
+        TYPE_COL,
+        SENSITIVE_COL,
+        HAS_PREVIEW_COL,
+        FILENAME_COL,
+        SOUND_NAMES_COL,
+        NUM_COLS
+};
+
+static gboolean
+theme_changed_custom_reinit (GtkTreeModel *model,
+                             GtkTreePath  *path,
+                             GtkTreeIter  *iter,
+                             gpointer      data)
+{
+        int      type;
+        gboolean sensitive;
+
+        gtk_tree_model_get (model,
+                            iter,
+                            TYPE_COL, &type,
+                            SENSITIVE_COL, &sensitive, -1);
+        if (type != -1) {
+                gtk_tree_store_set (GTK_TREE_STORE (model), iter,
+                                    SETTING_COL, SOUND_BUILTIN,
+                                    HAS_PREVIEW_COL, sensitive,
+                                    -1);
+        }
+        return FALSE;
+}
+
+static void
+on_theme_changed ()
+{
+        /* Don't reinit a custom theme */
+        if (strcmp (theme_name, CUSTOM_THEME_NAME) != 0) {
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+                gtk_tree_model_foreach (model, theme_changed_custom_reinit, NULL);
+
+                /* Delete the custom dir */
+                delete_custom_theme_dir ();
+
+                /* And the combo box entry */
+                model = gtk_combo_box_get_model (GTK_COMBO_BOX (editor->priv->combo_box));
+                gtk_tree_model_get_iter_first (model, &iter);
+                do {
+                        char *parent;
+                        gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
+                        if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) {
+                                gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+                                g_free (parent);
+                                break;
+                        }
+                        g_free (parent);
+                } while (gtk_tree_model_iter_next (model, &iter));
+        }
+}
+
+static char *
+load_index_theme_name (const char *index,
+                       char      **parent)
+{
+        GKeyFile *file;
+        char *indexname = NULL;
+        gboolean hidden;
+
+        file = g_key_file_new ();
+        if (g_key_file_load_from_file (file, index, G_KEY_FILE_KEEP_TRANSLATIONS, NULL) == FALSE) {
+                g_key_file_free (file);
+                return NULL;
+        }
+        /* Don't add hidden themes to the list */
+        hidden = g_key_file_get_boolean (file, "Sound Theme", "Hidden", NULL);
+        if (!hidden) {
+                indexname = g_key_file_get_locale_string (file,
+                                                          "Sound Theme",
+                                                          "Name",
+                                                          NULL,
+                                                          NULL);
+
+                /* Save the parent theme, if there's one */
+                if (parent != NULL) {
+                        *parent = g_key_file_get_string (file,
+                                                         "Sound Theme",
+                                                         "Inherits",
+                                                         NULL);
+                }
+        }
+
+        g_key_file_free (file);
+        return indexname;
+}
+
+static void
+sound_theme_in_dir (GHashTable *hash,
+                    const char *dir)
+{
+        GDir *d;
+        const char *name;
+
+        d = g_dir_open (dir, 0, NULL);
+        if (d == NULL) {
+                return;
+        }
+
+        while ((name = g_dir_read_name (d)) != NULL) {
+                char *dirname, *index, *indexname;
+
+                /* Look for directories */
+                dirname = g_build_filename (dir, name, NULL);
+                if (g_file_test (dirname, G_FILE_TEST_IS_DIR) == FALSE) {
+                        g_free (dirname);
+                        continue;
+                }
+
+                /* Look for index files */
+                index = g_build_filename (dirname, "index.theme", NULL);
+                g_free (dirname);
+
+                /* Check the name of the theme in the index.theme file */
+                indexname = load_index_theme_name (index, NULL);
+                g_free (index);
+                if (indexname == NULL) {
+                        continue;
+                }
+
+                g_hash_table_insert (hash, g_strdup (name), indexname);
+        }
+
+        g_dir_close (d);
+}
+
+static void
+add_theme_to_store (const char   *key,
+                    const char   *value,
+                    GtkListStore *store)
+{
+        char *parent;
+
+        parent = NULL;
+
+        /* Get the parent, if we're checking the custom theme */
+        if (strcmp (key, CUSTOM_THEME_NAME) == 0) {
+                char *name, *path;
+
+                path = custom_theme_dir_path ("index.theme");
+                name = load_index_theme_name (path, &parent);
+                g_free (name);
+                g_free (path);
+        }
+        gtk_list_store_insert_with_values (store, NULL, G_MAXINT,
+                                           THEME_DISPLAY_COL, value,
+                                           THEME_IDENTIFIER_COL, key,
+                                           THEME_PARENT_ID_COL, parent,
+                                           -1);
+        g_free (parent);
+}
+
+static void
+set_theme_name (GvcSoundThemeEditor *editor,
+                const char           *name)
+{
+        GConfClient *client;
+
+        g_debug ("setting theme %s", name ? name : "(null)");
+
+        /* If the name is empty, use "freedesktop" */
+        if (name == NULL || *name == '\0') {
+                name = "freedesktop";
+        }
+
+        gconf_client_set_string (editor->priv->client, SOUND_THEME_KEY, theme_name, NULL);
+}
+
+/* Functions to toggle whether the audible bell sound is editable */
+static gboolean
+audible_bell_foreach (GtkTreeModel *model,
+                      GtkTreePath  *path,
+                      GtkTreeIter  *iter,
+                      gpointer      data)
+{
+        int      type;
+        int      setting;
+        gboolean enabled = GPOINTER_TO_INT (data);
+
+        setting = enabled ? SOUND_BUILTIN : SOUND_OFF;
+
+        gtk_tree_model_get (model, iter, TYPE_COL, &type, -1);
+        if (type == SOUND_TYPE_AUDIO_BELL) {
+                gtk_tree_store_set (GTK_TREE_STORE (model),
+                                    iter,
+                                    SETTING_COL, setting,
+                                    HAS_PREVIEW_COL, enabled,
+                                    -1);
+                return TRUE;
+        }
+        return FALSE;
+}
+
+static void
+set_audible_bell_enabled (GvcSoundThemeEditor *editor,
+                          gboolean              enabled)
+{
+        GtkTreeModel *model;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+        gtk_tree_model_foreach (model, audible_bell_foreach, GINT_TO_POINTER (enabled));
+}
+
+/* Functions to toggle whether the Input feedback sounds are editable */
+static gboolean
+input_feedback_foreach (GtkTreeModel *model,
+                        GtkTreePath  *path,
+                        GtkTreeIter  *iter,
+                        gpointer      data)
+{
+        int      type;
+        gboolean enabled = GPOINTER_TO_INT (data);
+
+        gtk_tree_model_get (model, iter, TYPE_COL, &type, -1);
+        if (type == SOUND_TYPE_FEEDBACK) {
+                gtk_tree_store_set (GTK_TREE_STORE (model), iter,
+                                    SENSITIVE_COL, enabled,
+                                    HAS_PREVIEW_COL, enabled,
+                                    -1);
+        }
+        return FALSE;
+}
+
+static void
+set_input_feedback_enabled (GvcSoundThemeEditor *editor,
+                            gboolean              enabled)
+{
+        GtkTreeModel *model;
+
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->click_feedback_button),
+                                      enabled);
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+        gtk_tree_model_foreach (model, input_feedback_foreach, GINT_TO_POINTER (enabled));
+}
+
+static int
+get_file_type (const char *sound_name,
+               char      **linked_name)
+{
+        char *name, *filename;
+
+        *linked_name = NULL;
+
+        name = g_strdup_printf ("%s.disabled", sound_name);
+        filename = custom_theme_dir_path (name);
+        g_free (name);
+
+        if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) != FALSE) {
+                g_free (filename);
+                return SOUND_OFF;
+        }
+        g_free (filename);
+
+        /* We only check for .ogg files because those are the
+         * only ones we create */
+        name = g_strdup_printf ("%s.ogg", sound_name);
+        filename = custom_theme_dir_path (name);
+        g_free (name);
+
+        if (g_file_test (filename, G_FILE_TEST_IS_SYMLINK) != FALSE) {
+                *linked_name = g_file_read_link (filename, NULL);
+                g_free (filename);
+                return SOUND_CUSTOM;
+        }
+        g_free (filename);
+
+        return SOUND_BUILTIN;
+}
+
+static gboolean
+theme_changed_custom_init (GtkTreeModel *model,
+                           GtkTreePath *path,
+                           GtkTreeIter *iter,
+                           gpointer data)
+{
+        char **sound_names;
+
+        gtk_tree_model_get (model, iter, SOUND_NAMES_COL, &sound_names, -1);
+        if (sound_names != NULL) {
+                char *filename;
+                int type;
+
+                type = get_file_type (sound_names[0], &filename);
+
+                gtk_tree_store_set (GTK_TREE_STORE (model), iter,
+                                    SETTING_COL, type,
+                                    HAS_PREVIEW_COL, type != SOUND_OFF,
+                                    FILENAME_COL, filename,
+                                    -1);
+                g_strfreev (sound_names);
+                g_free (filename);
+        }
+        return FALSE;
+}
+
+static void
+update_theme (GvcSoundThemeEditor *editor)
+{
+        char        *theme_name;
+        gboolean     events_enabled;
+        gboolean     bell_enabled;
+        GConfClient *client;
+        gboolean     feedback_enabled;
+
+        client = editor->priv->client;
+
+        bell_enabled = gconf_client_get_bool (client, AUDIO_BELL_KEY, NULL);
+        set_audible_bell_enabled (editor, bell_enabled);
+
+        feedback_enabled = gconf_client_get_bool (client, INPUT_SOUNDS_KEY, NULL);
+        set_input_feedback_enabled (editor, feedback_enabled);
+
+        events_enabled = gconf_client_get_bool (client, EVENT_SOUNDS_KEY, NULL);
+        if (events_enabled) {
+                theme_name = gconf_client_get_string (client, SOUND_THEME_KEY, NULL);
+        } else {
+                theme_name = g_strdup (NO_SOUNDS_THEME_NAME);
+        }
+
+        gtk_widget_set_sensitive (editor->priv->selection_box, events_enabled);
+
+        set_theme_name (editor, theme_name);
+
+        /* Setup the default values if we're using the custom theme */
+        if (theme_name != NULL && strcmp (theme_name, CUSTOM_THEME_NAME) == 0) {
+                GtkTreeModel *model;
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+                gtk_tree_model_foreach (model,
+                                        theme_changed_custom_init,
+                                        NULL);
+        }
+        g_free (theme_name);
+}
+
+static void
+setup_theme_selector (GvcSoundThemeEditor *editor)
+{
+        GHashTable           *hash;
+        GtkListStore         *store;
+        GtkCellRenderer      *renderer;
+        const char * const   *data_dirs;
+        const char           *data_dir;
+        char                 *dir;
+        guint                 i;
+
+        /* Add the theme names and their display name to a hash table,
+         * makes it easy to avoid duplicate themes */
+        hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+
+        data_dirs = g_get_system_data_dirs ();
+        for (i = 0; data_dirs[i] != NULL; i++) {
+                dir = g_build_filename (data_dirs[i], "sounds", NULL);
+                sound_theme_in_dir (hash, dir);
+                g_free (dir);
+        }
+
+        data_dir = g_get_user_data_dir ();
+        dir = g_build_filename (data_dir, "sounds", NULL);
+        sound_theme_in_dir (hash, dir);
+        g_free (dir);
+
+        /* If there isn't at least one theme, make everything
+         * insensitive, LAME! */
+        if (g_hash_table_size (hash) == 0) {
+                gtk_widget_set_sensitive (GTK_WIDGET (editor), FALSE);
+                g_warning ("Bad setup, install the freedesktop sound theme");
+                g_hash_table_destroy (hash);
+                return;
+        }
+
+        /* Setup the tree model, 3 columns:
+         * - internal theme name/directory
+         * - display theme name
+         * - the internal id for the parent theme, used for the custom theme */
+        store = gtk_list_store_new (THEME_NUM_COLS,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRING);
+
+        /* Add the themes to a combobox */
+        gtk_list_store_insert_with_values (store,
+                                           NULL,
+                                           G_MAXINT,
+                                           THEME_DISPLAY_COL, _("No sounds"),
+                                           THEME_IDENTIFIER_COL, "__no_sounds",
+                                           THEME_PARENT_ID_COL, NULL,
+                                           -1);
+        g_hash_table_foreach (hash, (GHFunc) add_theme_to_store, store);
+        g_hash_table_destroy (hash);
+
+        /* Set the display */
+        gtk_combo_box_set_model (GTK_COMBO_BOX (editor->priv->combo_box),
+                                 GTK_TREE_MODEL (store));
+
+        renderer = gtk_cell_renderer_text_new ();
+        gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (editor->priv->combo_box),
+                                    renderer,
+                                    TRUE);
+        gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (editor->priv->combo_box),
+                                        renderer,
+                                        "text", THEME_DISPLAY_COL,
+                                        NULL);
+
+        g_signal_connect (editor->priv->combo_box,
+                          "changed",
+                          G_CALLBACK (on_combobox_changed),
+                          editor);
+}
+
+static void
+play_sound_preview (GtkFileEditor *editor,
+                    gpointer user_data)
+{
+        char       *filename;
+
+        filename = gtk_file_editor_get_preview_filename (GTK_FILE_EDITOR (editor));
+        if (filename == NULL) {
+                return;
+        }
+
+        ca_gtk_play_for_widget (GTK_WIDGET (editor), 0,
+                                CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+                                CA_PROP_MEDIA_FILENAME, filename,
+                                CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+                                CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+                                CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+#ifdef CA_PROP_CANBERRA_ENABLE
+                                CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+                                NULL);
+        g_free (filename);
+}
+
+static char *
+get_sound_filename (GvcSoundThemeEditor *editor)
+{
+        GtkWidget          *file_editor;
+        GtkWidget          *toplevel;
+        GtkWindow          *parent;
+        int                 response;
+        char               *filename;
+        char               *path;
+        const char * const *data_dirs, *data_dir;
+        GtkFileFilter      *filter;
+        guint               i;
+
+	/* Try to get the parent window of the widget */
+	toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor));
+	if (gtk_widget_is_toplevel (toplevel) != FALSE)
+		parent = GTK_WINDOW (toplevel);
+	else
+		parent = NULL;
+
+        file_editor = gtk_file_editor_dialog_new (_("Select Sound File"),
+                                                    parent,
+                                                    GTK_FILE_EDITOR_ACTION_OPEN,
+                                                    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+                                                    GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+                                                    NULL);
+
+        gtk_file_editor_set_local_only (GTK_FILE_EDITOR (file_editor), TRUE);
+        gtk_file_editor_set_select_multiple (GTK_FILE_EDITOR (file_editor), FALSE);
+
+        filter = gtk_file_filter_new ();
+        gtk_file_filter_set_name (filter, _("Sound files"));
+        gtk_file_filter_add_mime_type (filter, "audio/x-vorbis+ogg");
+        gtk_file_filter_add_mime_type (filter, "audio/x-wav");
+        gtk_file_editor_add_filter (GTK_FILE_EDITOR (file_editor), filter);
+        gtk_file_editor_set_filter (GTK_FILE_EDITOR (file_editor), filter);
+
+        g_signal_connect (file_editor, "update-preview",
+                          G_CALLBACK (play_sound_preview), NULL);
+
+        data_dirs = g_get_system_data_dirs ();
+        for (i = 0; data_dirs[i] != NULL; i++) {
+                path = g_build_filename (data_dirs[i], "sounds", NULL);
+                gtk_file_editor_add_shortcut_folder (GTK_FILE_EDITOR (file_editor), path, NULL);
+                g_free (path);
+        }
+        data_dir = g_get_user_special_dir (G_USER_DIRECTORY_MUSIC);
+        if (data_dir != NULL)
+                gtk_file_editor_add_shortcut_folder (GTK_FILE_EDITOR (file_editor), data_dir, NULL);
+
+        gtk_file_editor_set_current_folder (GTK_FILE_EDITOR (file_editor), SOUND_DATA_DIR);
+
+        response = gtk_dialog_run (GTK_DIALOG (file_editor));
+        filename = NULL;
+        if (response == GTK_RESPONSE_ACCEPT)
+                filename = gtk_file_editor_get_filename (GTK_FILE_EDITOR (file_editor));
+
+        gtk_widget_destroy (file_editor);
+
+        return filename;
+}
+
+
+static gboolean
+count_customised_sounds (GtkTreeModel *model,
+                         GtkTreePath  *path,
+                         GtkTreeIter  *iter,
+                         int          *num_custom)
+{
+        int type;
+        int setting;
+
+        gtk_tree_model_get (model, iter, TYPE_COL, &type, SETTING_COL, &setting, -1);
+        if (setting == SOUND_OFF || setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
+                (*num_custom)++;
+        }
+
+        return FALSE;
+}
+
+static gboolean
+save_sounds (GtkTreeModel *model,
+             GtkTreePath  *path,
+             GtkTreeIter  *iter,
+             gpointer      data)
+{
+        int    type;
+        int    setting;
+        char  *filename;
+        char **sounds;
+
+        gtk_tree_model_get (model, iter,
+                            TYPE_COL, &type,
+                            SETTING_COL, &setting,
+                            FILENAME_COL, &filename,
+                            SOUND_NAMES_COL, &sounds,
+                            -1);
+
+        if (setting == SOUND_BUILTIN) {
+                delete_old_files (sounds);
+                delete_disabled_files (sounds);
+        } else if (setting == SOUND_OFF) {
+                delete_old_files (sounds);
+                add_disabled_file (sounds);
+        } else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
+                delete_old_files (sounds);
+                delete_disabled_files (sounds);
+                add_custom_file (sounds, filename);
+        }
+        g_free (filename);
+        g_strfreev (sounds);
+
+        return FALSE;
+}
+
+static void
+save_custom_theme (GtkTreeModel *model,
+                   const char   *parent)
+{
+        GKeyFile *keyfile;
+        char     *data;
+        char     *path;
+
+        /* Create the custom directory */
+        path = custom_theme_dir_path (NULL);
+        g_mkdir_with_parents (path, 0755);
+        g_free (path);
+
+        /* Save the sounds themselves */
+        gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) save_sounds, NULL);
+
+        /* Set the data for index.theme */
+        keyfile = g_key_file_new ();
+        g_key_file_set_string (keyfile, "Sound Theme", "Name", _("Custom"));
+        g_key_file_set_string (keyfile, "Sound Theme", "Inherits", parent);
+        g_key_file_set_string (keyfile, "Sound Theme", "Directories", ".");
+        data = g_key_file_to_data (keyfile, NULL, NULL);
+        g_key_file_free (keyfile);
+
+        /* Save the index.theme */
+        path = custom_theme_dir_path ("index.theme");
+        g_file_set_contents (path, data, -1, NULL);
+        g_free (path);
+        g_free (data);
+
+        custom_theme_update_time ();
+}
+
+static void
+dump_theme (GvcSoundThemeEditor *editor)
+{
+        int           num_custom;
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        char         *parent;
+
+        num_custom = 0;
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+        gtk_tree_model_foreach (model, (GtkTreeModelForeachFunc) count_customised_sounds, &num_custom);
+
+        g_debug ("%d customised sounds", num_custom);
+
+        model = gtk_combo_box_get_model (GTK_COMBO_BOX (editor->priv->combo_box));
+        /* Get the current theme's name, and set the parent */
+        if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (editor->priv->combo_box), &iter) == FALSE)
+                return;
+
+        if (num_custom == 0) {
+                gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
+                if (parent != NULL) {
+                        set_theme_name (editor, parent);
+                        g_free (parent);
+                }
+                gtk_tree_model_get_iter_first (model, &iter);
+                do {
+                        gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
+                        if (parent != NULL && strcmp (parent, CUSTOM_THEME_NAME) != 0) {
+                                gtk_list_store_remove (GTK_LIST_STORE (model), &iter);
+                                break;
+                        }
+                } while (gtk_tree_model_iter_next (model, &iter));
+
+                delete_custom_theme_dir ();
+        } else {
+                gtk_tree_model_get (model, &iter, THEME_IDENTIFIER_COL, &parent, -1);
+                if (strcmp (parent, CUSTOM_THEME_NAME) != 0) {
+                        gtk_list_store_insert_with_values (GTK_LIST_STORE (model), NULL, G_MAXINT,
+                                                           THEME_DISPLAY_COL, _("Custom"),
+                                                           THEME_IDENTIFIER_COL, CUSTOM_THEME_NAME,
+                                                           THEME_PARENT_ID_COL, parent,
+                                                           -1);
+                } else {
+                        g_free (parent);
+                        gtk_tree_model_get (model, &iter, THEME_PARENT_ID_COL, &parent, -1);
+                }
+
+                g_debug ("The parent theme is: %s", parent);
+                model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+                save_custom_theme (model, parent);
+                g_free (parent);
+
+                set_theme_name (editor, CUSTOM_THEME_NAME);
+        }
+}
+
+static void
+on_setting_column_edited (GtkCellRendererText  *renderer,
+                          char                 *path,
+                          char                 *new_text,
+                          GvcSoundThemeEditor *editor)
+{
+        GtkTreeModel *model;
+        GtkTreeModel *tree_model;
+        GtkTreeIter   iter;
+        GtkTreeIter   tree_iter;
+        SoundType     type;
+        char         *text;
+        char         *old_filename;
+        int           setting;
+
+        if (new_text == NULL) {
+                return;
+        }
+
+        g_object_get (renderer,
+                      "model", &model,
+                      NULL);
+
+        tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+        if (gtk_tree_model_get_iter_from_string (tree_model, &tree_iter, path) == FALSE)
+                return;
+
+        gtk_tree_model_get (tree_model, &tree_iter,
+                            TYPE_COL, &type,
+                            FILENAME_COL, &old_filename,
+                            -1);
+
+        gtk_tree_model_get_iter_first (model, &iter);
+        do {
+                int cmp;
+
+                gtk_tree_model_get (model, &iter,
+                                    0, &text,
+                                    1, &setting,
+                                    -1);
+                cmp = g_utf8_collate (text, new_text);
+                g_free (text);
+
+                if (cmp != 0) {
+                        continue;
+                }
+
+                if (type == SOUND_TYPE_NORMAL
+                    || type == SOUND_TYPE_FEEDBACK
+                    || type == SOUND_TYPE_AUDIO_BELL) {
+
+                        if (setting == SOUND_CUSTOM
+                            || (setting == SOUND_CUSTOM_OLD
+                                && old_filename == NULL)) {
+
+                                char *filename = get_sound_filename (editor);
+
+                                if (filename == NULL) {
+                                        break;
+                                }
+                                gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+                                                    &tree_iter,
+                                                    SETTING_COL, setting,
+                                                    HAS_PREVIEW_COL, setting != SOUND_OFF,
+                                                    FILENAME_COL, filename,
+                                                    -1);
+                                g_free (filename);
+                        } else if (setting == SOUND_CUSTOM_OLD) {
+                                gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+                                                    &tree_iter,
+                                                    SETTING_COL, setting,
+                                                    HAS_PREVIEW_COL, setting != SOUND_OFF,
+                                                    FILENAME_COL, old_filename,
+                                                    -1);
+                        } else {
+                                gtk_tree_store_set (GTK_TREE_STORE (tree_model),
+                                                    &tree_iter,
+                                                    SETTING_COL, setting,
+                                                    HAS_PREVIEW_COL, setting != SOUND_OFF,
+                                                    -1);
+                        }
+
+                        g_debug ("Something changed, dump theme");
+                        dump_theme (editor);
+
+                        break;
+                }
+
+                g_assert_not_reached ();
+
+        } while (gtk_tree_model_iter_next (model, &iter));
+
+        g_free (old_filename);
+}
+
+static void
+fill_custom_model (GtkListStore *store,
+                   const char   *prev_filename)
+{
+        GtkTreeIter iter;
+
+        gtk_list_store_clear (store);
+
+        if (prev_filename != NULL) {
+                char *display;
+                display = g_filename_display_basename (prev_filename);
+                gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
+                                                   0, display,
+                                                   1, SOUND_CUSTOM_OLD,
+                                                   -1);
+                g_free (display);
+        }
+
+        gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
+                                           0, _("Default"),
+                                           1, SOUND_BUILTIN,
+                                           -1);
+        gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
+                                           0, _("Disabled"),
+                                           1, SOUND_OFF,
+                                           -1);
+        gtk_list_store_insert_with_values (store, &iter, G_MAXINT,
+                                           0, _("Customâ?¦"),
+                                           1, SOUND_CUSTOM, -1);
+}
+
+static void
+on_combobox_editing_started (GtkCellRenderer      *renderer,
+                             GtkCellEditable      *editable,
+                             gchar                *path,
+                             GvcSoundThemeEditor *editor)
+{
+        GtkTreeModel *model;
+        GtkTreeModel *store;
+        GtkTreeIter   iter;
+        SoundType     type;
+        char         *filename;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (editor->priv->treeview));
+        if (gtk_tree_model_get_iter_from_string (model, &iter, path) == FALSE) {
+                return;
+        }
+
+        gtk_tree_model_get (model, &iter, TYPE_COL, &type, FILENAME_COL, &filename, -1);
+        g_object_get (renderer, "model", &store, NULL);
+        fill_custom_model (GTK_LIST_STORE (store), filename);
+        g_free (filename);
+}
+
+static gboolean
+play_sound_at_path (GtkWidget         *tree_view,
+                    GtkTreePath       *path)
+{
+        GtkTreeModel *model;
+        GtkTreeIter   iter;
+        char        **sound_names;
+        gboolean      sensitive;
+
+        model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree_view));
+        if (gtk_tree_model_get_iter (model, &iter, path) == FALSE) {
+                return FALSE;
+        }
+
+        gtk_tree_model_get (model, &iter,
+                            SOUND_NAMES_COL, &sound_names,
+                            SENSITIVE_COL, &sensitive,
+                            -1);
+        if (!sensitive || sound_names == NULL) {
+                return FALSE;
+        }
+
+        ca_gtk_play_for_widget (GTK_WIDGET (tree_view), 0,
+                                CA_PROP_APPLICATION_NAME, _("Sound Preferences"),
+                                CA_PROP_EVENT_ID, sound_names[0],
+                                CA_PROP_EVENT_DESCRIPTION, _("Testing event sound"),
+                                CA_PROP_CANBERRA_CACHE_CONTROL, "never",
+                                CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+#ifdef CA_PROP_CANBERRA_ENABLE
+                                CA_PROP_CANBERRA_ENABLE, "1",
+#endif
+                                NULL);
+
+        g_strfreev (sound_names);
+
+        return TRUE;
+}
+
+static void
+setting_set_func (GtkTreeViewColumn *tree_column,
+                  GtkCellRenderer   *cell,
+                  GtkTreeModel      *model,
+                  GtkTreeIter       *iter,
+                  gpointer           data)
+{
+        int       setting;
+        char     *filename;
+        SoundType type;
+
+        gtk_tree_model_get (model, iter,
+                            SETTING_COL, &setting,
+                            FILENAME_COL, &filename,
+                            TYPE_COL, &type,
+                            -1);
+
+        if (setting == SOUND_UNSET) {
+                g_object_set (cell,
+                              "visible", FALSE,
+                              NULL);
+                g_free (filename);
+                return;
+        }
+
+        if (setting == SOUND_OFF) {
+                g_object_set (cell,
+                              "text", _("Disabled"),
+                              NULL);
+        } else if (setting == SOUND_BUILTIN) {
+                g_object_set (cell,
+                              "text", _("Default"),
+                              NULL);
+        } else if (setting == SOUND_CUSTOM || setting == SOUND_CUSTOM_OLD) {
+                char *display;
+
+                display = g_filename_display_basename (filename);
+                g_object_set (cell,
+                              "text", display,
+                              NULL);
+                g_free (display);
+        }
+
+        g_free (filename);
+}
+
+typedef GtkCellRendererPixbuf      ActivatableCellRendererPixbuf;
+typedef GtkCellRendererPixbufClass ActivatableCellRendererPixbufClass;
+
+GType activatable_cell_renderer_pixbuf_get_type (void);
+#define ACTIVATABLE_TYPE_CELL_RENDERER_PIXBUF (activatable_cell_renderer_pixbuf_get_type ())
+G_DEFINE_TYPE (ActivatableCellRendererPixbuf, activatable_cell_renderer_pixbuf, GTK_TYPE_CELL_RENDERER_PIXBUF);
+
+static gboolean
+activatable_cell_renderer_pixbuf_activate (GtkCellRenderer      *cell,
+                                           GdkEvent             *event,
+                                           GtkWidget            *widget,
+                                           const gchar          *path_string,
+                                           GdkRectangle         *background_area,
+                                           GdkRectangle         *cell_area,
+                                           GtkCellRendererState  flags)
+{
+        GtkTreePath *path;
+        gboolean     res;
+
+        g_debug ("Activating pixbuf");
+
+        path = gtk_tree_path_new_from_string (path_string);
+        res = play_sound_at_path (widget, path);
+        gtk_tree_path_free (path);
+
+        return res;
+}
+
+static void
+activatable_cell_renderer_pixbuf_init (ActivatableCellRendererPixbuf *cell)
+{
+}
+
+static void
+activatable_cell_renderer_pixbuf_class_init (ActivatableCellRendererPixbufClass *class)
+{
+        GtkCellRendererClass *cell_class;
+
+        cell_class = GTK_CELL_RENDERER_CLASS (class);
+
+        cell_class->activate = activatable_cell_renderer_pixbuf_activate;
+}
+
+static void
+setup_theme_custom_selector (GvcSoundThemeEditor *editor,
+                             gboolean              have_xkb )
+{
+        GtkTreeStore      *store;
+        GtkTreeModel      *custom_model;
+        GtkTreeViewColumn *column;
+        GtkCellRenderer   *renderer;
+        GtkTreeIter        iter;
+        GtkTreeIter        parent;
+        CategoryType       type;
+        guint              i;
+
+        /* Set up the model for the custom view */
+        store = gtk_tree_store_new (NUM_COLS,
+                                    G_TYPE_STRING,
+                                    G_TYPE_INT,
+                                    G_TYPE_INT,
+                                    G_TYPE_BOOLEAN,
+                                    G_TYPE_BOOLEAN,
+                                    G_TYPE_STRING,
+                                    G_TYPE_STRV);
+
+        /* The first column with the categories/sound names */
+        renderer = gtk_cell_renderer_text_new ();
+        column = gtk_tree_view_column_new_with_attributes ("Display", renderer,
+                                                           "text", DISPLAY_COL,
+                                                           "sensitive", SENSITIVE_COL,
+							   "ellipsize", PANGO_ELLIPSIZE_START,
+							   "ellipsize-set", TRUE,
+							   NULL);
+	g_object_set (G_OBJECT (column), "expand", TRUE, NULL);
+
+        gtk_tree_view_append_column (GTK_TREE_VIEW (editor->priv->treeview), column);
+
+        /* The 2nd column with the sound settings */
+        renderer = gtk_cell_renderer_combo_new ();
+        g_signal_connect (renderer,
+                          "edited",
+                          G_CALLBACK (on_setting_column_edited),
+                          editor);
+        g_signal_connect (renderer,
+                          "editing-started",
+                          G_CALLBACK (on_combobox_editing_started),
+                          editor);
+        custom_model = GTK_TREE_MODEL (gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT));
+        fill_custom_model (GTK_LIST_STORE (custom_model), NULL);
+
+        g_object_set (renderer,
+                      "model", custom_model,
+                      "has-entry", FALSE,
+                      "editable", TRUE,
+                      "text-column", 0,
+                      NULL);
+        column = gtk_tree_view_column_new_with_attributes ("Setting", renderer,
+                                                           "editable", SENSITIVE_COL,
+                                                           "sensitive", SENSITIVE_COL,
+                                                           "visible", TRUE,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (editor->priv->treeview), column);
+        gtk_tree_view_column_set_cell_data_func (column, renderer, setting_set_func, NULL, NULL);
+
+        /* The 3rd column with the preview pixbuf */
+        renderer = g_object_new (ACTIVATABLE_TYPE_CELL_RENDERER_PIXBUF, NULL);
+        g_object_set (renderer,
+                      "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE,
+                      "icon-name", "media-playback-start",
+                      "stock-size", GTK_ICON_SIZE_MENU,
+                      NULL);
+        column = gtk_tree_view_column_new_with_attributes ("Preview", renderer,
+                                                           "visible", HAS_PREVIEW_COL,
+                                                           NULL);
+        gtk_tree_view_append_column (GTK_TREE_VIEW (editor->priv->treeview), column);
+        g_object_set_data (G_OBJECT (editor->priv->treeview), "preview-column", column);
+
+        gtk_tree_view_set_model (GTK_TREE_VIEW (editor->priv->treeview), GTK_TREE_MODEL (store));
+        gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (editor->priv->treeview), FALSE);
+
+        /* Fill in the model */
+        type = CATEGORY_INVALID;
+
+        for (i = 0; ; i++) {
+                GtkTreeIter *_parent;
+
+                if (sounds[i].category == -1) {
+                        break;
+                }
+
+                /* Is it a new type of sound? */
+                if (sounds[i].category == type
+                    && type != CATEGORY_INVALID
+                    && type != CATEGORY_BELL) {
+                        _parent = &parent;
+                } else {
+                        _parent = NULL;
+                }
+
+                if (sounds[i].type != -1) {
+                        gtk_tree_store_insert_with_values (store, &iter, _parent, G_MAXINT,
+                                                           DISPLAY_COL, g_dpgettext2 (NULL, "Sound event", sounds[i].display_name),
+                                                           SETTING_COL, SOUND_BUILTIN,
+                                                           TYPE_COL, sounds[i].type,
+                                                           SOUND_NAMES_COL, sounds[i].names,
+                                                           HAS_PREVIEW_COL, TRUE,
+                                                           SENSITIVE_COL, TRUE,
+                                                           -1);
+                } else {
+                        /* Category */
+                        gtk_tree_store_insert_with_values (store, &iter, _parent, G_MAXINT,
+                                                           DISPLAY_COL, g_dpgettext2 (NULL, "Sound event", sounds[i].display_name),
+                                                           SETTING_COL, SOUND_UNSET,
+                                                           TYPE_COL, sounds[i].type,
+                                                           SENSITIVE_COL, TRUE,
+                                                           HAS_PREVIEW_COL, FALSE,
+                                                           -1);
+                }
+
+                /* If we didn't set a parent already, set one in case we need it later */
+                if (_parent == NULL) {
+                        parent = iter;
+                }
+                type = sounds[i].category;
+        }
+
+        gtk_tree_view_expand_all (GTK_TREE_VIEW (editor->priv->treeview));
+}
+
+static GObject *
+gvc_sound_theme_editor_constructor (GType                  type,
+                                     guint                  n_construct_properties,
+                                     GObjectConstructParam *construct_params)
+{
+        GObject              *object;
+        GvcSoundThemeEditor *self;
+
+        object = G_OBJECT_CLASS (gvc_sound_theme_editor_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        self = GVC_SOUND_THEME_EDITOR (object);
+
+        setup_theme_selector (self);
+        setup_theme_custom_selector (self, TRUE);
+
+        update_theme (self);
+
+        return object;
+}
+
+static void
+gvc_sound_theme_editor_class_init (GvcSoundThemeEditorClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_sound_theme_editor_constructor;
+        object_class->finalize = gvc_sound_theme_editor_finalize;
+
+        g_type_class_add_private (klass, sizeof (GvcSoundThemeEditorPrivate));
+}
+
+static void
+on_click_feedback_toggled (GtkToggleButton      *button,
+                           GvcSoundThemeEditor *editor)
+{
+        GConfClient *client;
+        gboolean     enabled;
+
+        enabled = gtk_toggle_button_get_active (button);
+
+        client = gconf_client_get_default ();
+        gconf_client_set_bool (client, INPUT_SOUNDS_KEY, enabled, NULL);
+        g_object_unref (client);
+}
+
+static void
+on_key_changed (GConfClient          *client,
+                guint                 cnxn_id,
+                GConfEntry           *entry,
+                GvcSoundThemeEditor *editor)
+{
+        const char *key;
+        GConfValue *value;
+
+        key = gconf_entry_get_key (entry);
+
+        if (! g_str_has_prefix (key, KEY_SOUNDS_DIR)
+            && ! g_str_has_prefix (key, KEY_METACITY_DIR)) {
+                return;
+        }
+
+        value = gconf_entry_get_value (entry);
+        if (strcmp (key, EVENT_SOUNDS_KEY) == 0) {
+                update_theme (editor);
+        } else if (strcmp (key, SOUND_THEME_KEY) == 0) {
+                update_theme (editor);
+        } else if (strcmp (key, INPUT_SOUNDS_KEY) == 0) {
+                update_theme (editor);
+        } else if (strcmp (key, AUDIO_BELL_KEY) == 0) {
+                update_theme (editor);
+        }
+}
+
+static void
+on_treeview_row_activated (GtkTreeView          *treeview,
+                           GtkTreePath          *path,
+                           GtkTreeViewColumn    *column,
+                           GvcSoundThemeEditor *editor)
+{
+        g_debug ("row activated");
+        play_sound_at_path (GTK_WIDGET (treeview), path);
+}
+
+static void
+constrain_list_size (GtkWidget      *widget,
+                     GtkRequisition *requisition,
+                     GtkWidget      *to_size)
+{
+        GtkRequisition req;
+        int            max_height;
+
+        /* constrain height to be the tree height up to a max */
+        max_height = (gdk_screen_get_height (gtk_widget_get_screen (widget))) / 4;
+
+        gtk_widget_get_preferred_size (to_size, NULL, &req);
+
+        requisition->height = MIN (req.height, max_height);
+}
+
+static void
+setup_list_size_constraint (GtkWidget *widget,
+                            GtkWidget *to_size)
+{
+        g_signal_connect (widget,
+                          "size-request",
+                          G_CALLBACK (constrain_list_size),
+                          to_size);
+}
+
+static void
+gvc_sound_theme_editor_init (GvcSoundThemeEditor *editor)
+{
+        GtkWidget   *box;
+        GtkWidget   *label;
+        GtkWidget   *scrolled_window;
+
+        editor->priv = GVC_SOUND_THEME_EDITOR_GET_PRIVATE (editor);
+
+        editor->priv->theme_box = gtk_hbox_new (FALSE, 6);
+        gtk_box_pack_start (GTK_BOX (editor),
+                            editor->priv->theme_box, FALSE, FALSE, 0);
+
+        label = gtk_label_new (_("Sound Theme:"));
+        gtk_box_pack_start (GTK_BOX (editor->priv->theme_box), label, FALSE, FALSE, 6);
+        editor->priv->combo_box = gtk_combo_box_new ();
+        gtk_box_pack_start (GTK_BOX (editor->priv->theme_box), editor->priv->combo_box, FALSE, FALSE, 0);
+
+
+        editor->priv->client = gconf_client_get_default ();
+
+        editor->priv->selection_box = box = gtk_vbox_new (FALSE, 0);
+        gtk_box_pack_start (GTK_BOX (editor), box, TRUE, TRUE, 0);
+
+        editor->priv->treeview = gtk_tree_view_new ();
+        g_signal_connect (editor->priv->treeview,
+                          "row-activated",
+                          G_CALLBACK (on_treeview_row_activated),
+                          editor);
+
+        scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+        setup_list_size_constraint (scrolled_window, editor->priv->treeview);
+
+        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
+                                        GTK_POLICY_NEVER,
+                                        GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
+                                             GTK_SHADOW_IN);
+        gtk_container_add (GTK_CONTAINER (scrolled_window), editor->priv->treeview);
+        gtk_container_add (GTK_CONTAINER (box), scrolled_window);
+
+        editor->priv->click_feedback_button = gtk_check_button_new_with_mnemonic (_("Enable window and button sounds"));
+        gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (editor->priv->click_feedback_button),
+                                      gconf_client_get_bool (editor->priv->client, INPUT_SOUNDS_KEY, NULL));
+        gtk_box_pack_start (GTK_BOX (box),
+                            editor->priv->click_feedback_button,
+                            FALSE, FALSE, 0);
+        g_signal_connect (editor->priv->click_feedback_button,
+                          "toggled",
+                          G_CALLBACK (on_click_feedback_toggled),
+                          editor);
+
+
+        gconf_client_add_dir (editor->priv->client, KEY_SOUNDS_DIR,
+                              GCONF_CLIENT_PRELOAD_ONELEVEL,
+                              NULL);
+        editor->priv->sounds_dir_id = gconf_client_notify_add (editor->priv->client,
+                                                               KEY_SOUNDS_DIR,
+							       (GConfClientNotifyFunc)on_key_changed,
+							       editor, NULL, NULL);
+        gconf_client_add_dir (editor->priv->client, KEY_METACITY_DIR,
+                              GCONF_CLIENT_PRELOAD_ONELEVEL,
+                              NULL);
+        editor->priv->metacity_dir_id = gconf_client_notify_add (editor->priv->client,
+								 KEY_METACITY_DIR,
+								 (GConfClientNotifyFunc)on_key_changed,
+								 editor, NULL, NULL);
+
+        /* FIXME: should accept drag and drop themes.  should also
+           add an "Add Theme..." item to the theme combobox */
+}
+
+static void
+gvc_sound_theme_editor_finalize (GObject *object)
+{
+        GvcSoundThemeEditor *sound_theme_editor;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_SOUND_THEME_EDITOR (object));
+
+        sound_theme_editor = GVC_SOUND_THEME_EDITOR (object);
+
+	if (sound_theme_editor->priv != NULL) {
+		if (sound_theme_editor->priv->sounds_dir_id > 0) {
+			gconf_client_notify_remove (sound_theme_editor->priv->client,
+						    sound_theme_editor->priv->sounds_dir_id);
+			sound_theme_editor->priv->sounds_dir_id = 0;
+		}
+		if (sound_theme_editor->priv->metacity_dir_id > 0) {
+			gconf_client_notify_remove (sound_theme_editor->priv->client,
+						    sound_theme_editor->priv->metacity_dir_id);
+			sound_theme_editor->priv->metacity_dir_id = 0;
+		}
+		g_object_unref (sound_theme_editor->priv->client);
+		sound_theme_editor->priv->client = NULL;
+	}
+
+        G_OBJECT_CLASS (gvc_sound_theme_editor_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_sound_theme_editor_new (void)
+{
+        GObject *editor;
+        editor = g_object_new (GVC_TYPE_SOUND_THEME_EDITOR,
+                                "spacing", 6,
+                                NULL);
+        return GTK_WIDGET (editor);
+}
diff --git a/panels/sound/gvc-sound-theme-editor.h b/panels/sound/gvc-sound-theme-editor.h
new file mode 100644
index 0000000..5e4330d
--- /dev/null
+++ b/panels/sound/gvc-sound-theme-editor.h
@@ -0,0 +1,54 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_SOUND_THEME_EDITOR_H
+#define __GVC_SOUND_THEME_EDITOR_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_SOUND_THEME_EDITOR         (gvc_sound_theme_editor_get_type ())
+#define GVC_SOUND_THEME_EDITOR(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_SOUND_THEME_EDITOR, GvcSoundThemeEditor))
+#define GVC_SOUND_THEME_EDITOR_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_SOUND_THEME_EDITOR, GvcSoundThemeEditorClass))
+#define GVC_IS_SOUND_THEME_EDITOR(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_SOUND_THEME_EDITOR))
+#define GVC_IS_SOUND_THEME_EDITOR_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_SOUND_THEME_EDITOR))
+#define GVC_SOUND_THEME_EDITOR_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_SOUND_THEME_EDITOR, GvcSoundThemeEditorClass))
+
+typedef struct GvcSoundThemeEditorPrivate GvcSoundThemeEditorPrivate;
+
+typedef struct
+{
+        GtkVBox                     parent;
+        GvcSoundThemeEditorPrivate *priv;
+} GvcSoundThemeEditor;
+
+typedef struct
+{
+        GtkVBoxClass          parent_class;
+} GvcSoundThemeEditorClass;
+
+GType               gvc_sound_theme_editor_get_type            (void);
+
+GtkWidget *         gvc_sound_theme_editor_new                 (void);
+
+G_END_DECLS
+
+#endif /* __GVC_SOUND_THEME_EDITOR_H */
diff --git a/panels/sound/gvc-speaker-test.c b/panels/sound/gvc-speaker-test.c
new file mode 100644
index 0000000..8b56c48
--- /dev/null
+++ b/panels/sound/gvc-speaker-test.c
@@ -0,0 +1,500 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Bastien Nocera
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <canberra.h>
+#include <canberra-gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-speaker-test.h"
+#include "gvc-mixer-stream.h"
+#include "gvc-mixer-card.h"
+
+#define GVC_SPEAKER_TEST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestPrivate))
+
+struct GvcSpeakerTestPrivate
+{
+        GtkWidget       *channel_controls[PA_CHANNEL_POSITION_MAX];
+        ca_context      *canberra;
+        GvcMixerCard    *card;
+        GvcMixerControl *control;
+};
+
+enum {
+        COL_NAME,
+        COL_HUMAN_NAME,
+        NUM_COLS
+};
+
+enum {
+        PROP_0,
+        PROP_CARD,
+        PROP_CONTROL
+};
+
+static void     gvc_speaker_test_class_init (GvcSpeakerTestClass *klass);
+static void     gvc_speaker_test_init       (GvcSpeakerTest      *speaker_test);
+static void     gvc_speaker_test_finalize   (GObject            *object);
+static void     update_channel_map          (GvcSpeakerTest *speaker_test);
+
+G_DEFINE_TYPE (GvcSpeakerTest, gvc_speaker_test, GTK_TYPE_TABLE)
+
+static const int position_table[] = {
+        /* Position, X, Y */
+        PA_CHANNEL_POSITION_FRONT_LEFT, 0, 0,
+        PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER, 1, 0,
+        PA_CHANNEL_POSITION_FRONT_CENTER, 2, 0,
+        PA_CHANNEL_POSITION_MONO, 2, 0,
+        PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER, 3, 0,
+        PA_CHANNEL_POSITION_FRONT_RIGHT, 4, 0,
+        PA_CHANNEL_POSITION_SIDE_LEFT, 0, 1,
+        PA_CHANNEL_POSITION_SIDE_RIGHT, 4, 1,
+        PA_CHANNEL_POSITION_REAR_LEFT, 0, 2,
+        PA_CHANNEL_POSITION_REAR_CENTER, 2, 2,
+        PA_CHANNEL_POSITION_REAR_RIGHT, 4, 2,
+        PA_CHANNEL_POSITION_LFE, 3, 2
+};
+
+static void
+gvc_speaker_test_set_property (GObject       *object,
+                               guint          prop_id,
+                               const GValue  *value,
+                               GParamSpec    *pspec)
+{
+        GvcSpeakerTest *self = GVC_SPEAKER_TEST (object);
+
+        switch (prop_id) {
+        case PROP_CARD:
+                self->priv->card = g_value_dup_object (value);
+                if (self->priv->control != NULL)
+                        update_channel_map (self);
+                break;
+        case PROP_CONTROL:
+                self->priv->control = g_value_dup_object (value);
+                if (self->priv->card != NULL)
+                        update_channel_map (self);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_speaker_test_get_property (GObject     *object,
+                               guint        prop_id,
+                               GValue      *value,
+                               GParamSpec  *pspec)
+{
+        GvcSpeakerTest *self = GVC_SPEAKER_TEST (object);
+
+        switch (prop_id) {
+        case PROP_CARD:
+                g_value_set_object (value, self->priv->card);
+                break;
+        case PROP_CONTROL:
+                g_value_set_object (value, self->priv->control);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_speaker_test_class_init (GvcSpeakerTestClass *klass)
+{
+        GObjectClass   *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->finalize = gvc_speaker_test_finalize;
+        object_class->set_property = gvc_speaker_test_set_property;
+        object_class->get_property = gvc_speaker_test_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_CARD,
+                                         g_param_spec_object ("card",
+                                                              "card",
+                                                              "The card",
+                                                              GVC_TYPE_MIXER_CARD,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_CONTROL,
+                                         g_param_spec_object ("control",
+                                                              "control",
+                                                              "The mixer controller",
+                                                              GVC_TYPE_MIXER_CONTROL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY));
+        g_type_class_add_private (klass, sizeof (GvcSpeakerTestPrivate));
+}
+
+static const char *
+sound_name (pa_channel_position_t position)
+{
+        switch (position) {
+        case PA_CHANNEL_POSITION_FRONT_LEFT:
+                return "audio-channel-front-left";
+        case PA_CHANNEL_POSITION_FRONT_RIGHT:
+                return "audio-channel-front-right";
+        case PA_CHANNEL_POSITION_FRONT_CENTER:
+                return "audio-channel-front-center";
+        case PA_CHANNEL_POSITION_REAR_LEFT:
+                return "audio-channel-rear-left";
+        case PA_CHANNEL_POSITION_REAR_RIGHT:
+                return "audio-channel-rear-right";
+        case PA_CHANNEL_POSITION_REAR_CENTER:
+                return "audio-channel-rear-center";
+        case PA_CHANNEL_POSITION_LFE:
+                return "audio-channel-lfe";
+        case PA_CHANNEL_POSITION_SIDE_LEFT:
+                return "audio-channel-side-left";
+        case PA_CHANNEL_POSITION_SIDE_RIGHT:
+                return "audio-channel-side-right";
+        default:
+                return NULL;
+        }
+}
+
+static const char *
+icon_name (pa_channel_position_t position, gboolean playing)
+{
+        switch (position) {
+        case PA_CHANNEL_POSITION_FRONT_LEFT:
+                return playing ? "audio-speaker-left-testing" : "audio-speaker-left";
+        case PA_CHANNEL_POSITION_FRONT_RIGHT:
+                return playing ? "audio-speaker-right-testing" : "audio-speaker-right";
+        case PA_CHANNEL_POSITION_FRONT_CENTER:
+                return playing ? "audio-speaker-center-testing" : "audio-speaker-center";
+        case PA_CHANNEL_POSITION_REAR_LEFT:
+                return playing ? "audio-speaker-left-back-testing" : "audio-speaker-left-back";
+        case PA_CHANNEL_POSITION_REAR_RIGHT:
+                return playing ? "audio-speaker-right-back-testing" : "audio-speaker-right-back";
+        case PA_CHANNEL_POSITION_REAR_CENTER:
+                return playing ? "audio-speaker-center-back-testing" : "audio-speaker-center-back";
+        case PA_CHANNEL_POSITION_LFE:
+                return playing ? "audio-subwoofer-testing" : "audio-subwoofer";
+        case PA_CHANNEL_POSITION_SIDE_LEFT:
+                return playing ? "audio-speaker-left-side-testing" : "audio-speaker-left-side";
+        case PA_CHANNEL_POSITION_SIDE_RIGHT:
+                return playing ? "audio-speaker-right-side-testing" : "audio-speaker-right-side";
+        default:
+                return NULL;
+        }
+}
+
+static void
+update_button (GtkWidget *control)
+{
+        GtkWidget *button;
+        GtkWidget *image;
+        pa_channel_position_t position;
+        gboolean playing;
+
+        button = g_object_get_data (G_OBJECT (control), "button");
+        image = g_object_get_data (G_OBJECT (control), "image");
+        position = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "position"));
+        playing = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "playing"));
+        gtk_button_set_label (GTK_BUTTON (button), playing ? _("Stop") : _("Test"));
+        gtk_image_set_from_icon_name (GTK_IMAGE (image), icon_name (position, playing), GTK_ICON_SIZE_DIALOG);
+}
+
+static const char *
+pretty_position (pa_channel_position_t position)
+{
+        if (position == PA_CHANNEL_POSITION_LFE)
+                return N_("Subwoofer");
+
+        return pa_channel_position_to_pretty_string (position);
+}
+
+static gboolean
+idle_cb (GtkWidget *control)
+{
+        if (control == NULL)
+                return FALSE;
+
+        /* This is called in the background thread, hence
+         * forward to main thread via idle callback */
+        g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE));
+        update_button (control);
+
+        return FALSE;
+}
+
+static void
+finish_cb (ca_context *c, uint32_t id, int error_code, void *userdata)
+{
+        GtkWidget *control = (GtkWidget *) userdata;
+
+        if (error_code == CA_ERROR_DESTROYED || control == NULL)
+                return;
+        g_idle_add ((GSourceFunc) idle_cb, control);
+}
+
+static void
+on_test_button_clicked (GtkButton *button,
+                        GtkWidget *control)
+{
+        gboolean playing;
+        ca_context *canberra;
+
+        canberra = g_object_get_data (G_OBJECT (control), "canberra");
+
+        ca_context_cancel (canberra, 1);
+
+        playing = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "playing"));
+
+        if (playing) {
+                g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE));
+        } else {
+                pa_channel_position_t position;
+                const char *name;
+                ca_proplist *proplist;
+
+                position = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (control), "position"));
+
+                ca_proplist_create (&proplist);
+                ca_proplist_sets (proplist, CA_PROP_MEDIA_ROLE, "test");
+                ca_proplist_sets (proplist, CA_PROP_MEDIA_NAME, pretty_position (position));
+                ca_proplist_sets (proplist, CA_PROP_CANBERRA_FORCE_CHANNEL,
+                                  pa_channel_position_to_string (position));
+                ca_proplist_sets (proplist, CA_PROP_CANBERRA_ENABLE, "1");
+
+                name = sound_name (position);
+                if (name != NULL) {
+                        ca_proplist_sets (proplist, CA_PROP_EVENT_ID, name);
+                        playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0;
+                }
+
+                if (!playing) {
+                        ca_proplist_sets (proplist, CA_PROP_EVENT_ID, "audio-test-signal");
+                        playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0;
+                }
+
+                if (!playing) {
+                        ca_proplist_sets(proplist, CA_PROP_EVENT_ID, "bell-window-system");
+                        playing = ca_context_play_full (canberra, 1, proplist, finish_cb, control) >= 0;
+                }
+                g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(playing));
+        }
+
+        update_button (control);
+}
+
+static GtkWidget *
+channel_control_new (ca_context *canberra, pa_channel_position_t position)
+{
+        GtkWidget *control;
+        GtkWidget *box;
+        GtkWidget *label;
+        GtkWidget *image;
+        GtkWidget *test_button;
+        const char *name;
+
+        control = gtk_vbox_new (FALSE, 6);
+        g_object_set_data (G_OBJECT (control), "playing", GINT_TO_POINTER(FALSE));
+        g_object_set_data (G_OBJECT (control), "position", GINT_TO_POINTER(position));
+        g_object_set_data (G_OBJECT (control), "canberra", canberra);
+
+        name = icon_name (position, FALSE);
+        if (name == NULL)
+                name = "audio-volume-medium";
+        image = gtk_image_new_from_icon_name (name, GTK_ICON_SIZE_DIALOG);
+        g_object_set_data (G_OBJECT (control), "image", image);
+        gtk_box_pack_start (GTK_BOX (control), image, FALSE, FALSE, 0);
+
+        label = gtk_label_new (pretty_position (position));
+        gtk_box_pack_start (GTK_BOX (control), label, FALSE, FALSE, 0);
+
+        test_button = gtk_button_new_with_label (_("Test"));
+        g_signal_connect (G_OBJECT (test_button), "clicked",
+                          G_CALLBACK (on_test_button_clicked), control);
+        g_object_set_data (G_OBJECT (control), "button", test_button);
+
+        box = gtk_hbox_new (FALSE, 0);
+        gtk_box_pack_start (GTK_BOX (box), test_button, TRUE, FALSE, 0);
+        gtk_box_pack_start (GTK_BOX (control), box, FALSE, FALSE, 0);
+
+        gtk_widget_show_all (control);
+
+        return control;
+}
+
+static void
+create_channel_controls (GvcSpeakerTest *speaker_test)
+{
+        guint i;
+
+        for (i = 0; i < G_N_ELEMENTS (position_table); i += 3) {
+                speaker_test->priv->channel_controls[position_table[i]] = channel_control_new (speaker_test->priv->canberra, (pa_channel_position_t) position_table[i]);
+                gtk_table_attach (GTK_TABLE (speaker_test),
+                                  speaker_test->priv->channel_controls[position_table[i]],
+                                  position_table[i+1],
+                                  position_table[i+1]+1,
+                                  position_table[i+2],
+                                  position_table[i+2]+1,
+                                  GTK_EXPAND, GTK_EXPAND, 0, 0);
+        }
+}
+
+static const GvcChannelMap *
+get_channel_map_for_card (GvcMixerControl *control,
+                          GvcMixerCard    *card,
+                          char           **output_name)
+{
+        int card_index;
+        GSList *sinks, *l;
+        GvcMixerStream *stream;
+        const GvcChannelMap *map;
+
+        /* This gets the channel map for the only
+         * output for the card */
+
+        card_index = gvc_mixer_card_get_index (card);
+        if (card_index == PA_INVALID_INDEX)
+                return NULL;
+        sinks = gvc_mixer_control_get_sinks (control);
+        stream = NULL;
+        for (l = sinks; l != NULL; l = l->next) {
+                GvcMixerStream *s = l->data;
+                if (gvc_mixer_stream_get_card_index (s) == card_index) {
+                        stream = g_object_ref (s);
+                        break;
+                }
+        }
+        g_slist_free (sinks);
+
+        g_assert (stream);
+
+        g_debug ("Found stream '%s' for card '%s'",
+                 gvc_mixer_stream_get_name (stream),
+                 gvc_mixer_card_get_name (card));
+
+        *output_name = g_strdup (gvc_mixer_stream_get_name (stream));
+        map = gvc_mixer_stream_get_channel_map (stream);
+
+        g_debug ("Got channel map '%s' for port '%s'",
+                 gvc_channel_map_get_mapping (map), *output_name);
+
+        return map;
+}
+
+static void
+update_channel_map (GvcSpeakerTest *speaker_test)
+{
+        guint i;
+        const GvcChannelMap *map;
+        char *output_name;
+
+        g_return_if_fail (speaker_test->priv->control != NULL);
+        g_return_if_fail (speaker_test->priv->card != NULL);
+
+        g_debug ("XXX update_channel_map called XXX");
+
+        map = get_channel_map_for_card (speaker_test->priv->control,
+                                        speaker_test->priv->card,
+                                        &output_name);
+
+        g_return_if_fail (map != NULL);
+
+        ca_context_change_device (speaker_test->priv->canberra, output_name);
+        g_free (output_name);
+
+        for (i = 0; i < G_N_ELEMENTS (position_table); i += 3) {
+                gtk_widget_set_visible (speaker_test->priv->channel_controls[position_table[i]],
+                                        gvc_channel_map_has_position(map, position_table[i]));
+        }
+}
+
+static void
+gvc_speaker_test_init (GvcSpeakerTest *speaker_test)
+{
+        GtkWidget *face;
+
+        speaker_test->priv = GVC_SPEAKER_TEST_GET_PRIVATE (speaker_test);
+
+        ca_context_create (&speaker_test->priv->canberra);
+        ca_context_set_driver (speaker_test->priv->canberra, "pulse");
+        ca_context_change_props (speaker_test->priv->canberra,
+                                 CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl",
+                                 NULL);
+
+        gtk_table_resize (GTK_TABLE (speaker_test), 3, 5);
+        gtk_container_set_border_width (GTK_CONTAINER (speaker_test), 12);
+        gtk_table_set_homogeneous (GTK_TABLE (speaker_test), TRUE);
+        gtk_table_set_row_spacings (GTK_TABLE (speaker_test), 12);
+        gtk_table_set_col_spacings (GTK_TABLE (speaker_test), 12);
+
+        create_channel_controls (speaker_test);
+
+        face = gtk_image_new_from_icon_name ("face-smile", GTK_ICON_SIZE_DIALOG);
+        gtk_table_attach (GTK_TABLE (speaker_test), face,
+                          2, 3, 1, 2, GTK_EXPAND, GTK_EXPAND, 0, 0);
+        gtk_widget_show (face);
+}
+
+static void
+gvc_speaker_test_finalize (GObject *object)
+{
+        GvcSpeakerTest *speaker_test;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_SPEAKER_TEST (object));
+
+        speaker_test = GVC_SPEAKER_TEST (object);
+
+        g_return_if_fail (speaker_test->priv != NULL);
+
+        g_object_unref (speaker_test->priv->card);
+        speaker_test->priv->card = NULL;
+
+        g_object_unref (speaker_test->priv->control);
+        speaker_test->priv->control = NULL;
+
+        ca_context_destroy (speaker_test->priv->canberra);
+        speaker_test->priv->canberra = NULL;
+
+        G_OBJECT_CLASS (gvc_speaker_test_parent_class)->finalize (object);
+}
+
+GtkWidget *
+gvc_speaker_test_new (GvcMixerControl *control,
+                      GvcMixerCard *card)
+{
+        GObject *speaker_test;
+
+        g_return_val_if_fail (card != NULL, NULL);
+        g_return_val_if_fail (control != NULL, NULL);
+
+        speaker_test = g_object_new (GVC_TYPE_SPEAKER_TEST,
+                                  "card", card,
+                                  "control", control,
+                                  NULL);
+
+        return GTK_WIDGET (speaker_test);
+}
+
diff --git a/panels/sound/gvc-speaker-test.h b/panels/sound/gvc-speaker-test.h
new file mode 100644
index 0000000..912c594
--- /dev/null
+++ b/panels/sound/gvc-speaker-test.h
@@ -0,0 +1,57 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2009 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_SPEAKER_TEST_H
+#define __GVC_SPEAKER_TEST_H
+
+#include <glib-object.h>
+#include <gvc-mixer-card.h>
+#include <gvc-mixer-control.h>
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_SPEAKER_TEST         (gvc_speaker_test_get_type ())
+#define GVC_SPEAKER_TEST(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTest))
+#define GVC_SPEAKER_TEST_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestClass))
+#define GVC_IS_SPEAKER_TEST(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_SPEAKER_TEST))
+#define GVC_IS_SPEAKER_TEST_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_SPEAKER_TEST))
+#define GVC_SPEAKER_TEST_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_SPEAKER_TEST, GvcSpeakerTestClass))
+
+typedef struct GvcSpeakerTestPrivate GvcSpeakerTestPrivate;
+
+typedef struct
+{
+        GtkNotebook               parent;
+        GvcSpeakerTestPrivate *priv;
+} GvcSpeakerTest;
+
+typedef struct
+{
+        GtkNotebookClass        parent_class;
+} GvcSpeakerTestClass;
+
+GType               gvc_speaker_test_get_type            (void);
+
+GtkWidget *         gvc_speaker_test_new                 (GvcMixerControl *control,
+                                                          GvcMixerCard *card);
+
+G_END_DECLS
+
+#endif /* __GVC_SPEAKER_TEST_H */
diff --git a/panels/sound/gvc-stream-status-icon.c b/panels/sound/gvc-stream-status-icon.c
new file mode 100644
index 0000000..02c095f
--- /dev/null
+++ b/panels/sound/gvc-stream-status-icon.c
@@ -0,0 +1,822 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 William Jon McCann
+ *
+ * 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 "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include <glib.h>
+#include <glib/gi18n.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
+#include <pulse/pulseaudio.h>
+
+#include "gvc-mixer-stream.h"
+#include "gvc-channel-bar.h"
+#include "gvc-stream-status-icon.h"
+
+#define GVC_STREAM_STATUS_ICON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconPrivate))
+
+struct GvcStreamStatusIconPrivate
+{
+        char          **icon_names;
+        GvcMixerStream *mixer_stream;
+        GtkWidget      *dock;
+        GtkWidget      *bar;
+        guint           current_icon;
+        char           *display_name;
+        gboolean        thaw;
+};
+
+enum
+{
+        PROP_0,
+        PROP_DISPLAY_NAME,
+        PROP_MIXER_STREAM,
+        PROP_ICON_NAMES,
+};
+
+static void     gvc_stream_status_icon_class_init (GvcStreamStatusIconClass *klass);
+static void     gvc_stream_status_icon_init       (GvcStreamStatusIcon      *stream_status_icon);
+static void     gvc_stream_status_icon_finalize   (GObject                  *object);
+
+G_DEFINE_TYPE (GvcStreamStatusIcon, gvc_stream_status_icon, GTK_TYPE_STATUS_ICON)
+
+static void
+on_adjustment_value_changed (GtkAdjustment *adjustment,
+                             GvcStreamStatusIcon     *icon)
+{
+        gdouble volume;
+
+        if (icon->priv->thaw)
+                return;
+
+        volume = gtk_adjustment_get_value (adjustment);
+
+        /* Only push the volume if it's actually changed */
+        if (gvc_mixer_stream_set_volume(icon->priv->mixer_stream,
+                                    (pa_volume_t) round (volume)) != FALSE) {
+                gvc_mixer_stream_push_volume(icon->priv->mixer_stream);
+        }
+}
+
+static void
+update_dock (GvcStreamStatusIcon *icon)
+{
+        GtkAdjustment *adj;
+        gboolean       is_muted;
+
+        g_return_if_fail (icon);
+
+        adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar)));
+
+        icon->priv->thaw = TRUE;
+        gtk_adjustment_set_value (adj,
+                                  gvc_mixer_stream_get_volume (icon->priv->mixer_stream));
+        is_muted = gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream);
+        gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (icon->priv->bar), is_muted);
+        icon->priv->thaw = FALSE;
+}
+
+static gboolean
+popup_dock (GvcStreamStatusIcon *icon,
+            guint                time)
+{
+        GdkRectangle   area;
+        GtkOrientation orientation;
+        GdkDisplay    *display;
+        GdkScreen     *screen;
+        gboolean       res;
+        int            x;
+        int            y;
+        int            monitor_num;
+        GdkRectangle   monitor;
+        GtkRequisition dock_req;
+
+        update_dock (icon);
+
+        screen = gtk_status_icon_get_screen (GTK_STATUS_ICON (icon));
+        res = gtk_status_icon_get_geometry (GTK_STATUS_ICON (icon),
+                                            &screen,
+                                            &area,
+                                            &orientation);
+        if (! res) {
+                g_warning ("Unable to determine geometry of status icon");
+                return FALSE;
+        }
+
+        /* position roughly */
+        gtk_window_set_screen (GTK_WINDOW (icon->priv->dock), screen);
+        gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar),
+                                         1 - orientation);
+
+        monitor_num = gdk_screen_get_monitor_at_point (screen, area.x, area.y);
+        gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+
+        gtk_container_foreach (GTK_CONTAINER (icon->priv->dock),
+                               (GtkCallback) gtk_widget_show_all, NULL);
+        gtk_widget_get_preferred_size (icon->priv->dock, &dock_req, NULL);
+
+        if (orientation == GTK_ORIENTATION_VERTICAL) {
+                if (area.x + area.width + dock_req.width <= monitor.x + monitor.width) {
+                        x = area.x + area.width;
+                } else {
+                        x = area.x - dock_req.width;
+                }
+                if (area.y + dock_req.height <= monitor.y + monitor.height) {
+                        y = area.y;
+                } else {
+                        y = monitor.y + monitor.height - dock_req.height;
+                }
+        } else {
+                if (area.y + area.height + dock_req.height <= monitor.y + monitor.height) {
+                        y = area.y + area.height;
+                } else {
+                        y = area.y - dock_req.height;
+                }
+                if (area.x + dock_req.width <= monitor.x + monitor.width) {
+                        x = area.x;
+                } else {
+                        x = monitor.x + monitor.width - dock_req.width;
+                }
+        }
+
+        gtk_window_move (GTK_WINDOW (icon->priv->dock), x, y);
+
+        /* FIXME: without this, the popup window appears as a square
+         * after changing the orientation
+         */
+        gtk_window_resize (GTK_WINDOW (icon->priv->dock), 1, 1);
+
+        gtk_widget_show_all (icon->priv->dock);
+
+
+        /* grab focus */
+        gtk_grab_add (icon->priv->dock);
+
+        if (gdk_pointer_grab (gtk_widget_get_window (icon->priv->dock), TRUE,
+                              GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
+                              GDK_POINTER_MOTION_MASK | GDK_SCROLL_MASK, NULL, NULL,
+                              time)
+            != GDK_GRAB_SUCCESS) {
+                gtk_grab_remove (icon->priv->dock);
+                gtk_widget_hide (icon->priv->dock);
+                return FALSE;
+        }
+
+        if (gdk_keyboard_grab (gtk_widget_get_window (icon->priv->dock), TRUE, time) != GDK_GRAB_SUCCESS) {
+                display = gtk_widget_get_display (icon->priv->dock);
+                gdk_display_pointer_ungrab (display, time);
+                gtk_grab_remove (icon->priv->dock);
+                gtk_widget_hide (icon->priv->dock);
+                return FALSE;
+        }
+
+        gtk_widget_grab_focus (icon->priv->dock);
+
+        return TRUE;
+}
+
+static void
+on_status_icon_activate (GtkStatusIcon       *status_icon,
+                         GvcStreamStatusIcon *icon)
+{
+        popup_dock (icon, GDK_CURRENT_TIME);
+}
+
+static void
+on_menu_mute_toggled (GtkMenuItem         *item,
+                      GvcStreamStatusIcon *icon)
+{
+        gboolean is_muted;
+        is_muted = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (item));
+        gvc_channel_bar_set_is_muted (GVC_CHANNEL_BAR (icon->priv->bar), is_muted);
+}
+
+static void
+on_menu_activate_open_volume_control (GtkMenuItem *item,
+                                      GvcStreamStatusIcon   *icon)
+{
+        GError *error;
+
+        error = NULL;
+        gdk_spawn_command_line_on_screen (gtk_widget_get_screen (icon->priv->dock),
+                                          "gnome-control-center sound",
+                                          &error);
+
+        if (error != NULL) {
+                GtkWidget *dialog;
+
+                dialog = gtk_message_dialog_new (NULL,
+                                                 0,
+                                                 GTK_MESSAGE_ERROR,
+                                                 GTK_BUTTONS_CLOSE,
+                                                 _("Failed to start Sound Preferences: %s"),
+                                                 error->message);
+                g_signal_connect (dialog,
+                                  "response",
+                                  G_CALLBACK (gtk_widget_destroy),
+                                  NULL);
+                gtk_widget_show (dialog);
+                g_error_free (error);
+        }
+}
+
+static void
+on_status_icon_popup_menu (GtkStatusIcon       *status_icon,
+                           guint                button,
+                           guint                activate_time,
+                           GvcStreamStatusIcon *icon)
+{
+        GtkWidget *menu;
+        GtkWidget *item;
+        GtkWidget *image;
+
+        menu = gtk_menu_new ();
+
+        item = gtk_check_menu_item_new_with_mnemonic (_("_Mute"));
+        gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+                                        gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream));
+        g_signal_connect (item,
+                          "toggled",
+                          G_CALLBACK (on_menu_mute_toggled),
+                          icon);
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+        item = gtk_image_menu_item_new_with_mnemonic (_("_Sound Preferences"));
+        image = gtk_image_new_from_icon_name ("multimedia-volume-control",
+                                              GTK_ICON_SIZE_MENU);
+        gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
+        g_signal_connect (item,
+                          "activate",
+                          G_CALLBACK (on_menu_activate_open_volume_control),
+                          icon);
+        gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+
+        gtk_widget_show_all (menu);
+        gtk_menu_popup (GTK_MENU (menu),
+                        NULL,
+                        NULL,
+                        gtk_status_icon_position_menu,
+                        status_icon,
+                        button,
+                        activate_time);
+}
+
+static gboolean
+on_status_icon_scroll_event (GtkStatusIcon       *status_icon,
+                             GdkEventScroll      *event,
+                             GvcStreamStatusIcon *icon)
+{
+        return gvc_channel_bar_scroll (GVC_CHANNEL_BAR (icon->priv->bar), event->direction);
+}
+
+static void
+gvc_icon_release_grab (GvcStreamStatusIcon *icon,
+                         GdkEventButton    *event)
+{
+        GdkDisplay     *display;
+
+        /* ungrab focus */
+        display = gtk_widget_get_display (GTK_WIDGET (icon->priv->dock));
+        gdk_display_keyboard_ungrab (display, event->time);
+        gdk_display_pointer_ungrab (display, event->time);
+        gtk_grab_remove (icon->priv->dock);
+
+        /* hide again */
+        gtk_widget_hide (icon->priv->dock);
+}
+
+static gboolean
+on_dock_button_press (GtkWidget      *widget,
+                      GdkEventButton *event,
+                      GvcStreamStatusIcon      *icon)
+{
+        if (event->type == GDK_BUTTON_PRESS) {
+                gvc_icon_release_grab (icon, event);
+                return TRUE;
+        }
+
+        return FALSE;
+}
+
+static void
+popdown_dock (GvcStreamStatusIcon *icon)
+{
+        GdkDisplay *display;
+
+        /* ungrab focus */
+        display = gtk_widget_get_display (icon->priv->dock);
+        gdk_display_keyboard_ungrab (display, GDK_CURRENT_TIME);
+        gdk_display_pointer_ungrab (display, GDK_CURRENT_TIME);
+        gtk_grab_remove (icon->priv->dock);
+
+        /* hide again */
+        gtk_widget_hide (icon->priv->dock);
+}
+
+/* This is called when the grab is broken for
+ * either the dock, or the scale itself */
+static void
+gvc_icon_grab_notify (GvcStreamStatusIcon *icon,
+                      gboolean             was_grabbed)
+{
+        if (was_grabbed != FALSE) {
+                return;
+        }
+
+        if (!gtk_widget_has_grab (icon->priv->dock)) {
+                return;
+        }
+
+        if (gtk_widget_is_ancestor (gtk_grab_get_current (), icon->priv->dock)) {
+                return;
+        }
+
+        popdown_dock (icon);
+}
+
+static void
+on_dock_grab_notify (GtkWidget           *widget,
+                     gboolean             was_grabbed,
+                     GvcStreamStatusIcon *icon)
+{
+        gvc_icon_grab_notify (icon, was_grabbed);
+}
+
+static gboolean
+on_dock_grab_broken_event (GtkWidget           *widget,
+                           gboolean             was_grabbed,
+                           GvcStreamStatusIcon *icon)
+{
+        gvc_icon_grab_notify (icon, FALSE);
+
+        return FALSE;
+}
+
+static gboolean
+on_dock_key_release (GtkWidget           *widget,
+                     GdkEventKey         *event,
+                     GvcStreamStatusIcon *icon)
+{
+        if (event->keyval == GDK_KEY_Escape) {
+                popdown_dock (icon);
+                return TRUE;
+        }
+
+#if 0
+        if (!gtk_bindings_activate_event (GTK_OBJECT (widget), event)) {
+                /* The popup hasn't managed the event, pass onto the button */
+                gtk_bindings_activate_event (GTK_OBJECT (user_data), event);
+        }
+#endif
+        return TRUE;
+}
+
+static gboolean
+on_dock_scroll_event (GtkWidget           *widget,
+                      GdkEventScroll      *event,
+                      GvcStreamStatusIcon *icon)
+{
+        /* Forward event to the status icon */
+        on_status_icon_scroll_event (NULL, event, icon);
+        return TRUE;
+}
+
+static void
+update_icon (GvcStreamStatusIcon *icon)
+{
+        guint    volume;
+        gboolean is_muted;
+        guint    n;
+        char    *markup;
+        gboolean can_decibel;
+        gdouble  db;
+
+        if (icon->priv->mixer_stream == NULL) {
+                return;
+        }
+
+        volume = gvc_mixer_stream_get_volume (icon->priv->mixer_stream);
+        is_muted = gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream);
+        db = gvc_mixer_stream_get_decibel (icon->priv->mixer_stream);
+        can_decibel = gvc_mixer_stream_get_can_decibel (icon->priv->mixer_stream);
+
+        /* select image */
+        if (volume <= 0 || is_muted) {
+                n = 0;
+        } else {
+                n = 3 * volume / PA_VOLUME_NORM + 1;
+                if (n < 1) {
+                        n = 1;
+                } else if (n > 3) {
+                        n = 3;
+                }
+        }
+
+        /* apparently status icon will reset icon even if
+         * if doesn't change */
+        if (icon->priv->current_icon != n) {
+                gtk_status_icon_set_from_icon_name (GTK_STATUS_ICON (icon),
+                                                    icon->priv->icon_names [n]);
+                icon->priv->current_icon = n;
+        }
+
+
+        if (is_muted) {
+                markup = g_strdup_printf (
+                                          "<b>%s: %s</b>\n<small>%s</small>",
+                                          icon->priv->display_name,
+                                          _("Muted"),
+                                          gvc_mixer_stream_get_description (icon->priv->mixer_stream));
+        } else if (can_decibel && (db > PA_DECIBEL_MININFTY)) {
+                markup = g_strdup_printf (
+                                          "<b>%s: %.0f%%</b>\n<small>%0.2f dB\n%s</small>",
+                                          icon->priv->display_name,
+                                          100 * (float)volume / PA_VOLUME_NORM,
+                                          db,
+                                          gvc_mixer_stream_get_description (icon->priv->mixer_stream));
+        } else if (can_decibel) {
+                markup = g_strdup_printf (
+                                          "<b>%s: %.0f%%</b>\n<small>-&#8734; dB\n%s</small>",
+                                          icon->priv->display_name,
+                                          100 * (float)volume / PA_VOLUME_NORM,
+                                          gvc_mixer_stream_get_description (icon->priv->mixer_stream));
+        } else {
+                markup = g_strdup_printf (
+                                          "<b>%s: %.0f%%</b>\n<small>%s</small>",
+                                          icon->priv->display_name,
+                                          100 * (float)volume / PA_VOLUME_NORM,
+                                          gvc_mixer_stream_get_description (icon->priv->mixer_stream));
+        }
+        gtk_status_icon_set_tooltip_markup (GTK_STATUS_ICON (icon), markup);
+        g_free (markup);
+}
+
+void
+gvc_stream_status_icon_set_icon_names (GvcStreamStatusIcon  *icon,
+                                       const char          **names)
+{
+        g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (icon));
+
+        g_strfreev (icon->priv->icon_names);
+        icon->priv->icon_names = g_strdupv ((char **)names);
+        update_icon (icon);
+        g_object_notify (G_OBJECT (icon), "icon-names");
+}
+
+static void
+on_stream_volume_notify (GObject             *object,
+                         GParamSpec          *pspec,
+                         GvcStreamStatusIcon *icon)
+{
+        update_icon (icon);
+        update_dock (icon);
+}
+
+static void
+on_stream_is_muted_notify (GObject             *object,
+                           GParamSpec          *pspec,
+                           GvcStreamStatusIcon *icon)
+{
+        update_icon (icon);
+        update_dock (icon);
+}
+
+void
+gvc_stream_status_icon_set_display_name (GvcStreamStatusIcon *icon,
+                                         const char          *name)
+{
+        g_return_if_fail (GVC_STREAM_STATUS_ICON (icon));
+
+        g_free (icon->priv->display_name);
+        icon->priv->display_name = g_strdup (name);
+        update_icon (icon);
+        g_object_notify (G_OBJECT (icon), "display-name");
+}
+
+void
+gvc_stream_status_icon_set_mixer_stream (GvcStreamStatusIcon *icon,
+                                         GvcMixerStream      *stream)
+{
+        g_return_if_fail (GVC_STREAM_STATUS_ICON (icon));
+
+        if (stream != NULL) {
+                g_object_ref (stream);
+        }
+
+        if (icon->priv->mixer_stream != NULL) {
+                g_signal_handlers_disconnect_by_func (icon->priv->mixer_stream,
+                                                      G_CALLBACK (on_stream_volume_notify),
+                                                      icon);
+                g_signal_handlers_disconnect_by_func (icon->priv->mixer_stream,
+                                                      G_CALLBACK (on_stream_is_muted_notify),
+                                                      icon);
+                g_object_unref (icon->priv->mixer_stream);
+                icon->priv->mixer_stream = NULL;
+        }
+
+        icon->priv->mixer_stream = stream;
+
+        if (icon->priv->mixer_stream != NULL) {
+                GtkAdjustment *adj;
+
+                g_object_ref (icon->priv->mixer_stream);
+
+                icon->priv->thaw = TRUE;
+                adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar)));
+                gtk_adjustment_set_value (adj,
+                                          gvc_mixer_stream_get_volume (icon->priv->mixer_stream));
+                icon->priv->thaw = FALSE;
+
+                g_signal_connect (icon->priv->mixer_stream,
+                                  "notify::volume",
+                                  G_CALLBACK (on_stream_volume_notify),
+                                  icon);
+                g_signal_connect (icon->priv->mixer_stream,
+                                  "notify::is-muted",
+                                  G_CALLBACK (on_stream_is_muted_notify),
+                                  icon);
+        }
+
+        update_icon (icon);
+
+        g_object_notify (G_OBJECT (icon), "mixer-stream");
+}
+
+static void
+gvc_stream_status_icon_set_property (GObject       *object,
+                                     guint          prop_id,
+                                     const GValue  *value,
+                                     GParamSpec    *pspec)
+{
+        GvcStreamStatusIcon *self = GVC_STREAM_STATUS_ICON (object);
+
+        switch (prop_id) {
+        case PROP_MIXER_STREAM:
+                gvc_stream_status_icon_set_mixer_stream (self, g_value_get_object (value));
+                break;
+        case PROP_DISPLAY_NAME:
+                gvc_stream_status_icon_set_display_name (self, g_value_get_string (value));
+                break;
+        case PROP_ICON_NAMES:
+                gvc_stream_status_icon_set_icon_names (self, g_value_get_boxed (value));
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+gvc_stream_status_icon_get_property (GObject     *object,
+                                     guint        prop_id,
+                                     GValue      *value,
+                                     GParamSpec  *pspec)
+{
+        GvcStreamStatusIcon *self = GVC_STREAM_STATUS_ICON (object);
+        GvcStreamStatusIconPrivate *priv = self->priv;
+
+        switch (prop_id) {
+        case PROP_MIXER_STREAM:
+                g_value_set_object (value, priv->mixer_stream);
+                break;
+        case PROP_DISPLAY_NAME:
+                g_value_set_string (value, priv->display_name);
+                break;
+        case PROP_ICON_NAMES:
+                g_value_set_boxed (value, priv->icon_names);
+                break;
+        default:
+                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+                break;
+        }
+}
+
+static void
+on_bar_is_muted_notify (GObject             *object,
+                        GParamSpec          *pspec,
+                        GvcStreamStatusIcon *icon)
+{
+        gboolean is_muted;
+
+        is_muted = gvc_channel_bar_get_is_muted (GVC_CHANNEL_BAR (object));
+
+        if (gvc_mixer_stream_get_is_muted (icon->priv->mixer_stream) != is_muted) {
+                /* Update the stream before pushing the change */
+                gvc_mixer_stream_set_is_muted (icon->priv->mixer_stream, is_muted);
+                gvc_mixer_stream_change_is_muted (icon->priv->mixer_stream,
+                                                  is_muted);
+        }
+}
+
+static GObject *
+gvc_stream_status_icon_constructor (GType                  type,
+                                    guint                  n_construct_properties,
+                                    GObjectConstructParam *construct_params)
+{
+        GObject             *object;
+        GvcStreamStatusIcon *icon;
+        GtkWidget           *frame;
+        GtkWidget           *box;
+        GtkAdjustment       *adj;
+
+        object = G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->constructor (type, n_construct_properties, construct_params);
+
+        icon = GVC_STREAM_STATUS_ICON (object);
+
+        gtk_status_icon_set_from_icon_name (GTK_STATUS_ICON (icon),
+                                            icon->priv->icon_names[0]);
+
+        /* window */
+        icon->priv->dock = gtk_window_new (GTK_WINDOW_POPUP);
+        gtk_widget_set_name (icon->priv->dock, "gvc-stream-status-icon-popup-window");
+        g_signal_connect (icon->priv->dock,
+                          "button-press-event",
+                          G_CALLBACK (on_dock_button_press),
+                          icon);
+        g_signal_connect (icon->priv->dock,
+                          "key-release-event",
+                          G_CALLBACK (on_dock_key_release),
+                          icon);
+        g_signal_connect (icon->priv->dock,
+                          "scroll-event",
+                          G_CALLBACK (on_dock_scroll_event),
+                          icon);
+        g_signal_connect (icon->priv->dock,
+                          "grab-notify",
+                          G_CALLBACK (on_dock_grab_notify),
+                          icon);
+        g_signal_connect (icon->priv->dock,
+                          "grab-broken-event",
+                          G_CALLBACK (on_dock_grab_broken_event),
+                          icon);
+
+        gtk_window_set_decorated (GTK_WINDOW (icon->priv->dock), FALSE);
+
+        frame = gtk_frame_new (NULL);
+        gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
+        gtk_container_add (GTK_CONTAINER (icon->priv->dock), frame);
+
+        box = gtk_vbox_new (FALSE, 6);
+        gtk_container_set_border_width (GTK_CONTAINER (box), 2);
+        gtk_container_add (GTK_CONTAINER (frame), box);
+
+        icon->priv->bar = gvc_channel_bar_new ();
+        gvc_channel_bar_set_orientation (GVC_CHANNEL_BAR (icon->priv->bar),
+                                         GTK_ORIENTATION_VERTICAL);
+
+        gtk_box_pack_start (GTK_BOX (box), icon->priv->bar, TRUE, FALSE, 0);
+        g_signal_connect (icon->priv->bar,
+                          "notify::is-muted",
+                          G_CALLBACK (on_bar_is_muted_notify),
+                          icon);
+
+        adj = GTK_ADJUSTMENT (gvc_channel_bar_get_adjustment (GVC_CHANNEL_BAR (icon->priv->bar)));
+        g_signal_connect (adj,
+                          "value-changed",
+                          G_CALLBACK (on_adjustment_value_changed),
+                          icon);
+
+        return object;
+}
+
+static void
+gvc_stream_status_icon_dispose (GObject *object)
+{
+        GvcStreamStatusIcon *icon = GVC_STREAM_STATUS_ICON (object);
+
+        if (icon->priv->dock != NULL) {
+                gtk_widget_destroy (icon->priv->dock);
+                icon->priv->dock = NULL;
+        }
+
+        if (icon->priv->mixer_stream != NULL) {
+                g_object_unref (icon->priv->mixer_stream);
+                icon->priv->mixer_stream = NULL;
+        }
+
+        G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->dispose (object);
+}
+
+static void
+gvc_stream_status_icon_class_init (GvcStreamStatusIconClass *klass)
+{
+        GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+        object_class->constructor = gvc_stream_status_icon_constructor;
+        object_class->finalize = gvc_stream_status_icon_finalize;
+        object_class->dispose = gvc_stream_status_icon_dispose;
+        object_class->set_property = gvc_stream_status_icon_set_property;
+        object_class->get_property = gvc_stream_status_icon_get_property;
+
+        g_object_class_install_property (object_class,
+                                         PROP_MIXER_STREAM,
+                                         g_param_spec_object ("mixer-stream",
+                                                              "mixer stream",
+                                                              "mixer stream",
+                                                              GVC_TYPE_MIXER_STREAM,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_DISPLAY_NAME,
+                                         g_param_spec_string ("display-name",
+                                                              "Display Name",
+                                                              "Name to display for this stream",
+                                                              NULL,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+        g_object_class_install_property (object_class,
+                                         PROP_ICON_NAMES,
+                                         g_param_spec_boxed ("icon-names",
+                                                             "Icon Names",
+                                                             "Name of icon to display for this stream",
+                                                              G_TYPE_STRV,
+                                                              G_PARAM_READWRITE|G_PARAM_CONSTRUCT));
+
+        g_type_class_add_private (klass, sizeof (GvcStreamStatusIconPrivate));
+}
+
+static void
+on_status_icon_visible_notify (GvcStreamStatusIcon *icon)
+{
+        gboolean visible;
+
+        g_object_get (icon, "visible", &visible, NULL);
+        if (! visible) {
+                if (icon->priv->dock != NULL) {
+                        gtk_widget_hide (icon->priv->dock);
+                }
+        }
+}
+
+static void
+gvc_stream_status_icon_init (GvcStreamStatusIcon *icon)
+{
+        icon->priv = GVC_STREAM_STATUS_ICON_GET_PRIVATE (icon);
+
+        g_signal_connect (icon,
+                          "activate",
+                          G_CALLBACK (on_status_icon_activate),
+                          icon);
+        g_signal_connect (icon,
+                          "popup-menu",
+                          G_CALLBACK (on_status_icon_popup_menu),
+                          icon);
+        g_signal_connect (icon,
+                          "scroll-event",
+                          G_CALLBACK (on_status_icon_scroll_event),
+                          icon);
+        g_signal_connect (icon,
+                          "notify::visible",
+                          G_CALLBACK (on_status_icon_visible_notify),
+                          NULL);
+
+        icon->priv->thaw = FALSE;
+}
+
+static void
+gvc_stream_status_icon_finalize (GObject *object)
+{
+        GvcStreamStatusIcon *stream_status_icon;
+
+        g_return_if_fail (object != NULL);
+        g_return_if_fail (GVC_IS_STREAM_STATUS_ICON (object));
+
+        stream_status_icon = GVC_STREAM_STATUS_ICON (object);
+
+        g_return_if_fail (stream_status_icon->priv != NULL);
+
+        g_strfreev (stream_status_icon->priv->icon_names);
+
+        G_OBJECT_CLASS (gvc_stream_status_icon_parent_class)->finalize (object);
+}
+
+GvcStreamStatusIcon *
+gvc_stream_status_icon_new (GvcMixerStream *stream,
+                            const char    **icon_names)
+{
+        GObject *icon;
+        icon = g_object_new (GVC_TYPE_STREAM_STATUS_ICON,
+                             "mixer-stream", stream,
+                             "icon-names", icon_names,
+                             NULL);
+        return GVC_STREAM_STATUS_ICON (icon);
+}
diff --git a/panels/sound/gvc-stream-status-icon.h b/panels/sound/gvc-stream-status-icon.h
new file mode 100644
index 0000000..55887f3
--- /dev/null
+++ b/panels/sound/gvc-stream-status-icon.h
@@ -0,0 +1,63 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * Copyright (C) 2008 Red Hat, Inc.
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GVC_STREAM_STATUS_ICON_H
+#define __GVC_STREAM_STATUS_ICON_H
+
+#include <glib-object.h>
+#include "gvc-mixer-stream.h"
+
+G_BEGIN_DECLS
+
+#define GVC_TYPE_STREAM_STATUS_ICON         (gvc_stream_status_icon_get_type ())
+#define GVC_STREAM_STATUS_ICON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIcon))
+#define GVC_STREAM_STATUS_ICON_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconClass))
+#define GVC_IS_STREAM_STATUS_ICON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), GVC_TYPE_STREAM_STATUS_ICON))
+#define GVC_IS_STREAM_STATUS_ICON_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), GVC_TYPE_STREAM_STATUS_ICON))
+#define GVC_STREAM_STATUS_ICON_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GVC_TYPE_STREAM_STATUS_ICON, GvcStreamStatusIconClass))
+
+typedef struct GvcStreamStatusIconPrivate GvcStreamStatusIconPrivate;
+
+typedef struct
+{
+        GtkStatusIcon               parent;
+        GvcStreamStatusIconPrivate *priv;
+} GvcStreamStatusIcon;
+
+typedef struct
+{
+        GtkStatusIconClass          parent_class;
+} GvcStreamStatusIconClass;
+
+GType                 gvc_stream_status_icon_get_type            (void);
+
+GvcStreamStatusIcon * gvc_stream_status_icon_new                 (GvcMixerStream      *stream,
+                                                                  const char         **icon_names);
+
+void                  gvc_stream_status_icon_set_icon_names      (GvcStreamStatusIcon *icon,
+                                                                  const char         **icon_names);
+void                  gvc_stream_status_icon_set_display_name    (GvcStreamStatusIcon *icon,
+                                                                  const char          *display_name);
+void                  gvc_stream_status_icon_set_mixer_stream    (GvcStreamStatusIcon *icon,
+                                                                  GvcMixerStream      *stream);
+
+G_END_DECLS
+
+#endif /* __GVC_STREAM_STATUS_ICON_H */
diff --git a/panels/sound/sound-theme-file-utils.c b/panels/sound/sound-theme-file-utils.c
new file mode 100644
index 0000000..06877c7
--- /dev/null
+++ b/panels/sound/sound-theme-file-utils.c
@@ -0,0 +1,305 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * Copyright (C) 2008 Bastien Nocera <hadess hadess net>
+ *
+ * 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, 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 <config.h>
+#include <glib/gstdio.h>
+#include <glib/gi18n-lib.h>
+#include <gio/gio.h>
+#include <utime.h>
+#include <strings.h>
+
+#include "sound-theme-file-utils.h"
+
+#define CUSTOM_THEME_NAME       "__custom"
+
+/* This function needs to be called after each individual
+ * changeset to the theme */
+void
+custom_theme_update_time (void)
+{
+        char *path;
+
+        path = custom_theme_dir_path (NULL);
+        utime (path, NULL);
+        g_free (path);
+}
+
+char *
+custom_theme_dir_path (const char *child)
+{
+        static char *dir = NULL;
+        const char *data_dir;
+
+        if (dir == NULL) {
+                data_dir = g_get_user_data_dir ();
+                dir = g_build_filename (data_dir, "sounds", CUSTOM_THEME_NAME, NULL);
+        }
+        if (child == NULL)
+                return g_strdup (dir);
+
+        return g_build_filename (dir, child, NULL);
+}
+
+static gboolean
+directory_delete_recursive (GFile *directory, GError **error)
+{
+        GFileEnumerator *enumerator;
+        GFileInfo *info;
+        gboolean success = TRUE;
+
+        enumerator = g_file_enumerate_children (directory,
+                                                G_FILE_ATTRIBUTE_STANDARD_NAME ","
+                                                G_FILE_ATTRIBUTE_STANDARD_TYPE,
+                                                G_FILE_QUERY_INFO_NONE,
+                                                NULL, error);
+        if (enumerator == NULL)
+                return FALSE;
+
+        while (success &&
+               (info = g_file_enumerator_next_file (enumerator, NULL, NULL))) {
+                GFile *child;
+
+                child = g_file_get_child (directory, g_file_info_get_name (info));
+
+                if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {
+                        success = directory_delete_recursive (child, error);
+                }
+                g_object_unref (info);
+
+                if (success)
+                        success = g_file_delete (child, NULL, error);
+        }
+        g_file_enumerator_close (enumerator, NULL, NULL);
+
+        if (success)
+                success = g_file_delete (directory, NULL, error);
+
+        return success;
+}
+
+/**
+ * capplet_file_delete_recursive :
+ * @file :
+ * @error  :
+ *
+ * A utility routine to delete files and/or directories,
+ * including non-empty directories.
+ **/
+static gboolean
+capplet_file_delete_recursive (GFile *file, GError **error)
+{
+        GFileInfo *info;
+        GFileType type;
+
+        g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+        info = g_file_query_info (file,
+                                  G_FILE_ATTRIBUTE_STANDARD_TYPE,
+                                  G_FILE_QUERY_INFO_NONE,
+                                  NULL, error);
+        if (info == NULL)
+                return FALSE;
+
+        type = g_file_info_get_file_type (info);
+        g_object_unref (info);
+
+        if (type == G_FILE_TYPE_DIRECTORY)
+                return directory_delete_recursive (file, error);
+        else
+                return g_file_delete (file, NULL, error);
+}
+
+void
+delete_custom_theme_dir (void)
+{
+        char *dir;
+        GFile *file;
+
+        dir = custom_theme_dir_path (NULL);
+        file = g_file_new_for_path (dir);
+        g_free (dir);
+        capplet_file_delete_recursive (file, NULL);
+        g_object_unref (file);
+
+        g_debug ("deleted the custom theme dir");
+}
+
+gboolean
+custom_theme_dir_is_empty (void)
+{
+        char            *dir;
+        GFile           *file;
+        gboolean         is_empty;
+        GFileEnumerator *enumerator;
+        GFileInfo       *info;
+        GError          *error = NULL;
+
+        dir = custom_theme_dir_path (NULL);
+        file = g_file_new_for_path (dir);
+        g_free (dir);
+
+        is_empty = TRUE;
+
+        enumerator = g_file_enumerate_children (file,
+                                                G_FILE_ATTRIBUTE_STANDARD_NAME ","
+                                                G_FILE_ATTRIBUTE_STANDARD_TYPE,
+                                                G_FILE_QUERY_INFO_NONE,
+                                                NULL, &error);
+        if (enumerator == NULL) {
+                g_warning ("Unable to enumerate files: %s", error->message);
+                g_error_free (error);
+                goto out;
+        }
+
+        while (is_empty &&
+               (info = g_file_enumerator_next_file (enumerator, NULL, NULL))) {
+
+                if (strcmp ("index.theme", g_file_info_get_name (info)) != 0) {
+                        is_empty = FALSE;
+                }
+
+                g_object_unref (info);
+        }
+        g_file_enumerator_close (enumerator, NULL, NULL);
+
+ out:
+        g_object_unref (file);
+
+        return is_empty;
+}
+
+static void
+delete_one_file (const char *sound_name, const char *pattern)
+{
+        GFile *file;
+        char *name, *filename;
+
+        name = g_strdup_printf (pattern, sound_name);
+        filename = custom_theme_dir_path (name);
+        g_free (name);
+        file = g_file_new_for_path (filename);
+        g_free (filename);
+        capplet_file_delete_recursive (file, NULL);
+        g_object_unref (file);
+}
+
+void
+delete_old_files (const char **sounds)
+{
+        guint i;
+
+        for (i = 0; sounds[i] != NULL; i++) {
+                delete_one_file (sounds[i], "%s.ogg");
+        }
+}
+
+void
+delete_disabled_files (const char **sounds)
+{
+        guint i;
+
+        for (i = 0; sounds[i] != NULL; i++)
+                delete_one_file (sounds[i], "%s.disabled");
+}
+
+static void
+create_one_file (GFile *file)
+{
+        GFileOutputStream* stream;
+
+        stream = g_file_create (file, G_FILE_CREATE_NONE, NULL, NULL);
+        if (stream != NULL) {
+                g_output_stream_close (G_OUTPUT_STREAM (stream), NULL, NULL);
+                g_object_unref (stream);
+        }
+}
+
+void
+add_disabled_file (const char **sounds)
+{
+        guint i;
+
+        for (i = 0; sounds[i] != NULL; i++) {
+                GFile *file;
+                char *name, *filename;
+
+                name = g_strdup_printf ("%s.disabled", sounds[i]);
+                filename = custom_theme_dir_path (name);
+                g_free (name);
+                file = g_file_new_for_path (filename);
+                g_free (filename);
+
+                create_one_file (file);
+                g_object_unref (file);
+        }
+}
+
+void
+add_custom_file (const char **sounds, const char *filename)
+{
+        guint i;
+
+        for (i = 0; sounds[i] != NULL; i++) {
+                GFile *file;
+                char *name, *path;
+
+                /* We use *.ogg because it's the first type of file that
+                 * libcanberra looks at */
+                name = g_strdup_printf ("%s.ogg", sounds[i]);
+                path = custom_theme_dir_path (name);
+                g_free (name);
+                /* In case there's already a link there, delete it */
+                g_unlink (path);
+                file = g_file_new_for_path (path);
+                g_free (path);
+
+                /* Create the link */
+                g_file_make_symbolic_link (file, filename, NULL, NULL);
+                g_object_unref (file);
+        }
+}
+
+void
+create_custom_theme (const char *parent)
+{
+        GKeyFile *keyfile;
+        char     *data;
+        char     *path;
+
+        /* Create the custom directory */
+        path = custom_theme_dir_path (NULL);
+        g_mkdir_with_parents (path, 0755);
+        g_free (path);
+
+        /* Set the data for index.theme */
+        keyfile = g_key_file_new ();
+        g_key_file_set_string (keyfile, "Sound Theme", "Name", _("Custom"));
+        g_key_file_set_string (keyfile, "Sound Theme", "Inherits", parent);
+        g_key_file_set_string (keyfile, "Sound Theme", "Directories", ".");
+        data = g_key_file_to_data (keyfile, NULL, NULL);
+        g_key_file_free (keyfile);
+
+        /* Save the index.theme */
+        path = custom_theme_dir_path ("index.theme");
+        g_file_set_contents (path, data, -1, NULL);
+        g_free (path);
+        g_free (data);
+
+        custom_theme_update_time ();
+}
diff --git a/panels/sound/sound-theme-file-utils.h b/panels/sound/sound-theme-file-utils.h
new file mode 100644
index 0000000..7fc3a58
--- /dev/null
+++ b/panels/sound/sound-theme-file-utils.h
@@ -0,0 +1,37 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ * Copyright (C) 2008 Bastien Nocera <hadess hadess net>
+ *
+ * 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, 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.
+ */
+#ifndef __SOUND_THEME_FILE_UTILS_HH__
+#define __SOUND_THEME_FILE_UTILS_HH__
+
+#include <gio/gio.h>
+
+char *custom_theme_dir_path (const char *child);
+gboolean custom_theme_dir_is_empty (void);
+void create_custom_theme (const char *parent);
+
+void delete_custom_theme_dir (void);
+void delete_old_files (const char **sounds);
+void delete_disabled_files (const char **sounds);
+
+void add_disabled_file (const char **sounds);
+void add_custom_file (const char **sounds, const char *filename);
+
+void custom_theme_update_time (void);
+
+#endif /* __SOUND_THEME_FILE_UTILS_HH__ */
diff --git a/po/POTFILES.in b/po/POTFILES.in
index f9bc81f..e3cdea4 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -46,6 +46,22 @@ panels/mouse/gnome-mouse-panel.desktop.in.in
 panels/network/gnome-network-properties.c
 panels/network/gnome-network-panel.desktop.in.in
 [type: gettext/glade]panels/network/gnome-network-properties.ui
+panels/sound/applet-main.c
+panels/sound/cc-sound-panel.c
+panels/sound/gvc-applet.c
+panels/sound/gvc-balance-bar.c
+panels/sound/gvc-channel-bar.c
+panels/sound/gvc-combo-box.c
+panels/sound/gvc-mixer-control.c
+panels/sound/gvc-mixer-dialog.c
+panels/sound/gvc-speaker-test.c
+panels/sound/gvc-stream-status-icon.c
+panels/sound/gvc-sound-theme-chooser.c
+panels/sound/gvc-sound-theme-editor.c
+panels/sound/sound-theme-file-utils.c
+panels/sound/data/gnome-sound-applet.desktop.in
+panels/sound/data/gnome-sound-panel.desktop.in.in
+panels/sound/data/sounds/gnome-sounds-default.xml.in.in
 panels/universal-access/gnome-universal-access-panel.desktop.in.in
 [type: gettext/glade]panels/universal-access/uap.ui
 shell/control-center.c
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
index e8c5cdc..cb6a3a1 100644
--- a/po/POTFILES.skip
+++ b/po/POTFILES.skip
@@ -8,6 +8,8 @@ panels/default-applications/gnome-at-session.desktop.in
 panels/display/gnome-display-panel.desktop.in
 panels/keybindings/gnome-keybindings-panel.desktop.in
 panels/keyboard/gnome-keyboard-panel.desktop.in
+panels/sound/data/gnome-sound-panel.desktop.in
+panels/sound/data/sounds/gnome-sounds-default.xml.in
 capplets/localization/localization.desktop.in
 capplets/mouse/gnome-settings-mouse.desktop.in
 panels/network/gnome-network-panel.desktop.in



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]