I don't think we need this any longer

This commit is contained in:
fgerlits 2006-12-02 13:58:33 +00:00
parent 074b08841e
commit ab4f882b7d
1923 changed files with 0 additions and 416888 deletions

View File

@ -1,16 +0,0 @@
Version 1.1
-----------
Ferenc Gerlits
Ákos Maróy
János Csikós
Mark Kretschmann
Ian Monroe
Mugur Rus
Tomáš Hlava
Version 1.0
-----------
Ákos Maróy
Ferenc Gerlits
Sebastian Göbel
Tomáš Hlava

View File

@ -1,38 +0,0 @@
--------------------------------------------------------------------------------
Copyright (c) 2004-2006 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
--------------------------------------------------------------------------------
Installing on Ubuntu Dapper and Debian
http://code.campware.org/projects/campcaster/wiki/DevelopmentEnvironment
Installing on Other Platforms
doc/install.html
Campcaster HomePage
http://campcaster.campware.org/

View File

@ -1,44 +0,0 @@
--------------------------------------------------------------------------------
Copyright (c) 2004-2006 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
--------------------------------------------------------------------------------
Building on Ubuntu Dapper or Debian
http://code.campware.org/projects/campcaster/wiki/DevelopmentEnvironment
Installing on Other Platforms
doc/install.html
doc/gettingStarted.html
User Documentation
http://code.campware.org/manuals/campcaster/1.0/
Developer Documentation
doc/index.html
Campcaster HomePage
http://campcaster.campware.org/

View File

@ -1,485 +0,0 @@
#!/bin/bash
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author: fgerlits $
# Version : $Revision: 2292 $
# Location : $URL: svn+ssh://tomash@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/bin/postInstallStation.sh $
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script makes installation steps for the Campcaster network hub.
#
# Invoke as:
# ./bin/archiveServerSetup.sh
#
# To get usage help, try the -h option
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
srcdir=$basedir/src
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster network hub install script.";
echo "parameters";
echo "";
echo " -d, --directory The installation directory, required.";
echo " -D, --database The name of the Campcaster database.";
echo " [default: CampcasterHub]";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: www-data]";
echo " -r, --www-root The root directory for web documents served";
echo " by apache [default: /var/www]";
echo " -s, --dbserver The name of the database server host.";
echo " [default: localhost]";
echo " -u, --dbuser The name of the database user to access the"
echo " database. [default: campcaster]";
echo " -w, --dbpassword The database user password.";
echo " [default: campcaster]";
echo " -p, --postgresql-dir The postgresql data directory, containing";
echo " pg_hba.conf [default: /etc/postgresql]";
echo " -i, --postgresql-init-script The name of the postgresql init";
echo " script [default: /etc/init.d/postgresql]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:D:g:hi:p:r:s:u:w: -l apache-group:,database:,dbserver:,dbuser:,dbpassword:,directory:,help,postgresql-dir:,postgresql-init-script:,www-root: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
installdir=$2;
shift; shift;;
-D|--database)
database=$2;
shift; shift;;
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-i|--postgresql-init-script)
postgresql_init_script=$2;
shift; shift;;
-p|--postgresql-dir)
postgresql_dir=$2;
shift; shift;;
-r|--www-root)
www_root=$2;
shift; shift;;
-s|--dbserver)
dbserver=$2;
shift; shift;;
-u|--dbuser)
dbuser=$2;
shift; shift;;
-w|--dbpassword)
dbpassword=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$installdir" == "x" ]; then
echo "Required parameter install directory not specified.";
printUsage;
exit 1;
fi
if [ "x$dbserver" == "x" ]; then
dbserver=localhost;
fi
if [ "x$database" == "x" ]; then
database=CampcasterHub;
fi
if [ "x$dbuser" == "x" ]; then
dbuser=campcaster;
fi
if [ "x$dbpassword" == "x" ]; then
dbpassword=campcaster;
fi
if [ "x$apache_group" == "x" ]; then
apache_group=www-data;
fi
if [ "x$postgresql_dir" == "x" ]; then
postgresql_dir=/etc/postgresql;
fi
if [ "x$postgresql_init_script" == "x" ]; then
postgresql_init_script=/etc/init.d/postgresql;
fi
if [ "x$www_root" == "x" ]; then
www_root=/var/www;
fi
hostname=`hostname -f`
www_port=80
echo "Installing Campcaster network hub (archiveServer).";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " installation directory: $installdir";
echo " database server: $dbserver";
echo " database: $database";
echo " database user: $dbuser";
echo " database user password: $dbpassword";
echo " apache daemon group: $apache_group";
echo " apache document root: $www_root";
echo " postgresql data directory: $postgresql_dir";
echo " postgresql init script: $postgresql_init_script";
echo " hostname: $hostname";
echo " www port: $www_port";
echo ""
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
ls_dbserver=$dbserver
ls_dbuser=$dbuser
ls_dbpassword=$dbpassword
ls_database=$database
postgres_user=postgres
install_bin=$installdir/bin
install_etc=$installdir/etc
install_lib=$installdir/lib
install_usr=$installdir/usr
install_var_ls=$installdir/var/Campcaster
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check to see if this script is being run as root
#-------------------------------------------------------------------------------
if [ `whoami` != "root" ]; then
echo "Please run this script as root.";
exit ;
fi
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "sed" || exit 1;
check_exe "psql" || exit 1;
check_exe "php" || exit 1;
check_exe "pear" || exit 1;
#-------------------------------------------------------------------------------
# Check for the apache group to be a real group
#-------------------------------------------------------------------------------
group_tmp_file=/tmp/ls_group_check.$$
touch $group_tmp_file
test_result=`chgrp $apache_group $group_tmp_file 2> /dev/null`
if [ $? != 0 ]; then
rm -f $group_tmp_file;
echo "Unable to use apache deamon group $apache_group.";
echo "Please check if $apache_group is a correct user group.";
exit 1;
fi
rm -f $group_tmp_file;
#-------------------------------------------------------------------------------
# Install the new pg_hba.conf file
#-------------------------------------------------------------------------------
echo "Modifying postgresql access permissions...";
pg_config_dir=$postgresql_dir
pg_config_file=pg_hba.conf
pg_config_file_saved=pg_hba.conf.before-campcaster
if [ -f $pg_config_dir/$pg_config_file ] ; then
mv -vf $pg_config_dir/$pg_config_file $pg_config_dir/$pg_config_file_saved ;
fi
cp -v $etcdir/$pg_config_file $pg_config_dir/$pg_config_file
chown root:$postgres_user $pg_config_dir/$pg_config_file
# don't use restart for the init script, as it might return prematurely
# and in the later call to psql we wouldn't be able to connect
${postgresql_init_script} stop
${postgresql_init_script} start
#-------------------------------------------------------------------------------
# Configuring Apache
#-------------------------------------------------------------------------------
echo "Configuring apache ..."
CONFFILE=90_php_campcaster.conf
AP_DDIR_FOUND=no
for APACHE_DDIR in \
/etc/apache/conf.d /etc/apache2/conf.d /etc/apache2/conf/modules.d \
/etc/httpd/conf.d /etc/apache2/modules.d
do
echo -n "$APACHE_DDIR "
if [ -d $APACHE_DDIR ]; then
echo "Y"
AP_DDIR_FOUND=yes
cp -v $basedir/etc/apache/$CONFFILE $APACHE_DDIR
break
else
echo "N"
fi
done
if [ "$AP_DDIR_FOUND" != "yes" ]; then
echo "###############################"
echo " Could not configure Apache"
echo " include following file into apache config manually:"
echo " $basedir/etc/apache/$CONFFILE"
echo "###############################"
else
echo "done"
echo "Restarting apache...";
AP_SCR_FOUND=no
for APACHE_SCRIPT in apache apache2 httpd ; do
echo -n "$APACHE_SCRIPT "
if [ -x /etc/init.d/$APACHE_SCRIPT ]; then
echo "Y"
AP_SCR_FOUND=yes
/etc/init.d/$APACHE_SCRIPT restart
else
echo "N"
fi
done
if [ "$AP_SCR_FOUND" != "yes" ]; then
echo "###############################"
echo " Could not reload Apache"
echo " please reload apache manually"
echo "###############################"
fi
echo "done"
fi
#-------------------------------------------------------------------------------
# Create the necessary database user and database itself
#-------------------------------------------------------------------------------
echo "Creating database user '$ls_dbuser' and database '$ls_database' ...";
# FIXME: the below might not work for remote databases
if [ "x$ls_dbserver" == "xlocalhost" ]; then
su - $postgres_user -c "echo \"CREATE USER $ls_dbuser \
ENCRYPTED PASSWORD '$ls_dbpassword' \
CREATEDB NOCREATEUSER;\" \
| psql template1" \
|| echo "Couldn't create database user $ls_dbuser.";
su - $postgres_user -c "echo \"CREATE DATABASE \\\"$ls_database\\\" \
OWNER $ls_dbuser ENCODING 'utf-8';\" \
| psql template1" \
|| echo "Couldn't create database $ls_database.";
else
echo "Unable to automatically create database user and table for";
echo "remote database $ls_dbserver.";
echo "Make sure to create database user $ls_dbuser with password";
echo "$ls_dbpassword on database server at $ls_dbserver.";
echo "Also create a database called $ls_database, owned by this user.";
echo "";
echo "The easiest way to achieve this is by issuing the following SQL";
echo "commands to PostgreSQL:";
echo "CREATE USER $ls_dbuser";
echo " ENCRYPTED PASSWORD '$ls_dbpassword'";
echo " CREATEDB NOCREATEUSER;";
echo "CREATE DATABASE \"$ls_database\"";
echo " OWNER $ls_dbuser ENCODING 'utf-8';";
fi
# TODO: check for the success of these operations somehow
#-------------------------------------------------------------------------------
# Configuring modules
#-------------------------------------------------------------------------------
echo "Configuring modules ...";
cd $modules_dir/alib && ./configure --prefix=$installdir
cd $modules_dir/archiveServer && \
./configure --prefix=$installdir \
--with-hostname=$hostname \
--with-www-port=$www_port \
--with-database-server=$dbserver \
--with-database=$database \
--with-database-user=$dbuser \
--with-database-password=$dbpassword
cd $modules_dir/getid3 && ./configure --prefix=$installdir
#cd $modules_dir/htmlUI && ./configure --prefix=$installdir \
# --with-apache-group=$apache_group \
# --with-www-docroot=$www_root \
# --with-storage-server=$installdir/var/Campcaster/storageServer
cd $modules_dir/storageAdmin && ./configure --prefix=$installdir \
--with-storage-server=$installdir/var/Campcaster/storageServer \
--with-phppart-dir=$installdir/var/Campcaster/storageAdmin
cd $modules_dir/storageServer && \
./configure --prefix=$installdir \
--with-apache-group=$apache_group \
--with-hostname=$hostname \
--with-www-docroot=$www_root \
--with-www-port=$www_port \
--with-database-server=$dbserver \
--with-database=$database \
--with-database-user=$dbuser \
--with-database-password=$dbpassword \
--with-init-database=no
#-------------------------------------------------------------------------------
# Install
#-------------------------------------------------------------------------------
echo "Installing modules ...";
make -C $modules_dir/alib install
make -C $modules_dir/getid3 install
make -C $modules_dir/storageServer install
make -C $modules_dir/storageAdmin install
make -C $modules_dir/archiveServer install
mkdir -p $install_var_ls/storageServer/var/tests
for it in ex1.mp3 ex2.wav; do
cp $modules_dir/storageServer/var/tests/$it \
$install_var_ls/storageServer/var/tests
done
#-------------------------------------------------------------------------------
# Create symlinks
#-------------------------------------------------------------------------------
echo "Creating symlinks...";
# create symlink for the PHP pages in apache's document root
rm -f $www_root/campcaster
ln -vs $install_var_ls $www_root/campcaster
#-------------------------------------------------------------------------------
# Install PEAR packages (locally in the Campcaster)
# only if necessary
#-------------------------------------------------------------------------------
if [ -f $toolsdir/pear/bin/install.sh ]; then
$toolsdir/pear/bin/install.sh -d $installdir || exit 1;
fi
#-------------------------------------------------------------------------------
# Setup directory permissions
#-------------------------------------------------------------------------------
echo "Setting up directory permissions..."
chgrp $apache_group $install_var_ls/archiveServer/var/stor
chgrp $apache_group $install_var_ls/archiveServer/var/access
chgrp $apache_group $install_var_ls/archiveServer/var/trans
chgrp $apache_group $install_var_ls/archiveServer/var/stor/buffer
chmod g+sw $install_var_ls/archiveServer/var/stor
chmod g+sw $install_var_ls/archiveServer/var/access
chmod g+sw $install_var_ls/archiveServer/var/trans
chmod g+sw $install_var_ls/archiveServer/var/stor/buffer
#chgrp $apache_group $install_var_ls/storageServer/var/stor
#chgrp $apache_group $install_var_ls/storageServer/var/access
#chgrp $apache_group $install_var_ls/storageServer/var/trans
#chgrp $apache_group $install_var_ls/storageServer/var/stor/buffer
#chmod g+sw $install_var_ls/storageServer/var/stor
#chmod g+sw $install_var_ls/storageServer/var/access
#chmod g+sw $install_var_ls/storageServer/var/trans
#chmod g+sw $install_var_ls/storageServer/var/stor/buffer
#chgrp $apache_group $install_var_ls/htmlUI/var/templates_c
#chgrp $apache_group $install_var_ls/htmlUI/var/html/img
#chmod g+sw $install_var_ls/htmlUI/var/templates_c
#chmod g+sw $install_var_ls/htmlUI/var/html/img
#-------------------------------------------------------------------------------
# Initialize the database
#-------------------------------------------------------------------------------
echo "Initializing database...";
# create PHP-related database tables
cd $install_var_ls/archiveServer/var/install
php -q install.php || exit 1;
cd -
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."
exit

View File

@ -1,95 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Run this to set up the build system: configure, makefiles, etc.
# (based on the version in enlightenment's cvs)
#-------------------------------------------------------------------------------
package="Campcaster"
# assume we're in $basedir/bin
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
test -z "$basedir" && basedir=.
bindir=$basedir/bin
etcdir=$basedir/etc
tmpdir=$basedir/tmp
cd "$tmpdir"
DIE=0
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile $package."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
(automake --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have automake installed to compile $package."
echo "Download the appropriate package for your distribution,"
echo "or get the source tarball at ftp://ftp.gnu.org/pub/gnu/"
DIE=1
}
if test "$DIE" -eq 1; then
exit 1
fi
if test -z "$*"; then
echo "I am going to run ./configure with no arguments - if you wish "
echo "to pass any to it, please specify them on the $0 command line."
fi
echo "Generating configuration files for $package, please wait...."
configure_ac=${etcdir}/configure.ac
configure=${tmpdir}/configure
aclocal_m4=${tmpdir}/aclocal.m4
# copy over install-sh, as it's going to be missed by autoconf
cp -f ${bindir}/install-sh ${tmpdir}
# copy over configure.ac and acinlclude.m4 from etc to tmp,
# as aclocal >= 1.8 is sooo unbelivably stupid that it will simply try to
# look for configure.ac in the current directory, and include acinclude.m4
# in aclocal.m4 it without a directory path in front
ACLOCAL_FLAGS="-I ${tmpdir} --acdir=${tmpdir} --output=${aclocal_m4}"
echo " aclocal $ACLOCAL_FLAGS"
cp -f ${configure_ac} ${tmpdir}
cp -f ${etcdir}/acinclude.m4 ${tmpdir}
aclocal $ACLOCAL_FLAGS
echo " autoconf -I ${tmpdir} -o ${configure} ${configure_ac}"
autoconf -I ${tmpdir} -o ${configure} ${configure_ac}

View File

@ -1,231 +0,0 @@
#!/bin/bash
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author: fgerlits $
# Version : $Revision: 2292 $
# Location : $URL: svn+ssh://tomash@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/bin/postInstallStation.sh $
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script creates a distribution tarball for Campcaster network hub.
# (campcaster-aserver-<version>.tar.bz2)
#
# Invoke as:
# ./bin/makeArchiveServerTar.sh -v <version.number>
#
# To get usage help, try the -h option
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
#reldir=`dirname $0`/..
reldir=`pwd`
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster network hub tar package creator.";
echo "parameters";
echo "";
echo " -d, --directory Place the tarball in the specified directory.";
echo " [default: current directory]";
echo " -v, --version The version number of the created package.";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:v:h -l lspath:,output:,version:,help -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
directory=$2;
shift; shift;;
-v|--version)
version=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$directory" == "x" ]; then
directory=`pwd`;
fi
if [ "x$version" == "x" ]; then
echo "Required parameter version not specified.";
printUsage;
exit 1;
fi
echo "Creating Campcaster network hub tar.gz package.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " LS directory: $lspath";
echo " output directory: $directory";
echo ""
#-------------------------------------------------------------------------------
# Check if there are generated files, and bail out if so
#-------------------------------------------------------------------------------
if [ -f $basedir/Makefile ]; then
echo "ERROR: make sure to run this script on a freshly checked-out copy";
echo " of Campcaster, with NO generated files!";
exit 1;
fi
#-------------------------------------------------------------------------------
# More definitions
#-------------------------------------------------------------------------------
tarball=$directory/campcaster-aserver-$version.tar.bz2
ls_tmpdir=$tmpdir/campcaster-$version
src_tmpdir=$ls_tmpdir/src
tools_tmpdir=$src_tmpdir/tools
modules_tmpdir=$src_tmpdir/modules
products_tmpdir=$src_tmpdir/products
bin_tmpdir=$ls_tmpdir/bin
doc_tmpdir=$ls_tmpdir/doc
etc_tmpdir=$ls_tmpdir/etc
tmp_tmpdir=$ls_tmpdir/tmp
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
#echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
COMMENT='
#-------------------------------------------------------------------------------
# Check to see if this script is being run as root
#-------------------------------------------------------------------------------
if [ `whoami` != "root" ]; then
echo "Please run this script as root.";
exit ;
fi
'
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "tar" || exit 1;
check_exe "bzip2" || exit 1;
#-------------------------------------------------------------------------------
# Create the directories again
#-------------------------------------------------------------------------------
echo "Creating tmp directories and copying files ..."
mkdir -p $ls_tmpdir
mkdir -p $src_tmpdir
mkdir -p $modules_tmpdir
mkdir -p $tools_tmpdir
mkdir -p $bin_tmpdir
mkdir -p $etc_tmpdir/apache
#-------------------------------------------------------------------------------
# Copy the modules and tools
#-------------------------------------------------------------------------------
#cp -pPR $modules_dir/* $modules_tmpdir
for it in alib getid3 storageServer storageAdmin archiveServer; do
cp -pPR $modules_dir/$it $modules_tmpdir
done
for it in pear; do
cp -pPR $toolsdir/$it $tools_tmpdir
done
for it in preInstall.sh archiveServerSetup.sh; do
cp -pPR $bindir/$it $bin_tmpdir
done
cp -pPR $etcdir/apache/* $etc_tmpdir/apache
for it in pg_hba.conf; do
cp -pPR $etcdir/$it $etc_tmpdir
done
#-------------------------------------------------------------------------------
# Copy additional files
#-------------------------------------------------------------------------------
#cp -pPR $bindir $ls_tmpdir
#cp -pPR $etcdir $ls_tmpdir
cp -pPR README INSTALL configure $ls_tmpdir
#-------------------------------------------------------------------------------
# Get rid of the remnants of the subversion system
#-------------------------------------------------------------------------------
# Paul Baranowski: you dont need to do this when you export from SVN.
#rm -rf `find $ls_tmpdir -name .svn -type d`
#-------------------------------------------------------------------------------
# Create the tarball
#-------------------------------------------------------------------------------
echo "Creating $tarball ...";
cd $tmpdir
tar cjf $tarball campcaster-$version
cd $basedir
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,258 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script creates Debian packages from Campcaster tarballs.
# To create the tarballs first, see the dist.sh script.
#
# Invoke as:
# ./bin/createDebianPackages.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
tmpdir=$basedir/tmp
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster debian source package creation script";
echo "parameters";
echo "";
echo " -d, --directory Place to look for the campcaster source";
echo " tarballs [default: current directory]";
echo " -m, --maintainer The name and e-mail address of the package";
echo " maintainer.";
echo " -o, --output-directory the output directory for the files";
echo " [default: current directory]";
echo " -v, --version The version number of the created packages.";
echo " From package_x.y-z_i386.deb, this is x.y";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:hm:o:v: -l directory:,help,maintainer:,output-directory,version: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
directory=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-m|--maintainer)
maintainer=$2;
shift; shift;;
-o|--output-directory)
outdir=$2;
shift; shift;;
-v|--version)
version=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$maintainer" == "x" ]; then
echo "Required parameter maintainer not specified.";
printUsage;
exit 1;
fi
if [ "x$version" == "x" ]; then
echo "Required parameter version not specified.";
printUsage;
exit 1;
fi
if [ "x$directory" == "x" ]; then
directory=`pwd`;
else
directory=`cd $directory; pwd;`
fi
if [ "x$outdir" == "x" ]; then
outdir=`pwd`;
else
outdir=`cd $outdir; pwd;`
fi
echo "Creating Debian source packages for Campcaster.";
echo "";
echo "Using the following parameters:";
echo "";
echo " tarball directory: $directory";
echo " maintainer: $maintainer";
echo " package version: $version";
echo " output directory: $outdir";
echo ""
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check for executables needed by this script
#-------------------------------------------------------------------------------
echo "Checking for tools used by this script...";
check_exe "tar" || exit 1;
check_exe "dpkg-source" || exit 1;
check_exe "sed" || exit 1;
#-------------------------------------------------------------------------------
# More definitions
#-------------------------------------------------------------------------------
tarball=$directory/campcaster-$version.tar.bz2
tarball_libs=$directory/campcaster-libraries-$version.tar.bz2
if [ ! -f $tarball ]; then
echo "source tarball $tarball not found in directory $directory";
exit 1;
fi
if [ ! -f $tarball_libs ]; then
echo "source tarball $tarball_libs not found in directory $directory";
exit 1;
fi
packageName=campcaster-$version
packageNameOrig=$packageName.orig
workdir=$tmpdir/debianize
replace_sed_string="s/ls_maintainer/$maintainer/;"
#-------------------------------------------------------------------------------
# Create the environment
#-------------------------------------------------------------------------------
rm -rf $workdir
mkdir -p $workdir
cd $workdir
#-------------------------------------------------------------------------------
# Untar the source tarballs
#-------------------------------------------------------------------------------
echo "Extracting source tarballs...";
# untar first, and rename as campcaster-$version.orig
tar xfj $tarball
tar xfj $tarball_libs
mv $packageName $packageNameOrig
# untar again, and leave it as campcaster-$version
tar xfj $tarball
tar xfj $tarball_libs
#-------------------------------------------------------------------------------
# Debianize the campcaster-$version sources
#-------------------------------------------------------------------------------
echo "Debianizing sources...";
cp -pPR $etcdir/debian $packageName
# customize the control file, with the maintainer name
cat $etcdir/debian/control | sed -e "$replace_sed_string" \
> $packageName/debian/control
# get rid of the remnants of the CVS system
rm -rf `find $packageName -name CVS -type d`
#-------------------------------------------------------------------------------
# Create a debianized source package.
#-------------------------------------------------------------------------------
echo "Creating debian source package...";
dpkg-source -b $packageName $packageNameOrig
#-------------------------------------------------------------------------------
# Copy the resulting files to the target directory
#-------------------------------------------------------------------------------
echo "Moving debian source package files to target directory...";
mv -f campcaster_$version* $outdir
#-------------------------------------------------------------------------------
# Clean up
#-------------------------------------------------------------------------------
echo "Cleaning up...";
cd $basedir
rm -rf $workdir
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,339 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script creates a distribution tarball for Campcaster.
# Creates two tarballs:
# campcaster-<version>.tar.bz2 - the Campcaster source files
# campcaster-libraries-<version>.tar.bz2 - dependent libraries
#
# Invoke as:
# ./bin/dist.sh -v <version.number>
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster install script.";
echo "parameters";
echo "";
echo " -d, --directory Place the tarballs in the specified directory.";
echo " [default: current directory]";
echo " -h, --help Print this message and exit.";
echo " -v, --version The version number of the created packages.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:hv: -l directory:,help,version: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
directory=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-v|--version)
version=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$version" == "x" ]; then
echo "Required parameter version not specified.";
printUsage;
exit 1;
fi
if [ "x$directory" == "x" ]; then
directory=`pwd`;
fi
d=`cd $directory; pwd`
directory=$d
echo "Creating tarballs for Campcaster.";
echo "";
echo "Using the following parameters:";
echo "";
echo " output directory: $directory";
echo " package version number: $version";
echo ""
#-------------------------------------------------------------------------------
# Check if there are generated files, and bail out if so
#-------------------------------------------------------------------------------
if [ -f $basedir/Makefile ]; then
echo "ERROR: make sure to run this script on a freshly checked-out copy";
echo " of Campcaster, with NO generated files!";
exit 1;
fi
#-------------------------------------------------------------------------------
# More definitions
#-------------------------------------------------------------------------------
tarball=$directory/campcaster-$version.tar.bz2
tarball_libs=$directory/campcaster-libraries-$version.tar.bz2
ls_tmpdir=$tmpdir/campcaster-$version
src_tmpdir=$ls_tmpdir/src
tools_tmpdir=$src_tmpdir/tools
modules_tmpdir=$src_tmpdir/modules
products_tmpdir=$src_tmpdir/products
doc_tmpdir=$ls_tmpdir/doc
etc_tmpdir=$ls_tmpdir/etc
tmp_tmpdir=$ls_tmpdir/tmp
boost_dir=$toolsdir/boost
boost_version=boost-1.33.1
boost_tmpdir=$tools_tmpdir/boost
libxmlxx_dir=$toolsdir/libxml++
libxmlxx_version=libxml++-2.8.1
libxmlxx_tmpdir=$tools_tmpdir/libxml++
cxxunit_dir=$toolsdir/cppunit
cxxunit_version=cppunit-1.10.2
cxxunit_tmpdir=$tools_tmpdir/cppunit
libodbcxx_dir=$toolsdir/libodbc++
libodbcxx_version=libodbc++-0.2.3-20050404
libodbcxx_tmpdir=$tools_tmpdir/libodbc++
xmlrpcxx_dir=$toolsdir/xmlrpc++
xmlrpcxx_version=xmlrpc++-20040713
xmlrpcxx_tmpdir=$tools_tmpdir/xmlrpc++
lcov_dir=$toolsdir/lcov
lcov_version=lcov-1.3
lcov_tmpdir=$tools_tmpdir/lcov
gtk_dir=$toolsdir/gtk+
gtk_version=gtk+-2.6.10
gtk_tmpdir=$tools_tmpdir/gtk+
gtkmm_dir=$toolsdir/gtkmm
gtkmm_version=gtkmm-2.6.5
gtkmm_tmpdir=$tools_tmpdir/gtkmm
gstreamer_dir=$toolsdir/gstreamer
gstreamer_version=gstreamer-0.8.12
gstreamer_tmpdir=$tools_tmpdir/gstreamer
icu_dir=$toolsdir/icu
icu_version=icu-3.0
icu_tmpdir=$tools_tmpdir/icu
curl_dir=$toolsdir/curl
curl_version=curl-7.12.3
curl_tmpdir=$tools_tmpdir/curl
taglib_dir=$toolsdir/taglib
taglib_version=taglib-1.4
taglib_tmpdir=$tools_tmpdir/taglib
pear_dir=$toolsdir/pear
pear_tmpdir=$tools_tmpdir/pear
#-------------------------------------------------------------------------------
# Create the sources tarball first
#-------------------------------------------------------------------------------
echo "Creating $tarball...";
#-------------------------------------------------------------------------------
# Create the directories again
#-------------------------------------------------------------------------------
mkdir -p $ls_tmpdir
mkdir -p $ls_tmpdir/usr
mkdir -p $tmp_tmpdir
mkdir -p $src_tmpdir
mkdir -p $modules_tmpdir
mkdir -p $products_tmpdir
#-------------------------------------------------------------------------------
# Copy the modules and products
#-------------------------------------------------------------------------------
cp -pPR $modules_dir/* $modules_tmpdir
cp -pPR $products_dir/* $products_tmpdir
#-------------------------------------------------------------------------------
# Copy additional files
#-------------------------------------------------------------------------------
cp -pPR $bindir $ls_tmpdir
cp -pPR $docdir $ls_tmpdir
cp -pPR $etcdir $ls_tmpdir
cp -pPR README INSTALL configure $ls_tmpdir
#-------------------------------------------------------------------------------
# Get rid of the remnants of the subversion system
#-------------------------------------------------------------------------------
rm -rf `find $ls_tmpdir -name .svn -type d`
#-------------------------------------------------------------------------------
# Create the main configure script
#-------------------------------------------------------------------------------
cd $tmpdir/campcaster-$version
./bin/autogen.sh
cd $basedir
#-------------------------------------------------------------------------------
# Create the tarball
#-------------------------------------------------------------------------------
cd $tmpdir
tar cfj $tarball campcaster-$version
cd $basedir
#-------------------------------------------------------------------------------
# Create the libraries tarball second
#-------------------------------------------------------------------------------
echo "Creating $tarball_libs...";
#-------------------------------------------------------------------------------
# Create temprorary directory structure again
#-------------------------------------------------------------------------------
rm -rf $ls_tmpdir
mkdir -p $ls_tmpdir
mkdir -p $tools_tmpdir
#-------------------------------------------------------------------------------
# Copy needed files to the temporary directory
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Copy the tools sources
#-------------------------------------------------------------------------------
mkdir -p $boost_tmpdir
cp -pPR $boost_dir/$boost_version $boost_tmpdir
mkdir -p $libxmlxx_tmpdir
cp -pPR $libxmlxx_dir/$libxmlxx_version $libxmlxx_tmpdir
mkdir -p $cxxunit_tmpdir
cp -pPR $cxxunit_dir/$cxxunit_version $cxxunit_tmpdir
mkdir -p $libodbcxx_tmpdir
cp -pPR $libodbcxx_dir/$libodbcxx_version $libodbcxx_tmpdir
mkdir -p $xmlrpcxx_tmpdir
cp -pPR $xmlrpcxx_dir/$xmlrpcxx_version $xmlrpcxx_tmpdir
mkdir -p $lcov_tmpdir
cp -pPR $lcov_dir/$lcov_version $lcov_tmpdir
mkdir -p $gtk_tmpdir
cp -pPR $gtk_dir/$gtk_version $gtk_tmpdir
mkdir -p $gtkmm_tmpdir
cp -pPR $gtkmm_dir/$gtkmm_version $gtkmm_tmpdir
mkdir -p $gstreamer_tmpdir
cp -pPR $gstreamer_dir/$gstreamer_version $gstreamer_tmpdir
mkdir -p $icu_tmpdir
cp -pPR $icu_dir/$icu_version $icu_tmpdir
mkdir -p $curl_tmpdir
cp -pPR $curl_dir/$curl_version $curl_tmpdir
mkdir -p $taglib_tmpdir
cp -pPR $taglib_dir/$taglib_version $taglib_tmpdir
mkdir -p $pear_tmpdir
cp -pPR $pear_dir/* $pear_tmpdir
#-------------------------------------------------------------------------------
# Get rid of the remnants of the subversion system
#-------------------------------------------------------------------------------
rm -rf `find $ls_tmpdir -name .svn -type d`
#-------------------------------------------------------------------------------
# Create the libraries tarball
#-------------------------------------------------------------------------------
cd $tmpdir
tar cfj $tarball_libs campcaster-$version
cd $basedir
#-------------------------------------------------------------------------------
# Clean up
#-------------------------------------------------------------------------------
rm -rf $ls_tmpdir
#-------------------------------------------------------------------------------
# We're done
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,92 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script generates code coverage data for all modules
#-------------------------------------------------------------------------------
module="Campcaster"
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
modules_dir=$srcdir/modules
products_dir=$srcdir/products
usrdir=`cd $basedir/usr; pwd;`
coverage_report_dir=$docdir/coverage
core_coverage_file=$modules_dir/core/tmp/coverage.info
authentication_coverage_file=$modules_dir/authentication/tmp/coverage.info
db_coverage_file=$modules_dir/db/tmp/coverage.info
storageClient_coverage_file=$modules_dir/storageClient/tmp/coverage.info
eventScheduler_coverage_file=$modules_dir/eventScheduler/tmp/coverage.info
schedulerClient_coverage_file=$modules_dir/schedulerClient/tmp/coverage.info
playlistExecutor_coverage_file=$modules_dir/playlistExecutor/tmp/coverage.info
scheduler_coverage_file=$products_dir/scheduler/tmp/coverage.info
coverage_file=$tmpdir/coverage.info
lcov=$usrdir/bin/lcov
genhtml=$usrdir/bin/genhtml
#-------------------------------------------------------------------------------
# Execute the coverage tests one by one
#-------------------------------------------------------------------------------
$modules_dir/core/bin/gen_coverage_data.sh
$modules_dir/authentication/bin/gen_coverage_data.sh
$modules_dir/db/bin/gen_coverage_data.sh
$modules_dir/storageClient/bin/gen_coverage_data.sh
$modules_dir/eventScheduler/bin/gen_coverage_data.sh
$modules_dir/schedulerClient/bin/gen_coverage_data.sh
$modules_dir/playlistExecutor/bin/gen_coverage_data.sh
$products_dir/scheduler/bin/gen_coverage_data.sh
#-------------------------------------------------------------------------------
# Gather all the coverage information into one file
# remove references to the tmp directories, and replace them with the module
# directories themselves. this way the source files are found easlity by lcov
#-------------------------------------------------------------------------------
echo "" > $coverage_file
cat $core_coverage_file | sed -e "s/core\/tmp\//core\//g" >> $coverage_file
cat $authentication_coverage_file | sed -e "s/authentication\/tmp\//authentication\//g" >> $coverage_file
cat $db_coverage_file | sed -e "s/db\/tmp\//db\//g" >> $coverage_file
cat $storageClient_coverage_file | sed -e "s/storageClient\/tmp\//storageClient\//g" >> $coverage_file
cat $eventScheduler_coverage_file | sed -e "s/eventScheduler\/tmp\//eventScheduler\//g" >> $coverage_file
cat $schedulerClient_coverage_file | sed -e "s/schedulerClient\/tmp\//schedulerClient\//g" >> $coverage_file
cat $playlistExecutor_coverage_file | sed -e "s/playlistExecutor\/tmp\//playlistExecutor\//g" >> $coverage_file
cat $scheduler_coverage_file | sed -e "s/scheduler\/tmp\//scheduler\//g" >> $coverage_file
rm -rf $coverage_report_dir
mkdir -p $coverage_report_dir
$genhtml -t "$module" -o $coverage_report_dir $coverage_file

View File

@ -1,323 +0,0 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2005-02-02.21
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# `make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch. It can only install one file at a time, a restriction
# shared with many OS's install programs.
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
chmodcmd="$chmodprog 0755"
chowncmd=
chgrpcmd=
stripcmd=
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=
dst=
dir_arg=
dstarg=
no_target_directory=
usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
-c (ignored)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
--help display this help and exit.
--version display version info and exit.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
"
while test -n "$1"; do
case $1 in
-c) shift
continue;;
-d) dir_arg=true
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
--help) echo "$usage"; exit $?;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-s) stripcmd=$stripprog
shift
continue;;
-t) dstarg=$2
shift
shift
continue;;
-T) no_target_directory=true
shift
continue;;
--version) echo "$0 $scriptversion"; exit $?;;
*) # When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
test -n "$dir_arg$dstarg" && break
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dstarg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dstarg"
shift # fnord
fi
shift # arg
dstarg=$arg
done
break;;
esac
done
if test -z "$1"; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call `install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
for src
do
# Protect names starting with `-'.
case $src in
-*) src=./$src ;;
esac
if test -n "$dir_arg"; then
dst=$src
src=
if test -d "$dst"; then
mkdircmd=:
chmodcmd=
else
mkdircmd=$mkdirprog
fi
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dstarg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dstarg
# Protect names starting with `-'.
case $dst in
-*) dst=./$dst ;;
esac
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dstarg: Is a directory" >&2
exit 1
fi
dst=$dst/`basename "$src"`
fi
fi
# This sed command emulates the dirname command.
dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
# Make sure that the destination directory exists.
# Skip lots of stat calls in the usual case.
if test ! -d "$dstdir"; then
defaultIFS='
'
IFS="${IFS-$defaultIFS}"
oIFS=$IFS
# Some sh's can't handle IFS=/ for some reason.
IFS='%'
set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
shift
IFS=$oIFS
pathcomp=
while test $# -ne 0 ; do
pathcomp=$pathcomp$1
shift
if test ! -d "$pathcomp"; then
$mkdirprog "$pathcomp"
# mkdir can fail with a `File exist' error in case several
# install-sh are creating the directory concurrently. This
# is OK.
test -d "$pathcomp" || exit
fi
pathcomp=$pathcomp/
done
fi
if test -n "$dir_arg"; then
$doit $mkdircmd "$dst" \
&& { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
else
dstfile=`basename "$dst"`
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
trap '(exit $?); exit' 1 2 13 15
# Copy the file name to the temp name.
$doit $cpprog "$src" "$dsttmp" &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
&& { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
&& { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
&& { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
# Now rename the file to the real destination.
{ $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
|| {
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
if test -f "$dstdir/$dstfile"; then
$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
|| $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
|| {
echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
(exit 1); exit 1
}
else
:
fi
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
}
}
fi || { (exit 1); exit 1; }
done
# The final little trick to "correctly" pass the exit status to the exit trap.
{
(exit 0); exit 0
}
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -1,57 +0,0 @@
#!/bin/sh
#
#
CAMPCASTER_DIR=/opt/campcaster
CAMPCASTER_BIN=$CAMPCASTER_DIR/bin
CAMPCASTER_ETC=$CAMPCASTER_DIR/etc
CAMPCASTER_LIB=$CAMPCASTER_DIR/lib
GSTREAMER_DIR=`find $CAMPCASTER_LIB -type d -name "gstreamer-*"`
PATH=/sbin:/bin:/usr/sbin:/usr/bin:$CAMPCASTER_BIN
LD_LIBRARY_PATH=$CAMPCASTER_LIB:$LD_LIBRARY_PATH
DAEMON=$CAMPCASTER_BIN/scheduler
NAME=campcaster-scheduler
DESC="campcaster scheduler"
test -x $DAEMON || exit 0
export PATH
export LD_LIBRARY_PATH
DAEMON_OPTS="-c $CAMPCASTER_ETC/scheduler.xml"
set -e
case "$1" in
start)
echo -n "Starting $DESC: "
$DAEMON -c $CAMPCASTER_ETC/scheduler.xml start > /dev/null
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
$DAEMON -c $CAMPCASTER_ETC/scheduler.xml stop > /dev/null
echo "$NAME."
;;
restart|force-reload)
echo -n "Restarting $DESC: "
$DAEMON -c $CAMPCASTER_ETC/scheduler.xml stop > /dev/null
sleep 1
$DAEMON -c $CAMPCASTER_ETC/scheduler.xml start > /dev/null
echo "$NAME."
;;
kill)
echo -n "Killing $DESC: "
$DAEMON -c $CAMPCASTER_ETC/scheduler.xml kill > /dev/null
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|kill}" >&2
exit 1
;;
esac
exit 0

View File

@ -1,72 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script generates the nightly builds and logs.
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=${basedir}/bin
tmpdir=${basedir}/tmp
logdir=${basedir}/tmp
cd ${basedir}
#-------------------------------------------------------------------------------
# Update the source from the repository.
#-------------------------------------------------------------------------------
mv -f ${logdir}/nightlySvnUpdate.log ${logdir}/nightlySvnUpdate.log~
svn update &> ${logdir}/nightlySvnUpdate.log
ls -l ${logdir}/nightlySvnUpdate.log >> ${logdir}/nightlySvnUpdate.log
#-------------------------------------------------------------------------------
# Recompile the code.
#-------------------------------------------------------------------------------
mv -f ${logdir}/nightlyMakeRecompile.log ${logdir}/nightlyMakeRecompile.log~
make recompile &> ${logdir}/nightlyMakeRecompile.log
ls -l ${logdir}/nightlyMakeRecompile.log >> ${logdir}/nightlyMakeRecompile.log
#-------------------------------------------------------------------------------
# Run the unit tests.
#-------------------------------------------------------------------------------
mv -f ${logdir}/nightlyMakeCheck.log ${logdir}/nightlyMakeCheck.log~
make check &> ${logdir}/nightlyMakeCheck.log
ls -l ${logdir}/nightlyMakeCheck.log >> ${logdir}/nightlyMakeCheck.log
#-------------------------------------------------------------------------------
# Generate the documentation.
#-------------------------------------------------------------------------------
mv -f ${logdir}/nightlyMakeDoc.log ${logdir}/nightlyMakeDoc.log~
make doc &> ${logdir}/nightlyMakeDoc.log
ls -l ${logdir}/nightlyMakeDoc.log >> ${logdir}/nightlyMakeDoc.log

View File

@ -1,470 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script makes post-installation steps for the Campcaster Station.
#
# Invoke as:
# ./bin/postInstallStation.sh
#
# To get usage help, try the -h option
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster Station post-install script.";
echo "parameters";
echo "";
echo " -d, --directory The installation directory, required.";
echo " -D, --database The name of the Campcaster database.";
echo " [default: Campcaster]";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: www-data]";
echo " -r, --www-root The root directory for web documents served";
echo " by apache [default: /var/www]";
echo " -s, --dbserver The name of the database server host.";
echo " [default: localhost]";
echo " -u, --dbuser The name of the database user to access the"
echo " database. [default: campcaster]";
echo " -w, --dbpassword The database user password.";
echo " [default: campcaster]";
echo " -p, --postgresql-dir The postgresql data directory, containing";
echo " pg_hba.conf [default: /etc/postgresql]";
echo " -i, --postgresql-init-script The name of the postgresql init";
echo " script [default: /etc/init.d/postgresql]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:D:g:hi:p:r:s:u:w: -l apache-group:,database:,dbserver:,dbuser:,dbpassword:,directory:,help,postgresql-dir:,postgresql-init-script:,www-root: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
installdir=$2;
shift; shift;;
-D|--database)
database=$2;
shift; shift;;
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-i|--postgresql-init-script)
postgresql_init_script=$2;
shift; shift;;
-p|--postgresql-dir)
postgresql_dir=$2;
shift; shift;;
-r|--www-root)
www_root=$2;
shift; shift;;
-s|--dbserver)
dbserver=$2;
shift; shift;;
-u|--dbuser)
dbuser=$2;
shift; shift;;
-w|--dbpassword)
dbpassword=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$installdir" == "x" ]; then
echo "Required parameter install directory not specified.";
printUsage;
exit 1;
fi
if [ "x$dbserver" == "x" ]; then
dbserver=localhost;
fi
if [ "x$database" == "x" ]; then
database=Campcaster;
fi
if [ "x$dbuser" == "x" ]; then
dbuser=campcaster;
fi
if [ "x$dbpassword" == "x" ]; then
dbpassword=campcaster;
fi
if [ "x$apache_group" == "x" ]; then
apache_group=www-data;
fi
if [ "x$postgresql_dir" == "x" ]; then
postgresql_dir=/etc/postgresql;
fi
if [ "x$postgresql_init_script" == "x" ]; then
postgresql_init_script=/etc/init.d/postgresql;
fi
if [ "x$www_root" == "x" ]; then
www_root=/var/www;
fi
echo "Making post-install steps for Campcaster Station.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " installation directory: $installdir";
echo " database server: $dbserver";
echo " database: $database";
echo " database user: $dbuser";
echo " database user password: $dbpassword";
echo " apache daemon group: $apache_group";
echo " apache document root: $www_root";
echo " postgresql data directory: $postgresql_dir";
echo " postgresql init script: $postgresql_init_script";
echo ""
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
ls_dbserver=$dbserver
ls_dbuser=$dbuser
ls_dbpassword=$dbpassword
ls_database=$database
postgres_user=postgres
install_bin=$installdir/bin
install_etc=$installdir/etc
install_lib=$installdir/lib
install_usr=$installdir/usr
install_var_ls=$installdir/var/Campcaster
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check to see if this script is being run as root
#-------------------------------------------------------------------------------
if [ `whoami` != "root" ]; then
echo "Please run this script as root.";
exit ;
fi
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "sed" || exit 1;
check_exe "psql" || exit 1;
check_exe "php" || exit 1;
check_exe "pear" || exit 1;
check_exe "odbcinst" || exit 1;
#-------------------------------------------------------------------------------
# Check for the apache group to be a real group
#-------------------------------------------------------------------------------
group_tmp_file=/tmp/ls_group_check.$$
touch $group_tmp_file
test_result=`chgrp $apache_group $group_tmp_file 2> /dev/null`
if [ $? != 0 ]; then
rm -f $group_tmp_file;
echo "Unable to use apache deamon group $apache_group.";
echo "Please check if $apache_group is a correct user group.";
exit 1;
fi
rm -f $group_tmp_file;
#-------------------------------------------------------------------------------
# Install the new pg_hba.conf file
#-------------------------------------------------------------------------------
echo "Modifying postgresql access permissions...";
pg_config_dir=$postgresql_dir
pg_config_file=pg_hba.conf
pg_config_file_saved=pg_hba.conf.before-campcaster
if [ -f $pg_config_dir/$pg_config_file ] ; then
mv -f $pg_config_dir/$pg_config_file $pg_config_dir/$pg_config_file_saved ;
fi
cp $install_etc/$pg_config_file $pg_config_dir/$pg_config_file
chown root:$postgres_user $pg_config_dir/$pg_config_file
# don't use restart for the init script, as it might return prematurely
# and in the later call to psql we wouldn't be able to connect
${postgresql_init_script} stop
${postgresql_init_script} start
#-------------------------------------------------------------------------------
# Create the necessary database user and database itself
#-------------------------------------------------------------------------------
echo "Creating database and database user...";
# FIXME: the below might not work for remote databases
if [ "x$ls_dbserver" == "xlocalhost" ]; then
su - $postgres_user -c "echo \"CREATE USER $ls_dbuser \
ENCRYPTED PASSWORD '$ls_dbpassword' \
CREATEDB NOCREATEUSER;\" \
| psql template1" \
|| echo "Couldn't create database user $ls_dbuser.";
su - $postgres_user -c "echo \"CREATE DATABASE \\\"$ls_database\\\" \
OWNER $ls_dbuser ENCODING 'utf-8';\" \
| psql template1" \
|| echo "Couldn't create database $ls_database.";
else
echo "Unable to automatically create database user and table for";
echo "remote database $ls_dbserver.";
echo "Make sure to create database user $ls_dbuser with password";
echo "$ls_dbpassword on database server at $ls_dbserver.";
echo "Also create a database called $ls_database, owned by this user.";
echo "";
echo "The easiest way to achieve this is by issuing the following SQL";
echo "commands to PostgreSQL:";
echo "CREATE USER $ls_dbuser";
echo " ENCRYPTED PASSWORD '$ls_dbpassword'";
echo " CREATEDB NOCREATEUSER;";
echo "CREATE DATABASE \"$ls_database\"";
echo " OWNER $ls_dbuser ENCODING 'utf-8';";
fi
# TODO: check for the success of these operations somehow
#-------------------------------------------------------------------------------
# Create the ODBC data source and driver
#-------------------------------------------------------------------------------
echo "Creating ODBC data source and driver...";
if [ -f /usr/lib/libodbcpsql.so ]; then
odbcinst_template=$install_etc/odbcinst_template
elif [ -f /usr/lib/odbc/psqlodbc.so ]; then
odbcinst_template=$install_etc/odbcinst_old_debian_template
elif [ -f /usr/lib/odbc/psqlodbcw.so ]; then
odbcinst_template=$install_etc/odbcinst_new_debian_template
else
echo "###############################"
echo "Postgresql driver for unixODBC not found;"
echo "please register the PostgreSQL ODBC driver manually."
echo "###############################"
fi
odbc_template=$install_etc/odbc_template
odbc_template_tmp=/tmp/odbc_template.$$
# check for an existing PostgreSQL ODBC driver, and only install if necessary
odbcinst_res=`odbcinst -q -d | grep "\[PostgreSQL\]"`
if [ "x$odbcinst_template" != "x" ] && [ "x$odbcinst_res" == "x" ]; then
echo "Registering ODBC PostgreSQL driver...";
odbcinst -i -d -v -f $odbcinst_template || exit 1;
fi
echo "Registering Campcaster ODBC data source...";
odbcinst -i -s -l -f $odbc_template || exit 1;
#-------------------------------------------------------------------------------
# Install PEAR packages (locally in the Campcaster)
# only if necessary
#-------------------------------------------------------------------------------
if [ -f $install_usr/lib/pear/bin/install.sh ]; then
$install_usr/lib/pear/bin/install.sh -d $installdir || exit 1;
fi
#-------------------------------------------------------------------------------
# Setup directory permissions
#-------------------------------------------------------------------------------
echo "Setting up directory permissions..."
chgrp $apache_group $install_var_ls/archiveServer/var/stor
chgrp $apache_group $install_var_ls/archiveServer/var/access
chgrp $apache_group $install_var_ls/archiveServer/var/trans
chgrp $apache_group $install_var_ls/archiveServer/var/stor/buffer
chmod g+sw $install_var_ls/archiveServer/var/stor
chmod g+sw $install_var_ls/archiveServer/var/access
chmod g+sw $install_var_ls/archiveServer/var/trans
chmod g+sw $install_var_ls/archiveServer/var/stor/buffer
chgrp $apache_group $install_var_ls/storageServer/var/stor
chgrp $apache_group $install_var_ls/storageServer/var/access
chgrp $apache_group $install_var_ls/storageServer/var/trans
chgrp $apache_group $install_var_ls/storageServer/var/stor/buffer
chmod g+sw $install_var_ls/storageServer/var/stor
chmod g+sw $install_var_ls/storageServer/var/access
chmod g+sw $install_var_ls/storageServer/var/trans
chmod g+sw $install_var_ls/storageServer/var/stor/buffer
chgrp $apache_group $install_var_ls/htmlUI/var/templates_c
chgrp $apache_group $install_var_ls/htmlUI/var/html/img
chmod g+sw $install_var_ls/htmlUI/var/templates_c
chmod g+sw $install_var_ls/htmlUI/var/html/img
#-------------------------------------------------------------------------------
# Configuring Apache
#-------------------------------------------------------------------------------
echo "Configuring apache ..."
CONFFILE=90_php_campcaster.conf
AP_DDIR_FOUND=no
for APACHE_DDIR in \
/etc/apache/conf.d /etc/apache2/conf.d /etc/apache2/conf/modules.d \
/etc/httpd/conf.d
do
echo -n "$APACHE_DDIR "
if [ -d $APACHE_DDIR ]; then
echo "Y"
AP_DDIR_FOUND=yes
cp $basedir/etc/apache/$CONFFILE $APACHE_DDIR
break
else
echo "N"
fi
done
if [ "$AP_DDIR_FOUND" != "yes" ]; then
echo "###############################"
echo " Could not configure Apache"
echo " include following file into apache config manually:"
echo " $basedir/etc/apache/$CONFFILE"
echo "###############################"
fi
echo "done"
echo "Restarting apache...";
AP_SCR_FOUND=no
for APACHE_SCRIPT in apache apache2 httpd ; do
echo -n "$APACHE_SCRIPT "
if [ -x /etc/init.d/$APACHE_SCRIPT ]; then
echo "Y"
AP_SCR_FOUND=yes
/etc/init.d/$APACHE_SCRIPT restart
else
echo "N"
fi
done
if [ "$AP_SCR_FOUND" != "yes" ]; then
echo "###############################"
echo " Could not reload Apache"
echo " please reload apache manually"
echo "###############################"
fi
echo "done"
#-------------------------------------------------------------------------------
# Create symlinks
#-------------------------------------------------------------------------------
echo "Creating symlinks...";
# create symlink for the PHP pages in apache's document root
rm -f $www_root/campcaster
ln -s $install_var_ls $www_root/campcaster
#-------------------------------------------------------------------------------
# Initialize the database
#-------------------------------------------------------------------------------
echo "Initializing database...";
# create PHP-related database tables
cd $install_var_ls/storageServer/var/install
php -q install.php || exit 1;
cd -
# create scheduler-related database tables
cd $installdir
./bin/scheduler.sh install || exit 1;
cd -
#-------------------------------------------------------------------------------
# Create the gstreamer registry
#-------------------------------------------------------------------------------
echo "Creating gstreamer registry...";
gstreamer_dir=`find $install_lib -type d -name "gstreamer-*"`
export LD_LIBRARY_PATH=$install_lib
export GST_REGISTRY=$install_etc/gst-registry.xml
export GST_PLUGIN_PATH=$gstreamer_dir
$install_bin/gst-register > /dev/null 2>&1
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,264 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script makes post-uninstallation steps for Campcaster.
#
# Invoke as:
# ./bin/postUninstall.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
tmpdir=$basedir/tmp
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster post-uninstall script.";
echo "parameters";
echo "";
echo " -d, --directory The installation directory, required.";
echo " -D, --database The name of the Campcaster database.";
echo " [default: Campcaster]";
echo " -r, --www-root The root directory for web documents served";
echo " by apache [default: /var/www]";
echo " -s, --dbserver The name of the database server host.";
echo " [default: localhost]";
echo " -u, --dbuser The name of the database user to access the"
echo " database. [default: campcaster]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:D:hr:s:u: -l database:,dbserver:,dbuser:,directory:,help,www-root: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
installdir=$2;
shift; shift;;
-D|--database)
database=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-r|--www-root)
www_root=$2;
shift; shift;;
-s|--dbserver)
dbserver=$2;
shift; shift;;
-u|--dbuser)
dbuser=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$installdir" == "x" ]; then
echo "Required parameter install directory not specified.";
printUsage;
exit 1;
fi
if [ "x$dbserver" == "x" ]; then
dbserver=localhost;
fi
if [ "x$database" == "x" ]; then
database=Campcaster;
fi
if [ "x$dbuser" == "x" ]; then
dbuser=campcaster;
fi
if [ "x$www_root" == "x" ]; then
www_root=/var/www
fi
echo "Making post-uninstall steps for Campcaster.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " installation directory: $installdir";
echo " database server: $dbserver";
echo " database: $database";
echo " database user: $dbuser";
echo " apache document root: $www_root";
echo ""
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
ls_dbserver=$dbserver
ls_dbuser=$dbuser
ls_database=$database
postgres_user=postgres
install_bin=$installdir/bin
install_etc=$installdir/etc
install_lib=$installdir/lib
install_tmp=$installdir/tmp
install_var=$installdir/var
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check to see if this script is being run as root
#-------------------------------------------------------------------------------
if [ `whoami` != "root" ]; then
echo "Please run this script as root.";
exit ;
fi
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "psql" || exit 1;
check_exe "odbcinst" || exit 1;
#-------------------------------------------------------------------------------
# Remove symlinks
#-------------------------------------------------------------------------------
echo "Removing symlinks...";
# remove symlink for the PHP pages in apache's document root
rm -f $www_root/campcaster
#-------------------------------------------------------------------------------
# Delete data files
#-------------------------------------------------------------------------------
echo "Deleting data files...";
rm -rf $installdir/var/htmlUI/var/html/img/*
rm -rf $installdir/var/htmlUI/var/templates_c/*
rm -rf $installdir/var/storageServer/var/stor/*
rm -rf $installdir/var/storageServer/var/access/*
rm -rf $installdir/var/storageServer/var/trans/*
rm -rf $installdir/var/archiveServer/var/stor/*
rm -rf $installdir/var/archiveServer/var/access/*
rm -rf $installdir/var/archiveServer/var/trans/*
#-------------------------------------------------------------------------------
# Remove the ODBC data source and driver
#-------------------------------------------------------------------------------
echo "Removing ODBC data source and driver...";
echo "Removing Campcaster ODBC data source...";
odbcinst -u -s -l -n $ls_database || exit 1;
echo "De-registering ODBC PostgreSQL driver...";
odbcinst -u -d -v -n PostgreSQL || exit 1;
#-------------------------------------------------------------------------------
# Remove the database user and the database itself
#-------------------------------------------------------------------------------
echo "Removing database and database user...";
if [ "x$ls_dbserver" == "xlocalhost" ]; then
su - $postgres_user -c "echo \"DROP DATABASE \\\"$ls_database\\\" \"\
| psql template1" \
|| echo "Couldn't drop database $ls_database.";
su - $postgres_user -c "echo \"DROP USER $ls_dbuser \"\
| psql template1" \
|| echo "Couldn't drop database user $ls_dbuser.";
else
echo "Unable to automatically drop database user and table for";
echo "remote database $ls_dbserver.";
echo "Make sure to drop database user $ls_dbuser on database server";
echo "at $ls_dbserver.";
echo "Also drop the database called $ld_database, owned by this user.";
echo "";
echo "The easiest way to achieve this is by issuing the following SQL";
echo "commands to PostgreSQL:";
echo "DROP DATABASE \"$ls_database\";";
echo "DROP USER $ls_dbuser;";
fi
# TODO: check for the success of these operations somehow
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,173 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script makes pre-install steps and checks for Campcaster.
#
# Invoke as:
# ./bin/preInstall.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster pre-install script.";
echo "parameters";
echo "";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: apache]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o g:h -l apache-group:,help -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$apache_group" == "x" ]; then
apache_group=apache;
fi
echo "Making pre-install steps for Campcaster.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " apache daemon group: $apache_group";
echo ""
#-------------------------------------------------------------------------------
# Check for the apache group to be a real group
#-------------------------------------------------------------------------------
group_tmp_file=/tmp/ls_group_check.$$
touch $group_tmp_file
test_result=`chgrp $apache_group $group_tmp_file 2> /dev/null`
if [ $? != 0 ]; then
rm -f $group_tmp_file;
echo "Unable to use apache deamon group $apache_group.";
echo "Please check if $apache_group is a correct user group.";
exit 1;
fi
rm -f $group_tmp_file;
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Function to check for a PEAR module
#
# @param $1 the name of the PEAR module
# @return 0 if the module is available, non-0 otherwise
#-------------------------------------------------------------------------------
check_pear_module() {
test_result=`pear info $1`
if [ $? = 0 ]; then
echo "PEAR module $1 found...";
return 0;
else
echo "PEAR module $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "sed" || exit 1;
check_exe "psql" || exit 1;
check_exe "php" || exit 1;
check_exe "pear" || exit 1;
check_exe "odbcinst" || exit 1;
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,126 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# A script to set up the development environment for Campcaster
#
# Invoke as:
# ./bin/setupDevelopmentEnvironment.sh
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster development environment setup script.";
echo "parameters";
echo "";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: apache]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o g:h -l apache-group:,help -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$apache_group" == "x" ]; then
apache_group=apache;
fi
#-------------------------------------------------------------------------------
# Create the configure script
#-------------------------------------------------------------------------------
rm -rf $tmpdir/configure
$bindir/autogen.sh || exit 1
$basedir/configure --prefix=$usrdir \
--with-www-docroot=$usrdir/var \
--with-apache-group=$apache_group \
--enable-debug || exit 1
#-------------------------------------------------------------------------------
# Compile everything at once, including the tools
#-------------------------------------------------------------------------------
make -C $basedir all || exit 1
#-------------------------------------------------------------------------------
# User setup
#-------------------------------------------------------------------------------
#echo "Setting up user settings..."
$bindir/user_setup.sh --apache-group=$apache_group || exit 1
#-------------------------------------------------------------------------------
# We're done
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,222 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# A script to set up the development environment for Campcaster
#
# Invoke as:
# ./bin/setupDevelopmentEnvironmentAndLog.sh
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
tmpdir=$basedir/tmp
logdir=$basedir/tmp
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster development environment setup script.";
echo "parameters";
echo "";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: apache]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o g:h -l apache-group:,help -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$apache_group" = "x" ]; then
apache_group=apache;
fi
#------------------------------------------------------------------------------
# All steps are being logged
#------------------------------------------------------------------------------
echo "";
echo "The compile process will be started. All steps are being logged in";
echo "$logdir ";
echo "";
#------------------------------------------------------------------------------
# Cleaning the setup
#------------------------------------------------------------------------------
mv -f $logdir/make_modprod_distclean_setup.log \
$logdir/make_modprod_distclean_setup.log~
make -C $basedir modprod_distclean \
> $logdir/make_modprod_distclean_setup.log 2>&1
ls -l $logdir/make_modprod_distclean_setup.log \
>> $logdir/make_modprod_distclean_setup.log
#-------------------------------------------------------------------------------
# Create the configure script, using setup parameters
#-------------------------------------------------------------------------------
# --prefix=$usrdir --with-www-docroot=$usrdir/var =/var/www
# --with-hostname=localhost --with-apache-group=$apache_group
# --enable-debug --with-configure-apache=no =yes
#
# --with-check-boost=no =yes --with-check-gtk=yes =no
# --with-check-gtkmm=yes =no --with-check-icu=yes =no
# --with-check-libxmlpp=yes =no
#
# --with-create-database=no =yes --with-create-odbc-data-source=no =yes
# --with-init-database=no =yes
#
# --with-database=Campcaster =Campcaster-test
# --with-database-user=campcaster =test
# --with-database-password=campcaster =test
#
# --with-station-audio-out=default
# --with-studio-audio-out=default
# --with-studio-audio-cue=default
rm -rf $tmpdir/configure
echo "Now Configure ... ";
mv -f $logdir/configure_development_environment_autogen.log \
$logdir/configure_development_environment_autogen.log~
mv -f $logdir/configure_development_environment.log \
$logdir/configure_development_environment.log~
$bindir/autogen.sh \
> $logdir/configure_development_environment_autogen.log 2>&1
$basedir/configure --with-hostname=localhost --with-www-docroot=$usrdir/var \
--prefix=$usrdir --with-apache-group=$apache_group \
--with-check-boost=yes --with-check-gtk=yes \
--with-check-gtkmm=yes --with-check-icu=yes \
--with-check-libxmlpp=yes --enable-debug \
> $logdir/configure_development_environment.log 2>&1
echo "";
echo "Configure is done, configure_development_environment.log is created";
echo "";
#-------------------------------------------------------------------------------
# Compile step by step, including the tools
#-------------------------------------------------------------------------------
echo "Now Compiling ... Tools";
mv -f $logdir/make_install_tools_setup.log \
$logdir/make_install_tools_setup.log~
make -C $basedir tools_setup \
> $logdir/make_install_tools_setup.log 2>&1
ls -l $logdir/make_install_tools_setup.log \
>> $logdir/make_install_tools_setup.log
echo "Done Tools Setup, make_install_tools_setup.log is created";
echo "";
echo "Now Compiling ... Doxytag";
mv -f $logdir/make_doxytag_setup.log \
$logdir/make_doxytag_setup.log~
make -C $basedir doxytag_setup \
> $logdir/make_doxytag_setup.log 2>&1
ls -l $logdir/make_doxytag_setup.log \
>> $logdir/make_doxytag_setup.log
echo "Done Doxytag Setup, make_doxytag_setup.log is created";
echo "";
echo "Now Configure ... Modules ... Products";
mv -f $logdir/make_configure_modules_setup.log \
$logdir/make_configure_modules_setup.log~
make -C $basedir modules_setup \
> $logdir/make_configure_modules_setup.log 2>&1
ls -l $logdir/make_configure_modules_setup.log \
>> $logdir/make_configure_modules_setup.log
echo "Configure the Modules is done, make_configure_modules_setup.log is created";
mv -f $logdir/make_configure_products_setup.log \
$logdir/make_configure_products_setup.log~
make -C $basedir products_setup \
> $logdir/make_configure_products_setup.log 2>&1
ls -l $logdir/make_configure_products_setup.log \
>> $logdir/make_configure_products_setup.log
echo "Configure the Products is done, make_configure_products_setup.log is created";
echo "";
echo "Now Compiling ...";
mv -f $logdir/make_compile_setup.log \
$logdir/make_compile_setup.log~
make -C $basedir compile \
> $logdir/make_compile_setup.log 2>&1
ls -l $logdir/make_compile_setup.log \
>> $logdir/make_compile_setup.log
echo "Compiling is done, make_compile_setup.log is created";
echo "";
#-------------------------------------------------------------------------------
# Checking what we have done
#-------------------------------------------------------------------------------
echo "Now Checking ...";
mv -f $logdir/make_check_setup.log \
$logdir/make_check_setup.log~
make -C $basedir check \
> $logdir/make_check_setup.log 2>&1
ls -l $logdir/make_check_setup.log \
>> $logdir/make_check_setup.log
echo "Checking is be done, make_check_setup.log is created";
echo "";
#-------------------------------------------------------------------------------
# User setup
#-------------------------------------------------------------------------------
echo "Setting up user settings ...";
$bindir/user_setup.sh --apache-group=$apache_group || exit 1
#-------------------------------------------------------------------------------
# We're done
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,49 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script runs cvs to update the Campcaster source code.
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
tmpdir=$basedir/tmp
logdir=$basedir/tmp
echo "";
echo "The Campcaster source code will be updated now ... and logged in";
echo "$logdir";
echo "";
cd $bindir/..
svn update >& $logdir/svn_update.log
ls -l $logdir/svn_update.log >> $logdir/svn_update.log
cat $logdir/svn_update.log
echo "";
echo "The svn update is done, svn_update.log is created";

View File

@ -1,83 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script sets up the test database for Campcaster
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
scheduler_dir=${products_dir}/scheduler
scheduler_bindir=${scheduler_dir}/bin
usrdir=`cd $basedir/usr; pwd;`
installlog=/tmp/campcaster_install.log
#-------------------------------------------------------------------------------
# The details of the setup
#-------------------------------------------------------------------------------
ls_database=Campcaster-test
ls_dbuser=test
ls_dbpassword=test
ls_dbserver=localhost
#-------------------------------------------------------------------------------
# Create the necessary database user and database itself
#-------------------------------------------------------------------------------
${scheduler_bindir}/createDatabase.sh --database=${ls_database} \
--dbuser=${ls_dbuser} \
--dbpassword=${ls_dbpassword} \
--dbserver=${ls_dbserver}
#-------------------------------------------------------------------------------
# Create the ODBC data source and driver
#-------------------------------------------------------------------------------
${scheduler_bindir}/createOdbcDataSource.sh --database=${ls_database} \
--dbserver=${ls_dbserver}
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,241 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script updates the configuration file of Campcaster Studio.
#
# Invoke as:
# ./bin/updateStudioConfig.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
tmpdir=$basedir/tmp
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster Studio post-install script.";
echo "parameters";
echo "";
echo " -d, --directory The installation directory, required.";
echo " -H, --host The fully qualified host name of the system";
echo " [default: guess].";
echo " -p, --port The port of the apache web server [default: 80]"
echo " -P, --scheduler-port The port of the scheduler daemon to install"
echo " [default: 3344]";
echo " -o, --output-device The audio device of live-mode broadcast";
echo " [default: default]";
echo " -c, --cue-device The audio device of preview listening";
echo " [default: default]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o d:H:hp:P:c:o: -l directory:,host:,help,port:,scheduler-port:,cue-device:,output-device: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-d|--directory)
installdir=$2;
shift; shift;;
-H|--host)
hostname=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
-p|--port)
http_port=$2;
shift; shift;;
-P|--scheduler-port)
scheduler_port=$2;
shift; shift;;
-o|--output-device)
output_alsa_device=$2;
shift; shift;;
-c|--cue-device)
cue_alsa_device=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$installdir" == "x" ]; then
echo "Required parameter install directory not specified.";
printUsage;
exit 1;
fi
if [ "x$hostname" == "x" ]; then
hostname=`hostname -f`;
fi
if [ "x$http_port" == "x" ]; then
http_port=80;
fi
if [ "x$scheduler_port" == "x" ]; then
scheduler_port=3344;
fi
if [ "x$output_alsa_device" == "x" ]; then
output_alsa_device="default";
fi
if [ "x$cue_alsa_device" == "x" ]; then
cue_alsa_device="default";
fi
echo "Making post-install steps for Campcaster Studio.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " installation directory: $installdir";
echo " host name: $hostname";
echo " web server port: $http_port";
echo " scheduler port: $scheduler_port";
echo " live broadcast device: $output_alsa_device";
echo " preview device: $cue_alsa_device";
echo ""
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
ls_php_host=$hostname
ls_php_port=$http_port
ls_php_urlPrefix=campcaster
ls_alib_xmlRpcPrefix="xmlrpc/xrLocStor.php"
ls_storage_xmlRpcPrefix="xmlrpc/xrLocStor.php"
ls_scheduler_host=$hostname
ls_scheduler_port=$scheduler_port
ls_scheduler_urlPrefix=
ls_scheduler_xmlRpcPrefix=RC2
ls_output_alsa_device=$output_alsa_device
ls_cue_alsa_device=$cue_alsa_device
install_bin=$installdir/bin
install_etc=$installdir/etc
install_lib=$installdir/lib
install_tmp=$installdir/tmp
install_var=$installdir/var
# replace / characters with a \/ sequence, for sed below
# the sed statement is really "s/\//\\\\\//g", but needs escaping because of
# bash, hence the extra '\' characters
install_var_s=`echo $install_var | sed -e "s/\//\\\\\\\\\//g"`
ls_storage_xmlRpcPrefix_s=`echo $ls_storage_xmlRpcPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_alib_xmlRpcPrefix_s=`echo $ls_alib_xmlRpcPrefix | sed -e "s/\//\\\\\\\\\//g"`
ls_php_urlPrefix_s=`echo $ls_php_urlPrefix | sed -e "s/\//\\\\\\\\\//g"`
ls_scheduler_urlPrefix_s=`echo $ls_scheduler_urlPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_scheduler_xmlRpcPrefix_s=`echo $ls_scheduler_xmlRpcPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_output_alsa_device_s=`echo $ls_output_alsa_device | sed -e "s/\//\\\\\\\\\//g"`
ls_cue_alsa_device_s=`echo $ls_cue_alsa_device | sed -e "s/\//\\\\\\\\\//g"`
replace_sed_string="s/ls_var_dir/$install_var_s/; \
s/ls_php_urlPrefix/$ls_php_urlPrefix_s/; \
s/ls_php_host/$ls_php_host/; \
s/ls_php_port/$ls_php_port/; \
s/ls_alib_xmlRpcPrefix/$ls_alib_xmlRpcPrefix_s/; \
s/ls_audio_output_device/$ls_output_alsa_device_s/; \
s/ls_audio_cue_device/$ls_cue_alsa_device_s/; \
s/ls_scheduler_host/$ls_scheduler_host/; \
s/ls_scheduler_port/$ls_scheduler_port/; \
s/ls_scheduler_xmlRpcPrefix/$ls_scheduler_xmlRpcPrefix_s/;"
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "sed" || exit 1;
#-------------------------------------------------------------------------------
# Customize the configuration files with the appropriate values
#-------------------------------------------------------------------------------
echo "Customizing configuration files..."
# customize the Campcaster Studio config file
cat $install_etc/campcaster-studio.xml.template \
| sed -e "$replace_sed_string" \
> $install_etc/campcaster-studio.xml
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

View File

@ -1,390 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script configures the environment for a developer.
#
# Invoke as:
# ./bin/user_setup.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
scheduler_dir=$products_dir/scheduler
scheduler_bin_dir=$scheduler_dir/bin
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster local user settings setup script.";
echo "parameters";
echo "";
echo " -g, --apache-group The group the apache daemon runs as.";
echo " [default: apache]";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o g:h -l apache-group:,help -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-g|--apache-group)
apache_group=$2;
shift; shift;;
-h|--help)
printUsage;
exit 0;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$apache_group" == "x" ]; then
apache_group=apache;
fi
scheduler_base_port=3344
user=`whoami`
# force localhost always
hostname=localhost
http_port=80
scheduler_port=`expr $scheduler_base_port + $UID`
dbserver=localhost
database=Campcaster-$user
dbuser=test
dbpassword=test
homedir=$HOME
configdir=$homedir/.campcaster
htmldir=$homedir/public_html
output_device=default
cue_device=default
echo "Configuring Campcaster development environment for user $user.";
echo "";
echo "Using the following installation parameters:";
echo "";
echo " host name: $hostname";
echo " web server port: $http_port";
echo " scheduler port: $scheduler_port";
echo " database server: $dbserver";
echo " database: $database";
echo " database user: $dbuser";
echo " database user password: $dbpassword";
echo " apache daemon group: $apache_group";
echo " home directory: $homedir";
echo " configuration directory: $configdir";
echo " web base directory: $htmldir";
echo " output audio device: $output_device";
echo ""
# check for the apache group to be a real group
group_tmp_file=/tmp/ls_group_check.$$
touch $group_tmp_file
test_result=`chgrp $apache_group $group_tmp_file 2> /dev/null`
if [ $? != 0 ]; then
rm -f $group_tmp_file;
echo "Unable to use apache deamon group $apache_group.";
echo "Please check if $apache_group is a correct user group.";
exit 1;
fi
rm -f $group_tmp_file;
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
installdir=$usrdir
ls_php_host=$hostname
ls_php_port=$http_port
ls_php_urlPrefix=~$user/campcaster
ls_alib_xmlRpcPrefix="xmlrpc/xrLocStor.php"
ls_storage_xmlRpcPrefix="xmlrpc/xrLocStor.php"
ls_dbserver=$dbserver
ls_dbuser=$dbuser
ls_dbpassword=$dbpassword
ls_database=$database
ls_scheduler_host=$hostname
ls_scheduler_port=$scheduler_port
ls_scheduler_urlPrefix=
ls_scheduler_xmlRpcPrefix=RC2
ls_tmp_dir=$tmpdir
ls_scheduler_daemon_command="$scheduler_bin_dir/scheduler_devenv.sh"
ls_audio_output_device=$output_device
ls_audio_cue_device=$cue_device
# replace / characters with a \/ sequence, for sed below
# the sed statement is really "s/\//\\\\\//g", but needs escaping because of
# bash, hence the extra '\' characters
installdir_s=`echo $installdir | sed -e "s/\//\\\\\\\\\//g"`
ls_storage_xmlRpcPrefix_s=`echo $ls_storage_xmlRpcPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_alib_xmlRpcPrefix_s=`echo $ls_alib_xmlRpcPrefix | sed -e "s/\//\\\\\\\\\//g"`
ls_php_urlPrefix_s=`echo $ls_php_urlPrefix | sed -e "s/\//\\\\\\\\\//g"`
ls_scheduler_urlPrefix_s=`echo $ls_scheduler_urlPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_scheduler_xmlRpcPrefix_s=`echo $ls_scheduler_xmlRpcPrefix | \
sed -e "s/\//\\\\\\\\\//g"`
ls_tmp_dir_s=`echo $ls_tmp_dir | sed -e "s/\//\\\\\\\\\//g"`
ls_scheduler_daemon_command_s=`echo $ls_scheduler_daemon_command | \
sed -e "s/\//\\\\\\\\\//g"`
replace_sed_string="s/ls_install_dir/$installdir_s/; \
s/ls_dbuser/$ls_dbuser/; \
s/ls_dbpassword/$ls_dbpassword/; \
s/ls_dbserver/$ls_dbserver/; \
s/ls_database/$ls_database/; \
s/ls_storageUrlPath/\/$ls_php_urlPrefix_s\/storageServer\/var/; \
s/ls_php_urlPrefix/$ls_php_urlPrefix_s/; \
s/ls_storage_xmlRpcPrefix/$ls_storage_xmlRpcPrefix_s/; \
s/ls_alib_xmlRpcPrefix/$ls_alib_xmlRpcPrefix_s/; \
s/ls_php_host/$ls_php_host/; \
s/ls_php_port/$ls_php_port/; \
s/ls_archiveUrlPath/\/$ls_php_urlPrefix_s\/archiveServer\/var/; \
s/ls_scheduler_urlPrefix/$ls_scheduler_urlPrefix_s/; \
s/ls_scheduler_xmlRpcPrefix/$ls_scheduler_xmlRpcPrefix_s/; \
s/ls_scheduler_host/$ls_scheduler_host/; \
s/ls_scheduler_port/$ls_scheduler_port/; \
s/ls_audio_output_device/$ls_audio_output_device/; \
s/ls_audio_cue_device/$ls_audio_cue_device/; \
s/ls_tmp_dir/$ls_tmp_dir_s/; \
s/ls_scheduler_daemon_command/$ls_scheduler_daemon_command_s/;"
echo
echo $replace_sed_string
echo
#-------------------------------------------------------------------------------
# Function to check for the existence of an executable on the PATH
#
# @param $1 the name of the exectuable
# @return 0 if the executable exists on the PATH, non-0 otherwise
#-------------------------------------------------------------------------------
check_exe() {
if [ -x "`which $1 2> /dev/null`" ]; then
echo "Executable $1 found...";
return 0;
else
echo "Executable $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Function to check for a PEAR module
#
# @param $1 the name of the PEAR module
# @return 0 if the module is available, non-0 otherwise
#-------------------------------------------------------------------------------
check_pear_module() {
test_result=`pear info $1`
if [ $? = 0 ]; then
echo "PEAR module $1 found...";
return 0;
else
echo "PEAR module $1 not found...";
return 1;
fi
}
#-------------------------------------------------------------------------------
# Check for required tools
#-------------------------------------------------------------------------------
echo "Checking for required tools..."
check_exe "sed" || exit 1;
check_exe "php" || exit 1;
check_exe "pear" || exit 1;
#-------------------------------------------------------------------------------
# Customize the configuration files with the appropriate values
#-------------------------------------------------------------------------------
echo "Customizing configuration files..."
mkdir -p $configdir
cat $modules_dir/storageServer/var/conf_only.php.template \
| sed -e "$replace_sed_string" \
> $configdir/storageServer.conf.php
cat $modules_dir/archiveServer/var/conf_only.php.template \
| sed -e "$replace_sed_string" \
> $configdir/archiveServer.conf.php
cat $modules_dir/authentication/etc/webAuthentication.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/webAuthentication.xml
cat $modules_dir/db/etc/connectionManagerFactory.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/connectionManagerFactory.xml
cat $modules_dir/db/etc/simpleConnectionManager.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/simpleConnectionManager.xml
cat $modules_dir/schedulerClient/etc/schedulerClientFactory.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/schedulerClientFactory.xml
cat $modules_dir/schedulerClient/etc/schedulerDaemonXmlRpcClient.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/schedulerDaemonXmlRpcClient.xml
cat $modules_dir/storageClient/etc/webAuthenticationClient.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/webAuthenticationClient.xml
cat $modules_dir/storageClient/etc/webStorage.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/webStorage.xml
cat $products_dir/scheduler/etc/scheduler.xml.template \
| sed -e "$replace_sed_string" \
> $configdir/scheduler.xml
cat $products_dir/gLiveSupport/etc/campcaster-studio.xml.user-template \
| sed -e "$replace_sed_string" \
> $configdir/campcaster-studio.xml
cat $products_dir/gLiveSupport/etc/authenticationClient.xml.user-template \
| sed -e "$replace_sed_string" \
> $configdir/authenticationClient.xml
cat $products_dir/gLiveSupport/etc/storageClient.xml.user-template \
| sed -e "$replace_sed_string" \
> $configdir/storageClient.xml
#-------------------------------------------------------------------------------
# Create the public html directory, and links to the PHP directories
#-------------------------------------------------------------------------------
echo "Creating public HTML directory and links to web interfaces..."
mkdir -p $htmldir
rm -f $htmldir/campcaster
ln -s $modules_dir $htmldir/campcaster
#-------------------------------------------------------------------------------
# Setup storageServer
#-------------------------------------------------------------------------------
echo "Setting up storageServer..."
make -C $modules_dir/storageServer storage || exit 1
make -C $modules_dir/archiveServer storage || exit 1
#-------------------------------------------------------------------------------
# Setup directory permissions
#-------------------------------------------------------------------------------
echo "Setting up directory permissions..."
chgrp $apache_group $modules_dir/archiveServer/var/stor
chgrp $apache_group $modules_dir/archiveServer/var/access
chgrp $apache_group $modules_dir/archiveServer/var/trans
chgrp $apache_group $modules_dir/archiveServer/var/stor/buffer
chmod g+sw $modules_dir/archiveServer/var/stor
chmod g+sw $modules_dir/archiveServer/var/access
chmod g+sw $modules_dir/archiveServer/var/trans
chmod g+sw $modules_dir/archiveServer/var/stor/buffer
chgrp $apache_group $modules_dir/storageServer/var/stor
chgrp $apache_group $modules_dir/storageServer/var/access
chgrp $apache_group $modules_dir/storageServer/var/trans
chgrp $apache_group $modules_dir/storageServer/var/stor/buffer
chmod g+sw $modules_dir/storageServer/var/stor
chmod g+sw $modules_dir/storageServer/var/access
chmod g+sw $modules_dir/storageServer/var/trans
chmod g+sw $modules_dir/storageServer/var/stor/buffer
chgrp $apache_group $modules_dir/htmlUI/var/templates_c
chgrp $apache_group $modules_dir/htmlUI/var/html/img
chmod g+sw $modules_dir/htmlUI/var/templates_c
chmod g+sw $modules_dir/htmlUI/var/html/img
cp $modules_dir/htmlUI/var/redirect.php $modules_dir/index.php
cp $modules_dir/htmlUI/var/redirect.php $modules_dir/htmlUI/index.php
cp $modules_dir/htmlUI/var/redirect.php $modules_dir/htmlUI/var/index.php
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "";
echo "The HTML user interface for the Campcaster development environment";
echo "for user $user is available at:";
echo "http://$ls_php_host:$ls_php_port/$ls_php_urlPrefix/htmlUI/var";
echo "";
echo "Done."

View File

@ -1,140 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script sets up the development environment for a user.
#
# Invoke as:
# ./bin/user_setup_root.sh
#
# To get usage help, try the -h option
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Determine directories, files
#-------------------------------------------------------------------------------
reldir=`dirname $0`/..
basedir=`cd $reldir; pwd;`
bindir=$basedir/bin
etcdir=$basedir/etc
docdir=$basedir/doc
srcdir=$basedir/src
tmpdir=$basedir/tmp
toolsdir=$srcdir/tools
modules_dir=$srcdir/modules
products_dir=$srcdir/products
scheduler_dir=${products_dir}/scheduler
scheduler_bindir=${scheduler_dir}/bin
usrdir=`cd $basedir/usr; pwd;`
#-------------------------------------------------------------------------------
# Print the usage information for this script.
#-------------------------------------------------------------------------------
printUsage()
{
echo "Campcaster user database setup script.";
echo "parameters:";
echo "";
echo " -u, --user The user to set up the environment for.";
echo " Required parameter.";
echo " -h, --help Print this message and exit.";
echo "";
}
#-------------------------------------------------------------------------------
# Process command line parameters
#-------------------------------------------------------------------------------
CMD=${0##*/}
opts=$(getopt -o hu: -l help,user: -n $CMD -- "$@") || exit 1
eval set -- "$opts"
while true; do
case "$1" in
-h|--help)
printUsage;
exit 0;;
-u|--user)
user=$2;
shift; shift;;
--)
shift;
break;;
*)
echo "Unrecognized option $1.";
printUsage;
exit 1;
esac
done
if [ "x$user" == "x" ]; then
echo "Required parameter user missing.";
printUsage;
exit 1;
fi
echo "Creating the Campcaster user database";
echo "for user: $user.";
echo ""
#-------------------------------------------------------------------------------
# The details of installation
#-------------------------------------------------------------------------------
postgres_user=postgres
ls_database=Campcaster-$user
ls_dbuser=test
ls_dbpassword=test
ls_dbserver=localhost
#-------------------------------------------------------------------------------
# Create the necessary database user and database itself
#-------------------------------------------------------------------------------
${scheduler_bindir}/createDatabase.sh --database=${ls_database} \
--dbuser=${ls_dbuser} \
--dbpassword=${ls_dbpassword} \
--dbserver=${ls_dbserver}
#-------------------------------------------------------------------------------
# Create the ODBC data source and driver
#-------------------------------------------------------------------------------
${scheduler_bindir}/createOdbcDataSource.sh --database=${ls_database} \
--dbserver=${ls_dbserver}
#-------------------------------------------------------------------------------
# Say goodbye
#-------------------------------------------------------------------------------
echo "Done."

52
livesupport/configure vendored
View File

@ -1,52 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Run this script to configure the environment.
#
# This script in effect calls the real automake / autoconf configure script
#-------------------------------------------------------------------------------
# assume we're in $basedir
reldir=`dirname $0`
basedir=`cd $reldir; pwd;`
test -z "$basedir" && basedir=.
bindir=$basedir/bin
tmpdir=$basedir/tmp
autogen=$bindir/autogen.sh
configure=$tmpdir/configure
if [ ! -x $configure ]; then
(cd $basedir && $autogen $*)
fi
(cd $tmpdir && $configure $*)

File diff suppressed because it is too large Load Diff

View File

@ -1,67 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>autoconf configure file conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the autoconf configure file conventions for the
LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file
conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
Autoconf configure input files are processed by GNU <a
href="http://www.gnu.org/software/autoconf/">autoconf</a> and <a
href="http://www.gnu.org/software/automake/">automake</a> to generate
a configure script, which in turn generates Makefiles and other files
based on the system specifics it is run on. These are text
based files, thus they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<h1>Naming</h1>
Autoconf configure files are named either <code>configure.ac</code>
(for autoconf) or sometimes <code>configure.am</code> (for automake).<br>
<h1>Structure</h1>
Autoconf configure files are partitioned by using the following 80
column
wide partitioning comment:<br>
<pre>dnl-----------------------------------------------------------------------------<br>dnl This is the title of the partition<br>dnl-----------------------------------------------------------------------------<br></pre>
The file has the
following mandatory structure:<br>
<ul>
<li>Header</li>
<li>Additional sections+</li>
</ul>
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>, but
starting with the autoconf comment sequence <code>dnl</code>. Note the
80
column wide partitioning delimiter enclosing the header.<br>
<pre>dnl-----------------------------------------------------------------------------<br>dnl Copyright (c) 2004 Media Development Loan Fund<br>dnl<br>dnl This file is part of the Campcaster project.<br>dnl http://campcaster.campware.org/<br>dnl To report bugs, send an e-mail to bugs@campware.org<br>dnl<br>dnl Campcaster is free software; you can redistribute it and/or modify<br>dnl it under the terms of the GNU General Public License as published by<br>dnl the Free Software Foundation; either version 2 of the License, or<br>dnl (at your option) any later version.<br>dnl<br>dnl Campcaster is distributed in the hope that it will be useful,<br>dnl but WITHOUT ANY WARRANTY; without even the implied warranty of<br>dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br>dnl GNU General Public License for more details.<br>dnl<br>dnl You should have received a copy of the GNU General Public License<br>dnl along with Campcaster; if not, write to the Free Software<br>dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>dnl<br>dnl<br>dnl Author : $Author$<br>dnl Version : $Revision$<br>dnl Location : $URL$<br>dnl-----------------------------------------------------------------------------<br></pre>
<h2>Additional sections</h2>
Additional sections contain the autoconf configuration macro calls.
Bigger
parts of the file may be partitioned by the partitioning commend seen
above.<br>
<h1>Template</h1>
See a generic <a href="templates/configure.ac">template
for autoconf configurations</a>. You may freely copy this
template when starting to create a new document.<br>
<br>
</body>
</html>

View File

@ -1,228 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Build environment</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/buildEnvironment.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the build environment for components of the
LiveSupport project.<br>
<h1>Introduction</h1>
As seen in the <a href="directoryStructure.html">directory structure</a>
description, each component is contained in its own directory, and has
the same general directory layout, which includes a <code>configure</code> script on the top
of the directory. This script is responsible for gathering compilation and installation information, and for creating a <code>Makefile</code> in the top directory. All components are built by using <a href="http://www.gnu.org/directory/make.html">GNU make</a> working on
that <code>Makefile</code>.<br>
<br>
This document describes details about the <code>configure</code> script,&nbsp;the targets for the generated <code>Makefile</code>, and related files involved with the installation of the component.<br>
<br>
Parts of this document are inspired by the <a href="http://www.gnu.org/prep/standards.html">GNU Coding Standards</a>
<a href="http://www.gnu.org/prep/standards_50.html">Makefile
Conventions Standard targets</a>.<br>
<h1>The <code>configure</code> script and generated files<br>
</h1>
<h2><code>configure</code> options</h2>
The <code>configure</code> script should honor the generic directory settings passed to it:<br>
<br>
<pre>Installation directories:<br> --prefix=PREFIX install architecture-independent files in PREFIX<br> [/usr/local]<br> --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX<br> [PREFIX]<br><br>Fine tuning of the installation directories:<br> --bindir=DIR user executables [EPREFIX/bin]<br> --sbindir=DIR system admin executables [EPREFIX/sbin]<br> --libexecdir=DIR program executables [EPREFIX/libexec]<br> --datadir=DIR read-only architecture-independent data [PREFIX/share]<br> --sysconfdir=DIR read-only single-machine data [PREFIX/etc]<br> --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]<br> --localstatedir=DIR modifiable single-machine data [PREFIX/var]<br> --libdir=DIR object code libraries [EPREFIX/lib]<br> --includedir=DIR C header files [PREFIX/include]<br> --oldincludedir=DIR C header files for non-gcc [/usr/include]<br> --infodir=DIR info documentation [PREFIX/info]<br> --mandir=DIR man documentation [PREFIX/man]<br></pre>
<br>
Other configuration-time options should be processed using <code>--with-XXX</code> arguments, using the <a href="http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_node/autoconf_130.html#IDX835"><code>AC_ARG_WITH</code></a> <code>autoconf</code> macro.<br>
<br>
Note: when writing <code>etc/configure.ac</code>, the input for the <code>configure</code> script, the <a href="http://autoconf-archive.cryp.to/">Autoconf Macro Archive</a> can provide quite useful.<br>
<br>
<h2>generated files</h2>
The main file generated by the <code>configure</code> script will the the <code>Makefile</code>. The input for the <code>Makefile</code>, <code>etc/Makefile.in</code>, can refer to the variables substituted by <code>configure</code> in the following way:<br>
<br>
<pre><code>prefix = @prefix@<br>some_other_var = @some_other_var@</code></pre>
<br>
Because these variables might need to be overwritten when running the <code>Makefile</code>, make sure to use the same name for the variable inside the <code>Makefile</code> as was used by the configure script (as in the above example). For example:<br>
<br>
<pre><code># these are wrong!<br>PREFIX = @prefix@<br>myvar = @some_other_var@<br><br># these are correct, and have the same desired effect:<br></code><code>prefix = @prefix@<br>some_other_var = @some_other_var@<br>PREFIX = ${prefix}<br>myvar = ${some_other_var}</code></pre>
<span style="font-weight: bold;"><br>
</span><span style="font-weight: bold;"></span>Using the same names will make it possible to overwrite the values substituted by <code>configure</code> when invoking the <code>Makefile</code>, for example:<br>
<br>
<pre><code>make prefix=/foo/bar install</code></pre>
<br>
will cause installation under the prefix <code>/foo/bar</code>, irrespective of the prefix supplied to <code>configure</code>.<br>
<span style="font-weight: bold;"></span><span style="font-weight: bold;"></span>
<h1>Make targets<br>
</h1>
The following make targets are required for all components to support:<br>
<ul>
<li>all</li>
<li>clean</li>
<li>depclean</li>
<li>doc<br>
</li>
<li>dist</li>
<li>check</li>
<li>install</li>
</ul>
<h4>all</h4>
Compile all source files for this component.&nbsp; As a result, the
component is ready to be run (if an executable) or linked to (if a
library).<br>
This target traverses the dependent modules, and executes the all
target on them, if their targets do not exist.<br>
<h4>clean</h4>
Delete all files generated by the all target, but only for this module
(e..g. no files for dependent modules are deleted).<br>
<h4>depclean</h4>
Delete all the dependent target files. Executing the depclean target
with an all target afterwards results in a full recompilation of all
the dependent modules.<br>
<h4>doc</h4>
Generate the documentation for this component. This would include
processing info pages, or using tools to generate documentation based
on comments in the source code (like javadoc).<br>
<h4>dist</h4>
Create a distribution package for this component. This involves
possibly compiling, document generation and other tasks, and results in
an archive containing the distribution.<br>
<h4>check</h4>
Run all tests, especially unit tests, for the component. This usually
results in a generated test-report.<br>
<br>
<h4>install</h4>
Installs the component into the specified prefix. (See the <a href="installation.html">Installation</a> document for details.)<br>
<br>
</body>
</html>

View File

@ -1,199 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>C++ header file conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes C++ header file conventions for the
LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file
conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
C++ header files are files containing declarations of structures,
functions and classes, that may be shared among object files, by
including them with the pre-processor directive <code>#include</code>
in multiple source files. They are text
based files, thus they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<br>
The LiveSupport project uses a strong object oriented approach. Part of
this approach is to group declarations of classes into their own files:
one header file and one source file for each class. Therefore each C++
header file contains the declaration of exactly one C++ class, although
inner types are defined in the same file.<br>
<h1>Naming</h1>
A C++ header files name reflects the class it is defining. Class names
begin with a capital letter, followed by lower case letters. In case of
a multiple word class name, the first letter of each word is
capitalized. Example class names are <code>Foo</code> and <code>FooBar</code>.<br>
<br>
As the name of the header file reflects the name of the class defined
in it, the header file will be named exactly as the class inside, with
the <code>.h</code> extension. Thus a class named <code>Foo</code> is
defined in
the header file <code>Foo.h</code>, and the class named <code>SomeOtherLongNamedClass</code>
is defined in the header file named <code>SomeOtherLongNamedClass.h</code>.<br>
<h1>Structure</h1>
C++ files are partitioned by using the following 80 column wide
partitioning comment:<br>
<pre>/* ==================================================== name of the partition */<br></pre>
Note that the comment is always 80 columns wide, independent of the
length of the text within.<br>
<br>
The file has the
following mandatory structure:<br>
<ul>
<li>Header</li>
<li>Include files &amp; namespaces</li>
<li>Constants</li>
<li>Macros</li>
<li>Data types</li>
<li>External data signatures</li>
<li>Function Prototypes</li>
<li>Footer<br>
</li>
</ul>
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>. It begins
with the generic header information, enclosed in 80
column wide partitioning delimiters.<br>
<br>
After this a macro definition follows, prohibiting the multiple time
inclusion of the header file. The name of the header-identity macro is
derived from the full name the file is expected to be included as. The
macro name is formed by replacing all non-alphanumeric characters from
the expected include definition with the '_' (underscore) character.
For a header file that will be included with the line:<br>
<pre><code>#include "Foo.h"</code><br></pre>
the identity macro is defined as <code>Foo_h</code>. For a header file
that is expected to be included as:<br>
<pre><code>#include "LiveSupport/Foo/Bar.h"<br></code></pre>
the identity macro is defined as <code>LiveSupport_Foo_Bar_h</code>.<br>
<br>
After the identity macro, a preprocessor check is performed to see if
the file is being processessed by a C++ compiler (and say not a C
compiler).<br>
<h3>Sample</h3>
A sample for a C++ header file header follows, where the file itself
would be expected to be included as <code>"LiveSupport/Foo/Bar.h"</code>.<br>
<br>
<pre>/*------------------------------------------------------------------------------<br><br> Copyright (c) 2004 Media Development Loan Fund<br> <br> This file is part of the Campcaster project.<br> http://campcaster.campware.org/<br> To report bugs, send an e-mail to bugs@campware.org<br> <br> Campcaster is free software; you can redistribute it and/or modify<br> it under the terms of the GNU General Public License as published by<br> the Free Software Foundation; either version 2 of the License, or<br> (at your option) any later version.<br> <br> Campcaster is distributed in the hope that it will be useful,<br> but WITHOUT ANY WARRANTY; without even the implied warranty of<br> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br> GNU General Public License for more details.<br> <br> You should have received a copy of the GNU General Public License<br> along with Campcaster; if not, write to the Free Software<br> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br> <br> <br> Author : $Author$<br> Version : $Revision$<br> Location : $URL$<br> <br>------------------------------------------------------------------------------*/<br>#ifndef LiveSupport_Foo_Bar_h<br>#define LiveSupport_Foo_Bar_h<br> <br>#ifndef __cplusplus<br>#error This is a C++ include file<br>#endif<br><br></pre>
<h2>Include files &amp; namespace <br>
</h2>
This section contains all the include files that the header file needs
to include, plus namespace declarations. The include files are listed
in a most generic to most specific order: firts system include files,
then other LiveSupport module include files, and finnally include files
from the same module / product are listed.<br>
<br>
After the includes, namespace definitions follow. Each LiveSupport
object is contained in its own namespace inside the <code>LiveSupport</code>
namespace, thus this is a nested namespace declaration.<br>
<br>
After the namespace declarations, the namespaces used within the
include file itself are listed with <code>using namespace</code>
clauses. Note that the <code>using namespace</code> clauses are
strictly within the namespace declaration clauses, so that they only
take effect within the header file, but not afterwards.<br>
<h3>Sample</h3>
A sample include files &amp; namespaces section follows.<br>
<pre>/* =============================================== include files &amp; namespaces */<br><br>#ifdef HAVE_CONFIG_H<br>#include "configure.h"<br>#endif<br><br>#if HAVE_STDLIB_H<br>#include &lt;stdlib.h&gt;<br>#else<br>#error need stdlib.h<br>#endif<br><br>#include &lt;string&gt;<br><br><br>namespace LiveSupport {<br>namespace Foo {<br><br>using namespace LiveSupport::Core;<br><br></pre>
<h2>Constants</h2>
The constants section contains static constant values defined in the
header file.
Nowhere in the header file may be other static constants defined. This
section is
rarely used, as static constants&nbsp; outside classes are discurraged,<br>
<h3>Sample</h3>
A sample constants section follows.<br>
<pre>/* ================================================================ constants */<br><br>/**<br> * The contant value of foo bar.<br> */<br>static const int fooBarConst;<br></pre>
<h2>Macros</h2>
The macros section contains any macros defined in the header file.
Nowhere in the header file may be other macros defined. This section is
rarely used, as macros are discurraged,<br>
<h3>Sample</h3>
A sample macros section follows.<br>
<pre>/* =================================================================== macros */<br><br>/**<br> * Some very important macro.<br> */<br>#define SOME_MACRO "some macro"<br></pre>
<h2>Data types</h2>
This section contains the data type definitions of the header file,
most notable the definition of the class this header file is named
after.<br>
<br>
The class itself and all its members (including private members) are
described by <a href="http://www.doxygen.org/">doxygen</a> comments.
The Java style of commenting is to be used.&nbsp; For the comment
describing the entire class, the <code>@author</code> and <code>@version</code>
tags are mandatory. For each member function, all parameters, the
return value and all possibly thrown exceptions are to be documented.<br>
<br>
The class lists its members in the following order:<br>
<ul>
<li>private</li>
<li>protected</li>
<li>public</li>
</ul>
Within each of the above blocks, the order is the following:<br>
<ul>
<li>static data members</li>
<li>dynamic data members</li>
<li>constructors</li>
<li>destructor</li>
<li>static functions</li>
<li>dynamic functions</li>
</ul>
For proper indentation of the above blocks, see the example below.<br>
<h3>Sample</h3>
A sample data types section follows.<br>
<pre>/* =============================================================== data types */<br><br>/**<br> * Hello class.<br> * The only purpose of this class is to say hello.<br> *<br> * @author $Author$<br> * @version $Revision$<br> */<br>class Hello<br>{<br> private:<br> /**<br> * Our famous hello string.<br> */<br> static const std::string helloWorld;<br><br> public:<br> /**<br> * Default constructor.<br> */<br> Hello (void) throw ()<br> {<br> }<br><br> /**<br> * Say hello.<br> *<br> * @return the string "Hello, World!"<br> * @exception std::exception on problems<br> */<br> const std::string<br> hello (void) throw (std::exception)<br> {<br> return helloWorld;<br> }<br>};<br><br></pre>
<h2>External data structures<br>
</h2>
The external data structures section contains any external data
definitions needed by the header file, that may be defined externally.
Nowhere in the header file may other external data definitions exist.
This section is
rarely used, as external data definitions are discouraged.<br>
<h3>Sample</h3>
A sample external data structures section follows.<br>
<pre>/* ================================================= external data structures */<br><br>/**<br> * An externally defined data, which the linker will find.<br> */<br>extern int fooBarInt;<br><br></pre>
<h2>Function prototypes<br>
</h2>
The function prototypes section contains any function prototypes
defined by the header file, that are not members of classes.
Nowhere in the header file may other such definitions exist.
This section is seldom used, as functions outside classes are
discouraged.<br>
<h3>Sample</h3>
A sample function prototypes section follows.<br>
<pre>/* ====================================================== function prototypes */<br><br>/**<br> * An important foo function.<br> *<br> * @return the result of foo.<br> */<br>int foo(void) throw ();<br></pre>
<h2>Footer</h2>
The footer of the header file closes the namespace brackets opened in
the include files &amp; namespaces section, and also ends the header
identity macro #ifdef section opened in the header.<br>
<h3>Sample</h3>
A sample footer section follows.<br>
<br>
<pre>} // namespace Foo<br>} // namespace LiveSupport<br><br>#endif // LiveSupport_Foo_Bar_h<br></pre>
<h1>Template</h1>
See a <a href="templates/Bar.h">template
C++ header file</a>. You may freely copy this
template when starting to create a new header file.<br>
<br>
</body>
</html>

View File

@ -1,150 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>C++ source file conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes C++ source file conventions for the
LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file
conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
C++ source files are files containing implementations of functions and
definitions of static data. They are text
based files, thus they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<br>
The LiveSupport project uses a strong object oriented approach. Part of
this approach is to group implementations of classes into their own
files: one header file and one source file for each class. Therefore
each C++ source file contains implementation of exactly one C++ class,
although static (local) functions may be defined as well.<br>
<h1>Naming</h1>
A C++ source files name reflects the class it is implementing. Class
names begin with a capital letter, followed by lower case letters. In
case of a multiple word class name, the first letter of each word is
capitalized. Example class names are <code>Foo</code> and <code>FooBar</code>.<br>
<br>
As the name of the source file reflects the name of the class it
implements, the source file will be named exactly as the class inside,
with the <code>.cxx</code> extension. Thus a class named <code>Foo</code>
is implemented in the source file <code>Foo.cxx</code>, and the class
named <code>SomeOtherLongNamedClass</code> is implemented in the
source file named <code>SomeOtherLongNamedClass.cxx</code>.<br>
<h1>Structure</h1>
C++ files are partitioned by using the following 80 column wide
partitioning comment:<br>
<pre>/* ==================================================== name of the partition */<br></pre>
Note that the comment is always 80 columns wide, independent of the
length of the text within.<br>
<br>
Local data type definitions and function prototypes required
doxygen-style commenting.<br>
<br>
Function implementations and static data definitions were already
commented for doxygen at their place of declaration. Therefore these
are preceded by the following simple comment header.<br>
<pre>/*------------------------------------------------------------------------------<br>&nbsp;* Function implementation below.<br> *----------------------------------------------------------------------------*/<br></pre>
<br>
The file has the
following mandatory structure:<br>
<ul>
<li>Header</li>
<li>Include files &amp; namespaces</li>
<li>Local data structures<br>
</li>
<li>Local constants &amp; macros<br>
</li>
<li>Local function prototypes<br>
</li>
<li>Module code<br>
</li>
</ul>
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>. It contains
with the generic header information, enclosed in 80
column wide partitioning delimiters.<br>
<h3>Sample</h3>
A sample for a C++ source file header follows.<br>
<pre>/*------------------------------------------------------------------------------<br><br> Copyright (c) 2004 Media Development Loan Fund<br> <br> This file is part of the Campcaster project.<br> http://campcaster.campware.org/<br> To report bugs, send an e-mail to bugs@campware.org<br> <br> Campcaster is free software; you can redistribute it and/or modify<br> it under the terms of the GNU General Public License as published by<br> the Free Software Foundation; either version 2 of the License, or<br> (at your option) any later version.<br> <br> Campcaster is distributed in the hope that it will be useful,<br> but WITHOUT ANY WARRANTY; without even the implied warranty of<br> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br> GNU General Public License for more details.<br> <br> You should have received a copy of the GNU General Public License<br> along with Campcaster; if not, write to the Free Software<br> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br> <br> <br> Author : $Author$<br> Version : $Revision$<br> Location : $URL$<br> <br>------------------------------------------------------------------------------*/<br><br></pre>
<h2>Include files &amp; namespaces <br>
</h2>
This section contains all the include files that the source file needs
to include, plus namespace references. The include files are listed in
a most generic to most specific order: first system include files, then
other LiveSupport module include files, and finally include files from
the same module / product are listed. The last one is the header file
for the class this source file implements.<br>
<br>
After the includes, the namespaces used within the source file itself
are listed with <code>using namespace</code> clauses. The order of the
<code>using namespace</code> declarations is also from most generic to
most specific, the last one being the namespace of the class this
source file implements.<br>
<h3>Sample</h3>
A sample include files &amp; namespaces section follows.<br>
<pre>/* =============================================== include files &amp; namespaces */<br><br>#ifdef HAVE_CONFIG_H<br>#include "configure.h"<br>#endif<br><br>#if HAVE_STDLIB_H<br>#include &lt;stdlib.h&gt;<br>#else<br>#error need stdlib.h<br>#endif<br><br>#include &lt;string&gt;<br><br>#include &lt;LiveSupport/Foo/Bar.h&gt;<br><br><br>using namespace LiveSupport::Core;<br>using namespace LiveSupport::Foo;<br><br></pre>
<h2>Local data structures<br>
</h2>
The constants section contains locally defined data structures, that
are not used anywhere outside this source file.
Nowhere in the source file may be other data structure definitions.
This section is
rarely used, as reusable data structures are encouraged.<br>
<h3>Sample</h3>
A sample local data structures section follows.<br>
<pre>/* =================================================== local data structures */<br><br>/**<br> * The union of foo.<br> */<br>union foo {<br> int foo;<br> long bar;<br>};<br></pre>
<h2>Local constants &amp; macros</h2>
The local constants &amp; macros section contains any macros and
constant values used in this source file. It also contains the
definitions for constant values of the class this source file
implements. Nowhere in the source file may be other macros or constants
defined.<br>
<br>
Having local constants is discouraged. Have private static class
members instead.<br>
<h3>Sample</h3>
A sample local constants &amp; macros section follows.<br>
<pre>/* ================================================ local constants &amp; macros */<br><br>/*------------------------------------------------------------------------------<br>&nbsp;* The famous foo string for the class Bar.<br> *----------------------------------------------------------------------------*/<br>const std::string Bar::fooStr = "foo";<br><br></pre>
<h2>Local function prototypes<br>
</h2>
This section contains the prototypes for local functions, which are
only used in this source file. Nowhere else in the source file may
function prototypes be other than in this section. This section is
rarely used, local functions are discouraged. Use private class member
functions instead.<br>
<h3>Sample</h3>
A sample local function prototypes section follows.<br>
<pre>/* =============================================== local function prototypes */<br><br>/**<br> * Some local function.<br> *<br> * @param parameter some parameter<br> * @return a very big return value.<br> */<br>int<br>localFunction(int parameter) throw ();<br><br></pre>
<h2>Module code<br>
</h2>
This section contains the implementation for the class it is made for.
Also contains the implementation for all local functions. The
implementation order is not defined.<br>
<h3>Sample</h3>
A sample module code section follows.<br>
<pre>/* ============================================================= module code */<br><br>/*------------------------------------------------------------------------------<br>&nbsp;* Return the famous bar string.<br> *----------------------------------------------------------------------------*/<br>const std::string<br>Bar :: sayBar(void) throw (std::exception)<br>{<br> if (barInt) {<br> throw std::exception();<br> }<br><br> return barStr;<br>}<br><br></pre>
<h1>Template</h1>
See a <a href="templates/Bar.cxx">template
C++ source file</a>. You may freely copy this
template when starting to create a new source file.<br>
<br>
</body>
</html>

View File

@ -1,250 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Directory structure</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/directoryStructure.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the directory structure used for all component
of the LiveSupport project.<br>
<h1>Introduction</h1>
It is important to define a common and uniform directory structure in
order to allow more seamless cooperation between participants of the
project. It also helps referencing the various components (modules,
etc.), as all the components will have a predictable and stable file
hierarchy.<br>
<br>
As seen below, the main inspiration for each components directory
structure is the <a href="http://www.pathname.com/fhs/">Filesystem
Hierarchy Standard</a>.<br>
<h1>Overall structure</h1>
The base livesupport directory contains all the special tools needed to
build, test and run LiveSupport, along with all the source code that
constitutes LiveSupport itself.<br>
<br>
The self written part of LiveSupport project consists of re-usable
modules, and products.
Modules are components that do not execute by themselves, but have a
useful, preferably generic functionality. Products are the executable
components that are actually run by users.<br>
<br>
Both modules and products may reference (depend on) other modules, but
circular reference is not allowed.<br>
<br>
Other needed parts of the directory structure are involved with
external libraries LiveSupport depends on, and a running environment
where LiveSupport can run.<br>
<br>
The directory structure is organized in the following way:<br>
<br>
<code></code>
<pre>livesupport<br>|-- configure<br>|-- bin<br>|-- doc<br>|-- etc<br>|-- src<br>| |-- modules<br>| | |-- module1<br>| | |-- module2<br>| ...<br>| | `-- moduleN<br>| |-- products<br>| | |-- product1<br>| | |-- product2<br>| | ...<br>| | `-- productN<br>| `-- tools<br>| |-- tool1<br>| |-- tool2<br>| ...<br>| `-- tool3<br>|-- tmp<br>|-- usr<br>`-- var<br></pre>
<br>
<h2>Referencing modules and the running environment<br>
</h2>
As a consequence of the directory structure above, if a module is
referencing an other (e.g. moduleX), than it can be sure that it is
located at <code>../moduleX</code>. If a product is referencing the
same module, it can be sure that it is located at <code>../../modules/moduleX</code>.<br>
<br>
Furthermore, if a module or product is referencing the running
environment under <code>livesupport/usr</code>, it can also be sure
that it is located at <code>../../../usr</code> from either the module or
the product directory.<br>
<br>
Referencing always means exactly that: no contents are copied from one
module directory to an other. For example for a module or product to
reference the shared libraries of moduleX means to do exactly that:
link to the library <code>../../modules/moduleX/lib/libmoduleX.so</code>.<br>
<br>
Please note that the above relative reference are valid in the build
environment only! After a module or product is installed, it can make
no assumptions on the relative locations of other components.<br>
<h1>Top-level configure script</h1>
The top-level <code>configure</code> script takes care of <a href="http://www.gnu.org/software/autoconf/">autoconf</a>-style configuring the whole LiveSupport project. This involves running <code>configure</code> in all tool, module and product directories, and creating a top-level <code>Makefile</code>.<br>
<br>
The configure script is expected to run autoconf in case the
autoconf-style environment has not yet been set up. This typically
involves executing an autogen.sh script from the bin directory.<br>
<br>
<h1>Documentation directory</h1>
The doc directory contains generic documentation with respect to the
whole LiveSupport project. Documentation pertaining to a module or
products should go under the modules' or products' directory,
respectively.<br>
<h1>Configuration files</h1>
Under the <code>etc</code> directory project-wide configuration files
are found, like the ones used by the top-level configure script. This
typically involves having autoconf sources (configure.ac,
acinlcude.m4), and the input for the top-level Makefile (Makefile.in).<br>
<h1>Module structure</h1>
Each module has the same directory structure, which is as follows:<br>
<br>
<pre>moduleX<br>|-- configure<br>|-- bin<br>|-- etc<br>|-- include<br>| `-- LiveSupport<br>| `-- ModuleX<br>|-- lib<br>|-- src<br>|-- tmp<br>`-- var<br></pre>
<h4>configure</h4>
An <a href="http://www.gnu.org/software/autoconf/">autoconf</a>-style configure script. See the <a href="buildEnvironment.html">build environment</a> document for a
detailed description.<br>
<h4>bin</h4>
Directory containing all executables.<br>
<h4>etc</h4>
All configuration files go here.<br>
<h4>include</h4>
The public C/C++ header files for this module. The include files are
stored in a subdirectory that completely replicates the namespacing of
the module itself, in a case-sensitive manner. Thus a header file name <code>Foo.h</code>
for <code>ModuleX</code> would be contained in the directory <code>include/LiveSupport/ModuleX/Foo.h</code>,
and would be included with the line:<br>
<br>
<pre>#include "LiveSupport/ModuleX/Foo.h"<br></pre>
<h4>lib</h4>
Directory containing all shared and static libraries that are generated
by building the module. All external, third-party libraries used by
this module should be installed into the <code>../../../usr/lib</code>
directory. The libraries are named resembling the full namespacing of
the module, but all lower cased. For example, the library for moduleX
would be named <code>liblivesupport_modulex.so</code>, and thus would
be linked to with the linker option <code>-L../../modules/moduleX/lib
-llivesupport_modulex</code>.<br>
<h4>src</h4>
Contains all source files. A source file is a file which is processed
(compiled, etc.) by the build process, and as a result some target
files are generated from it.<br>
<h4>tmp</h4>
A temporary directory, holding temporary files used by the build
process. This directory either does not exist in the configuration
management system, or is empty there.<br>
<h4>var</h4>
Directory containing data. This can range from XML data to HTML pages
to all other files that are not source files (are not processed by the
build process). Note that web-page scripting files like PHP files also
fall into this category.<br>
<h1>Product structure</h1>
The directory structure for a product is in essence the same as for
modules, described above, with the difference that products don't have
externally visible include files, thus their directories don't contain
an <code>include</code> directory.<br>
<h1>Tools structure</h1>
The tools directory is an archive of tools and external libraries used
for either building or running the LiveSupport system. These tools are
installable to the usr directory of the LiveSupport directory tree.<br>
Each tool has its own directory, where several versions of the same
tool may reside. Thus the generic directory structure is as follows:<br>
<pre>tools<br>|-- tool1<br>| |-- tool1-X<br>| |-- tool1-Y<br>| ...<br>| `-- tool1-Z<br> ...<br>`-- toolN<br> |-- toolN-A<br> |-- toolN-B<br> ...<br> `-- toolN-C<br></pre>
Thus a user can select version X of toolK to be installed by selecting
the directory <code>tools/toolK/toolK-X</code>. Each tool directory
has the following structure:<br>
<pre>toolK-X<br>|-- configure<br>|-- bin<br>|-- etc<br>|-- src<br>| `-- toolK-X.tar.gz<br>`-- tmp<br></pre>
The <code>configure</code> script is an autoconf-style configure script that creates a <code>Makefile</code> in the tool directory, reflecting typical configuration settings like <code>--prefix</code>.
Executing make install in the tool directory will result in the
compilation and installation of the specific tool into the specified <code>${prefix}</code>. <br>
<br>
In case the source needs to patched before compilation, the patches may
be contained in the <code>etc</code> directory.<br>
<h1>usr structure</h1>
The usr directory is similar to the /usr system directory on UNIX
systems (see the <a href="http://www.pathname.com/fhs/">Filesystem
Hierarchy Standard</a>). This directory contains all the external tools
needed by either developing or running the LiveSupport system. This
directory is separate from the system /usr directory in order to
facilitate changing the configuration for LiveSupport related libraries
and tools in user space.<br>
<br>
</body>
</html>

View File

@ -1,118 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<title>File Conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the conventions used for files in the
LiveSupport project.<br>
<h1>Introduction</h1>
To facilitate cooperation between multiple contributors, it is
advisable to have common file conventions, so as the result of
different peoples work have a uniform look and form. This document
lists the file conventions for the different file formats used by the
project.<br>
<br>
Where the description of the conventions is ambiguous, the examples
given are binding, and are to be followed.<br>
<h1>Generic conventions</h1>
In general, all documents have the following structure:<br>
<ul>
<li>header</li>
<li>partition1</li>
<li>partition2</li>
<li>...</li>
<li>partitionN</li>
</ul>
<h2><a name="header"></a>header<br>
</h2>
The header of the file holds:<br>
<ul>
<li>a reference to the LiveSupport project itself</li>
<li>copyright information</li>
<li>reference to the license of the file</li>
<li>the latest author of the file</li>
<li>the current version of the file</li>
<li>the full location of the file in the configuration management
system<br>
</li>
</ul>
Following the GNU GPL <a
href="http://www.gnu.org/licenses/gpl.html#SEC4">guidelines</a> on
applying a license term to source files, the typical header for a text
file looks like the following:<br>
<br>
<pre><code> Copyright (c) 2004 Media Development Loan Fund<br> <br> This file is part of the Campcaster project.<br> http://campcaster.campware.org/<br> To report bugs, send an e-mail to bugs@campware.org<br> <br> Campcaster is free software; you can redistribute it and/or modify<br> it under the terms of the GNU General Public License as published by<br> the Free Software Foundation; either version 2 of the License, or<br> (at your option) any later version.<br> <br> Campcaster is distributed in the hope that it will be useful,<br> but WITHOUT ANY WARRANTY; without even the implied warranty of<br> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br> GNU General Public License for more details.<br> <br> You should have received a copy of the GNU General Public License<br> along with Campcaster; if not, write to the Free Software<br> Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br> <br> <br> Author : $Author$<br> Version : $Revision$<br> Location : $URL$<br></code><br></pre>
Note the CVS keywords (as an example) for having up-to-date information
on the author, version and location of the file.<br>
<h2>partitions</h2>
Each file is split into separate partitions, and maintains its
structure with the fixed sequence of these partitions. File formats
differ heavily on the capabilities of defining partitions - some have
explicit support (like HTML with headers and paragraphs), while in some
the commenting feature can be used to visually split up the file (like
comments in source code).<br>
<br>
The exact nature and sequence of the partitions is dependent on the
nature of the file itself.<br>
<h2><a name="textConventions"></a>Generic text-based conventions</h2>
The majority (if not) all sources files are text-based. As a general
rule, text-based files adhere to the following conventions in the
LiveSupport project:<br>
<h3>UTF-8</h3>
Whenever possible, the text files should be saved in the <a
href="http://www.unicode.org/glossary/#UTF_8">UTF-8</a> character
encoding, to enable all characters within covered by the Unicode
character set.<br>
<h3>80 columns</h3>
Don't exceed 80 columns for any line in the file, unless it's
absolutely necessary (like having a single expression over 80 columns
that can not be broken up by a new-line character).<br>
<h3>no tabs - 4 spaces</h3>
Don't use the tab character in text files - use 4 spaces instead for
indentation.<br>
<h1>Specific conventions</h1>
For specific file conventions, see the separate descriptions below.<br>
<h2>html</h2>
<a href="htmlFileConventions.html">convention</a> and <a
href="templates/htmlDocumentTemplate.html">template</a>.<br>
<h2>shell scripts</h2>
<a href="shellScriptConventions.html">convention</a> and <a
href="templates/shellScriptTemplate.sh">template</a>.<br>
<h2>Makefiles</h2>
<a href="makefileConventions.html">convention</a> and <a
href="templates/Makefile">template</a>.<br>
<h2>Autoconf configure files<br>
</h2>
<a href="autoconfConfigureConventions.html">convention</a> and <a
href="templates/configure.ac">template</a>.<br>
<h2>C++ files</h2>
There are specific conventions for the header files and the source
files.<br>
<h3>C++ header files</h3>
<a href="cxxHeaderFileConventions.html">convention</a> and <a
href="templates/Bar.h">template</a>.<br>
<h3>C++ source files</h3>
<a href="cxxSourceFileConventions.html">convention</a> and <a
href="templates/Bar.cxx">template</a>.<br>
<h2>PHP scripts</h2>
<a href="phpFileConventions.html">convention</a> and <a
href="templates/phpScriptTemplate.phps">template</a>
(<a href="templates/phpScriptTemplate.php.txt">downlodable version</a>).<br>
<br>
</body>
</html>

View File

@ -1,93 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<title>HTML file conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the HTML file conventions for the LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
HTML pages written as part of the LiveSupport documentation should
conform to either the <a href="http://www.w3.org/TR/html4/">HTML 4.01
Transitional</a> or <a href="http://www.w3.org/TR/xhtml1/">XHTML 1.0
Transitional</a> specifications.<br>
<h1>Naming</h1>
HTML document files are named by the following rules:<br>
<ul>
<li>there are no spaces in the file name</li>
<li>the file name begins with a lower case letter</li>
<li>for file names containing multiple words, each additional word
begins with a capital letter</li>
<li>the extension of the file is <code>.html</code> (not <code>.htm</code>)<br>
</li>
</ul>
For example, a file with a single-word name may be named like: <code>single.html</code>,
whereas a file with multiple word name would be like: <code>multipleWordNameFile.html</code>.<br>
<h1>Structure</h1>
Each HTML file is partitioned by using the <code>&lt;h1&gt;</code>
element to mark the start and name of each partition. The file has the
following mandatory structure:<br>
<ul>
<li>Preface</li>
<li>Scope</li>
<li>Introduction?</li>
<li>Additional sections+</li>
</ul>
<h2>HTML header</h2>
The HTML header of the document should describe the title and author of
the document. The following HTML code should be inside the <code>&lt;head&gt;</code>
element for the HTML page:<br>
<br>
<pre><code> &lt;title&gt;The title of the file&lt;/title&gt;<br> &lt;meta name="author" content="$Author$"/&gt;<br></code></pre>
<h2>The Preface section</h2>
This section holds the following specific text:<br>
<br>
<blockquote>This document is part of the <a
href="http://livesupport.campware.org/">LiveSupport</a> project,
Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media Development Loan
Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
</blockquote>
<h2>The Scope section</h2>
This section describes the scope of the document in short form. This
details the areas which the document covers, and sometimes holds
references to related documents.<br>
<h2>The Introductions section</h2>
This optional section introduces the topic of the document to the
reader.<br>
<h2>Additional sections</h2>
These section hold the real content of the document, with freely named
sections and sub-sections. The normal HTML heading elements (<code>&lt;h1&gt;</code>,
<code>&lt;h2&gt;</code>, ...) should be used to mark and group the
sections. Sample source code included in the HTML document should be
put inside a <code>&lt;pre&gt;&lt;code&gt;...&lt;/code&gt;&lt;/pre&gt;</code>
block, like the following:<br>
<br>
<pre><code> // some sample code here<br> int i = 1;<br></code></pre>
<h1>Template</h1>
See a generic <a href="templates/htmlDocumentTemplate.html">template
for HTML documents</a>. You may freely copy this
template when starting to create a new document.<br>
<br>
</body>
</html>

View File

@ -1,63 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>LiveSupport development environment</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/index.html
$</li>
</ul>
<h1>Scope</h1>
This document gives an overview of the LiveSupport development
environment.<br>
<h1>Introduction</h1>
The LiveSupport project defines a uniform development environment to
enhance collaboration of participants in the project. The following
aspects of the environment are defined so far:<br>
<ul>
<li><a href="fileConventions.html">file conventions</a></li>
<li><a href="directoryStructure.html">directory structure</a></li>
<li><a href="buildEnvironment.html">build
environment</a></li>
<li><a href="installation.html">component installation guidelines</a></li>
</ul>
<br>
<br>
</body>
</html>

View File

@ -1,166 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Component Installation Guidelines</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &copy; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL:
svn+ssh://maroy@code.campware.org/home/svn/repo/livesupport/trunk/livesupport/doc/developmentEnvironment/buildEnvironment.html
$<br>
</li>
</ul>
<h1>Scope</h1>
This document describes the installation procedures used by the components of the LiveSupport project.<br>
<h1>Introduction</h1>
Component installation is a process more tricky than it seems at first.
For example, when using a binary package manager, the component is
configured and compiled on a different system (the one creating the
binary package) than the one it will run on at the end.<br>
<br>
Installation also involves related issues like uninstallation and product
version migration, which also have to be discussed here.<br>
<br>
<h1>Installation use cases</h1>
<h2>Basic installation</h2>
The basic installation procedure is as follows.<br>
<h4>1. &nbsp;setting up the sources</h4>
Get and unpack the source tarball(s), patch them if necessary. Make sure all tools required by the build are present.<br>
<h4>2. configuring the sources</h4>
Run the <code>configure</code> script on the unpacked source tree.<br>
<br>
Assumptions:<br>
<ul>
<li>don't assume that the directory prefixes supplied to <code>configure</code> will be the final installation directories for the component</li>
<li>don't assume that the machine used for compilation will be the same machine the tool is used on (think binary package building)</li>
</ul>
<h4>3. compile the sources</h4>
The sources are compiled (if needed) by the invoking&nbsp;<code></code><code>make all</code>.<br>
<h4>4. install the component</h4>
Install (copy) the component, possibly into a different directory than
what was specified at step 2. This basically involves copying relevant
files from the (built) source directory tree into a target directory
tree.<br>
<h4>5. post-installation setup</h4>
Do post-installation (post-copy) setup of the component. This might involve the following:<br>
<ul>
<li>create and customize configuration files</li>
<li>setup &amp; configure external resources, like:</li>
<ul>
<li>database tables</li>
<li>update configuration files of other tools used by this component</li>
</ul>
</ul>
Assumptions:<br>
<ul>
<li>don't assume that the component has been built (compiled) on the same system as the one doing post-installation setup.</li>
<li>running this step and pre-uninstallation should be a null operation</li>
</ul>
<br>
<h2>Basic uninstallation</h2>
The basic uninstallation procedure is the following.<br>
<h4>1. pre-uninstallation steps</h4>
Destroy any resources used by the component, with the components itself still being installed. This might involve:<br>
<ul>
<li>destroying databases</li>
<li>reverting configuration changes to external resources made in during post-installation setup</li>
</ul>
Assumptions:<br>
<ul>
<li>this is the inverse of the post-installation setup procedure</li>
</ul>
<h4>2. uninstall the component</h4>
Remove the components files from the filesystem.<br>
<br>
<h2>Upgrading</h2>
TODO: detail the upgrading procedure<br>
<br>
<h1>Provisions in the build environment</h1>
For the above goals to be met, the following structure is needed for each component in the build environment:<br>
<br>
<pre>componentX<br>|-- configure<br>|-- bin<br>| |-- autogen.sh<br>| |-- postInstall.sh<br>| `-- preUninstall.sh<br>`-- etc<br> |-- acinclude.m4<br> |-- configure.ac<br> `-- Makefile.in<br></pre>
<h2>Considerations about specific installation steps</h2>
<h4>1. &nbsp;setting up the sources</h4>
none: this step is external to the package.<br>
<h4>2. configuring the sources</h4>
Assumptions:
<ul>
<li>don't assume that the directory prefixes supplied to <code>configure</code> will be the final installation directories for the component</li>
<li>don't assume that the machine used for compilation will be the same machine the tool is used on (think binary package building)</li>
</ul>
<h4>3. compile the sources</h4>
Assumptions:<br>
<ul>
<li>No hard-coded references should be made to any resources the component depends on. For example:</li>
<ul>
<li>don't hard-code shared library paths that are being linked to</li>
<li>don't hard-code PHP include paths that are referenced</li>
<li>don't hard-code paths that were supplied to configure</li>
</ul>
</ul>
<h4>4. install the component</h4>
When using package managers, this step is usually two-fold:<br>
<ul>
<li><code>make install</code> is executed, with <code>${prefix}</code> and other variables overwritten, so that the package is installed into a temporary directory</li>
<li>the files installed by the call to <code>make install</code> will be copied to their true target location when the package build based on them is installed on a target system</li>
</ul>
Note that there is a lot of package manager-specific magic happening
between these two steps, and that the steps usually take place on
different machines (after all the package is only build on one, while
it will be installed on a miriad of systems).<br>
<br>
Assumptions:<br>
<ul>
<li><code>make install</code> really should just copy files, and neither do, nor assume anything more than that.</li>
<li><code>make install</code> should also copy all files needed to perform the post-installation setup and pre-uninstall steps.</li>
</ul>
<h4>5. post-installation setup</h4>
The <code>bin/postInstall.sh</code> script should be used to perform
the post-installation setup. The script should expect all variables it
needs to be supplied by command-line arguments.<br>
<br>
Assumptions:<br>
<ul>
<li>only files that were installed by <code>make install</code> can be used to perform the post-installation setup</li>
</ul>
<h2>Considerations about specific uninstallation steps</h2>
<h4>1. pre-uninstallation steps</h4>
The <code>bin/preUninstall.sh</code> script should be used to perform
the pre-uninstallation steps. The script should expect all variables it
needs to be supplied by command-line arguments.<br>
<br>
Assumptions:<br>
<ul>
<li>only files that were installed by <code>make install</code> can be used to perform the pre-uninstallation step</li>
</ul>
<h4>2. uninstall the component</h4>
none: this step is external to the package<br>
</body>
</html>

View File

@ -1,142 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Makefile conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the Makefile file conventions for the
LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file
conventions</a> in the LiveSupport
project. This document does not describe the mandatory targets for
Makefiles, see the <a href="buildEnvironment.html">build environment</a>
description for such details.<br>
<h1>Introduction</h1>
Makefiles are text-based files processed by <a
href="http://www.gnu.org/software/make/">GNU make</a>. As text based
files, they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<h1>Naming</h1>
Makefiles are always named <code>Makefile</code>. In case they are
input files for automake or autoconf, they can be named <code>Makefile.in</code>
or <code>Makefile.am</code>.<br>
<h1>Structure</h1>
Makefiles are partitioned by using the following 80 column wide
partitioning comment:<br>
<pre>#-------------------------------------------------------------------------------<br># This is the title of the partition<br>#-------------------------------------------------------------------------------<br></pre>
The file has the
following mandatory structure:<br>
<ul>
<li>Header</li>
<li>General command definitions</li>
<li>Basic directory and file definitions</li>
<li>Configuration parameters</li>
<li>Dependencies</li>
<li>Targets</li>
<li>Specific targets</li>
<li>Pattern rules<br>
</li>
</ul>
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>, but
starting with the Makefile comment character <code>#</code>. Note the
80
column wide partitioning delimiter enclosing the header.<br>
<pre>#-------------------------------------------------------------------------------<br># Copyright (c) 2004 Media Development Loan Fund<br>#<br># This file is part of the Campcaster project.<br># http://campcaster.campware.org/<br># To report bugs, send an e-mail to bugs@campware.org<br>#<br># Campcaster is free software; you can redistribute it and/or modify<br># it under the terms of the GNU General Public License as published by<br># the Free Software Foundation; either version 2 of the License, or<br># (at your option) any later version.<br>#<br># Campcaster is distributed in the hope that it will be useful,<br># but WITHOUT ANY WARRANTY; without even the implied warranty of<br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br># GNU General Public License for more details.<br>#<br># You should have received a copy of the GNU General Public License<br># along with Campcaster; if not, write to the Free Software<br># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>#<br>#<br># Author : $Author$<br># Version : $Revision$<br># Location : $URL$<br>#-------------------------------------------------------------------------------<br></pre>
<h2>General command definitions<br>
</h2>
This section contains definitions to commands used when executing the
make targets within this Makefile. All the commands should be collected
here, and a variable defined for them. This insures easy overview of
the commands the Makefile uses, and also makes it easy to migrate to
new commands, or the same commands in different locations.<br>
<br>
No external commands may be directly referenced outside this section.<br>
<h3>Sample</h3>
A sample general command definitions section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># General command definitions<br>#-------------------------------------------------------------------------------<br>MKDIR = mkdir -p<br>RM = rm -f<br>RMDIR = rm -rf<br>DOXYGEN = doxygen<br><br></pre>
<h2>Basic directory and file definitions</h2>
This section contains definitions for the directories and files
referenced in this Makefile. All directories referenced from the
Makefile, and all external files referenced by the Makefile should be
collected here. This insures easy adoption in case some external
directories or files change.<br>
<br>
No directories or external files may be directory referenced outside
this section.<br>
<br>
When referencing other LiveSupport modules, typically the following
variables are defined for them:<br>
<pre><code>MODULEX_DIR = ${MODULES_DIR}/moduleX<br>MODULEX_INCLUDE_DIR = ${MODULEX_DIR}/include<br>MODULEX_LIB_DIR = ${MODULEX_DIR}/lib<br>MODULEX_LIB = livesupport_modulex<br></code></pre>
<h3>Sample</h3>
A sample directory and file definition section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Basic directory and file definitions<br>#-------------------------------------------------------------------------------<br>BASE_DIR = .<br>DOC_DIR = ${BASE_DIR}/doc<br>DOXYGEN_DIR = ${DOC_DIR}/doxygen<br>ETC_DIR = ${BASE_DIR}/etc<br>SRC_DIR = ${BASE_DIR}/src<br>TMP_DIR = ${BASE_DIR}/tmp<br><br><br>USR_DIR = ${BASE_DIR}/../../usr<br>USR_INCLUDE_DIR = ${USR_DIR}/include<br>USR_LIB_DIR = ${USR_DIR}/lib<br>BOOST_INCLUDE_DIR = ${USR_INCLUDE_DIR}/boost-1_31<br>LIBXMLPP_INCLUDE_DIR = ${USR_INCLUDE_DIR}/libxml++-1.0<br><br>MODULES_DIR = ${BASE_DIR}/../../modules<br><br>HELLOLIB_DIR = ${MODULES_DIR}/hello<br>HELLOLIB_INCLUDE_DIR = ${HELLOLIB_DIR}/include<br>HELLOLIB_LIB_DIR = ${HELLOLIB_DIR}/lib<br>HELLOLIB_LIB = livesupport_hello<br><br>VPATH = ${SRC_DIR}<br><br>HELLO_EXE = ${TMP_DIR}/hello<br><br>DOXYGEN_CONFIG = ${ETC_DIR}/doxygen.config<br><br></pre>
<h2>Configuration parameters</h2>
This section contains the parameters passed to the building tools
(compiler, linker, etc.) When invoking building tools, they should be
parametrized by the definitions made here.<br>
<h3>Sample<br>
</h3>
A sample configuration parameters section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Configuration parameters<br>#-------------------------------------------------------------------------------<br>CPPFLAGS = <br>CXXFLAGS = -pedantic -Wall \<br> &nbsp;-I${USR_INCLUDE_DIR} -I${HELLOLIB_INCLUDE_DIR} \<br> -I${INCLUDE_DIR} -I${TMP_DIR}<br>LDFLAGS = -L${USR_LIB_DIR} -L${HELLOLIB_LIB_DIR} -L${LIB_DIR}<br><br></pre>
<h2>Dependencies</h2>
The dependencies section lists the objects that are build by implicit
rules, and that main targets depend on. This is the place where all
object files are listed, basically, for each library or executable.<br>
<br>
No object files that are built by this Makefile should be directly
referred to outside this section.<br>
<h3>Sample</h3>
A sample dependencies section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Dependencies<br>#-------------------------------------------------------------------------------<br>HELLO_EXE_OBJS = ${TMP_DIR}/main.o<br><br></pre>
<h2>Targets</h2>
This section lists all the explicit, external targets for the makefile.
For a list of targets required, see the <a href="buildEnvironment.html">description</a>
of the build environment. All targets in this section are marked as
.PHONY, as these targets are not building the files they are named
after.<br>
<br>
No explicit targets should be defined in the Makefile outside this
directory.<br>
<h3>Sample</h3>
A sample targets section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Targets<br>#-------------------------------------------------------------------------------<br>.PHONY: all dir_setup doc clean docclean depclean distclean<br> <br>all: dir_setup ${HELLO_EXE}<br> <br>dir_setup: ${TMP_DIR} ${DOXYGEN_DIR}<br> <br>doc:<br> ${DOXYGEN} ${DOXYGEN_CONFIG}<br> <br>clean:<br> ${RM} ${HELLO_EXE_OBJS} ${HELLO_EXE}<br> <br>docclean:<br> ${RMDIR} ${DOXYGEN_DIR}/html<br> <br>depclean: clean<br> <br>distclean: clean docclean<br> ${RMDIR} ${TMP_DIR}/config* ${TMP_DIR}/autom4te*<br> <br></pre>
<h2>Specific targets</h2>
This section defines the targets for files to be built by the Makefile.
These are the targets that specify how files are built, but are not
covered by pattern rules.<br>
<h3>Sample</h3>
A sample specific targets section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Specific targets<br>#-------------------------------------------------------------------------------<br>${HELLO_EXE}: ${HELLO_EXE_OBJS}<br> ${CXX} ${LDFLAGS} -o $@ $^ -l${HELLOLIB_LIB}<br> <br>${TMP_DIR}:<br> ${MKDIR} ${TMP_DIR}<br> <br>${DOXYGEN_DIR}:<br> ${MKDIR} ${DOXYGEN_DIR}<br> <br></pre>
<h2>Pattern rules</h2>
Pattern rules are the generic rules to build target files from object
files. Define these pattern rules in this section.<br>
<br>
No pattern rules should exist outside this section.<br>
<h3>Sample</h3>
A sample pattern rules section follows.<br>
<pre>#-------------------------------------------------------------------------------<br># Pattern rules<br>#-------------------------------------------------------------------------------<br>${TMP_DIR}/%.o : ${SRC_DIR}/%.cxx<br> ${CXX} ${CPPFLAGS} ${CXXFLAGS} -c -o $@ $&lt;<br><br></pre>
<br>
<h1>Template</h1>
See a generic <a href="templates/Makefile">template
for Makefiles</a>. You may freely copy this
template when starting to create a new Makefile.<br>
<br>
</body>
</html>

View File

@ -1,136 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<title>PHP file conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the PHP script file conventions for the LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
PHP scripts are text-based files containing PHP class definitions and/or commands.<br/>
They should adhere to the <a
href="http://pear.php.net/manual/en/standards.php">PEAR coding standards
conventions</a>.<br>
As text based files, they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<h1>Naming</h1>
A PHP script containing only class definition should have filename which reflects the class,
it is implementing.
Class names begin with a capital letter, followed by lower case letters.
In case of a multiple word file name, the first letter of each word is
capitalized.<br/>
Other PHP scripts should have name starting with lowecase letter.<br/>
PHP script files are named by the following rules:<br>
<ul>
<li>there are no spaces in the file name</li>
<li>for file names containing multiple words, each additional word
begins with a capital letter</li>
<li>the extension of the file is <code>.php</code><br>
</li>
</ul>
<h1>Structure</h1>
PHP scripts are partitioned by using the following 80 column wide partitioning comments:<br/>
<pre>
/* ==================================================== name of the partition */
</pre>
and
<pre>
/* ------------------------------------------------- name of the subpartition */
</pre>
The file has the following mandatory structure:<br>
<ul>
<li>PHP starting tag <code>&lt;?php </code></li>
<li>Header</li>
<li>Defines&nbsp;?</li>
<li>Include files&nbsp;?</li>
<li>Code sections&nbsp;+</li>
<li>PHP ending tag <code>?&gt; </code></li>
</ul>
Because PHP is in-HTML embedable script language, it is possible to mix PHP and HTML code
using PHP tags <code>&lt;?php</code> and <code>?&gt;</code>. This mixing approach is little bit
obsolete and it is better to use pure PHP (with structure described above) and some template system to generate HTML.
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>, but
are enclosed in the PHP multiline comments <code>/* */</code>. Note the 80
column wide partitioning delimiter enclosing the header.<br>
<pre>
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
------------------------------------------------------------------------------*/
</pre>
<h2>Defines<br>
</h2>
This section contains all the constant defines, similar as:<br/>
<br/>
<code>define('CONSTAT_NAME', 10);</code><br/>
<br/>
<h2>Include files<br>
</h2>
This section contains all the include files that the script needs
to include.
The include files are listed in
a most generic to most specific order: first PEAR classes, then
other LiveSupport module include files, and finally include files from
the same module / product are listed.<br>
Is much safer to use <code>include_once</code> or <code>require_once</code>, not the original versions
of this statement.<br/>
<br>
<h2>Code sections</h2>
This sections contain class definitions, function definitions or runable PHP commands.<br/>
<h1>Template</h1>
See a generic <a href="templates/phpScriptTemplate.phps">template
for PHP scripts</a>.
You may freely <a href="templates/phpScriptTemplate.php.txt">download</a> and copy this
template when starting to create a new script.<br>
<br>
</body>
</html>

View File

@ -1,76 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>shell script conventions</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://campcaster.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes the shell script file conventions for the
LiveSupport
project. See also the generic description of the <a
href="fileConventions.html">file
conventions</a> in the LiveSupport
project.<br>
<h1>Introduction</h1>
Shell scripts are text-based executable shell command files. As text
based files, they should adhere to the <a
href="fileConventions.html#textConventions">generic text-based
conventions</a>.<br>
<h1>Naming</h1>
Shell script files are named by the following rules:<br>
<ul>
<li>there are no spaces in the file name</li>
<li>the file name begins with a lower case letter</li>
<li>for file names containing multiple words, each additional word
begins with a capital letter</li>
<li>the extension of the file is <code>.sh</code><br>
</li>
</ul>
For example, a file with a single-word name may be named like: <code>single.sh</code>,
whereas a file with multiple word name would be like: <code>multipleWordNameFile.sh</code>.<br>
<h1>Structure</h1>
Shell script files are partitioned by using the following 80 column
wide partitioning comment:<br>
<pre>#-------------------------------------------------------------------------------<br># This is the title of the partition<br>#-------------------------------------------------------------------------------<br></pre>
The file has the
following mandatory structure:<br>
<ul>
<li>Reference to the shell<br>
</li>
<li>Header</li>
<li>Additional sections+</li>
</ul>
<h2>Reference to the shell<br>
</h2>
This is the mandatory reference to the shell executable each script has
to begin with:<br>
<pre><code>#!/bin/sh</code><br></pre>
<h2>Header</h2>
The header holds all information mandated by the <a
href="fileConventions.html#header">generic guidelines</a>, but
starting with the shell comment character <code>#</code>. Note the 80
column wide partitioning delimiter enclosing the header.<br>
<pre>#-------------------------------------------------------------------------------<br># Copyright (c) 2004 Media Development Loan Fund<br>#<br># This file is part of the Campcaster project.<br># http://campcaster.campware.org/<br># To report bugs, send an e-mail to bugs@campware.org<br>#<br># Campcaster is free software; you can redistribute it and/or modify<br># it under the terms of the GNU General Public License as published by<br># the Free Software Foundation; either version 2 of the License, or<br># (at your option) any later version.<br>#<br># Campcaster is distributed in the hope that it will be useful,<br># but WITHOUT ANY WARRANTY; without even the implied warranty of<br># MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the<br># GNU General Public License for more details.<br>#<br># You should have received a copy of the GNU General Public License<br># along with Campcaster; if not, write to the Free Software<br># Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA<br>#<br>#<br># Author : $Author$<br># Version : $Revision$<br># Location : $URL$<br>#-------------------------------------------------------------------------------<br></pre>
<h2>Additional sections</h2>
Additional sections contain the executing code of the script. Bigger
parts of the script may be partitioned by the partitioning commend seen
above.<br>
<h1>Template</h1>
See a generic <a href="templates/shellScriptTemplate.sh">template
for shell scripts</a>. You may freely copy this
template when starting to create a new document.<br>
<br>
</body>
</html>

View File

@ -1,70 +0,0 @@
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
------------------------------------------------------------------------------*/
/* =============================================== include files & namespaces */
#ifdef HAVE_CONFIG_H
#include "configure.h"
#endif
#include <LiveSupport/Foo/Bar.h>
using namespace LiveSupport::Core;
using namespace LiveSupport::Bar;
/* =================================================== local data structures */
/* ================================================ local constants & macros */
/*------------------------------------------------------------------------------
* Our famous foo string.
*----------------------------------------------------------------------------*/
const std::string Bar::fooStr = "foo";
/* =============================================== local function prototypes */
/* ============================================================= module code */
/*------------------------------------------------------------------------------
* Return the famous bar string.
*----------------------------------------------------------------------------*/
const std::string
Bar :: sayBar(void) throw (std::exception)
{
if (barInt) {
throw std::exception();
}
return barStr;
}

View File

@ -1,111 +0,0 @@
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
------------------------------------------------------------------------------*/
#ifndef LiveSupport_Foo_Bar_h
#define LiveSupport_Foo_Bar_H
#ifndef __cplusplus
#error This is a C++ include file
#endif
/* =============================================== include files & namespaces */
#ifdef HAVE_CONFIG_H
#include "configure.h"
#endif
#include <string>
namespace LiveSupport {
namespace Foo {
using namespace LiveSupport::Core;
/* ================================================================ constants */
/* =================================================================== macros */
/* =============================================================== data types */
/**
* Bar class.
* This does nothing.
*
* @author $Author$
* @version $Revision$
*/
class Bar
{
private:
/**
* A static member variable.
*/
static const std::string barStr;
/**
* A member variable.
*/
int barInt;
public:
/**
* Default constructor.
*/
Bar (void) throw ()
{
}
/**
* Say something.
*
* @param parameter a parameter we don't care about.
* @return the bar string.
* @exception std::exception on some problems.
*/
const std::string
sayBar (void) throw (std::exception)
{
return barStr;
}
};
/* ================================================= external data structures */
/* ====================================================== function prototypes */
} // namespace Foo
} // namespace LiveSupport
#endif // LiveSupport_Foo_Bar_H

View File

@ -1,123 +0,0 @@
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# General command definitions
#-------------------------------------------------------------------------------
MKDIR = mkdir -p
RM = rm -f
RMDIR = rm -rf
DOXYGEN = doxygen
#-------------------------------------------------------------------------------
# Basic directory and file definitions
#-------------------------------------------------------------------------------
BASE_DIR = .
DOC_DIR = ${BASE_DIR}/doc
DOXYGEN_DIR = ${DOC_DIR}/doxygen
ETC_DIR = ${BASE_DIR}/etc
SRC_DIR = ${BASE_DIR}/src
TMP_DIR = ${BASE_DIR}/tmp
VPATH = ${SRC_DIR}
MODULES_DIR = ${BASE_DIR}/../../modules
HELLOLIB_DIR = ${MODULES_DIR}/hello
HELLOLIB_INCLUDE_DIR = ${HELLOLIB_DIR}/include
HELLOLIB_LIB_DIR = ${HELLOLIB_DIR}/lib
HELLOLIB_LIB = livesupport_hello
HELLO_EXE = ${TMP_DIR}/hello
DOXYGEN_CONFIG = ${ETC_DIR}/doxygen.config
#-------------------------------------------------------------------------------
# Configuration parameters
#-------------------------------------------------------------------------------
CPPFLAGS =
CXXFLAGS = -pedantic -Wall \
-I${TMP_DIR} -I${HELLOLIB_INCLUDE_DIR}
LDFLAGS = -L${HELLOLIB_LIB_DIR}
#-------------------------------------------------------------------------------
# Dependencies
#-------------------------------------------------------------------------------
HELLO_EXE_OBJS = ${TMP_DIR}/main.o
#-------------------------------------------------------------------------------
# Targets
#-------------------------------------------------------------------------------
.PHONY: all dir_setup doc clean docclean depclean distclean
all: ${HELLOLIB_LIB} dir_setup ${HELLO_EXE}
dir_setup: ${TMP_DIR} ${DOXYGEN_DIR}
doc:
${DOXYGEN} ${DOXYGEN_CONFIG}
clean:
${RM} ${HELLO_EXE_OBJS} ${HELLO_EXE}
docclean:
${RMDIR} ${DOXYGEN_DIR}/html
depclean: clean
${MAKE} -C ${HELLOLIB_DIR} clean
distclean: clean docclean
${RMDIR} ${TMP_DIR}/config* ${TMP_DIR}/autom4te*
#-------------------------------------------------------------------------------
# Specific targets
#-------------------------------------------------------------------------------
${HELLO_EXE}: ${HELLO_EXE_OBJS}
${CXX} ${LDFLAGS} -o $@ $^ -l${HELLOLIB_LIB}
${TMP_DIR}:
${MKDIR} ${TMP_DIR}
${DOXYGEN_DIR}:
${MKDIR} ${DOXYGEN_DIR}
${HELLOLIB_LIB}:
${MAKE} -C ${HELLOLIB_DIR} all
#-------------------------------------------------------------------------------
# Pattern rules
#-------------------------------------------------------------------------------
${TMP_DIR}/%.o : ${SRC_DIR}/%.cxx
${CXX} ${CPPFLAGS} ${CXXFLAGS} -c -o $@ $<

View File

@ -1,49 +0,0 @@
dnl-----------------------------------------------------------------------------
dnl Copyright (c) 2004 Media Development Loan Fund
dnl
dnl This file is part of the Campcaster project.
dnl http://campcaster.campware.org/
dnl To report bugs, send an e-mail to bugs@campware.org
dnl
dnl Campcaster is free software; you can redistribute it and/or modify
dnl it under the terms of the GNU General Public License as published by
dnl the Free Software Foundation; either version 2 of the License, or
dnl (at your option) any later version.
dnl
dnl Campcaster is distributed in the hope that it will be useful,
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
dnl GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License
dnl along with Campcaster; if not, write to the Free Software
dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
dnl
dnl
dnl Author : $Author$
dnl Version : $Revision$
dnl Location : $URL$
dnl-----------------------------------------------------------------------------
dnl-----------------------------------------------------------------------------
dnl NOTE: Run all configure related scripts from the tmp directory of the
dnl project.
dnl This is due to the fact that configure spreads a lot of trash around,
dnl like atom4te cache directories, config.* files, etc. into the directory
dnl it is being run from. We clearly don't want these in our base directory.
dnl-----------------------------------------------------------------------------
AC_INIT(Hello, 1.0, bugs@campware.org)
AC_PREREQ(2.59)
AC_COPYRIGHT([Copyright (c) 2004 Media Development Loan Fund under the GNU GPL])
AC_REVISION($Revision$)
AC_CONFIG_SRCDIR(../src/main.cxx)
AC_CONFIG_HEADERS(configure.h)
AC_PROG_CXX()
AC_CHECK_HEADERS(unistd.h getopt.h)
AC_CONFIG_FILES(../Makefile:../etc/Makefile.in)
AC_OUTPUT()

View File

@ -1,29 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8"
http-equiv="content-type">
<title>HTML document template</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
Describe the scope of your document here, e.g. what topic it is all
about<br>
<h1>Introduction</h1>
Introduce the content of the document to your reader<br>
<h1>Additional sections</h1>
Write about your topic in details here..<br>
<br>
</body>
</html>

View File

@ -1,98 +0,0 @@
<?php
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
------------------------------------------------------------------------------*/
define('CONSTANT1', 10);
define('CONSTANT2', 20);
define('ERROR_CODE', 404);
require_once "DB.php";
require_once "../../../othermodule/var/ClassName.php";
require_once "LocalBaseClass.php";
/**
* Example class
*
* Description of Example class
*
* @author $Author$
* @version $Revision$
* @see LocalBaseClass
*/
class Example extends LocalBaseClass{
var $property1;
var $property2;
/* ========================================================== constructor */
/**
* Constructor
*
* @param paramName parameter type, description
* @return return type, description
*/
function Example($paramName)
{
parent::LocalBaseClass($paramName);
/* commands here */
}
/* ======================================================= public methods */
/**
* First Example method
*
* @param paramName parameter type, description
* @return return type, description
*/
function firstExampleMethod($paramName)
{
/* commands here */
return $variable;
}
/**
* Second Example method
*
* @param paramName parameter type, description
* @return return type, description
*/
function secondExampleMethod($paramName)
{
/* commands here */
return $variable;
}
/* ----------------------------------------------------------- subsection */
/* ---------------------------------------------------- redefined methods */
/* ==================================================== "private" methods */
/* =============================================== test and debug methods */
}
/* optional runable code here */
?>

View File

@ -1,98 +0,0 @@
<?php
/*------------------------------------------------------------------------------
Copyright (c) 2004 Media Development Loan Fund
This file is part of the Campcaster project.
http://campcaster.campware.org/
To report bugs, send an e-mail to bugs@campware.org
Campcaster 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.
Campcaster 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 Campcaster; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author : $Author$
Version : $Revision$
Location : $URL$
------------------------------------------------------------------------------*/
define('CONSTANT1', 10);
define('CONSTANT2', 20);
define('ERROR_CODE', 404);
require_once "DB.php";
require_once "../../../othermodule/var/ClassName.php";
require_once "LocalBaseClass.php";
/**
* Example class
*
* Description of Example class
*
* @author $Author$
* @version $Revision$
* @see LocalBaseClass
*/
class Example extends LocalBaseClass{
var $property1;
var $property2;
/* ========================================================== constructor */
/**
* Constructor
*
* @param paramName parameter type, description
* @return return type, description
*/
function Example($paramName)
{
parent::LocalBaseClass($paramName);
/* commands here */
}
/* ======================================================= public methods */
/**
* First Example method
*
* @param paramName parameter type, description
* @return return type, description
*/
function firstExampleMethod($paramName)
{
/* commands here */
return $variable;
}
/**
* Second Example method
*
* @param paramName parameter type, description
* @return return type, description
*/
function secondExampleMethod($paramName)
{
/* commands here */
return $variable;
}
/* ----------------------------------------------------------- subsection */
/* ---------------------------------------------------- redefined methods */
/* ==================================================== "private" methods */
/* =============================================== test and debug methods */
}
/* optional runable code here */
?>

View File

@ -1,33 +0,0 @@
#!/bin/sh
#-------------------------------------------------------------------------------
# Copyright (c) 2004 Media Development Loan Fund
#
# This file is part of the Campcaster project.
# http://campcaster.campware.org/
# To report bugs, send an e-mail to bugs@campware.org
#
# Campcaster 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.
#
# Campcaster 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 Campcaster; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
#
# Author : $Author$
# Version : $Revision$
# Location : $URL$
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# This script does nothing else, but says hello.
#-------------------------------------------------------------------------------
echo "Hello!";

View File

@ -1,109 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>LiveSupport developer tools</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document lists the development tools that are expected to be on a
system that intends to compile and develop LiveSupport.<br>
<h1>Introduction</h1>
LiveSupport expects a generic development environment on the system to
be built, which is basically a generic install of a POSIX-compliant
operating system, with a set of GNU development tools and some
utilities.<br>
<h1>Tools</h1>
The following tools are expected on the development system:<br>
<ul>
<li><a href="http://sources.redhat.com/binutils/">binutils</a> &gt;=
2.13</li>
<li><a href="http://gcc.gnu.org/">gcc</a> &gt;= 3.3</li>
<li><a href="http://www.gnu.org/software/make/make.html">make</a>
&gt;= 3.80</li>
<li><a href="http://www.gnu.org/software/automake/">automake</a><br>
</li>
<li><a href="http://www.gnu.org/software/autoconf/">autoconf</a>
&gt;= 2.5<br>
(If you have an older version installed as well, don't forget to set
the
environment variable WANT_AUTOCONF_2_5="1" before compiling the tools.)</li>
<li><a href="http://www.gnu.org/software/libtool/libtool.html">libtool</a><br>
</li>
<li><a href="http://www.freedesktop.org/software/pkgconfig/">pkgconfig</a>
&gt;= 0.15</li>
<li><a href="http://www.fsf.org/software/patch/patch.html">patch</a>
&gt;= 2.5.9<br>
</li>
<li><a href="http://www.doxygen.org/">doxygen</a></li>
<li><a href="http://www.gnu.org/software/tar/">tar</a></li>
<li><a href="http://www.gzip.org/">gzip</a></li>
<li><a href="http://info-zip.org/masters/ftp.info-zip.org/UnZip.html">unzip</a></li>
<li><a href="http://curl.haxx.se/">curl</a><br>
<!-- to compile gstreamer; begin -->
<li><a href="http://www.gnu.org/software/bison/bison.html">bison</a> &gt;= 1.35<br>
<li><a href="http://www.gnu.org/software/flex/flex.html">flex</a>
<!-- to compile gstreamer; end -->
</li>
</ul>
<h1>Libraries</h1>
Note that if you are installing these libraries as binary packages, then you
will need to install the "development" package, as well. (For example, for
libpng, you might need to install the <code>libpng</code> and
<code>libpng-dev</code> packages. The package names vary by distribution.)
<br>
<h2>Required libraries<br>
</h2>
The following development libraries are expected on the development
system:<br>
<ul>
<li><a href="http://www.unixodbc.org/">unixODBC</a> &gt;= 2.2</li>
<li><a href="http://xorg.freedesktop.org/">xorg-x11</a> or <a
href="http://www.xfree86.org/">XFree86</a></li>
<li><a href="http://freedesktop.org/Software/fontconfig">fontconfig</a><br>
</li>
<li><a href="http://www.libpng.org/">libpng</a></li>
<li><a href="http://www.ijg.org/">libjpeg</a><br>
</li>
<li><a href="http://www.openssl.org/">openssl</a></li>
<li><a href="http://xmlsoft.org/">libxml2</a></li>
<li><a href="http://directory.fsf.org/libs/popt.html">popt</a></li>
<li><a href="http://www.alsa-project.org/">ALSA libraries</a><br>
</li>
<li><a href="http://mad.sourceforge.net/">libid3tag</a><br>
</li>
<li><a href="http://mad.sourceforge.net/">libmad</a></li>
<li><a href="http://www.xiph.org/ogg/vorbis/">libogg</a></li>
<li><a href="http://www.xiph.org/ogg/vorbis/">libvorbis</a></li>
<li><a href="http://www.bzip.org">bzip2</a></li>
<!-- bzip2 headers are only required if boost will be compiled -->
</ul>
<h2>Recommended libraries</h2>
The following libraries are used by LiveSupport. If they are not found
on the system, LiveSupport will compile them from sources on its own.
While having these libraries is not necessary, Compiling takes longer
without them, and the generated LiveSupport directory will be larger as
well.<br>
<ul>
<li><a href="http://www.boost.org/">boost</a> &gt;= 1.33.1</li>
<li><a href="http://www.gtk.org/">gtk+</a> &gt;= 2.6.10</li>
<li><a href="http://www.gtkmm.org/">gtkmm</a> &gt;= 2.6.5</li>
<li><a href="http://www.ibm.com/software/globalization/icu/">icu</a>
&gt;= 3.0</li>
<li><a href="http://libxmlplusplus.sourceforge.net/">libxml++</a>
&gt;= 2.8.1</li>
</ul>
</body>
</html>

View File

@ -1 +0,0 @@
keep me

View File

@ -1,213 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>Getting started with the LiveSupport development environment</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes how to set up the LiveSupport development
environment.<br>
<h1>Introduction</h1>
LiveSupport uses a well-defined <a
href="developmentEnvironment/index.html">development environment</a>.
Most of the LiveSupport-specific files are included in the version
control system, but some preparation and setup has to be made on system
used to develop LiveSupport as well.<br>
<br>
There is a simplified and Ubuntu-centric version of this document in the
<a href="http://code.campware.org/projects/livesupport/wiki/DevelopmentEnvironment">
LiveSupport Trac wiki</a>.
<h1>Steps<br>
</h1>
The following steps needed to be taken for setting up the LiveSupport
development environment.<br>
<ul>
<li>install development tools<br>
</li>
<li>set up additional system resources</li>
<li>check out the sources</li>
<li>configure the environment<br>
</li>
<li>set up tools used by LiveSupport</li>
<li>personalize your development environment<br>
</li>
</ul>
<h2>Install development tools</h2>
Install all the tools needed for the development of LiveSupport. Please
see the <a href="developmentTools.html">development tools</a> document
for a list of tools needed.<br>
<h2>Set up additional system resources</h2>
The LiveSupport development environment uses some system resources,
that are not reasonable to include in the environment itself.<br>
<h3>Test database<br>
</h3>
One such
resource is an ODBC datasource to a test database. This
database has to be accessible for executing the test suites and
applications within the LiveSupport development environment.<br>
<br>
First, LiveSupport expects a <a href="http://www.postgresql.org/">PostgreSQL</a>
database, and an ODBC
Data Source accessible to it through <a href="http://www.unixodbc.org/">unixODBC</a>.
Please refer to the documentation of these tools to set them up.<br>
<br>
The test environment assumes that it can connect to the PostgreSQL
database as localhost via a TCP/IP connection, as the user test.<br>
<br>
In newer versions of PostgreSQL (&ge; 8), TCP/IP connections from localhost
are enabled by default. If you are using an older version, do the following:
<ul>
<li>edit <code>postgresql.conf</code>
(usually <code>/var/lib/postgres/data/postgresql.conf</code>), to have
to following line:<br>
<br>
<pre><code>tcpip_socket = true</code></pre>
<br>
<li> and also edit <code>pg_hba.conf</code> (usually
<code>/var/lib/postgres/data/pg_hba.conf</code>)
to include the following line, before other lines related to access
through localhost:<br>
<br>
<pre><code>host&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 255.255.255.255&nbsp;&nbsp; password</code></pre>
<br>
After the above two manual edits to the PostgreSQL configuration,
restart the postgresql daemon.<br>
</ul>
<h3>Web server<br>
</h3>
Second, LiveSupport expects:
<ul>
<li><a href="http://httpd.apache.org/">Apache</a> httpd server
running on the development computer</li>
<li><a href="http://www.php.net/">PHP</a> interpreter</li>
<li><a href="http://www.php.net/">PHP</a> apache module</li>
<li> PHP iconv extension (--with-iconv)<br>
<li><a href="http://www.php.net/domxml">DOMXML</a> PHP extension - an
XMLv2 module for PHP<br>
</li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a> support in PHP</li>
<li><a href="http://pear.php.net/">PEAR</a> </li>
</ul>
<h3>Apache group membership</h3>
The setup script assumes that the current user is a member of the Apache group.
Add the user who will be using the development environment to this group;
it's usually called <code>apache</code>; on debian-based systems, it is
called <code>www-data</code>.
<h3>Apache configuration</h3>
The storage server uses some directives which are not enabled by default.
To enable them, find the configuration file for the userdir module of
apache, and change the <code>AllowOverride</code> directive in the
<code>&lt;Directory /home/*/public_html&gt;</code> section to <code>All</code>.
<br><br>
<h2>Check out the sources</h2>
The LiveSupport development directory tree can be accessed anonymously via
<a href="http://subversion.tigris.org/">Subversion</a>, at
<code>svn+ssh://code.campware.org/home/svn/repo/livesupport/trunk/livesupport</code>.
The following Subversion command
would check out the development tree:<br><br>
<pre><code>svn checkout svn+ssh://code.campware.org/home/svn/repo/livesupport/trunk/livesupport</code></pre><br>
This will check out and create the LiveSupport development <a
href="developmentEnvironment/directoryStructure.html">directory
structure</a>.<br>
<br>
<h2>Configure the environment</h2>
First, you need to create the database and ODBC data source used by
LiveSupport. This is done most easily by running the script
<code>livesupport/bin/user_setup_db.sh</code>.
Run the scripts as root, and provide your user name with the
<code>--user</code> option:
<pre><code>
cd livesupport
sudo ./bin/user_setup_db.sh --user=&lt;ls_developer_user&gt;
</code></pre>
<br>
The script will set up the following resources:<br>
<ul>
<li>a PostgreSQL user named <code>test</code> with the password
<code>test</code> (if it does not exist)</li>
<li>a PostgreSQL database named
<code>LiveSupport-&lt;ls_developer_user&gt;</code></li>
<li>an ODBC data source of the same name, with user name
and password <code>test</code></li>
</li>
</ul>
<br>
Next (and last), you compile the code and set up the configuration files.
Both are done by the script
<pre><code>
cd livesupport
./bin/setupDevelopmentEnvironment.sh --apache-group=&lt;apache_group&gt;
</code></pre>
<br>
This script will set up the libraries used by LiveSupport (by compiling
and installing them under livesupport/usr), and set up the development
environment for all LiveSupport modules.<br>
<br>
It will also create your personalized configuration files under
<code>~/.livesupport</code>, make certain directories writable for Apache
(this is where we need the current user to be a member of the
<code>apache</code> group), define a user-specific port for the scheduler
daemon, and create a symlink in <code>~/public_html/</code> to the PHP
entry points.<br>
<br>
After running the above script, the livesupport development environment
for the current user will be unique on the system, and will not
conflict with resources used by other developers. For example, the
LiveSupport HTML user interface for the user will be reachable at:<br>
<pre><code>
http://localhost/~&lt;ls_developer_user&gt;/livesupport/htmlUI/var
</code></pre>
<br>
<h2>Single-user setup</h2>
It is also possible to set up a shared configuration, instead of the
per-user setup described in the previous section.<br>
<br>
To do this, use the script <code>test_setup_db.sh</code> instead of
<code>user_setup_db.sh</code>. You will also need to manually execute
the commands in <code>setupDevelopmentEnvironment</code> up to, and not
including, the call to <code>user_setup.sh</code>; and manually execute
the "Setup storage server" and "Setup directory permissions" portions
of the <code>user_setup.sh</code> script. Finally, create a symlink
<code>livesupport</code> in the root data directory of the Apache server
which points to <code>livesupport/src/modules/</code>.
The address of the HTML interface will now be<br>
<pre><code>
http://localhost/livesupport/htmlUI/var
</code></pre>
<br>
After this, the development environment should work, using the default
configuration files. NOTE: this single-user method has not been used by any
developers for quite some time, so these instructions may be
out of date or incomplete.<br>
<br>
<h1>Ready to roll</h1>
With the above steps completed, the LiveSupport modules and products
are ready to be compiled and developed further. Have fun!<br>
<br>
<br>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 324 KiB

View File

@ -1,13 +0,0 @@
<html><head><title>final designs : livesupport</title></head>
<body>
<a href="livemode.gif" target="100%">master palette, live mode, cue, history, scratchpad and xfader</a><br>
<a href="advancedsearch.gif" target="100%">advanced search</a><br>
<a href="simple-browser.gif" target="100%">search : browser and simple search</a><br>
<a href="info.gif" target="100%">info palette</a><br>
<a href="uploadstream.gif" target="100%">upload stream</a><br>
<a href="editfile.gif" target="100%">edit file</a><br>
<a href="login_upload.gif" target="100%">login and upload palettes</a><br>
<a href="scheduler_week.gif" target="100%">scheduler, week view</a><br>
<a href="scheduler_day.gif" target="100%">scheduler, day view</a><br>
<a href="playlist_list_view.gif" target="100%">playlist, list view</a><br>
<a href="playlist_timeline_view.gif" target="100%">playlist, timeline view</a></body></html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 346 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 206 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,61 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>LiveSupport developer documentation</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document collects LiveSupport developer documentation, both
generated and handwritten.<br>
<h1>Introduction</h1>
The links below provide useful documentation for the LiveSupport
developer.<br>
<h1>Static documentation<br>
</h1>
<h2>User documentation</h2>
<ul>
<li><a href="quickstart/index.html">quickstart</a></li>
<li><a href="manual/index.html">manual</a></li>
</ul>
<h2>Developer documentation</h2>
<ul>
<li><a href="gettingStarted.html">getting started</a> with
LiveSupport development</li>
<li><a href="developmentTools.html">development tools</a> needed to
compile LiveSupport<br>
</li>
<li>LiveSupport <a href="developmentEnvironment/index.html">development
environment</a></li>
<li>UML <a href="model/index.html">model</a></li>
<li><a href="install.html">installation instructions</a></li>
<li><a href="release.html">release process</a></li>
<li><a href="studioLocalization.html">localizing LS Studio</a></li>
<li><a href="preferences.html">definitions of shared station/user preferences</a></li>
</li>
</ul>
<h1>Generated documentation</h1>
<ul>
<li>XML-RPC <a href="xml-rpc_doc/html/hierarchy.html">interface
description</a> for the scheduler daemon</li>
<li>C++ <a href="doxygen/html/index.html">class documentation</a></li>
<li>Unit test <a href="testResults.html">results</a></li>
<li>C++ code coverage <a href="coverage/index.html">results</a></li>
<li>flawfinder <a href="flawfinderReport.html">results</a></li>
<li>the list of <a href="gui/metadataFields.html">fields used in the
metadata</a> of audio clips and playlists</li>
</ul>
<br>
</body>
</html>

View File

@ -1,229 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type">
<title>LiveSupport installation documentation</title>
<meta content="$Author$" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright © 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document describes how to compile and install LiveSupport on your
system.<br>
<h1>Introduction</h1>
LiveSupport has an installation procedure to make sure LiveSupport will
work properly on your system. This procedure consists of the following
steps:<br>
<ul>
<li>installing required compilation tools</li>
<li>installing and configuring required external services</li>
<li>obtaining LiveSupport sources</li>
<li>compiling LiveSupport</li>
<li>installing LiveSupport</li>
<li>try it out</li>
</ul>
<h2>For the impatient</h2>
Those who think they know everything, the quick steps to install
LiveSupport are the following. (To run <code>make</code>, you need write
permissions in the <code>prefix</code> directory; to run
<code>make install</code> and <code>postInstallStation.sh</code>,
you need to be root.)
<pre><code>
wget http://switch.dl.sourceforge.net/sourceforge/livesupport/livesupport-&lt;version&gt;.tar.bz2
wget http://switch.dl.sourceforge.net/sourceforge/livesupport/livesupport-libraries-&lt;version&gt;.tar.bz2
tar xfj livesupport-&lt;version&gt;.tar.bz2
tar xfj livesupport-libraries-&lt;version&gt;.tar.bz2
cd livesupport-&lt;version&gt;
./configure --prefix=/usr/local/livesupport --with-apache-group=apache --with-www-docroot=/var/www
make
make install
./bin/postInstallStation.sh -d /usr/local/livesupport -g apache -r /var/www
/usr/local/livesupport/bin/scheduler.sh start
<br></code></pre>
Then try the URL <code>http://localhost/livesupport/</code>
and log in using username: <code>root</code>, password: <code>q</code>.<br>
<br>
Everyone else, please read the lines below carefully.<br>
<h1>Installing required compilation tools</h1>
Make sure that all the <a href="developmentTools.html">required compilation
tools and libraries</a> are installed. You can either install pre-packaged
versions, if they are provided for your distribution; or you can download
them from the URLs listed, and compile them yourself (follow the instructions
included with each tool and library).<br>
<h1>Installing and configuring required external services</h1>
LiveSupport depends on some external services to be able to run, most
importantly a PHP-capable web server (we assume apache), and a database
server (we assume PostgreSQL). <br>
<h2>Database</h2>
LiveSupport expects a <a href="http://www.postgresql.org/">PostgreSQL</a>
database, version 7.4 or later, to be installed on your system. You will
also need a postgresql driver for unixODBC; this may be in the unixODBC
package, or may need to be installed separately.<br>
<br>
The database will be accessed through TCP/IP, usually via the localhost
interface. To achieve this, make sure to make the following changes to
the PostgreSQL configuration files.<br>
<br>
Edit <code>postgresql.conf</code>
(usually <code>/var/lib/postgres/data/postgresql.conf</code>), to have
to following line:<br>
<br>
<pre><code>tcpip_socket = true</code></pre>
<br>
and also edit <code>pg_hba.conf</code> (usually <code>/var/lib/postgres/data/pg_hba.conf</code>)
to include the following line, before any other lines starting with "host":<br>
<br>
<pre><code>host&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; all&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 255.255.255.255&nbsp;&nbsp; password<br><br></code></pre>
These changes will make sure that the PostgreSQL database is accessible
via TCP/IP from localhost.<br>
<h2>Web server</h2>
LiveSupport expects an apache web server with PHP and some additional
PHP modules installed. In particular:
<ul>
<li><a href="http://httpd.apache.org/">Apache</a> httpd server,
either version 1.x or 2.x<br>
</li>
<li><a href="http://www.php.net/">PHP</a> interpreter</li>
<li><a href="http://www.php.net/">PHP</a> apache module</li>
<li><a href="http://www.php.net/domxml">DOMXML</a> PHP extension - an
XMLv2 module for PHP<br>
</li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a> support in PHP</li>
<li><a href="http://pear.php.net/">PEAR</a></li>
</ul>
Check php.ini file if "upload_max_filesize" fits the needs of an radio-station. On our experience, soundfiles can be up to 100MB.
If you changed this setting, increase "post_max_size" to something bigger than "upload_max_filesize".
<br><br>
Please note the user group your apache daemon is running as (usually <code>apache</code>
or <code>www-data</code>), you will need this information later. Later
on in this document, this group will be referred to as <code>&lt;apache-group&gt;</code>. For the automatic install scripts to work, the user
running them must either be <code>root</code>, or belong to
<code>&lt;apache-group&gt;</code>.<br>
<br>
Also note the document root directory for your apache installation
(usually <code>/var/www</code> or <code>/var/www/htdocs</code>
or <code>/var/www/&lt;yourhost&gt;/htdocs</code>). Later on in this
document, this directory will be referred to as <code>&lt;www-root&gt;</code>.<br>
<h2>ALSA</h2>
Please check if ALSA is installed and configured properly.
File /proc/asound/cards should contain entry(s) for your soundcard(s).
<br>
If not, maybe you do not have suitable ALSA module for your soundcard on the system. Search you package manager for "alsa-modules" and figure out which are suitable for your kernel version and architecture.
or one other from <a href="http://packages.debian.org/cgi-bin/search_packages.pl?version=stable&subword=1&exact=&arch=any&releases=all&case=insensitive&keywords=alsa-modules&searchon=names" target="_blank">http://packages.debian.org/cgi-bin/search_packages.pl...</a>.
<br>
Then run "alsaconf" and check /proc/asound/cards again.
<h1>Obtaining LiveSupport sources</h1>
LiveSupport sources come in two different tarballs:<br>
<ul>
<li><code>livesupport-&lt;version&gt;.tar.bz2</code> - the
LiveSupport source files<code><br>
</code></li>
<li><code>livesupport-libraries-&lt;version&gt;.tar.bz2</code> -
external libraries used by LiveSupport<code><br>
</code></li>
</ul>
Both files can be downloaded from <a
href="http://sourceforge.net/projects/livesupport/"><code>http://sourceforge.net/projects/livesupport/</code></a>.
<br>
<br>
After downloading the files, untar them in the same directory:<br>
<br>
<pre><code>tar xfj livesupport-&lt;version&gt;.tar.bz2<br>tar xfj livesupport-libraries-&lt;version&gt;.tar.bz2<br></code></pre>
<br>
which will create a <code>livesupport-&lt;version&gt;</code>
directory, with all the required files to compile and install
LiveSupport.<br>
<h1>Compiling LiveSupport</h1>
To compile LiveSupport, enter the LiveSupport directory, and execute
the following commands:<br>
<br>
<pre><code>cd livesupport-&lt;version&gt;<br>./configure </code><code>--prefix=/usr/local/livesupport --with-apache-group=apache --with-www-docroot=/var/www<br></code><code>make<br></code></pre>
<br>
Note that you need to have write permissions in the <code>prefix</code> directory
when you run <code>make</code>.
The configure options used above are the options most probably used:<br>
<br>
<pre><code>&nbsp; --prefix=PREFIX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; install architecture-independent files in PREFIX<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; [/usr/local]</code></pre>
The installation directory. Supply the previously
decided LiveSupport installation directory here, <code>&lt;ls-installdir&gt;</code>
(as mentioned above). A sensible value to use here is <code>/usr/local/livesupport</code>.<br>
<pre><code><br> --with-apache-group use apache running in the specified group (apache)<br><br></code></pre>
The user group the apache web server daemon runs at (see the section
above on installing apache). Supply the <code>&lt;apache-group&gt;</code>
value here, as mentioned above, which is usually either <code>apache</code>
or <code>www-data</code>.<br>
<br>
<pre> --with-www-docroot deploy LiveSupport under the specified docroot<br> (/var/www)<br><br></pre>
The document root of your apache installation (see the section above on
installing apache). Supply the <code>&lt;www-root&gt;</code>
value here, as mentioned above, which is usually <code>/var/www</code>
or <code>/var/www/htdocs</code>
or <code>/var/www/&lt;yourhost&gt;/htdocs.</code>
<span style="font-family: monospace;"><br>
<br>
</span>Compilation will take quite a while, so go have a tea, watch a
movie, relax,
etc.<br>
<br>
If you want the installation script to create the database tables used
by LiveSupport, consider using the following configure options:<br>
<br>
<pre> --with-create-database specify whether the LiveSupport database and database<br> user should be created (no)<br> --with-create-odbc-data-source<br> specify whether the ODBC data source for LiveSupport<br> should be created (no)<br> --with-init-database specify whether the LiveSupport database tables<br> should be initialized (no)<br> --with-configure-apache specify whether apache should be configured for<br> LiveSupport through its conf.d directory (no)<br><br><br></pre>
For a full list of options, see <code>./configure --help</code><br>
<h1>Installing LiveSupport<br>
</h1>
After a successful compilation, to install LiveSupport, you can install
LiveSupport by typing:<br>
<br>
<pre><code>make install</code><br></pre>
<br>
This will install LiveSupport into the directory specified to the
configure script. It will also create necessary database tables,
depending on the invocation of the configure script. You need to run
<code>make install</code> as root.<br>
<br>
<h1>Try it out</h1>
After a successful installation, the LiveSupport scheduler has to be
started. The scheduler has a System V runlevel-style startup script,
under &lt;ls-installdir&gt;/bin/scheduler.sh. To start the scheduler,
simply invoke:<br>
<br>
<pre><code>&lt;ls-installdir&gt;/bin/scheduler.sh start</code><br></pre>
<br>
The only thing left to do is to try out the LiveSupport web interface
or the GUI application.<br>
<br>
For the web interface, point your browser to the following URL: <code>http://&lt;yourhost&gt;/livesupport/</code>
.<br>
<br>
The GUI application can be started by issuing the following command:<br>
<br>
<pre><code>&lt;ls-installdir&gt;/bin/gLiveSupport.sh</code><br></pre>
<br>
For your first login, use the following values:<br>
<ul>
<li>username: root</li>
<li>password: q</li>
</ul>
Have fun!<br>
<br>
<br>
<pre><code></code></pre>
</body>
</html>

View File

@ -1,101 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3 (Win32)">
<META NAME="CREATED" CONTENT="20050218;18422000">
<META NAME="CHANGED" CONTENT="20050218;18520000">
<STYLE>
<!--
BODY,DIV,TABLE,THEAD,TBODY,TFOOT,TR,TH,TD,P { font-family:"Arial"; font-size:x-small }
-->
</STYLE>
</HEAD>
<BODY TEXT="#000000">
<TABLE FRAME=VOID CELLSPACING=0 COLS=4 RULES=GROUPS BORDER=1>
<COLGROUP><COL WIDTH=255><COL WIDTH=313><COL WIDTH=316><COL WIDTH=516></COLGROUP>
<TBODY>
<TR>
<TD WIDTH=255 HEIGHT=17 ALIGN=LEFT><B>Key name</B></TD>
<TD WIDTH=313 ALIGN=LEFT><B>Type</B></TD>
<TD WIDTH=316 ALIGN=LEFT><B>Format</B></TD>
<TD WIDTH=516 ALIGN=LEFT><B>Comment/Example</B></TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT><I>Station Preferences:</I></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><I>Stored for group &bdquo;StationPrefs&ldquo;</I></TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>stationMaxfilesize</TD>
<TD ALIGN=LEFT>Int</TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT>Size in bytes</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>stationFrequency</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT>String because comma, minus</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>stationName</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>stationLogoPath</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT>Valid path and filename. Relative/absolute?</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>stationURL</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT>Valid URL</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT><I>User Preferences:</I></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
<TD ALIGN=LEFT><BR></TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>scratchPadContents</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT>$gunid:YYYY-MM-DD $gunid2:YYYY-MM-DD [...]</TD>
<TD ALIGN=LEFT>7517812295906073177:2005-02-02 5680267281985233061:2005-01-15</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>playlistToken</TD>
<TD ALIGN=LEFT>String</TD>
<TD ALIGN=LEFT>$playlistId:$token</TD>
<TD ALIGN=LEFT>23:28f641eb921c2cb5</TD>
</TR>
<TR>
<TD HEIGHT=17 ALIGN=LEFT>TimeFormat</TD>
<TD ALIGN=LEFT>Int</TD>
<TD ALIGN=LEFT>12 | 24</TD>
<TD ALIGN=LEFT><BR></TD>
</TR>
</TBODY>
</TABLE>
<!-- ************************************************************************** -->
</BODY>
</HTML>

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@ -1,179 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M60 20 L60 550 L730 550 L730 20 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 530 L670 530 L670 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-150 -60 L-150 470 L520 470 L520 -60 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-152 -62 L-152 468 L518 468 L518 -62 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-150 -77 L-150 453 L520 453 L520 -77 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-520 -240 L-520 290 L150 290 L150 -240 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-522 -242 L-522 288 L148 288 L148 -242 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-520 -257 L-520 273 L150 273 L150 -257 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-10 -230 L-10 300 L660 300 L660 -230 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-12 -232 L-12 298 L658 298 L658 -232 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-10 -247 L-10 283 L660 283 L660 -247 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-270 -400 L-270 130 L400 130 L400 -400 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-272 -402 L-272 128 L398 128 L398 -402 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-270 -417 L-270 113 L400 113 L400 -417 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-420 -10 L-420 520 L250 520 L250 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-422 -12 L-422 518 L248 518 L248 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-420 -27 L-420 503 L250 503 L250 -27 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-172.17543029785156 -558.8779907226562 L-416.0186462402344 -88.3033676147461 L178.8587188720703 219.95126342773438 L422.7019348144531 -250.6233673095703 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M403.0769348144531 265.3846130371094 L199.23077392578125 -223.84616088867188 L-419.23077392578125 33.846153259277344 L-215.38461303710938 523.076904296875 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M247 -150 L-283 -150 L-283 520 L247 520 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M400 -280 L-130 -280 L-130 390 L400 390 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M563.7422485351562 100.96875762939453 L429.9586181640625 -411.868408203125 L-218.34494018554688 -242.7457275390625 L-84.56133270263672 270.0914306640625 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M302.1673583984375 -439.0152282714844 L-211.8700714111328 -309.9202575683594 L-48.674530029296875 339.9006652832031 L465.3629150390625 210.80567932128906 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M240 -535 L-290 -535 L-290 135 L240 135 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-39.4243049621582 -286.27734375 L-250.15625 200.02713012695312 L364.60601806640625 466.4241027832031 L575.3379516601562 -19.88037109375 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-290 -90 L-290 440 L380 440 L380 -90 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,150,60)">
<path d="M0.5 0.5 L55.57275390625 0.5 L55.57275390625 17.5 L0.5 17.5 Z" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,152,62)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">Scheduler</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,150,77)">
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="none" clip-path="url(#clipPath5)" />
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="black" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,520,240)">
<path d="M0.5 0.5 L74.53271484375 0.5 L74.53271484375 17.5 L0.5 17.5 Z" stroke="none" clip-path="url(#clipPath6)" />
<path d="M0.5 0.5 L74.53271484375 0.5 L74.53271484375 17.5 L0.5 17.5 Z" stroke="black" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,522,242)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath7)">Local storage</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,520,257)">
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="none" clip-path="url(#clipPath8)" />
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,230)">
<path d="M0.5 0.5 L76.79930114746094 0.5 L76.79930114746094 17.5 L0.5 17.5 Z" stroke="none" clip-path="url(#clipPath9)" />
<path d="M0.5 0.5 L76.79930114746094 0.5 L76.79930114746094 17.5 L0.5 17.5 Z" stroke="black" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12,232)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">Media archive</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,247)">
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="none" clip-path="url(#clipPath11)" />
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="black" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,270,400)">
<path d="M0.5 0.5 L81.6923828125 0.5 L81.6923828125 17.5 L0.5 17.5 Z" stroke="none" clip-path="url(#clipPath12)" />
<path d="M0.5 0.5 L81.6923828125 0.5 L81.6923828125 17.5 L0.5 17.5 Z" stroke="black" clip-path="url(#clipPath12)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,272,402)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)">Authentication</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,270,417)">
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="none" clip-path="url(#clipPath14)" />
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="black" clip-path="url(#clipPath14)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,420,10)">
<path d="M0.5 0.5 L75.74658203125 0.5 L75.74658203125 17.5 L0.5 17.5 Z" stroke="none" clip-path="url(#clipPath15)" />
<path d="M0.5 0.5 L75.74658203125 0.5 L75.74658203125 17.5 L0.5 17.5 Z" stroke="black" clip-path="url(#clipPath15)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,422,12)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">Playlist editor</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,420,27)">
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="none" clip-path="url(#clipPath17)" />
<path d="M0.5 0.5 L139.5 0.5 L139.5 102.5 L0.5 102.5 Z" stroke="black" clip-path="url(#clipPath17)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M580 380 L470 437" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath18)" fill="none" stroke-linecap="square" transform="matrix(0.8878766650334321,-0.4600815446082472,0.4600815446082472,0.8878766650334321,470,437)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M210 370 L330 420" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath19)" fill="none" stroke-linecap="square" transform="matrix(-0.9230769230769345,-0.38461538461535705,0.38461538461535705,-0.9230769230769345,330,420)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M210 200 L210 267" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath20)" fill="none" stroke-linecap="square" transform="matrix(5.88418203051333E-15,-1,1,5.88418203051333E-15,210,267)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M340 200 L340 420" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-2.653433028854124E-14,-1,1,-2.653433028854124E-14,340,420)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M350 200 L580 260" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath22)" fill="none" stroke-linecap="square" transform="matrix(-0.9676172723968477,-0.2524218971469878,0.2524218971469878,-0.9676172723968477,580,260)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M480 150 L412.1924133300781 420" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath23)" fill="none" stroke-linecap="square" transform="matrix(0.24357543580434315,-0.9698819552258534,0.9698819552258534,0.24357543580434315,412.1924,420)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M595 150 L595 260" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath24)" fill="none" stroke-linecap="square" transform="matrix(0,-1,1,0,595,260)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M480 150 L210 267" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath25)" fill="none" stroke-linecap="square" transform="matrix(0.917555625309924,-0.39760743763430084,0.39760743763430084,0.917555625309924,210,267)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-20)">
<path d="M480 110 L350 110" clip-path="url(#clipPath1)" fill="none" />
<path d="M10 5 L0 0 L10 -5" stroke-dasharray="none" stroke-miterlimit="10" clip-path="url(#clipPath26)" fill="none" stroke-linecap="square" transform="matrix(1,0,0,1,350,110)" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,139 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M72 10 L72 116 L572 116 L572 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 106 L500 106 L500 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-28 -10 L-28 96 L472 96 L472 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.798800468444824 -42 L-12.798800468444824 64 L487.2012023925781 64 L487.2012023925781 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-35.862300872802734 -42 L-35.862300872802734 64 L464.1376953125 64 L464.1376953125 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-39.34270095825195 -42 L-39.34270095825195 64 L460.65728759765625 64 L460.65728759765625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-358 -10 L-358 96 L142 96 L142 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-364 -16 L-364 90 L136 90 L136 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-401.4740905761719 -16 L-401.4740905761719 90 L98.5259017944336 90 L98.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-404.95458984375 -16 L-404.95458984375 90 L95.04540252685547 90 L95.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-418.573486328125 -75 L-418.573486328125 31 L81.42649841308594 31 L81.42649841308594 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M418.573486328125 75 L418.573486328125 -31 L-81.42649841308594 -31 L-81.42649841308594 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-121.2926025390625 -51 L-121.2926025390625 55 L378.7073974609375 55 L378.7073974609375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-126.77310180664062 -51 L-126.77310180664062 55 L373.2268981933594 55 L373.2268981933594 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-132.2534942626953 -51 L-132.2534942626953 55 L367.7464904785156 55 L367.7464904785156 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-205.2198028564453 -51 L-205.2198028564453 55 L294.78021240234375 55 L294.78021240234375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-217.44439697265625 -51 L-217.44439697265625 55 L282.55560302734375 55 L282.55560302734375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-283.4873962402344 -51 L-283.4873962402344 55 L216.51260375976562 55 L216.51260375976562 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-287.06451416015625 -51 L-287.06451416015625 55 L212.9355010986328 55 L212.9355010986328 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-331.7037048339844 -51 L-331.7037048339844 55 L168.29629516601562 55 L168.29629516601562 -51 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,28,10)">
<path d="M10.5 48.5 L10.5 85.5" clip-path="url(#clipPath3)" fill="none" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" clip-path="url(#clipPath3)" fill="white" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12.7988,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">user</text>
<line x1="0" y1="12.5" x2="23.0634765625" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,35.862300000000005,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,39.3427,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">User</text>
<line x1="0" y1="12.5" x2="23.8583984375" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,358,10)">
<path d="M66.07350158691406 0.5 L66.07350158691406 85.5" stroke="none" clip-path="url(#clipPath7)" />
<path d="M66.07350158691406 0.5 L66.07350158691406 85.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath7)" fill="none" />
<path d="M0.5 0.5 L130.64700317382812 0.5 L130.64700317382812 25.5 L0.5 25.5 Z" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L130.64700317382812 0.5 L130.64700317382812 25.5 L0.5 25.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,364,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath8)">system</text>
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,401.4741,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,404.9546,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">Authentication</text>
<line x1="0" y1="12.5" x2="78.1923828125" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,418.5735,75)">
<path d="M0.5 0.5 L9.5 0.5 L9.5 20.5 L0.5 20.5 Z" stroke="none" clip-path="url(#clipPath11)" />
<path d="M0.5 0.5 L9.5 0.5 L9.5 20.5 L0.5 20.5 Z" stroke="black" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-72,-10)">
<path d="M110 85 L490.573486328125 85" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-1,0,0,-1,490.5735,85)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,490.5735,85)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,121.2926,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,126.7731,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,132.2535,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,205.21980000000002,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,217.4444,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,283.4874,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,287.0645,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authInfo</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,331.7037,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -1,259 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M140 30 L140 590 L700 590 L700 30 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 560 L560 560 L560 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-10 -10 L-10 550 L550 550 L550 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-229.39329528808594 -12 L-229.39329528808594 548 L330.606689453125 548 L330.606689453125 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-249.88160705566406 -12 L-249.88160705566406 548 L310.118408203125 548 L310.118408203125 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-313.118408203125 -12 L-313.118408203125 548 L246.88160705566406 548 L246.88160705566406 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-240.90379333496094 -28 L-240.90379333496094 532 L319.09619140625 532 L319.09619140625 -28 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-60 -270 L-60 290 L500 290 L500 -270 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-63 -273 L-63 287 L497 287 L497 -273 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-61 -289 L-61 271 L499 271 L499 -289 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-61 -314 L-61 246 L499 246 L499 -314 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-270 -350 L-270 210 L290 210 L290 -350 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-215.79100036621094 -380 L-215.79100036621094 180 L344.2090148925781 180 L344.2090148925781 -380 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-50 -70 L-50 490 L510 490 L510 -70 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-53 -73 L-53 487 L507 487 L507 -73 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-51 -89 L-51 471 L509 471 L509 -89 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-51 -114 L-51 446 L509 446 L509 -114 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-330 -180 L-330 380 L230 380 L230 -180 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-338.341796875 -183 L-338.341796875 377 L221.658203125 377 L221.658203125 -183 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-331 -199 L-331 361 L229 361 L229 -199 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-331 -224 L-331 336 L229 336 L229 -224 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-10 -46 L-10 514 L550 514 L550 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-287.5 -391.5 L-287.5 168.5 L272.5 168.5 L272.5 -391.5 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M270 -130 L-290 -130 L-290 430 L270 430 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-118.24810028076172 -243.0095977783203 L-118.24810028076172 316.9903869628906 L441.75189208984375 316.9903869628906 L441.75189208984375 -243.0095977783203 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-86.9677963256836 -198 L-86.9677963256836 362 L473.0321960449219 362 L473.0321960449219 -198 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-223.21859741210938 -81.1190414428711 L-67.47184753417969 456.78704833984375 L470.4342346191406 301.040283203125 L314.6874694824219 -236.8657989501953 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-263.7066955566406 -137.5386962890625 L-263.7066955566406 422.4613037109375 L296.2933044433594 422.4613037109375 L296.2933044433594 -137.5386962890625 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-250 -480 L-250 80 L310 80 L310 -480 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
<path d="M-287.1174011230469 -483 L-287.1174011230469 77 L272.8825988769531 77 L272.8825988769531 -483 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
<path d="M-251 -499 L-251 61 L309 61 L309 -499 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
<path d="M-251 -524 L-251 36 L309 36 L309 -524 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
<path d="M-397 282.5 L163 282.5 L163 -277.5 L-397 -277.5 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
<path d="M-292.5 -431.5 L-292.5 128.5 L267.5 128.5 L267.5 -431.5 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
<path d="M-340 140 L220 140 L220 -420 L-340 -420 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
<path d="M-172.7888946533203 -444.1612854003906 L-172.7888946533203 115.83869934082031 L387.2110900878906 115.83869934082031 L387.2110900878906 -444.1612854003906 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
<path d="M0.5 0.5 L539.5 0.5 L539.5 389.5 L0.5 389.5 Z" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,229.3933,12)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">&lt;&lt;</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,249.88160000000002,12)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">component</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,313.1184,12)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">&gt;&gt;</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,240.9038,28)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath7)">Authentication</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,60,270)">
<path d="M0.5 0.5 L111.27290344238281 0.5 L111.27290344238281 69.5 L0.5 69.5 Z" stroke="none" clip-path="url(#clipPath8)" />
<path d="M0.5 0.5 L111.27290344238281 0.5 L111.27290344238281 69.5 L0.5 69.5 Z" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,63,273)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">AuthenticationInfo</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,61,289)">
<path d="M0.5 0.5 L109.27290344238281 0.5 L109.27290344238281 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath10)" />
<path d="M0.5 0.5 L109.27290344238281 0.5 L109.27290344238281 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,61,314)">
<path d="M0.5 0.5 L109.27290344238281 0.5 L109.27290344238281 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath11)" />
<path d="M0.5 0.5 L109.27290344238281 0.5 L109.27290344238281 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,270,350)">
<path d="M21 12.5 C21 17.194419860839844 17.194419860839844 21 12.5 21 C7.805579662322998 21 4 17.194419860839844 4 12.5 C4 7.805579662322998 7.805579662322998 4 12.5 4 C17.194419860839844 4 21 7.805579662322998 21 12.5 Z" fill-rule="evenodd" stroke="none" clip-path="url(#clipPath12)" />
<path d="M21 12.5 C21 17.194419860839844 17.194419860839844 21 12.5 21 C7.805579662322998 21 4 17.194419860839844 4 12.5 C4 7.805579662322998 7.805579662322998 4 12.5 4 C17.194419860839844 4 21 7.805579662322998 21 12.5 Z" fill-rule="evenodd" stroke="black" clip-path="url(#clipPath12)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,215.791,380)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)">AuthenticationInterface</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,50,70)">
<path d="M0.5 0.5 L141.35110473632812 0.5 L141.35110473632812 69.5 L0.5 69.5 Z" stroke="none" clip-path="url(#clipPath14)" />
<path d="M0.5 0.5 L141.35110473632812 0.5 L141.35110473632812 69.5 L0.5 69.5 Z" stroke="black" clip-path="url(#clipPath14)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,53,73)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">AuthenticationDatabase</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,51,89)">
<path d="M0.5 0.5 L139.35110473632812 0.5 L139.35110473632812 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath16)" />
<path d="M0.5 0.5 L139.35110473632812 0.5 L139.35110473632812 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath16)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,51,114)">
<path d="M0.5 0.5 L139.35110473632812 0.5 L139.35110473632812 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath17)" />
<path d="M0.5 0.5 L139.35110473632812 0.5 L139.35110473632812 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath17)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,330,180)">
<path d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" clip-path="url(#clipPath18)" />
<path d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="black" clip-path="url(#clipPath18)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,338.3418,183)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">Authentication</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,331,199)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath20)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath20)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,331,224)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath21)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath21)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,46)">
<path d="M272.5 354 L272.5 351" clip-path="url(#clipPath22)" fill="none" />
<text x="0" y="11" xml:space="preserve" font-weight="normal" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath23)" stroke-linecap="square" transform="matrix(1,0,0,1,277.5,345.5)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,46)">
<path d="M320 204 L277.3622131347656 304.9844055175781" clip-path="url(#clipPath22)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,46)">
<path d="M120 94 L120 224" clip-path="url(#clipPath22)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,-1,1,0,130,270)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" clip-path="url(#clipPath24)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,-1,1,0,130,270)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" clip-path="url(#clipPath24)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,118.2481,243.0096)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">*</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,86.9678,198)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">Stores</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,46)">
<path d="M320 134 L181.85110473632812 94" clip-path="url(#clipPath22)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0.960546566357187,0.2781192080015656,-0.2781192080015656,0.960546566357187,191.8511,140)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" clip-path="url(#clipPath27)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0.960546566357187,0.2781192080015656,-0.2781192080015656,0.960546566357187,191.8511,140)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" clip-path="url(#clipPath27)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,263.7067,137.5387)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath28)">Checks authentication info in</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,250,480)">
<path d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" clip-path="url(#clipPath29)" />
<path d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="black" clip-path="url(#clipPath29)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,287.1174,483)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath30)">User</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,251,499)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath31)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath31)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,251,524)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath32)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath32)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-140,-30)">
<path d="M422.5 510 L422.5 427" clip-path="url(#clipPath1)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,282.5,397)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" clip-path="url(#clipPath33)" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,282.5,397)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" clip-path="url(#clipPath33)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,292.5,431.5)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath34)">Authenticates by</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-140,-30)">
<path d="M390 510 L280 490 L280 370" clip-path="url(#clipPath1)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,140,340)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" clip-path="url(#clipPath35)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,140,340)">
<path d="M10 -5 L0 0 ZM10 5 L0 0 Z" clip-path="url(#clipPath35)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,172.7889,444.1613)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath36)">Contains</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 26 KiB

View File

@ -1,63 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M60 70 L60 310 L510 310 L510 70 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 240 L450 240 L450 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-180 -10 L-180 230 L270 230 L270 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-182 -12 L-182 228 L268 228 L268 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-180 -27 L-180 213 L270 213 L270 -27 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-220 -90 L-220 150 L230 150 L230 -90 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-251.7801971435547 -106 L-251.7801971435547 134 L198.2198028564453 134 L198.2198028564453 -106 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-10 -80 L-10 160 L440 160 L440 -80 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-23.07080078125 -165 L-23.07080078125 75 L426.92919921875 75 L426.92919921875 -165 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,180,10)">
<path d="M0.5 0.5 L81.69239807128906 0.5 L81.69239807128906 17.5 L0.5 17.5 Z" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,182,12)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">Authentication</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,180,27)">
<path d="M0.5 0.5 L259.1951904296875 0.5 L259.1951904296875 202.5 L0.5 202.5 Z" stroke="none" clip-path="url(#clipPath5)" />
<path d="M0.5 0.5 L259.1951904296875 0.5 L259.1951904296875 202.5 L0.5 202.5 Z" stroke="black" clip-path="url(#clipPath5)" fill="none" />
<ellipse cx="94.8476" cy="25" rx="94.8476" ry="25" stroke="none" clip-path="url(#clipPath6)" transform="matrix(1,0,0,1,40,63)" />
<ellipse cx="94.8476" cy="25" rx="94.8476" ry="25" stroke="black" clip-path="url(#clipPath6)" fill="none" transform="matrix(1,0,0,1,40,63)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,251.7802,106)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath7)">UC-1 Authenticate user</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,80)">
<path d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" stroke="none" clip-path="url(#clipPath8)" />
<path d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,23.0708,165)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">User</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-60,-70)">
<path d="M120 185 L280 185" clip-path="url(#clipPath1)" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -1,145 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M120 110 L120 330 L426 330 L426 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 220 L306 220 L306 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-110 -140 L-110 80 L196 80 L196 -140 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-118.341796875 -143 L-118.341796875 77 L187.658203125 77 L187.658203125 -143 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-111 -159 L-111 61 L195 61 L195 -159 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-111 -184 L-111 36 L195 36 L195 -184 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-10 -10 L-10 210 L296 210 L296 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-85.879638671875 -13 L-85.879638671875 207 L220.120361328125 207 L220.120361328125 -13 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-11 -29 L-11 191 L295 191 L295 -29 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-15 -34 L-15 186 L291 186 L291 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-23.744140625 -34 L-23.744140625 186 L282.255859375 186 L282.255859375 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-89.787109375 -34 L-89.787109375 186 L216.212890625 186 L216.212890625 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-93.3642578125 -34 L-93.3642578125 186 L212.6357421875 186 L212.6357421875 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-138.00341796875 -34 L-138.00341796875 186 L167.99658203125 186 L167.99658203125 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-141.48388671875 -34 L-141.48388671875 186 L164.51611328125 186 L164.51611328125 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-240.47314453125 -34 L-240.47314453125 186 L65.52685546875 186 L65.52685546875 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-244.05029296875 -34 L-244.05029296875 186 L61.94970703125 186 L61.94970703125 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-247.53076171875 -34 L-247.53076171875 186 L58.46923828125 186 L58.46923828125 -34 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-61.114498138427734 -98 L-61.114498138427734 122 L244.885498046875 122 L244.885498046875 -98 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-81.60279846191406 -98 L-81.60279846191406 122 L224.39720153808594 122 L224.39720153808594 -98 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-120.10030364990234 -98 L-120.10030364990234 122 L185.8997039794922 122 L185.8997039794922 -98 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-70 142.58859252929688 L150 142.58859252929688 L150 -163.41140747070312 L-70 -163.41140747070312 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,110,140)">
<path d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,118.3418,143)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">Authentication</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,111,159)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath5)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,111,184)">
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath6)" />
<path d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,10,10)">
<path d="M0.5 0.5 L284.67718505859375 0.5 L284.67718505859375 59.5 L0.5 59.5 Z" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L284.67718505859375 0.5 L284.67718505859375 59.5 L0.5 59.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85.879638671875,13)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath8)">AuthenticationInterface</text>
</g>
<g font-family="sans-serif" font-size="11" font-weight="bold" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,11,29)">
<path d="M0.5 0.5 L282.67724609375 0.5 L282.67724609375 0.5 L0.5 0.5 Z" stroke="none" clip-path="url(#clipPath9)" />
<path d="M0.5 0.5 L282.67724609375 0.5 L282.67724609375 0.5 L0.5 0.5 Z" stroke="black" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,15,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">+</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,23.744140625,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath11)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,89.787109375,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath12)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,93.3642578125,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)">authInfo</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,138.00341796875,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,141.48388671875,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">AuthenticationInfo</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,240.47314453125,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,244.05029296875,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,247.53076171875,34)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">boolean</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,-120,-110)">
<path d="M262.5885925292969 250 L262.5885925292969 180" clip-path="url(#clipPath1)" fill="none" />
<text x="0" y="11" xml:space="preserve" stroke-dasharray="none" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath19)" stroke-linecap="square" transform="matrix(1,0,0,1,181.1145,208)">&lt;&lt;</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,81.60279999999999,98)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">realize</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,120.10029999999999,98)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath21)">&gt;&gt;</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-dasharray="5,10" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,142.58859999999999,70)">
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath22)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(0,1,-1,0,142.58859999999999,70)">
<path d="M12 -6 L0 0 L12 6 Z" clip-path="url(#clipPath22)" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 14 KiB

View File

@ -1,500 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-2"
http-equiv="content-type">
<title>LiveSupport Authentication specification</title>
<meta content="Ákos Maróy" name="author">
</head>
<body>
<h1>Preface</h1>
This document is part of the <a href="http://livesupport.campware.org/">LiveSupport</a>
project, Copyright &#169; 2004 <a href="http://www.mdlf.org/">Media
Development Loan Fund</a>, under the GNU <a
href="http://www.gnu.org/licenses/gpl.html">GPL</a>.<br>
<ul>
<li>Author: $Author$</li>
<li>Version: $Revision$</li>
<li>Location: $URL$</li>
</ul>
<h1>Scope</h1>
This document contains the specification of the LiveSupport
Authentication component.<br>
<br>
This document contains embedded <a
href="http://www.w3.org/Graphics/SVG/">SVG</a> figures, thus an SVG
capable browser is needed to view it, or an SVG plugin like <a
href="http://www.adobe.com/svg/">Adobe's SVG Viewer</a>.<br>
<h1>Requirements</h1>
<h2>Overview<br>
</h2>
The purpose of the Authentication component is to provide
authentication services by receiving authentication information and
checking these against an authentication database.
<h2>Goals</h2>
The authentication component is a re-usable component, which provides
both local and remote interfaces. Different authentication methods may
be supported, with username / password authentication being the most
trivial.<br>
<h2>System functions</h2>
The main system functions are described below. There are three
categories for these functions:<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">function category<br>
</th>
<th valign="top">meaning<br>
</th>
</tr>
<tr>
<td valign="top">evident<br>
</td>
<td valign="top">Should perform, and the user should be cognizant
that it is performed<br>
</td>
</tr>
<tr>
<td valign="top">hidden<br>
</td>
<td valign="top">Should perform, but not visible to the users.<br>
</td>
</tr>
<tr>
<td valign="top">frill<br>
</td>
<td valign="top">Optional<br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">ref#<br>
</th>
<th valign="top">function<br>
</th>
<th valign="top">category<br>
</th>
</tr>
<tr>
<td valign="top">F1.1<br>
</td>
<td valign="top">Authenticate users<br>
</td>
<td valign="top">evident<br>
</td>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
<h2>System attributes</h2>
Generic attributes<br>
<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">ref#<br>
</th>
<th valign="top">attribute<br>
</th>
<th valign="top">details and constraints<br>
</th>
<th valign="top">category<br>
</th>
</tr>
<tr>
<td valign="top">A1.1<br>
</td>
<td valign="top">operating system platform<br>
</td>
<td valign="top">Linux<br>
</td>
<td valign="top">must<br>
</td>
</tr>
<tr>
<td valign="top">A1.2<br>
</td>
<td valign="top">local interface<br>
</td>
<td valign="top">locally callable API<br>
</td>
<td valign="top">must<br>
</td>
</tr>
<tr>
<td valign="top">A1.3<br>
</td>
<td valign="top">remote interface<br>
</td>
<td valign="top">remote interface via some RPC method like
XML-RPC or SOAP<br>
</td>
<td valign="top">want<br>
</td>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
Attributes related to system functions<br>
<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">ref#<br>
</th>
<th valign="top">function<br>
</th>
<th valign="top">ref#<br>
</th>
<th valign="top">attribute<br>
</th>
<th valign="top">details and constraints<br>
</th>
<th valign="top">category<br>
</th>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
<h2>Essential use cases</h2>
This section lists generic (essential) uses cases, that do not contain
architecture-specific considerations.<br>
<br>
<object type="image/svg+xml" name="essential use cases"
data="EssentialUseCases.svg" width="500" height="300"></object>
<h3>UC-1 Authenticate user<br>
</h3>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td valign="top"><b>ref#</b> </td>
<td valign="top">UC-1 </td>
</tr>
<tr>
<td valign="top"><b>use case</b> </td>
<td valign="top">Authenticate user </td>
</tr>
<tr>
<td valign="top"><b>type</b> </td>
<td valign="top">primary, essential </td>
</tr>
<tr>
<td valign="top"><b>actors</b> </td>
<td valign="top">User </td>
</tr>
<tr>
<td valign="top"><b>purpose</b> </td>
<td valign="top">Authenticate a user </td>
</tr>
<tr>
<td valign="top"><b>overview</b> </td>
<td valign="top">The user contacts the Authentication module with
the intention of verifying his integrity. </td>
</tr>
<tr>
<td valign="top"><b>references</b> </td>
<td valign="top">F1.1 </td>
</tr>
</tbody>
</table>
<h4>Typical course of events</h4>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th colspan="2" valign="top">actor action <br>
</th>
<th colspan="2" valign="top">system response <br>
</th>
</tr>
<tr>
<td valign="top"><b>1.</b> </td>
<td valign="top">User connects to the authentication component
with the intention of authenticating<br>
</td>
<td valign="top"> <br>
</td>
<td valign="top"> <br>
</td>
</tr>
<tr>
<td valign="top"><b>2.</b> </td>
<td valign="top">The User provides authentication
information </td>
<td valign="top"><b>3.</b> </td>
<td valign="top">The system checks the authentication information
againts its internal database, and informs the user if the provided
information was correct. </td>
</tr>
<tr>
<td valign="top"> <br>
</td>
<td valign="top"> <br>
</td>
<td valign="top"> <br>
</td>
<td valign="top"> <br>
</td>
</tr>
</tbody>
</table>
<br>
<h4>Alternate courses</h4>
none<br>
<br>
<h2>Conceptual model</h2>
The following figure displays the semantic concepts identified for the
Scheduler daemon, and the main associations between the concepts.<br>
<br>
<object type="image/svg+xml" name="essential use cases"
data="Concepts.svg" width="600" height="600"></object>
<br>
<h3>Concepts</h3>
<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">concept<br>
</th>
<th valign="top">description<br>
</th>
</tr>
<tr>
<td valign="top"><b>Authentication database</b><br>
</td>
<td valign="top">A database containing authentication
information, against which user-sent authentication information can be
checked.<br>
</td>
</tr>
<tr>
<td valign="top"><b>Authentication</b><br>
</td>
<td valign="top">Component responsible for doing the
authentications <br>
</td>
</tr>
<tr>
<td valign="top"><b>Authentication info</b><br>
</td>
<td valign="top">The information a user sends during
authentication, provides the basis for authentication<br>
</td>
</tr>
<tr>
<td valign="top"><b>User</b><br>
</td>
<td valign="top">The party that wants to authenticate<br>
</td>
</tr>
<tr>
<td valign="top"><b>Authentication interface</b><br>
</td>
<td valign="top">The local or remote interface for authentications<br>
</td>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
<h3>Associations</h3>
<br>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<th valign="top">source<br>
</th>
<th valign="top">association<br>
</th>
<th valign="top">target<br>
</th>
<th valign="top">description<br>
</th>
</tr>
<tr>
<td valign="top">Authentication<br>
</td>
<td valign="top">Checks authentication info in<br>
</td>
<td valign="top">Authentication database<br>
</td>
<td valign="top"><br>
</td>
</tr>
<tr>
<td valign="top">Authentication database<br>
</td>
<td valign="top">Stores<br>
</td>
<td valign="top">Authentication info<br>
</td>
<td valign="top"><br>
</td>
</tr>
<tr>
<td valign="top">User<br>
</td>
<td valign="top">Contains<br>
</td>
<td valign="top">Authentication info<br>
</td>
<td valign="top"><br>
</td>
</tr>
<tr>
<td valign="top">User<br>
</td>
<td valign="top">Authenticates by<br>
</td>
<td valign="top">Authentication interface<br>
</td>
<td valign="top"><br>
</td>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
<h2>System behavior</h2>
The behavior of the system as a whole as experienced from the outside
is discussed in this section.<br>
<h3>System sequence diagrams</h3>
System diagrams are presented for each use case below.<br>
<h4>UC-1 Authenticate user<br>
</h4>
<object type="image/svg+xml" name="authenticate user sequence diagram"
data="Authenticateuser_SequenceDiagram.svg" width="550" height="200"></object>
<br>
<h3>System objects</h3>
The following figures shows the system objects and their functions, as
derived from the system sequence diagrams.<br>
<object type="image/svg+xml" name="system behaviour"
data="Systembehaviour.svg" width="400" height="300"></object>
<h3>Contracts</h3>
For all operations exposed in the system sequence diagrams, the
following contracts are defined.<br>
<h4>Contract for AuthenticationInterface : authenticate</h4>
<table width="100%" border="0" cellspacing="2" cellpadding="2">
<tbody>
<tr>
<td valign="top"><b>Name</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">authenticate<br>
(authInfo : AuthenticationInfo)<br>
: boolean<br>
</td>
</tr>
<tr>
<td valign="top"><b>Responsibilities</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">Check if the the
provided authentication info is recognized.<br>
</td>
</tr>
<tr>
<td valign="top"><b>Type</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">system<br>
</td>
</tr>
<tr>
<td valign="top"><b>Cross-reference</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">UC-1<br>
</td>
</tr>
<tr>
<td valign="top"><b>Notes</b><br>
</td>
<td colspan="2" rowspan="1" valign="top"><br>
</td>
</tr>
<tr>
<td valign="top"><b>Exceptions</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">none</td>
</tr>
<tr>
<td valign="top"><b>Output</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">true if the provided
authentication is recognized, false otherwise<br>
</td>
</tr>
<tr>
<td valign="top"><b>Pre-conditions</b><br>
</td>
<td colspan="2" rowspan="1" valign="top">none</td>
</tr>
<tr>
<td valign="top"><b>Post-conditions</b><br>
</td>
<td valign="top">none<br>
</td>
<td valign="top"><br>
</td>
</tr>
<tr>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
<td valign="top"><br>
</td>
</tr>
</tbody>
</table>
<br>
<br>
</body>
</html>

View File

@ -1,249 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-51 10 L-51 171 L554 171 L554 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 161 L605 161 L605 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-71 -10 L-71 151 L534 151 L534 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.706500053405762 -42 L-12.706500053405762 119 L592.2935180664062 119 L592.2935180664062 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-78.50240325927734 -42 L-78.50240325927734 119 L526.4976196289062 119 L526.4976196289062 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-81.98290252685547 -42 L-81.98290252685547 119 L523.01708984375 119 L523.01708984375 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-471 -10 L-471 151 L134 151 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-477 -16 L-477 145 L128 145 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-514.47412109375 -16 L-514.47412109375 145 L90.52587890625 145 L90.52587890625 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-517.95458984375 -16 L-517.95458984375 145 L87.04541015625 145 L87.04541015625 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-527.9937133789062 -71 L-527.9937133789062 90 L77.00630187988281 90 L77.00630187988281 -71 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-280.9809875488281 -115 L-280.9809875488281 46 L324.0190124511719 46 L324.0190124511719 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-286.46148681640625 -115 L-286.46148681640625 46 L318.53851318359375 46 L318.53851318359375 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-291.94189453125 -115 L-291.94189453125 46 L313.05810546875 46 L313.05810546875 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-366.8525085449219 -115 L-366.8525085449219 46 L238.1475067138672 46 L238.1475067138672 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-370.4296875 -115 L-370.4296875 46 L234.57029724121094 46 L234.57029724121094 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-408.43560791015625 -115 L-408.43560791015625 46 L196.5644073486328 46 L196.5644073486328 -115 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M527.9937133789062 141 L527.9937133789062 -20 L-77.00630187988281 -20 L-77.00630187988281 141 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-250.35040283203125 -82 L-250.35040283203125 79 L354.64959716796875 79 L354.64959716796875 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-255.83090209960938 -82 L-255.83090209960938 79 L349.1690979003906 79 L349.1690979003906 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-261.3113098144531 -82 L-261.3113098144531 79 L343.6886901855469 79 L343.6886901855469 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-299.31719970703125 -82 L-299.31719970703125 79 L305.68280029296875 79 L305.68280029296875 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-311.54180908203125 -82 L-311.54180908203125 79 L293.45819091796875 79 L293.45819091796875 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-383.3908996582031 -82 L-383.3908996582031 79 L221.60910034179688 79 L221.60910034179688 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-386.9679870605469 -82 L-386.9679870605469 79 L218.03199768066406 79 L218.03199768066406 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-435.0661926269531 -82 L-435.0661926269531 79 L169.93380737304688 79 L169.93380737304688 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M527.9937133789062 106 L527.9937133789062 -55 L-77.00630187988281 -55 L-77.00630187988281 106 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-230.49740600585938 -47 L-230.49740600585938 114 L374.5025939941406 114 L374.5025939941406 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-235.9779052734375 -47 L-235.9779052734375 114 L369.0220947265625 114 L369.0220947265625 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
<path d="M-241.4582977294922 -47 L-241.4582977294922 114 L363.54168701171875 114 L363.54168701171875 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
<path d="M-314.4245910644531 -47 L-314.4245910644531 114 L290.5754089355469 114 L290.5754089355469 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
<path d="M-326.6492004394531 -47 L-326.6492004394531 114 L278.3507995605469 114 L278.3507995605469 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
<path d="M-392.69219970703125 -47 L-392.69219970703125 114 L212.30780029296875 114 L212.30780029296875 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
<path d="M-396.269287109375 -47 L-396.269287109375 114 L208.73069763183594 114 L208.73069763183594 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
<path d="M-440.919189453125 -47 L-440.919189453125 114 L164.08079528808594 114 L164.08079528808594 -47 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
<path d="M527.9937133789062 71 L527.9937133789062 -90 L-77.00630187988281 -90 L-77.00630187988281 71 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,71,10)">
<path clip-path="url(#clipPath3)" d="M10.5 48.5 L10.5 140.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,71,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,71,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,12.706499999999998,42)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">audio player</text>
<line clip-path="url(#clipPath4)" fill="none" x1="0" x2="65.7958984375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,78.5024,42)">
<text clip-path="url(#clipPath5)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath5)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,81.9829,42)">
<text clip-path="url(#clipPath6)" stroke="none" x="0" xml:space="preserve" y="11">Audio player</text>
<line clip-path="url(#clipPath6)" fill="none" x1="0" x2="67.310546875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,471,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 140.5" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,471,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 140.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,471,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,471,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" fill="none" />
<text clip-path="url(#clipPath8)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x="0" xml:space="preserve" y="11">system</text>
<line clip-path="url(#clipPath8)" fill="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x1="0" x2="37.47412109375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,514.47412109375,16)">
<text clip-path="url(#clipPath9)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath9)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,517.95458984375,16)">
<text clip-path="url(#clipPath10)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
<line clip-path="url(#clipPath10)" fill="none" x1="0" x2="71.03271484375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,527.9937,71)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 79.5 L0.5 79.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,527.9937,71)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 79.5 L0.5 79.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,51,-10)">
<path clip-path="url(#clipPath1)" d="M476.99371337890625 151 L30 151" fill="none" />
<text clip-path="url(#clipPath12)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,229.981,125)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,286.4615,115)">
<text clip-path="url(#clipPath13)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,291.9419,115)">
<text clip-path="url(#clipPath14)" stroke="none" x="0" xml:space="preserve" y="11">releasePlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,366.85249999999996,115)">
<text clip-path="url(#clipPath15)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,370.42969999999997,115)">
<text clip-path="url(#clipPath16)" stroke="none" x="0" xml:space="preserve" y="11">playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,408.43559999999997,115)">
<text clip-path="url(#clipPath17)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,527.9937,141)">
<path clip-path="url(#clipPath18)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath18)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,51,-10)">
<path clip-path="url(#clipPath1)" d="M476.99371337890625 116 L30 116" fill="none" />
<text clip-path="url(#clipPath19)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,199.3504,92)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,255.8309,82)">
<text clip-path="url(#clipPath20)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,261.3113,82)">
<text clip-path="url(#clipPath21)" stroke="none" x="0" xml:space="preserve" y="11">playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,299.3172,82)">
<text clip-path="url(#clipPath22)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,311.5418,82)">
<text clip-path="url(#clipPath23)" stroke="none" x="0" xml:space="preserve" y="11">accessPlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,383.3909,82)">
<text clip-path="url(#clipPath24)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,386.968,82)">
<text clip-path="url(#clipPath25)" stroke="none" x="0" xml:space="preserve" y="11">playlistId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,435.0662,82)">
<text clip-path="url(#clipPath26)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,527.9937,106)">
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,51,-10)">
<path clip-path="url(#clipPath1)" d="M476.99371337890625 81 L30 81" fill="none" />
<text clip-path="url(#clipPath28)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,179.4974,57)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,235.9779,47)">
<text clip-path="url(#clipPath29)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,241.4583,47)">
<text clip-path="url(#clipPath30)" stroke="none" x="0" xml:space="preserve" y="11">authenticated</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,314.4246,47)">
<text clip-path="url(#clipPath31)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,326.6492,47)">
<text clip-path="url(#clipPath32)" stroke="none" x="0" xml:space="preserve" y="11">authenticate</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,392.6922,47)">
<text clip-path="url(#clipPath33)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,396.26930000000004,47)">
<text clip-path="url(#clipPath34)" stroke="none" x="0" xml:space="preserve" y="11">authinfo</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,440.91920000000005,47)">
<text clip-path="url(#clipPath35)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,527.9937,71)">
<path clip-path="url(#clipPath36)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath36)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,239 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-21 10 L-21 167 L574 167 L574 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 157 L595 157 L595 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-461 -10 L-461 147 L134 147 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-467 -16 L-467 141 L128 141 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-504.4740905761719 -16 L-504.4740905761719 141 L90.5259017944336 141 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-507.95458984375 -16 L-507.95458984375 141 L87.04540252685547 141 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-517.9937133789062 -75 L-517.9937133789062 82 L77.00630187988281 82 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-71 -10 L-71 147 L524 147 L524 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-12.706500053405762 -42 L-12.706500053405762 115 L582.2935180664062 115 L582.2935180664062 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-78.50240325927734 -42 L-78.50240325927734 115 L516.4976196289062 115 L516.4976196289062 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-81.98290252685547 -42 L-81.98290252685547 115 L513.01708984375 115 L513.01708984375 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M517.9937133789062 75 L517.9937133789062 -82 L-77.00630187988281 -82 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-197.85499572753906 -51 L-197.85499572753906 106 L397.1449890136719 106 L397.1449890136719 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-203.3354949951172 -51 L-203.3354949951172 106 L391.66448974609375 106 L391.66448974609375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-208.81590270996094 -51 L-208.81590270996094 106 L386.1841125488281 106 L386.1841125488281 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-281.7821960449219 -51 L-281.7821960449219 106 L313.2178039550781 106 L313.2178039550781 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-294.0068054199219 -51 L-294.0068054199219 106 L300.9931945800781 106 L300.9931945800781 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-360.0498046875 -51 L-360.0498046875 106 L234.9501953125 106 L234.9501953125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-363.62689208984375 -51 L-363.62689208984375 106 L231.3730926513672 106 L231.3730926513672 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-397.5614929199219 -51 L-397.5614929199219 106 L197.43850708007812 106 L197.43850708007812 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M517.9937133789062 110 L517.9937133789062 -47 L-77.00630187988281 -47 L-77.00630187988281 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-160.55279541015625 -86 L-160.55279541015625 71 L434.44720458984375 71 L434.44720458984375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-166.03329467773438 -86 L-166.03329467773438 71 L428.9667053222656 71 L428.9667053222656 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-171.51370239257812 -86 L-171.51370239257812 71 L423.4862976074219 71 L423.4862976074219 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-246.3437957763672 -86 L-246.3437957763672 71 L348.65618896484375 71 L348.65618896484375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-258.5683898925781 -86 L-258.5683898925781 71 L336.4316101074219 71 L336.4316101074219 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-370.53961181640625 -86 L-370.53961181640625 71 L224.4604034423828 71 L224.4604034423828 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-374.11669921875 -86 L-374.11669921875 71 L220.88330078125 71 L220.88330078125 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-434.8638000488281 -86 L-434.8638000488281 71 L160.13619995117188 71 L160.13619995117188 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
<path d="M-195.50790405273438 -121 L-195.50790405273438 36 L399.4920959472656 36 L399.4920959472656 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
<path d="M-200.9884033203125 -121 L-200.9884033203125 36 L394.0115966796875 36 L394.0115966796875 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
<path d="M-206.4687957763672 -121 L-206.4687957763672 36 L388.53118896484375 36 L388.53118896484375 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
<path d="M-321.5014953613281 -121 L-321.5014953613281 36 L273.4985046386719 36 L273.4985046386719 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
<path d="M-325.0787048339844 -121 L-325.0787048339844 36 L269.9212951660156 36 L269.9212951660156 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
<path d="M-399.90869140625 -121 L-399.90869140625 36 L195.09129333496094 36 L195.09129333496094 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
<path d="M517.9937133789062 145 L517.9937133789062 -12 L-77.00630187988281 -12 L-77.00630187988281 145 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,461,10)">
<path d="M62.493648529052734 0.5 L62.493648529052734 136.5" clip-path="url(#clipPath3)" fill="none" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath3)" fill="white" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,467,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">system</text>
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,504.4741,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,507.9546,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Local storage</text>
<line x1="0" y1="12.5" x2="71.03271484375" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,517.9937,75)">
<path d="M0.5 0.5 L9.5 0.5 L9.5 71.5 L0.5 71.5 Z" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L9.5 0.5 L9.5 71.5 L0.5 71.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,71,10)">
<path d="M10.5 48.5 L10.5 136.5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10.5 48.5 L10.5 136.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath8)" fill="none" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12.706499999999998,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">audio player</text>
<line x1="0" y1="12.5" x2="65.7958984375" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,78.5024,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,81.9829,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath11)">Audio player</text>
<line x1="0" y1="12.5" x2="67.310546875" y2="12.5" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,21,-10)">
<path d="M60 85 L496.99371337890625 85" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-1,-1.0547118733938987E-15,1.0547118733938987E-15,-1,496.9937,85)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,-1.0547118733938987E-15,1.0547118733938987E-15,-1,496.9937,85)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,197.855,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,203.3355,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,208.8159,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,281.7822,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,294.0068,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,360.0498,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,363.6269,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authId</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,397.5615,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,21,-10)">
<path d="M60 120 L496.99371337890625 120" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath21)" transform="matrix(-1,-2.831068712794149E-15,2.831068712794149E-15,-1,496.9937,120)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,-2.831068712794149E-15,2.831068712794149E-15,-1,496.9937,120)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,160.5528,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath22)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,166.0333,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath23)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,171.5137,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">rawAudioData</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,246.3438,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,258.5684,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">accessRawAudioData</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,370.5396,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath27)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,374.11670000000004,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath28)">audioClipId</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,434.86379999999997,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath29)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,21,-10)">
<path d="M60 155 L496.99371337890625 155" clip-path="url(#clipPath1)" fill="none" />
<text x="0" y="11" xml:space="preserve" stroke-miterlimit="10" stroke="none" clip-path="url(#clipPath30)" stroke-linecap="square" transform="matrix(1,0,0,1,174.5079,131)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,200.9884,121)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath31)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,206.46880000000002,121)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath32)">releaseRawAudioData</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,321.5015,121)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath33)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,325.0787,121)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath34)">rawAudioData</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,399.9087,121)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath35)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(-1,0,0,-1,517.9937,145)">
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath36)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath36)" fill="none" stroke-linecap="square" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,633 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M57 80 L57 620 L700 620 L700 80 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 540 L643 540 L643 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-43 -10 L-43 530 L600 530 L600 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-287.393310546875 -12 L-287.393310546875 528 L355.606689453125 528 L355.606689453125 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-307.881591796875 -12 L-307.881591796875 528 L335.118408203125 528 L335.118408203125 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-371.118408203125 -12 L-371.118408203125 528 L271.881591796875 528 L271.881591796875 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-302.4836120605469 -28 L-302.4836120605469 512 L340.5163879394531 512 L340.5163879394531 -28 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-243 -210 L-243 330 L400 330 L400 -210 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-265.2528991699219 -213 L-265.2528991699219 327 L377.7471008300781 327 L377.7471008300781 -213 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-244 -229 L-244 311 L399 311 L399 -229 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-248 -234 L-248 306 L395 306 L395 -234 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-254.3647003173828 -234 L-254.3647003173828 306 L388.63531494140625 306 L388.63531494140625 -234 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-264.4678039550781 -234 L-264.4678039550781 306 L378.5321960449219 306 L378.5321960449219 -234 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-267.9482116699219 -234 L-267.9482116699219 306 L375.0517883300781 306 L375.0517883300781 -234 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-248 -249 L-248 291 L395 291 L395 -249 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-254.3647003173828 -249 L-254.3647003173828 291 L388.63531494140625 291 L388.63531494140625 -249 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-299.5679016113281 -249 L-299.5679016113281 291 L343.4320983886719 291 L343.4320983886719 -249 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-303.0483093261719 -249 L-303.0483093261719 291 L339.9516906738281 291 L339.9516906738281 -249 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-244 -267 L-244 273 L399 273 L399 -267 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-343 -330 L-343 210 L300 210 L300 -330 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-351.341796875 -333 L-351.341796875 207 L291.658203125 207 L291.658203125 -333 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-344 -349 L-344 191 L299 191 L299 -349 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-344 -374 L-344 166 L299 166 L299 -374 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-423 -220 L-423 320 L220 320 L220 -220 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-448.8075866699219 -223 L-448.8075866699219 317 L194.19239807128906 317 L194.19239807128906 -223 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-424 -239 L-424 301 L219 301 L219 -239 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-428 -244 L-428 296 L215 296 L215 -244 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-434.36468505859375 -244 L-434.36468505859375 296 L208.6352996826172 296 L208.6352996826172 -244 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-534.8900756835938 -244 L-534.8900756835938 296 L108.10990142822266 296 L108.10990142822266 -244 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
<path d="M-538.37060546875 -244 L-538.37060546875 296 L104.62940216064453 296 L104.62940216064453 -244 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
<path d="M-424 -264 L-424 276 L219 276 L219 -264 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
<path d="M-428 -269 L-428 271 L215 271 L215 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
<path d="M-436.7441101074219 -269 L-436.7441101074219 271 L206.2559051513672 271 L206.2559051513672 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
<path d="M-494.7842102050781 -269 L-494.7842102050781 271 L148.21580505371094 271 L148.21580505371094 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
<path d="M-498.3612976074219 -269 L-498.3612976074219 271 L144.63870239257812 271 L144.63870239257812 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
<path d="M-501.9385070800781 -269 L-501.9385070800781 271 L141.06149291992188 271 L141.06149291992188 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath37">
<path d="M-505.4189147949219 -269 L-505.4189147949219 271 L137.5811004638672 271 L137.5811004638672 -269 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath38">
<path d="M-63 -210 L-63 330 L580 330 L580 -210 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath39">
<path d="M-86.2654037475586 -213 L-86.2654037475586 327 L556.734619140625 327 L556.734619140625 -213 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath40">
<path d="M-64 -229 L-64 311 L579 311 L579 -229 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath41">
<path d="M-64 -254 L-64 286 L579 286 L579 -254 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath42">
<path d="M-43 -46 L-43 494 L600 494 L600 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath43">
<path d="M423 260 L423 -280 L-220 -280 L-220 260 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath44">
<path d="M-362.2521057128906 -273 L-362.2521057128906 267 L280.7478942871094 267 L280.7478942871094 -273 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath45">
<path d="M-163 -240 L-163 300 L480 300 L480 -240 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath46">
<path d="M-162.82150268554688 -216 L-162.82150268554688 324 L480.1784973144531 324 L480.1784973144531 -216 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath47">
<path d="M-253 -70 L-253 470 L390 470 L390 -70 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath48">
<path d="M-277.6028137207031 -73 L-277.6028137207031 467 L365.3971862792969 467 L365.3971862792969 -73 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath49">
<path d="M-254 -89 L-254 451 L389 451 L389 -89 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath50">
<path d="M-254 -114 L-254 426 L389 426 L389 -114 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath51">
<path d="M-140 303 L400 303 L400 -340 L-140 -340 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath52">
<path d="M-313 -168 L-313 372 L330 372 L330 -168 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath53">
<path d="M-123 -310 L-123 230 L520 230 L520 -310 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath54">
<path d="M-133.181396484375 -313 L-133.181396484375 227 L509.818603515625 227 L509.818603515625 -313 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath55">
<path d="M-124 -329 L-124 211 L519 211 L519 -329 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath56">
<path d="M-124 -354 L-124 186 L519 186 L519 -354 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath57">
<path d="M-483 -70 L-483 470 L160 470 L160 -70 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath58">
<path d="M-512.482421875 -73 L-512.482421875 467 L130.51759338378906 467 L130.51759338378906 -73 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath59">
<path d="M-484 -89 L-484 451 L159 451 L159 -89 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath60">
<path d="M-484 -114 L-484 426 L159 426 L159 -114 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath61">
<path d="M-353 -104 L-353 436 L290 436 L290 -104 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath62">
<path d="M-378.476806640625 -80 L-378.476806640625 460 L264.523193359375 460 L264.523193359375 -80 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath63">
<path d="M-473 -460 L-473 80 L170 80 L170 -460 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath64">
<path d="M-486.9841003417969 -463 L-486.9841003417969 77 L156.01589965820312 77 L156.01589965820312 -463 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath65">
<path d="M-474 -479 L-474 61 L169 61 L169 -479 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath66">
<path d="M-474 -504 L-474 36 L169 36 L169 -504 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath67">
<path d="M-93 -460 L-93 80 L550 80 L550 -460 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath68">
<path d="M-96 -463 L-96 77 L547 77 L547 -463 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath69">
<path d="M-94 -479 L-94 61 L549 61 L549 -479 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath70">
<path d="M-94 -504 L-94 36 L549 36 L549 -504 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath71">
<path d="M152.81324768066406 504.27880859375 L370.3355712890625 10.027819633483887 L-218.18919372558594 -248.98487854003906 L-435.7115478515625 245.26609802246094 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath72">
<path d="M-247.4656982421875 -451.8681945800781 L-247.4656982421875 88.13179779052734 L395.5343017578125 88.13179779052734 L395.5343017578125 -451.8681945800781 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath73">
<path d="M-555.886474609375 217.34580993652344 L-72.89581298828125 458.8411560058594 L214.6625213623047 -116.2755355834961 L-268.3281555175781 -357.7708740234375 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath74">
<path d="M-345.3576965332031 -425.7597961425781 L-345.3576965332031 114.24019622802734 L297.6423034667969 114.24019622802734 L297.6423034667969 -425.7597961425781 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath75">
<path d="M-234.64642333984375 299.73162841796875 L293.0112609863281 184.9389190673828 L156.32289123535156 -443.3645935058594 L-371.3348083496094 -328.5718688964844 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath76">
<path d="M-248.60589599609375 -321.9049072265625 L-248.60589599609375 218.0950927734375 L394.39410400390625 218.0950927734375 L394.39410400390625 -321.9049072265625 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath77">
<path d="M-290 493 L250 493 L250 -150 L-290 -150 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath78">
<path d="M-503 -368 L-503 172 L140 172 L140 -368 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath79">
<path d="M-280 63 L260 63 L260 -580 L-280 -580 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath80">
<path d="M-10.687999725341797 -458.1553955078125 L-10.687999725341797 81.84459686279297 L632.31201171875 81.84459686279297 L632.31201171875 -458.1553955078125 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath81">
<path d="M-380 159.83450317382812 L160 159.83450317382812 L160 -483.1654968261719 L-380 -483.1654968261719 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath82">
<path d="M-85.8583984375 -398.14630126953125 L-85.8583984375 141.85369873046875 L557.1416015625 141.85369873046875 L557.1416015625 -398.14630126953125 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath83">
<path d="M-140 563 L400 563 L400 -80 L-140 -80 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath84">
<path d="M-573 -293 L-573 247 L70 247 L70 -293 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath85">
<path d="M209.716552734375 457.06451416015625 L618.4215087890625 104.13358306884766 L198.17230224609375 -382.528076171875 L-210.53268432617188 -29.59716033935547 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath86">
<path d="M-400.3576965332031 -153.60800170898438 L-400.3576965332031 386.3919982910156 L242.64230346679688 386.3919982910156 L242.64230346679688 -153.60800170898438 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<rect clip-path="url(#clipPath1)" height="540" stroke="none" width="643" x="57" y="80" />
<path clip-path="url(#clipPath3)" d="M0.5 0.5 L589.5 0.5 L589.5 409.5 L0.5 409.5 Z" stroke="none" transform="matrix(1,0,0,1,100,90)" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,43,10)">
<path clip-path="url(#clipPath3)" d="M0.5 0.5 L589.5 0.5 L589.5 409.5 L0.5 409.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,287.3933,12)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">&lt;&lt;</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,307.8816,12)">
<text clip-path="url(#clipPath5)" stroke="none" x="0" xml:space="preserve" y="11">component</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,371.1184,12)">
<text clip-path="url(#clipPath6)" stroke="none" x="0" xml:space="preserve" y="11">&gt;&gt;</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,302.4836,28)">
<text clip-path="url(#clipPath7)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,243,210)">
<path clip-path="url(#clipPath8)" d="M0.5 0.5 L99.5 0.5 L99.5 82.5 L0.5 82.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,243,210)">
<path clip-path="url(#clipPath8)" d="M0.5 0.5 L99.5 0.5 L99.5 82.5 L0.5 82.5 Z" fill="none" />
<text clip-path="url(#clipPath9)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,22.2529,3)" x="0" xml:space="preserve" y="11">AudioClip</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,244,229)">
<path clip-path="url(#clipPath10)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,244,229)">
<path clip-path="url(#clipPath10)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,248,234)">
<text clip-path="url(#clipPath11)" stroke="none" x="0" xml:space="preserve" y="11">-</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254.3647,234)">
<text clip-path="url(#clipPath12)" stroke="none" x="0" xml:space="preserve" y="11">id</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,264.4678,234)">
<text clip-path="url(#clipPath13)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,267.9482,234)">
<text clip-path="url(#clipPath14)" stroke="none" x="0" xml:space="preserve" y="11">UniqueId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,248,249)">
<text clip-path="url(#clipPath15)" stroke="none" x="0" xml:space="preserve" y="11">-</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254.3647,249)">
<text clip-path="url(#clipPath16)" stroke="none" x="0" xml:space="preserve" y="11">duration</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,299.5679,249)">
<text clip-path="url(#clipPath17)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,303.0483,249)">
<text clip-path="url(#clipPath18)" stroke="none" x="0" xml:space="preserve" y="11">Time</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,244,267)">
<path clip-path="url(#clipPath19)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,244,267)">
<path clip-path="url(#clipPath19)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,343,330)">
<path clip-path="url(#clipPath20)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,343,330)">
<path clip-path="url(#clipPath20)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath21)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,8.3418,3)" x="0" xml:space="preserve" y="11">Authentication</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,344,349)">
<path clip-path="url(#clipPath22)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,344,349)">
<path clip-path="url(#clipPath22)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,344,374)">
<path clip-path="url(#clipPath23)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,344,374)">
<path clip-path="url(#clipPath23)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,423,220)">
<path clip-path="url(#clipPath24)" d="M0.5 0.5 L133.99119567871094 0.5 L133.99119567871094 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,423,220)">
<path clip-path="url(#clipPath24)" d="M0.5 0.5 L133.99119567871094 0.5 L133.99119567871094 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath25)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,25.8076,3)" x="0" xml:space="preserve" y="11">RawAudioData</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,424,239)">
<path clip-path="url(#clipPath26)" d="M0.5 0.5 L131.99119567871094 0.5 L131.99119567871094 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,424,239)">
<path clip-path="url(#clipPath26)" d="M0.5 0.5 L131.99119567871094 0.5 L131.99119567871094 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,428,244)">
<text clip-path="url(#clipPath27)" stroke="none" x="0" xml:space="preserve" y="11">-</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,434.3647,244)">
<text clip-path="url(#clipPath28)" stroke="none" x="0" xml:space="preserve" y="11">currentlyAccessing</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,534.8901,244)">
<text clip-path="url(#clipPath29)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,538.3706,244)">
<text clip-path="url(#clipPath30)" stroke="none" x="0" xml:space="preserve" y="11">int</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,424,264)">
<path clip-path="url(#clipPath31)" d="M0.5 0.5 L131.99119567871094 0.5 L131.99119567871094 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,424,264)">
<path clip-path="url(#clipPath31)" d="M0.5 0.5 L131.99119567871094 0.5 L131.99119567871094 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,428,269)">
<text clip-path="url(#clipPath32)" stroke="none" x="0" xml:space="preserve" y="11">+</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,436.7441,269)">
<text clip-path="url(#clipPath33)" stroke="none" x="0" xml:space="preserve" y="11">isAccessed</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,494.7842,269)">
<text clip-path="url(#clipPath34)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,498.3613,269)">
<text clip-path="url(#clipPath35)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,501.9385,269)">
<text clip-path="url(#clipPath36)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,505.4189,269)">
<text clip-path="url(#clipPath37)" stroke="none" x="0" xml:space="preserve" y="11">boolean</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,63,210)">
<path clip-path="url(#clipPath38)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,63,210)">
<path clip-path="url(#clipPath38)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath39)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,23.2654,3)" x="0" xml:space="preserve" y="11">MetaData</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,64,229)">
<path clip-path="url(#clipPath40)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,64,229)">
<path clip-path="url(#clipPath40)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,64,254)">
<path clip-path="url(#clipPath41)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,64,254)">
<path clip-path="url(#clipPath41)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,43,46)">
<path clip-path="url(#clipPath42)" d="M300 214 L380 214" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,423,260)">
<path clip-path="url(#clipPath43)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath43)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,362.2521,273)">
<text clip-path="url(#clipPath44)" stroke="none" x="0" xml:space="preserve" y="11">Contains</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,43,46)">
<path clip-path="url(#clipPath42)" d="M200 194 L120 194" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,163,240)">
<path clip-path="url(#clipPath45)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath45)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,162.82150000000001,216)">
<text clip-path="url(#clipPath46)" stroke="none" x="0" xml:space="preserve" y="11">Is described by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,253,70)">
<path clip-path="url(#clipPath47)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,253,70)">
<path clip-path="url(#clipPath47)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath48)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,24.6028,3)" x="0" xml:space="preserve" y="11">UniqueId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254,89)">
<path clip-path="url(#clipPath49)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254,89)">
<path clip-path="url(#clipPath49)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254,114)">
<path clip-path="url(#clipPath50)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,254,114)">
<path clip-path="url(#clipPath50)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,43,46)">
<path clip-path="url(#clipPath42)" d="M260 164 L260 94" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0,1,-1,0,303,140)">
<path clip-path="url(#clipPath51)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath51)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,313,168)">
<text clip-path="url(#clipPath52)" stroke="none" x="0" xml:space="preserve" y="11">Is identified by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,123,310)">
<path clip-path="url(#clipPath53)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,123,310)">
<path clip-path="url(#clipPath53)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath54)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,10.1814,3)" x="0" xml:space="preserve" y="11">SearchCriteria</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,124,329)">
<path clip-path="url(#clipPath55)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,124,329)">
<path clip-path="url(#clipPath55)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,124,354)">
<path clip-path="url(#clipPath56)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,124,354)">
<path clip-path="url(#clipPath56)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,483,70)">
<path clip-path="url(#clipPath57)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,483,70)">
<path clip-path="url(#clipPath57)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath58)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,29.4824,3)" x="0" xml:space="preserve" y="11">Playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,484,89)">
<path clip-path="url(#clipPath59)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,484,89)">
<path clip-path="url(#clipPath59)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,484,114)">
<path clip-path="url(#clipPath60)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,484,114)">
<path clip-path="url(#clipPath60)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,43,46)">
<path clip-path="url(#clipPath42)" d="M440 58 L310 58" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,353,104)">
<path clip-path="url(#clipPath61)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath61)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,378.4768,80)">
<text clip-path="url(#clipPath62)" stroke="none" x="0" xml:space="preserve" y="11">is identified by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,473,460)">
<path clip-path="url(#clipPath63)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,473,460)">
<path clip-path="url(#clipPath63)" d="M0.5 0.5 L99.5 0.5 L99.5 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath64)" font-weight="bold" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,13.9841,3)" x="0" xml:space="preserve" y="11">Audio player</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,474,479)">
<path clip-path="url(#clipPath65)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,474,479)">
<path clip-path="url(#clipPath65)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,474,504)">
<path clip-path="url(#clipPath66)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,474,504)">
<path clip-path="url(#clipPath66)" d="M0.5 0.5 L97.5 0.5 L97.5 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,93,460)">
<path clip-path="url(#clipPath67)" d="M0.5 0.5 L113.16889953613281 0.5 L113.16889953613281 69.5 L0.5 69.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,93,460)">
<path clip-path="url(#clipPath67)" d="M0.5 0.5 L113.16889953613281 0.5 L113.16889953613281 69.5 L0.5 69.5 Z" fill="none" />
<text clip-path="url(#clipPath68)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,3,3)" x="0" xml:space="preserve" y="11">Storage maintainer</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,94,479)">
<path clip-path="url(#clipPath69)" d="M0.5 0.5 L111.16889953613281 0.5 L111.16889953613281 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,94,479)">
<path clip-path="url(#clipPath69)" d="M0.5 0.5 L111.16889953613281 0.5 L111.16889953613281 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,94,504)">
<path clip-path="url(#clipPath70)" d="M0.5 0.5 L111.16889953613281 0.5 L111.16889953613281 0.5 L0.5 0.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,94,504)">
<path clip-path="url(#clipPath70)" d="M0.5 0.5 L111.16889953613281 0.5 L111.16889953613281 0.5 L0.5 0.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M263.6689147949219 540 L400 480" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" font-weight="bold" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(-0.9152795986159178,0.40281913603686254,-0.40281913603686254,-0.9152795986159178,343,400)">
<path clip-path="url(#clipPath71)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath71)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,247.46570000000003,451.8682)">
<text clip-path="url(#clipPath72)" stroke="none" x="0" xml:space="preserve" y="11">Is authenticated by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M530 540 L500 480" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0.44721359549995804,0.8944271909999159,-0.8944271909999159,0.44721359549995804,443,400)">
<path clip-path="url(#clipPath73)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath73)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,345.3577,425.7598)">
<text clip-path="url(#clipPath74)" stroke="none" x="0" xml:space="preserve" y="11">Is authenticated by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M263.6689147949219 540 L300 373" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(-0.21257910943269884,0.9771438595379908,-0.9771438595379908,-0.21257910943269884,243,293)">
<path clip-path="url(#clipPath75)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath75)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,248.60590000000002,321.9049)">
<text clip-path="url(#clipPath76)" stroke="none" x="0" xml:space="preserve" y="11">Manages</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M550 540 L550 370" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0,1,-1,0,493,290)">
<path clip-path="url(#clipPath77)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath77)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,503,368)">
<text clip-path="url(#clipPath78)" stroke="none" x="0" xml:space="preserve" y="11">Accesses</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M150 540 L120 520 L120 360" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0,1,-1,0,63,280)">
<path clip-path="url(#clipPath79)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath79)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,10.688000000000002,458.1554)">
<text clip-path="url(#clipPath80)" stroke="none" x="0" xml:space="preserve" y="11">Searches in</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M216.83450317382812 540 L216.83450317382812 460" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0,1,-1,0,159.8345,380)">
<path clip-path="url(#clipPath81)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath81)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85.85839999999999,398.1463)">
<text clip-path="url(#clipPath82)" stroke="none" x="0" xml:space="preserve" y="11">Searches by</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M620 540 L620 220" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(0,1,-1,0,563,140)">
<path clip-path="url(#clipPath83)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath83)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,573,293)">
<text clip-path="url(#clipPath84)" stroke="none" x="0" xml:space="preserve" y="11">Accesses</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-57,-80)">
<path clip-path="url(#clipPath1)" d="M263.6689147949219 540 L540 220" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(-0.6535757910369188,0.7568610740224826,-0.7568610740224826,-0.6535757910369188,483,140)">
<path clip-path="url(#clipPath85)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" stroke="none" />
<path clip-path="url(#clipPath85)" d="M10 -5 L0 0 ZM10 5 L0 0 Z" fill="none" stroke="black" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,400.3577,153.608)">
<text clip-path="url(#clipPath86)" stroke="none" x="0" xml:space="preserve" y="11">Manages</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 64 KiB

View File

@ -1,193 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-75 10 L-75 128 L534 128 L534 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 118 L609 118 L609 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-105 -10 L-105 108 L504 108 L504 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.40410041809082 -42 L-12.40410041809082 76 L596.5958862304688 76 L596.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-113.10140228271484 -42 L-113.10140228271484 76 L495.8985900878906 76 L495.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-116.58180236816406 -42 L-116.58180236816406 76 L492.418212890625 76 L492.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-475 -10 L-475 108 L134 108 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-481 -16 L-481 102 L128 102 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-518.47412109375 -16 L-518.47412109375 102 L90.5259017944336 102 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-521.95458984375 -16 L-521.95458984375 102 L87.04540252685547 102 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-531.9937133789062 -71 L-531.9937133789062 47 L77.00630187988281 47 L77.00630187988281 -71 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-241.49740600585938 -46 L-241.49740600585938 72 L367.5025939941406 72 L367.5025939941406 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-246.9779052734375 -46 L-246.9779052734375 72 L362.0220947265625 72 L362.0220947265625 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-252.4582977294922 -46 L-252.4582977294922 72 L356.54168701171875 72 L356.54168701171875 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-325.4245910644531 -46 L-325.4245910644531 72 L283.5754089355469 72 L283.5754089355469 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-337.6492004394531 -46 L-337.6492004394531 72 L271.3507995605469 72 L271.3507995605469 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-403.69219970703125 -46 L-403.69219970703125 72 L205.30780029296875 72 L205.30780029296875 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-407.269287109375 -46 L-407.269287109375 72 L201.73069763183594 72 L201.73069763183594 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-451.919189453125 -46 L-451.919189453125 72 L157.08079528808594 72 L157.08079528808594 -46 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M531.9937133789062 71 L531.9937133789062 -47 L-77.00630187988281 -47 L-77.00630187988281 71 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-255.51829528808594 -82 L-255.51829528808594 36 L353.481689453125 36 L353.481689453125 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-260.9988098144531 -82 L-260.9988098144531 36 L348.0011901855469 36 L348.0011901855469 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-266.47918701171875 -82 L-266.47918701171875 36 L342.52081298828125 36 L342.52081298828125 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-336.222900390625 -82 L-336.222900390625 36 L272.777099609375 36 L272.777099609375 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-339.79998779296875 -82 L-339.79998779296875 36 L269.20001220703125 36 L269.20001220703125 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-387.8981018066406 -82 L-387.8981018066406 36 L221.10189819335938 36 L221.10189819335938 -82 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M531.9937133789062 106 L531.9937133789062 -12 L-77.00630187988281 -12 L-77.00630187988281 106 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10.5 48.5 L10.5 97.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,12.4041,42)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">storage maintainer</text>
<line clip-path="url(#clipPath4)" fill="none" x1="0" x2="100.697265625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,113.1014,42)">
<text clip-path="url(#clipPath5)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath5)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,116.5818,42)">
<text clip-path="url(#clipPath6)" stroke="none" x="0" xml:space="preserve" y="11">Storage maintainer</text>
<line clip-path="url(#clipPath6)" fill="none" x1="0" x2="101.01416015625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,475,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 97.5" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,475,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 97.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,475,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,475,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" fill="none" />
<text clip-path="url(#clipPath8)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x="0" xml:space="preserve" y="11">system</text>
<line clip-path="url(#clipPath8)" fill="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x1="0" x2="37.47412109375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,518.4741,16)">
<text clip-path="url(#clipPath9)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath9)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,521.9546,16)">
<text clip-path="url(#clipPath10)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
<line clip-path="url(#clipPath10)" fill="none" x1="0" x2="71.03271484375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,531.9937,71)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,531.9937,71)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,75,-10)">
<path clip-path="url(#clipPath1)" d="M456.99371337890625 81 L40 81" fill="none" />
<text clip-path="url(#clipPath12)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,166.4974,56)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,246.9779,46)">
<text clip-path="url(#clipPath13)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,252.4583,46)">
<text clip-path="url(#clipPath14)" stroke="none" x="0" xml:space="preserve" y="11">authenticated</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,325.4246,46)">
<text clip-path="url(#clipPath15)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,337.6492,46)">
<text clip-path="url(#clipPath16)" stroke="none" x="0" xml:space="preserve" y="11">authenticate</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,403.6922,46)">
<text clip-path="url(#clipPath17)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,407.26930000000004,46)">
<text clip-path="url(#clipPath18)" stroke="none" x="0" xml:space="preserve" y="11">authinfo</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,451.91920000000005,46)">
<text clip-path="url(#clipPath19)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,531.9937,71)">
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,75,-10)">
<path clip-path="url(#clipPath1)" d="M456.99371337890625 116 L40 116" fill="none" />
<text clip-path="url(#clipPath21)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,180.5183,92)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,260.9988,82)">
<text clip-path="url(#clipPath22)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,266.4792,82)">
<text clip-path="url(#clipPath23)" stroke="none" x="0" xml:space="preserve" y="11">createPlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,336.2229,82)">
<text clip-path="url(#clipPath24)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,339.8,82)">
<text clip-path="url(#clipPath25)" stroke="none" x="0" xml:space="preserve" y="11">playlistId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,387.8981,82)">
<text clip-path="url(#clipPath26)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,8.881784197001252E-16,-8.881784197001252E-16,-1,531.9937,106)">
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,183 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-85 10 L-85 132 L484 132 L484 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 122 L569 122 L569 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-105 -10 L-105 112 L464 112 L464 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.40410041809082 -42 L-12.40410041809082 80 L556.5958862304688 80 L556.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-113.10140228271484 -42 L-113.10140228271484 80 L455.8985900878906 80 L455.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-116.58180236816406 -42 L-116.58180236816406 80 L452.418212890625 80 L452.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-435 -10 L-435 112 L134 112 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-441 -16 L-441 106 L128 106 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-478.4740905761719 -16 L-478.4740905761719 106 L90.5259017944336 106 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-481.95458984375 -16 L-481.95458984375 106 L87.04540252685547 106 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-491.99371337890625 -75 L-491.99371337890625 47 L77.00630187988281 47 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M491.99371337890625 75 L491.99371337890625 -47 L-77.00630187988281 -47 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-196.50270080566406 -51 L-196.50270080566406 71 L372.497314453125 71 L372.497314453125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-201.9832000732422 -51 L-201.9832000732422 71 L367.0168151855469 71 L367.0168151855469 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-207.46359252929688 -51 L-207.46359252929688 71 L361.5364074707031 71 L361.5364074707031 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-280.4299011230469 -51 L-280.4299011230469 71 L288.5700988769531 71 L288.5700988769531 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-292.6545104980469 -51 L-292.6545104980469 71 L276.3454895019531 71 L276.3454895019531 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-358.697509765625 -51 L-358.697509765625 71 L210.30250549316406 71 L210.30250549316406 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-362.27459716796875 -51 L-362.27459716796875 71 L206.72540283203125 71 L206.72540283203125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-406.9137878417969 -51 L-406.9137878417969 71 L162.08619689941406 71 L162.08619689941406 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M491.99371337890625 110 L491.99371337890625 -12 L-77.00630187988281 -12 L-77.00630187988281 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-221.67970275878906 -86 L-221.67970275878906 36 L347.3203125 36 L347.3203125 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-227.1602020263672 -86 L-227.1602020263672 36 L341.8398132324219 36 L341.8398132324219 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-232.64059448242188 -86 L-232.64059448242188 36 L336.3594055175781 36 L336.3594055175781 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-317.41259765625 -86 L-317.41259765625 36 L251.58740234375 36 L251.58740234375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-320.98968505859375 -86 L-320.98968505859375 36 L248.0102996826172 36 L248.0102996826172 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-381.7367858886719 -86 L-381.7367858886719 36 L187.26319885253906 36 L187.26319885253906 -86 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,105,10)">
<path d="M10.5 48.5 L10.5 101.5" clip-path="url(#clipPath3)" fill="none" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" clip-path="url(#clipPath3)" fill="white" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12.4041,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">storage maintainer</text>
<line x1="0" y1="12.5" x2="100.697265625" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,113.1014,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,116.5818,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Storage maintainer</text>
<line x1="0" y1="12.5" x2="101.01416015625" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,435,10)">
<path d="M62.493648529052734 0.5 L62.493648529052734 101.5" stroke="none" clip-path="url(#clipPath7)" />
<path d="M62.493648529052734 0.5 L62.493648529052734 101.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath7)" fill="none" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,441,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath8)">system</text>
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,478.4741,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,481.9546,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">Local storage</text>
<line x1="0" y1="12.5" x2="71.03271484375" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,491.9937,75)">
<path d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" stroke="none" clip-path="url(#clipPath11)" />
<path d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" stroke="black" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85,-10)">
<path d="M30 85 L406.99371337890625 85" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-1,0,0,-1,406.9937,85)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,406.9937,85)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,196.5027,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,201.9832,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,207.4636,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,280.42990000000003,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,292.6545,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,358.6975,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,362.2746,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authInfo</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,406.91380000000004,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85,-10)">
<path d="M30 120 L406.99371337890625 120" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath21)" transform="matrix(-1,0,0,-1,406.9937,120)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,406.9937,120)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,221.6797,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath22)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,227.1602,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath23)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,232.6406,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">deleteAudioClip</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,317.4126,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,320.9897,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">audioClipId</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,381.7368,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath27)">)</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1,193 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-85 10 L-85 141 L504 141 L504 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 131 L589 131 L589 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-105 -10 L-105 121 L484 121 L484 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.40410041809082 -42 L-12.40410041809082 89 L576.5958862304688 89 L576.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-113.10140228271484 -42 L-113.10140228271484 89 L475.8985900878906 89 L475.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-116.58180236816406 -42 L-116.58180236816406 89 L472.418212890625 89 L472.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-455 -10 L-455 121 L134 121 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-461 -16 L-461 115 L128 115 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-498.4740905761719 -16 L-498.4740905761719 115 L90.5259017944336 115 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-501.95458984375 -16 L-501.95458984375 115 L87.04540252685547 115 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-511.99371337890625 -75 L-511.99371337890625 56 L77.00630187988281 56 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-246.5406951904297 -52 L-246.5406951904297 79 L342.45928955078125 79 L342.45928955078125 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-252.0211944580078 -52 L-252.0211944580078 79 L336.9787902832031 79 L336.9787902832031 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-257.5015869140625 -52 L-257.5015869140625 79 L331.4984130859375 79 L331.4984130859375 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-330.4678955078125 -52 L-330.4678955078125 79 L258.5321044921875 79 L258.5321044921875 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-342.6925048828125 -52 L-342.6925048828125 79 L246.3074951171875 79 L246.3074951171875 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-408.7355041503906 -52 L-408.7355041503906 79 L180.26449584960938 79 L180.26449584960938 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-412.3125915527344 -52 L-412.3125915527344 79 L176.68739318847656 79 L176.68739318847656 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-456.9624938964844 -52 L-456.9624938964844 79 L132.03750610351562 79 L132.03750610351562 -52 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M511.99371337890625 75 L511.99371337890625 -56 L-77.00630187988281 -56 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-281.5075988769531 -85 L-281.5075988769531 46 L307.4924011230469 46 L307.4924011230469 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-286.98809814453125 -85 L-286.98809814453125 46 L302.01190185546875 46 L302.01190185546875 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-292.468505859375 -85 L-292.468505859375 46 L296.531494140625 46 L296.531494140625 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-362.2336120605469 -85 L-362.2336120605469 46 L226.7664031982422 46 L226.7664031982422 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-365.810791015625 -85 L-365.810791015625 46 L223.18919372558594 46 L223.18919372558594 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-413.9089050292969 -85 L-413.9089050292969 46 L175.09109497070312 46 L175.09109497070312 -85 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M511.99371337890625 110 L511.99371337890625 -21 L-77.00630187988281 -21 L-77.00630187988281 110 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10.5 48.5 L10.5 101.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,12.4041,42)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">storage maintainer</text>
<line clip-path="url(#clipPath4)" fill="none" x1="0" x2="100.697265625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,113.1014,42)">
<text clip-path="url(#clipPath5)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath5)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,116.5818,42)">
<text clip-path="url(#clipPath6)" stroke="none" x="0" xml:space="preserve" y="11">Storage maintainer</text>
<line clip-path="url(#clipPath6)" fill="none" x1="0" x2="101.01416015625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,455,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 110.5" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,455,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 110.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,455,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,455,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" fill="none" />
<text clip-path="url(#clipPath8)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x="0" xml:space="preserve" y="11">system</text>
<line clip-path="url(#clipPath8)" fill="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x1="0" x2="37.47412109375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,498.4741,16)">
<text clip-path="url(#clipPath9)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath9)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,501.9546,16)">
<text clip-path="url(#clipPath10)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
<line clip-path="url(#clipPath10)" fill="none" x1="0" x2="71.03271484375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,511.9937,75)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 45.5 L0.5 45.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,511.9937,75)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 45.5 L0.5 45.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85,-10)">
<path clip-path="url(#clipPath1)" d="M426.99371337890625 85 L30 85" fill="none" />
<text clip-path="url(#clipPath12)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,161.5407,62)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,252.0212,52)">
<text clip-path="url(#clipPath13)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,257.5016,52)">
<text clip-path="url(#clipPath14)" stroke="none" x="0" xml:space="preserve" y="11">authenticated</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,330.4679,52)">
<text clip-path="url(#clipPath15)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,342.6925,52)">
<text clip-path="url(#clipPath16)" stroke="none" x="0" xml:space="preserve" y="11">authenticate</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,408.7355,52)">
<text clip-path="url(#clipPath17)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,412.3126,52)">
<text clip-path="url(#clipPath18)" stroke="none" x="0" xml:space="preserve" y="11">authinfo</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,456.9625,52)">
<text clip-path="url(#clipPath19)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,511.9937,75)">
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85,-10)">
<path clip-path="url(#clipPath1)" d="M426.99371337890625 120 L30 120" fill="none" />
<text clip-path="url(#clipPath21)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,196.5076,95)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,286.98810000000003,85)">
<text clip-path="url(#clipPath22)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,292.4685,85)">
<text clip-path="url(#clipPath23)" stroke="none" x="0" xml:space="preserve" y="11">deletePlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,362.2336,85)">
<text clip-path="url(#clipPath24)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,365.8108,85)">
<text clip-path="url(#clipPath25)" stroke="none" x="0" xml:space="preserve" y="11">playlistId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,413.9089,85)">
<text clip-path="url(#clipPath26)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,4.884981308350689E-15,-4.884981308350689E-15,-1,511.9937,110)">
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath27)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,249 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-85 10 L-85 171 L534 171 L534 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 161 L619 161 L619 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-105 -10 L-105 151 L514 151 L514 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-12.40410041809082 -42 L-12.40410041809082 119 L606.5958862304688 119 L606.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-113.10140228271484 -42 L-113.10140228271484 119 L505.8985900878906 119 L505.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-116.58180236816406 -42 L-116.58180236816406 119 L502.418212890625 119 L502.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-485 -10 L-485 151 L134 151 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-491 -16 L-491 145 L128 145 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-528.47412109375 -16 L-528.47412109375 145 L90.52587890625 145 L90.52587890625 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-531.95458984375 -16 L-531.95458984375 145 L87.04541015625 145 L87.04541015625 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-541.9937133789062 -75 L-541.9937133789062 86 L77.00630187988281 86 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-253.21099853515625 -51 L-253.21099853515625 110 L365.78900146484375 110 L365.78900146484375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-258.6914978027344 -51 L-258.6914978027344 110 L360.3085021972656 110 L360.3085021972656 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-264.1719055175781 -51 L-264.1719055175781 110 L354.8280944824219 110 L354.8280944824219 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-337.1382141113281 -51 L-337.1382141113281 110 L281.8617858886719 110 L281.8617858886719 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-349.36279296875 -51 L-349.36279296875 110 L269.63720703125 110 L269.63720703125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-415.4057922363281 -51 L-415.4057922363281 110 L203.5941925048828 110 L203.5941925048828 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-418.98291015625 -51 L-418.98291015625 110 L200.01710510253906 110 L200.01710510253906 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-463.6328125 -51 L-463.6328125 110 L155.36720275878906 110 L155.36720275878906 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M541.9937133789062 75 L541.9937133789062 -86 L-77.00630187988281 -86 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-270.52081298828125 -86 L-270.52081298828125 75 L348.47918701171875 75 L348.47918701171875 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-276.0013122558594 -86 L-276.0013122558594 75 L342.9986877441406 75 L342.9986877441406 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-281.481689453125 -86 L-281.481689453125 75 L337.518310546875 75 L337.518310546875 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-319.48760986328125 -86 L-319.48760986328125 75 L299.51239013671875 75 L299.51239013671875 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-331.7121887207031 -86 L-331.7121887207031 75 L287.2878112792969 75 L287.2878112792969 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-389.2204895019531 -86 L-389.2204895019531 75 L229.7794952392578 75 L229.7794952392578 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-392.797607421875 -86 L-392.797607421875 75 L226.202392578125 75 L226.202392578125 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-440.89581298828125 -86 L-440.89581298828125 75 L178.1042022705078 75 L178.1042022705078 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M541.9937133789062 110 L541.9937133789062 -51 L-77.00630187988281 -51 L-77.00630187988281 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath30">
<path d="M-304.10308837890625 -121 L-304.10308837890625 40 L314.89691162109375 40 L314.89691162109375 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath31">
<path d="M-309.5835876464844 -121 L-309.5835876464844 40 L309.4164123535156 40 L309.4164123535156 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath32">
<path d="M-315.0639953613281 -121 L-315.0639953613281 40 L303.9360046386719 40 L303.9360046386719 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath33">
<path d="M-375.7304992675781 -121 L-375.7304992675781 40 L243.26950073242188 40 L243.26950073242188 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath34">
<path d="M-379.3077087402344 -121 L-379.3077087402344 40 L239.6923065185547 40 L239.6923065185547 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath35">
<path d="M-417.3135070800781 -121 L-417.3135070800781 40 L201.68649291992188 40 L201.68649291992188 -121 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath36">
<path d="M541.9937133789062 145 L541.9937133789062 -16 L-77.00630187988281 -16 L-77.00630187988281 145 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10.5 48.5 L10.5 136.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,105,10)">
<path clip-path="url(#clipPath3)" d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,12.4041,42)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">storage maintainer</text>
<line clip-path="url(#clipPath4)" fill="none" x1="0" x2="100.697265625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,113.1014,42)">
<text clip-path="url(#clipPath5)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath5)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,116.5818,42)">
<text clip-path="url(#clipPath6)" stroke="none" x="0" xml:space="preserve" y="11">Storage maintainer</text>
<line clip-path="url(#clipPath6)" fill="none" x1="0" x2="101.01416015625" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,485,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 140.5" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-dasharray="5,5" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,485,10)">
<path clip-path="url(#clipPath7)" d="M62.493648529052734 0.5 L62.493648529052734 140.5" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,485,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,485,10)">
<path clip-path="url(#clipPath7)" d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" fill="none" />
<text clip-path="url(#clipPath8)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x="0" xml:space="preserve" y="11">system</text>
<line clip-path="url(#clipPath8)" fill="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,6,6)" x1="0" x2="37.47412109375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,528.47412109375,16)">
<text clip-path="url(#clipPath9)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
<line clip-path="url(#clipPath9)" fill="none" x1="0" x2="3.48046875" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,531.95458984375,16)">
<text clip-path="url(#clipPath10)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
<line clip-path="url(#clipPath10)" fill="none" x1="0" x2="71.03271484375" y1="12.5" y2="12.5" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,541.9937,75)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 75.5 L0.5 75.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,541.9937,75)">
<path clip-path="url(#clipPath11)" d="M0.5 0.5 L9.5 0.5 L9.5 75.5 L0.5 75.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85,-10)">
<path clip-path="url(#clipPath1)" d="M456.99371337890625 85 L30 85" fill="none" />
<text clip-path="url(#clipPath12)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,168.211,61)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,258.6915,51)">
<text clip-path="url(#clipPath13)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,264.1719,51)">
<text clip-path="url(#clipPath14)" stroke="none" x="0" xml:space="preserve" y="11">authenticated</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,337.1382,51)">
<text clip-path="url(#clipPath15)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,349.3628,51)">
<text clip-path="url(#clipPath16)" stroke="none" x="0" xml:space="preserve" y="11">authenticate</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,415.4058,51)">
<text clip-path="url(#clipPath17)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,418.9829,51)">
<text clip-path="url(#clipPath18)" stroke="none" x="0" xml:space="preserve" y="11">authinfo</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,463.6328,51)">
<text clip-path="url(#clipPath19)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,541.9937,75)">
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath20)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85,-10)">
<path clip-path="url(#clipPath1)" d="M456.99371337890625 120 L30 120" fill="none" />
<text clip-path="url(#clipPath21)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,185.5208,96)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,276.0013,86)">
<text clip-path="url(#clipPath22)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,281.4817,86)">
<text clip-path="url(#clipPath23)" stroke="none" x="0" xml:space="preserve" y="11">playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,319.4876,86)">
<text clip-path="url(#clipPath24)" stroke="none" x="0" xml:space="preserve" y="11">:=</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,331.7122,86)">
<text clip-path="url(#clipPath25)" stroke="none" x="0" xml:space="preserve" y="11">editPlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,389.2205,86)">
<text clip-path="url(#clipPath26)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,392.7976,86)">
<text clip-path="url(#clipPath27)" stroke="none" x="0" xml:space="preserve" y="11">playlistId</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,440.8958,86)">
<text clip-path="url(#clipPath28)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,541.9937,110)">
<path clip-path="url(#clipPath29)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath29)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,85,-10)">
<path clip-path="url(#clipPath1)" d="M456.99371337890625 155 L30 155" fill="none" />
<text clip-path="url(#clipPath30)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,219.1031,131)" x="0" xml:space="preserve" y="11"> </text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,309.58360000000005,121)">
<text clip-path="url(#clipPath31)" stroke="none" x="0" xml:space="preserve" y="11">:</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,315.064,121)">
<text clip-path="url(#clipPath32)" stroke="none" x="0" xml:space="preserve" y="11">savePlaylist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,375.7305,121)">
<text clip-path="url(#clipPath33)" stroke="none" x="0" xml:space="preserve" y="11">(</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,379.3077,121)">
<text clip-path="url(#clipPath34)" stroke="none" x="0" xml:space="preserve" y="11">playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,417.31350000000003,121)">
<text clip-path="url(#clipPath35)" stroke="none" x="0" xml:space="preserve" y="11">)</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(-1,0,0,-1,541.9937,145)">
<path clip-path="url(#clipPath36)" d="M12 -6 L0 0 L12 6 Z" stroke="none" />
<path clip-path="url(#clipPath36)" d="M12 -6 L0 0 L12 6 Z" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,210 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg color-interpolation="auto" color-rendering="auto" fill="black" fill-opacity="1" font-family="&apos;Dialog&apos;" font-size="12" font-style="normal" font-weight="normal" image-rendering="auto" shape-rendering="auto" stroke="black" stroke-dasharray="none" stroke-dashoffset="0" stroke-linecap="square" stroke-linejoin="miter" stroke-miterlimit="10" stroke-opacity="1" stroke-width="1" text-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M4 50 L4 800 L579 800 L579 50 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 750 L575 750 L575 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-176 -10 L-176 740 L399 740 L399 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-178 -12 L-178 738 L397 738 L397 -12 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-176 -27 L-176 723 L399 723 L399 -27 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-216.31289672851562 -50 L-216.31289672851562 700 L358.6871032714844 700 L358.6871032714844 -50 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-248.9792022705078 -64 L-248.9792022705078 686 L326.02081298828125 686 L326.02081298828125 -64 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-213.6072998046875 -150 L-213.6072998046875 600 L361.3927001953125 600 L361.3927001953125 -150 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-244.76010131835938 -166 L-244.76010131835938 584 L330.2398986816406 584 L330.2398986816406 -166 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-210.87269592285156 -230 L-210.87269592285156 520 L364.1272888183594 520 L364.1272888183594 -230 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-242.82650756835938 -239.45590209960938 L-242.82650756835938 510.5440979003906 L332.1734924316406 510.5440979003906 L332.1734924316406 -239.45590209960938 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M-194.1125030517578 -310 L-194.1125030517578 440 L380.88751220703125 440 L380.88751220703125 -310 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-230.9752960205078 -326 L-230.9752960205078 424 L344.0246887207031 424 L344.0246887207031 -326 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-206 -390 L-206 360 L369 360 L369 -390 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-239.38099670410156 -406 L-239.38099670410156 344 L335.6189880371094 344 L335.6189880371094 -406 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-216 -460 L-216 290 L359 290 L359 -460 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-246.96139526367188 -476 L-246.96139526367188 274 L328.0386047363281 274 L328.0386047363281 -476 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-226 -530 L-226 220 L349 220 L349 -530 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-251.0625 -546 L-251.0625 204 L323.9375 204 L323.9375 -546 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-216 -600 L-216 150 L359 150 L359 -600 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M-243.9080047607422 -616 L-243.9080047607422 134 L331.0920104980469 134 L331.0920104980469 -616 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-216 -670 L-216 80 L359 80 L359 -670 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-244.38070678710938 -686 L-244.38070678710938 64 L330.6192932128906 64 L330.6192932128906 -686 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-36 -370 L-36 380 L539 380 L539 -370 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-10.492899894714355 -455 L-10.492899894714355 295 L564.507080078125 295 L564.507080078125 -455 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-506 -440 L-506 310 L69 310 L69 -440 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-497.3446960449219 -525 L-497.3446960449219 225 L77.6552963256836 225 L77.6552963256836 -525 Z" />
</clipPath>
</defs>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,176,10)">
<path clip-path="url(#clipPath3)" d="M0.5 0.5 L74.53269958496094 0.5 L74.53269958496094 17.5 L0.5 17.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,178,12)">
<text clip-path="url(#clipPath4)" stroke="none" x="0" xml:space="preserve" y="11">Local storage</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,176,27)">
<path clip-path="url(#clipPath5)" d="M0.5 0.5 L249.5 0.5 L249.5 712.5 L0.5 712.5 Z" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,176,27)">
<path clip-path="url(#clipPath5)" d="M0.5 0.5 L249.5 0.5 L249.5 712.5 L0.5 712.5 Z" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216.3129,50)">
<ellipse clip-path="url(#clipPath6)" cx="90" cy="30" rx="90" ry="30" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216.3129,50)">
<ellipse clip-path="url(#clipPath6)" cx="90" cy="30" fill="none" rx="90" ry="30" />
<text clip-path="url(#clipPath7)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,32.6663,14)" x="0" xml:space="preserve" y="11">UC-1 Store or update</text>
<text clip-path="url(#clipPath7)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,32.6663,14)" x="0" xml:space="preserve" y="25">Audio clip</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,213.6073,150)">
<ellipse clip-path="url(#clipPath8)" cx="92.70555" cy="25" rx="92.70555" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,213.6073,150)">
<ellipse clip-path="url(#clipPath8)" cx="92.70555" cy="25" fill="none" rx="92.70555" ry="25" />
<text clip-path="url(#clipPath9)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,31.1528,16)" x="0" xml:space="preserve" y="11">UC-2 Delete Audio clip</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,210.8727,230)">
<ellipse clip-path="url(#clipPath10)" cx="95.4401" cy="25.45585" rx="95.4401" ry="25.45585" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,210.8727,230)">
<ellipse clip-path="url(#clipPath10)" cx="95.4401" cy="25.45585" fill="none" rx="95.4401" ry="25.45585" />
<text clip-path="url(#clipPath11)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,31.9538,9.4559)" x="0" xml:space="preserve" y="11">UC-3 Update Audio clip</text>
<text clip-path="url(#clipPath11)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,31.9538,9.4559)" x="0" xml:space="preserve" y="25">metadata</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,194.1125,310)">
<ellipse clip-path="url(#clipPath12)" cx="112.2004" cy="25" rx="112.2004" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,194.1125,310)">
<ellipse clip-path="url(#clipPath12)" cx="112.2004" cy="25" fill="none" rx="112.2004" ry="25" />
<text clip-path="url(#clipPath13)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,36.8628,16)" x="0" xml:space="preserve" y="11">UC-4 Access raw audio data</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,206,390)">
<ellipse clip-path="url(#clipPath14)" cx="100.31285" cy="25" rx="100.31285" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,206,390)">
<ellipse clip-path="url(#clipPath14)" cx="100.31285" cy="25" fill="none" rx="100.31285" ry="25" />
<text clip-path="url(#clipPath15)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,33.381,16)" x="0" xml:space="preserve" y="11">UC-5 Search in metadata</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,460)">
<ellipse clip-path="url(#clipPath16)" cx="85" cy="25" rx="85" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,460)">
<ellipse clip-path="url(#clipPath16)" cx="85" cy="25" fill="none" rx="85" ry="25" />
<text clip-path="url(#clipPath17)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,30.9614,16)" x="0" xml:space="preserve" y="11">UC-6 Create playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,226,530)">
<ellipse clip-path="url(#clipPath18)" cx="71.91185" cy="25" rx="71.91185" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,226,530)">
<ellipse clip-path="url(#clipPath18)" cx="71.91185" cy="25" fill="none" rx="71.91185" ry="25" />
<text clip-path="url(#clipPath19)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,25.0625,16)" x="0" xml:space="preserve" y="11">UC-7 Edit playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,600)">
<ellipse clip-path="url(#clipPath20)" cx="81.627" cy="25" rx="81.627" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,600)">
<ellipse clip-path="url(#clipPath20)" cx="81.627" cy="25" fill="none" rx="81.627" ry="25" />
<text clip-path="url(#clipPath21)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,27.908,16)" x="0" xml:space="preserve" y="11">UC-8 Delete playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,670)">
<ellipse clip-path="url(#clipPath22)" cx="83.2411" cy="25" rx="83.2411" ry="25" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,216,670)">
<ellipse clip-path="url(#clipPath22)" cx="83.2411" cy="25" fill="none" rx="83.2411" ry="25" />
<text clip-path="url(#clipPath23)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,28.3807,16)" x="0" xml:space="preserve" y="11">UC-9 Access playlist</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,36,370)">
<path clip-path="url(#clipPath24)" d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,36,370)">
<path clip-path="url(#clipPath24)" d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" fill="none" />
<text clip-path="url(#clipPath25)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,-25.5071,85)" x="0" xml:space="preserve" y="11">Storage maintainer</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" fill="white" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke="white" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,506,440)">
<path clip-path="url(#clipPath26)" d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" stroke="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,506,440)">
<path clip-path="url(#clipPath26)" d="M25 21.33333396911621 C12.5 21.33333396911621 12.5 0 25 0 C37.5 0 37.5 21.33333396911621 25 21.33333396911621 M25 21.33333396911621 L25 26.66666603088379 M0 26.66666603088379 L50 26.66666603088379 M25 26.66666603088379 L25 53.33333206176758 M25 53.33333206176758 L0 80 M25 53.33333206176758 L50 80" fill="none" />
<text clip-path="url(#clipPath27)" stroke="none" stroke-linecap="square" stroke-miterlimit="10" transform="matrix(1,0,0,1,-8.6553,85)" x="0" xml:space="preserve" y="11">Audio player</text>
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M90 420 L217.26449584960938 311.1191101074219" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M90 465 L210 465" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M90 420 L234.26710510253906 146.04519653320312" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M90 420 L223.53900146484375 233.7989959716797" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M510 490 L419.32818603515625 390.91448974609375" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M118.5071029663086 507.252685546875 L220.23699951171875 533.134521484375" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M118.5071029663086 519.8922119140625 L232.0269012451172 599.106201171875" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M107.90149688720703 522 L225.2322998046875 666.1934204101562" fill="none" />
</g>
<g color-interpolation="linearRGB" color-rendering="optimizeQuality" font-family="sans-serif" font-size="11" image-rendering="optimizeQuality" shape-rendering="geometricPrecision" stroke-linecap="butt" stroke-miterlimit="1" text-rendering="optimizeLegibility" transform="matrix(1,0,0,1,-4,-50)">
<path clip-path="url(#clipPath1)" d="M498.3446960449219 584.9854736328125 L380.8940124511719 735.9945068359375" fill="none" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 23 KiB

View File

@ -1,195 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-85 10 L-85 132 L524 132 L524 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 122 L609 122 L609 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-475 -10 L-475 112 L134 112 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-481 -16 L-481 106 L128 106 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-518.47412109375 -16 L-518.47412109375 106 L90.5259017944336 106 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-521.95458984375 -16 L-521.95458984375 106 L87.04540252685547 106 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-531.9937133789062 -75 L-531.9937133789062 47 L77.00630187988281 47 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-105 -10 L-105 112 L504 112 L504 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-12.40410041809082 -42 L-12.40410041809082 80 L596.5958862304688 80 L596.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-113.10140228271484 -42 L-113.10140228271484 80 L495.8985900878906 80 L495.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-116.58180236816406 -42 L-116.58180236816406 80 L492.418212890625 80 L492.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M531.9937133789062 75 L531.9937133789062 -47 L-77.00630187988281 -47 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-221.85499572753906 -51 L-221.85499572753906 71 L387.1449890136719 71 L387.1449890136719 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-227.3354949951172 -51 L-227.3354949951172 71 L381.66448974609375 71 L381.66448974609375 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-232.81590270996094 -51 L-232.81590270996094 71 L376.1841125488281 71 L376.1841125488281 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-305.7821960449219 -51 L-305.7821960449219 71 L303.2178039550781 71 L303.2178039550781 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-318.0068054199219 -51 L-318.0068054199219 71 L290.9931945800781 71 L290.9931945800781 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-384.0498046875 -51 L-384.0498046875 71 L224.9501953125 71 L224.9501953125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-387.62689208984375 -51 L-387.62689208984375 71 L221.3730926513672 71 L221.3730926513672 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-421.5614929199219 -51 L-421.5614929199219 71 L187.43850708007812 71 L187.43850708007812 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M531.9937133789062 110 L531.9937133789062 -12 L-77.00630187988281 -12 L-77.00630187988281 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-196.2993927001953 -86 L-196.2993927001953 36 L412.7005920410156 36 L412.7005920410156 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-201.7799072265625 -86 L-201.7799072265625 36 L407.2200927734375 36 L407.2200927734375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-207.2602996826172 -86 L-207.2602996826172 36 L401.73968505859375 36 L401.73968505859375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-310.2510070800781 -86 L-310.2510070800781 36 L298.7489929199219 36 L298.7489929199219 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-322.4755859375 -86 L-322.4755859375 36 L286.5244140625 36 L286.5244140625 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-406.22711181640625 -86 L-406.22711181640625 36 L202.7729034423828 36 L202.7729034423828 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-409.80419921875 -86 L-409.80419921875 36 L199.19580078125 36 L199.19580078125 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-447.1171875 -86 L-447.1171875 36 L161.88279724121094 36 L161.88279724121094 -86 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,475,10)">
<path d="M62.493648529052734 0.5 L62.493648529052734 101.5" clip-path="url(#clipPath3)" fill="none" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath3)" fill="white" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,481,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">system</text>
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,518.4741,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,521.9546,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Local storage</text>
<line x1="0" y1="12.5" x2="71.03271484375" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,531.9937,75)">
<path d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L9.5 0.5 L9.5 36.5 L0.5 36.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,105,10)">
<path d="M10.5 48.5 L10.5 101.5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10.5 48.5 L10.5 101.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath8)" fill="none" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12.4041,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">storage maintainer</text>
<line x1="0" y1="12.5" x2="100.697265625" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,113.1014,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,116.5818,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath11)">Storage maintainer</text>
<line x1="0" y1="12.5" x2="101.01416015625" y2="12.5" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85,-10)">
<path d="M30 85 L446.99371337890625 85" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-0.9999999999999999,-3.219646771412954E-15,3.219646771412954E-15,-0.9999999999999999,446.9937,85)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-0.9999999999999999,-3.219646771412954E-15,3.219646771412954E-15,-0.9999999999999999,446.9937,85)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,221.855,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,227.3355,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,232.8159,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,305.7822,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,318.0068,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,384.0498,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,387.6269,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authId</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,421.5615,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,85,-10)">
<path d="M30 120 L446.99371337890625 120" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath21)" transform="matrix(-1,-6.328271240363392E-15,6.328271240363392E-15,-1,446.9937,120)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,-6.328271240363392E-15,6.328271240363392E-15,-1,446.9937,120)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,196.2994,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath22)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,201.7799,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath23)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,207.2603,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">matchingUniqueIds</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,310.251,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,322.4756,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">searchMetadata</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,406.2271,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath27)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,409.80420000000004,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath28)">criteria</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,447.1172,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath29)">)</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,195 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.0//EN' 'http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd'>
<svg stroke-width="1" stroke-dashoffset="0" font-size="12" stroke-dasharray="none" color-rendering="auto" font-weight="normal" color-interpolation="auto" stroke-linejoin="miter" fill="black" image-rendering="auto" font-family="&apos;sansserif&apos;" stroke-opacity="1" stroke-miterlimit="10" stroke="black" text-rendering="auto" font-style="normal" stroke-linecap="square" fill-opacity="1" shape-rendering="auto" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!--Generated by the Batik Graphics2D SVG Generator-->
<defs id="genericDefs" />
<g>
<defs id="defs1">
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath1">
<path d="M-25 10 L-25 181 L594 181 L594 10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath2">
<path d="M0 0 L0 171 L619 171 L619 0 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath3">
<path d="M-485 -10 L-485 161 L134 161 L134 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4">
<path d="M-491 -16 L-491 155 L128 155 L128 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath5">
<path d="M-528.47412109375 -16 L-528.47412109375 155 L90.5259017944336 155 L90.5259017944336 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath6">
<path d="M-531.95458984375 -16 L-531.95458984375 155 L87.04540252685547 155 L87.04540252685547 -16 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath7">
<path d="M-541.9937133789062 -75 L-541.9937133789062 96 L77.00630187988281 96 L77.00630187988281 -75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath8">
<path d="M-105 -10 L-105 161 L514 161 L514 -10 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath9">
<path d="M-12.40410041809082 -42 L-12.40410041809082 129 L606.5958862304688 129 L606.5958862304688 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath10">
<path d="M-113.10140228271484 -42 L-113.10140228271484 129 L505.8985900878906 129 L505.8985900878906 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath11">
<path d="M-116.58180236816406 -42 L-116.58180236816406 129 L502.418212890625 129 L502.418212890625 -42 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath12">
<path d="M541.9937133789062 75 L541.9937133789062 -96 L-77.00630187988281 -96 L-77.00630187988281 75 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath13">
<path d="M-221.50270080566406 -51 L-221.50270080566406 120 L397.497314453125 120 L397.497314453125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath14">
<path d="M-226.9832000732422 -51 L-226.9832000732422 120 L392.0168151855469 120 L392.0168151855469 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath15">
<path d="M-232.46359252929688 -51 L-232.46359252929688 120 L386.5364074707031 120 L386.5364074707031 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
<path d="M-305.4299011230469 -51 L-305.4299011230469 120 L313.5700988769531 120 L313.5700988769531 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath17">
<path d="M-317.6545104980469 -51 L-317.6545104980469 120 L301.3454895019531 120 L301.3454895019531 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath18">
<path d="M-383.697509765625 -51 L-383.697509765625 120 L235.30250549316406 120 L235.30250549316406 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath19">
<path d="M-387.27459716796875 -51 L-387.27459716796875 120 L231.72540283203125 120 L231.72540283203125 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath20">
<path d="M-431.9137878417969 -51 L-431.9137878417969 120 L187.08619689941406 120 L187.08619689941406 -51 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath21">
<path d="M541.9937133789062 110 L541.9937133789062 -61 L-77.00630187988281 -61 L-77.00630187988281 110 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath22">
<path d="M-217.98739624023438 -86 L-217.98739624023438 85 L401.0126037597656 85 L401.0126037597656 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath23">
<path d="M-223.4678955078125 -86 L-223.4678955078125 85 L395.5321044921875 85 L395.5321044921875 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
<path d="M-228.94830322265625 -86 L-228.94830322265625 85 L390.05169677734375 85 L390.05169677734375 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath25">
<path d="M-289.6954040527344 -86 L-289.6954040527344 85 L329.3045959472656 85 L329.3045959472656 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath26">
<path d="M-301.9200134277344 -86 L-301.9200134277344 85 L317.0799865722656 85 L317.0799865722656 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath27">
<path d="M-381.1972961425781 -86 L-381.1972961425781 85 L237.80270385742188 85 L237.80270385742188 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath28">
<path d="M-384.7745056152344 -86 L-384.7745056152344 85 L234.22549438476562 85 L234.22549438476562 -86 Z" />
</clipPath>
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath29">
<path d="M-435.4292907714844 -86 L-435.4292907714844 85 L183.57069396972656 85 L183.57069396972656 -86 Z" />
</clipPath>
</defs>
<g color-rendering="optimizeQuality" stroke-dasharray="5,5" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,485,10)">
<path d="M62.493648529052734 0.5 L62.493648529052734 150.5" clip-path="url(#clipPath3)" fill="none" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke="none" clip-path="url(#clipPath3)" fill="white" />
<path d="M0.5 0.5 L123.48729705810547 0.5 L123.48729705810547 25.5 L0.5 25.5 Z" stroke-dasharray="none" clip-path="url(#clipPath3)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,491,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath4)">system</text>
<line x1="0" y1="12.5" x2="37.47412109375" y2="12.5" clip-path="url(#clipPath4)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,528.4741,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath5)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath5)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,531.9546,16)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath6)">Local storage</text>
<line x1="0" y1="12.5" x2="71.03271484375" y2="12.5" clip-path="url(#clipPath6)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,541.9937,75)">
<path d="M0.5 0.5 L9.5 0.5 L9.5 85.5 L0.5 85.5 Z" stroke="none" clip-path="url(#clipPath7)" />
<path d="M0.5 0.5 L9.5 0.5 L9.5 85.5 L0.5 85.5 Z" stroke="black" clip-path="url(#clipPath7)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke="white" fill="white" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,105,10)">
<path d="M10.5 48.5 L10.5 150.5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10.5 48.5 L10.5 150.5" stroke-dasharray="5,5" stroke="black" clip-path="url(#clipPath8)" fill="none" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke-dasharray="5,5" stroke="none" clip-path="url(#clipPath8)" />
<path d="M10 8 C5 8 5 0 10 0 C15 0 15 8 10 8 M10 8 L10 10 M0 10 L20 10 M10 10 L10 20 M10 20 L0 30 M10 20 L20 30" stroke="black" clip-path="url(#clipPath8)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,12.4041,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath9)">storage maintainer</text>
<line x1="0" y1="12.5" x2="100.697265625" y2="12.5" clip-path="url(#clipPath9)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,113.1014,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath10)">:</text>
<line x1="0" y1="12.5" x2="3.48046875" y2="12.5" clip-path="url(#clipPath10)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,116.5818,42)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath11)">Storage maintainer</text>
<line x1="0" y1="12.5" x2="101.01416015625" y2="12.5" clip-path="url(#clipPath11)" fill="none" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,25,-10)">
<path d="M90 85 L516.9937133789062 85" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath12)" transform="matrix(-1,0,0,-1,516.9937,85)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath12)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,516.9937,85)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,221.5027,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath13)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,226.9832,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath14)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,232.4636,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath15)">authenticated</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,305.42990000000003,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath16)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,317.6545,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath17)">authenticate</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,383.6975,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath18)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,387.2746,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath19)">authInfo</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,431.91380000000004,51)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath20)">)</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" stroke-miterlimit="1" color-interpolation="linearRGB" text-rendering="optimizeLegibility" stroke-linecap="butt" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,25,-10)">
<path d="M90 120 L516.9937133789062 120" clip-path="url(#clipPath1)" fill="none" />
<path d="M12 -6 L0 0 L12 6 Z" stroke="none" clip-path="url(#clipPath21)" transform="matrix(-1,0,0,-1,516.9937,120)" />
<path d="M12 -6 L0 0 L12 6 Z" stroke-miterlimit="10" clip-path="url(#clipPath21)" fill="none" stroke-linecap="square" transform="matrix(-1,0,0,-1,516.9937,120)" />
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,217.9874,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath22)"> </text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,223.46790000000001,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath23)">:</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,228.94830000000002,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath24)">audioClipId</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,289.6954,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath25)">:=</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,301.92,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath26)">storeAudioClip</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,381.19730000000004,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath27)">(</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,384.7745,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath28)">audioClip</text>
</g>
<g font-family="sans-serif" font-size="11" color-rendering="optimizeQuality" color-interpolation="linearRGB" text-rendering="optimizeLegibility" shape-rendering="geometricPrecision" image-rendering="optimizeQuality" transform="matrix(1,0,0,1,435.4293,86)">
<text x="0" y="11" xml:space="preserve" stroke="none" clip-path="url(#clipPath29)">)</text>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

Some files were not shown because too many files have changed in this diff Show More