#!/bin/sh
#
# @(#)config.sh	6.145 00/01/12
#
# Script to set up the device-dependent configuration files.
#
#    xmcd  - Motif(tm) CD Audio Player
#    cda   - Command-line CD Audio Player
#
#    Copyright (C) 1993-2000  Ti Kan
#    E-mail: ti@amb.org
#
#    This program is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program; if not, write to the Free Software
#    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#

PATH=/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/local/bin:/usr/ucb
export PATH

VER=2.6

# Change the following directory to fit your local configuration
# WTA: BINDIR is only used for cddbcmd, so it's safe to change it
BINDIR=/usr/bin
LIBDIR=/usr/share
XMCDLIB=/usr/share/xmcd
CDDBDIR=/var/lib/cddb
DISCOGDIR=/var/lib/xmcd/discog

ERRFILE=`tempfile --prefix xmcd --mode 0600`
TMPFILE=`tempfile --prefix xmcd --mode 0600`
TMPSITES=`tempfile --prefix xmcd --mode 0600`

CFGDIR=/etc/xmcd
SCRDIR=$XMCDLIB/scripts
SITES=$CFGDIR/sites
TBLDIR=$XMCDLIB/tbl
OWNER=root
GROUP=root
CDIRPERM=03775
DFLT_CGIPATH='/~cddb/cddb.cgi'
CDDBCATS="rock jazz blues newage classical reggae folk country soundtrack misc data"
BROWSERS="mozilla netscape Mosaic"

# Utility functions

do_exit()
{
	if [ $1 -eq 0 ]
	then
		$ECHO "\nXmcd set-up is now complete.\n"
		$ECHO "Please read the README file supplied with the xmcd"
		$ECHO "distribution for hardware configuration information"
		$ECHO "about specific drives.\n"
	else
		$ECHO "\nErrors have occurred configuring xmcd."
		if [ $ERRFILE != /dev/null ]
		then
			$ECHO "See $ERRFILE for an error log."
		fi
	fi
	exit $1
}

log_err()
{
	if [ "$1" = "-p" ]
	then
		$ECHO "Error: $2" >&2
	fi
	$ECHO "$2" >>$ERRFILE
}

get_str()
{
	$ECHO "$* \c"
	read ANS
	if [ -n "$ANS" ]
	then
		return 0
	else
		return 1
	fi
}

get_yn()
{
	if [ -z "$YNDEF" ]
	then
		YNDEF=y
	fi

	while :
	do
		$ECHO "$*? [${YNDEF}] \c"
		read ANS
		if [ -n "$ANS" ]
		then
			case $ANS in
			[yY])
				RET=0
				break
				;;
			[nN])
				RET=1
				break
				;;
			*)
				$ECHO "Please answer y or n"
				;;
			esac
		else
			if [ $YNDEF = y ]
			then
				RET=0
			else
				RET=1
			fi
			break
		fi
	done

	YNDEF=
	return $RET
}


do_link()
{
	source=$1
	target=$2

	# Try symlink first
	ln -s $source $target 2>/dev/null
	if [ $? -ne 0 ]
	then
		# Use hard link
		ln $source $target 2>/dev/null
	fi
	RETSTAT=$?
	if [ $RETSTAT -ne 0 ]
	then
		log_err -p "Cannot link $source -> $target"
	fi
	return $RETSTAT
}


do_chown()
{
	if [ $2 != _default_ ]
	then
		chown $1 $2 2>/dev/null
	fi
}


do_chgrp()
{
	if [ $2 != _default_ ]
	then
		chgrp $1 $2 2>/dev/null
	fi
}


do_chmod()
{
	if [ $2 != _default_ ]
	then
		chmod $1 $2 2>/dev/null
	fi
}


make_dir()
{
	dir=$1
	perm=$2
	owner=$3
	group=$4
	$ECHO "\t$dir"
	if [ ! -d $dir ]
	then
		mkdir -p $dir
	fi
	do_chown $owner $dir 2>/dev/null
	do_chgrp $group $dir 2>/dev/null
	do_chmod $perm $dir 2>/dev/null
	return 0
}


ask_scsi_config()
{
	$ECHO "\n  Since you have an unlisted drive, I will assume"
	$ECHO "  that it is SCSI-2 compliant.  If this is not true then"
	$ECHO "  xmcd will probably not work."

	YNDEF=n
	if get_yn "\n  Do you want to continue"
	then
		METHOD=1
		VENDOR=0
		VOLBASE=0
		VOLTAPER=0
		PLAYNOTUR=False
	else
		return 1
	fi

	$ECHO "\n  You will now be asked several technical questions about"
	$ECHO "  your drive.  If you don't know the answer, try accepting"
	$ECHO "  the default values, and if problems occur when using"
	$ECHO "  xmcd, reconfigure the settings by running this script"
	$ECHO "  again, or editing the $CFGDIR/$CONFIGFILE"
	$ECHO "  file."
	$ECHO "\n  If you get an unlisted drive working with xmcd in this"
	$ECHO "  manner, the author of xmcd would like to hear from you"
	$ECHO "  and incorporate the settings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings inttings 