diff -ruN msnlib-d3/INSTALL msnlib-d4/INSTALL
--- msnlib-d3/INSTALL	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/INSTALL	Mon Jan 20 13:44:26 2003
@@ -31,7 +31,7 @@
 msn
 
 
-I would really like to hear your opinion, so please drop me a line to
-albertogli@telpin.com.ar.
+I would really like to hear your opinion, so please drop any comments to
+msnlib-devel@auriga.wearlab.de.
 
 
diff -ruN msnlib-d3/README msnlib-d4/README
--- msnlib-d3/README	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/README	Mon Jan 20 13:45:37 2003
@@ -25,7 +25,8 @@
 take a look at the 'portability' file.
 
 
-Comments and patches are always welcome.
+Comments and patches are always welcome; please send them to the mailing list,
+msnlib-devel@auriga.wearlab.de.
 
 Thanks,
 		Alberto
diff -ruN msnlib-d3/doc/COPYING msnlib-d4/doc/COPYING
--- msnlib-d3/doc/COPYING	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/COPYING	Mon Jan 13 21:15:31 2003
@@ -16,10 +16,12 @@
 
 Also note that the GPL below is copyrighted by the Free Software Foundation,
 but the instance of code that it refers to (the msnlib) is copyrighted by me.
+This software has _nothing_ to do with the GNU movement or the FSF.
+And it's _not_ part of the GNU suite or toolset or however they call it.
 
-Also note that the only valid version of the GPL as far as the library is
-concerned is _this_ particular version of the license (ie v2, not v2.2 or v3.x
-or whatever).
+Finally, the only valid version of the GPL as far as the library is concerned
+is _this_ particular version of the license (ie v2, not v2.2 or v3.x or
+whatever).
 
 		Alberto Bertogli
 
diff -ruN msnlib-d3/doc/Changelog msnlib-d4/doc/Changelog
--- msnlib-d3/doc/Changelog	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/Changelog	Mon Jan 20 13:51:24 2003
@@ -1,3 +1,30 @@
+20 Jan 03 10.39.06 - Alberto <albertogli@telpin.com.ar>
+ * doc: update url and add mailing list information
+ * install: allow the user to specify an installation root directory
+ * install: install documentation
+ * setup: add url
+
+16 Jan 03 13.48.40 - Alberto <albertogli@telpin.com.ar>
+ * msnlib: moved the encoding support from the client to the library
+ * msncb: close the sbd when the user goes offline
+ * msnlib: print the discarded messages when the user goes offline
+ 	it fixes an annoying race where a user goes offline and we have an
+	open sbd. Thanks to Peter Stuge for the report
+
+14 Jan 03 23.04.23 - Alberto <albertogli@telpin.com.ar>
+ * msn: implemented local ignore
+ * msn: now show internal variables in 'config'
+ * doc: added a 'commands' doc to explan the commands in more detail
+
+13 Jan 03 20.52.13 - Alberto <albertogli@telpin.com.ar>
+ * msn: encoding support, thanks to Peter Stuge for the suggestion and code.
+
+05 Jan 03 14.35.17 - Alberto <albertogli@telpin.com.ar>
+ * msn: fixes to time.strftime to make it work under 2.0
+ * doc: small documentation updates, including a new license note.
+ * msn: now use "/usr/bin/env python" to run msn
+ * msn: run python without the -Q switch
+
 26 Nov 02 11.36.00 - Alberto <albertogli@telpin.com.ar>
  * tag: d3 tag
 
diff -ruN msnlib-d3/doc/FAQ msnlib-d4/doc/FAQ
--- msnlib-d3/doc/FAQ	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/FAQ	Mon Jan 20 13:50:26 2003
@@ -1,4 +1,12 @@
 
+* How do I subscribe to the mailing list, or browse the archives?
+
+You can use the mailing list's web interface,
+http://lists.auriga.wearlab.de/cgi-bin/mailman/listinfo/msnlib-devel
+for both reading the archives or subscribing.
+Note that you don't need to be subscribed to post.
+
+
 * What are the 'Message for NNN queued for delivery' and 'Flushing messages
 	to...' and what do they do?
 
diff -ruN msnlib-d3/doc/TODO msnlib-d4/doc/TODO
--- msnlib-d3/doc/TODO	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/TODO	Mon Jan 13 20:59:28 2003
@@ -10,7 +10,6 @@
 	this can cause a lot of damage, is it worthy?
 * full-featured tab completion
 * line editing
-* find something out about the different char codes support (ñ, ç, accents, and so on)
 
 msn lib TODO
 * blocked and allowed lists
diff -ruN msnlib-d3/doc/URL msnlib-d4/doc/URL
--- msnlib-d3/doc/URL	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/URL	Mon Jan 20 13:46:32 2003
@@ -1,9 +1,10 @@
 
-The URL for the project is http://kbs59.informatik.uni-bremen.de/~alb
-I want to thank Henne Vogelsang for providing the hosting.
+The URL for the project is http://users.auriga.wearlab.de/~alb
+I want to thank Henne Vogelsang and Auriga for providing the hosting.
 
 There is also a freshmeat project page that it's easier to remember:
 http://freshmeat.net/projects/msnlib
 
-You can contact me (Alberto Bertogli) via email at albertogli@telpin.com.ar
+And finally, there's the mailing list, msnlib-devel@auriga.wearlab.de, with url
+http://lists.auriga.wearlab.de/cgi-bin/mailman/listinfo/msnlib-devel.
 
diff -ruN msnlib-d3/doc/commands msnlib-d4/doc/commands
--- msnlib-d3/doc/commands	Wed Dec 31 21:00:00 1969
+++ msnlib-d4/doc/commands	Wed Jan 15 11:29:46 2003
@@ -0,0 +1,90 @@
+
+This is a more detailed explanation of the commands provided in the client.
+A brief list is available at runtime with the 'help' command.
+
+
+status [mode]	
+	Shows the current status, or changes it to "mode", which can be one of:
+	online, away, busy, brb, phone, lunch, invisible, idle or offline.
+
+q
+	Quits the program.
+
+w
+	Prints your entire contact list.
+	Contacts connected are highlighted in bold.
+
+ww
+	Prints your entire contact list, including email addresses.
+
+e
+	Prints your online contacts.
+
+ee
+	Prints your online contacts, including email addresses.
+
+wr
+	Prints your reverse contact list.
+	(see the FAQ for more details)
+
+h
+	Shows your incoming message history
+	This is a list of the last N messages that you received. The amount is
+	configurable with the directive "input history size" in the msnrc
+	file, which defaults to 10.
+
+add email nick
+	Adds the user "email" with the nick "nick".
+
+del nick
+	Deletes the user with nick "nick".
+
+info [nick]
+	Shows the user information and pending messages (if any), or our
+	personal info. It also includes some advanced information (like the
+	server socket or tid).
+
+lignore [nick]
+	Locally ignores the user, or display the locally ignored users list.
+	This makes the messages coming from the user not to be displayed, but
+	they are still logged so you can see them later.
+
+lunignore nick
+	Removes a user from the locally ignored users list.
+
+close nick
+	Closes the switchboard connection with "nick". There is no need to use
+	this command and is included just for advanced users and debugging.
+
+config
+	Shows the configuration, in the internal representation, along with
+	other special automatic variables. This means that many commands and
+	values won't have the same format; for instance, instead of 'yes' you
+	will often see a 1. This command is mostly exclusively included for
+	bug reporting.
+
+nick newnick
+	Changes your nick to "newnick".
+
+privacy p a
+	Sets whether accept messages from people not on your list (p) and
+	require authorization (a).
+	(see the FAQ for more details)
+
+m nick text
+	Sends a message to "nick" with the "text". The standard and most
+	practical way of sending a message. Tab completion expands to this.
+
+a text
+	Sends a message with "text" to the last person you sent a message to.
+
+r text
+	Sends a message with "text" to the last person that sent you a
+	message.
+
+
+
+In most cases, where you are asked for a nick, you can alternatively enter the email.
+This makes it easier to handle people with weird or long nicks.
+
+
diff -ruN msnlib-d3/doc/dependencies msnlib-d4/doc/dependencies
--- msnlib-d3/doc/dependencies	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/dependencies	Wed Jan  8 21:18:51 2003
@@ -3,6 +3,6 @@
 
 Now, i've tried with python 2.2 but it will probably work with lower versions
 too, it doesn't do weird things with the language so i don't see many possible
-problems.
+problems. It's been reported to run with Python 2.1 and 2.0.
 
 
diff -ruN msnlib-d3/doc/portability msnlib-d4/doc/portability
--- msnlib-d3/doc/portability	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/portability	Wed Jan  8 21:18:51 2003
@@ -12,10 +12,10 @@
 some reason, the client will fall back to the normal behaviour.
 
 A thing that might be conflictive for non-unix platforms is that I assume the
-python interpreter lives in "/usr/bin/python", and it's callable using
-"/usr/bin/env python"; these are the closest thing to a standard location on
-unix boxes. If you need to change this, the places are the first line of
-'msn', and somewhere inside 'install'.
+python interpreter is callable using "/usr/bin/env python"; these are the
+closest thing to a standard location on unix boxes. If you need to change
+this, the places are the first line of 'msn', and somewhere inside 'install'.
+
 
 The next possible hot point (always talking about non-unix platforms) is
 'msnsetup' and the configuration file location; the first one requires bash,
@@ -29,11 +29,15 @@
 Note that the code is only tested initially with Python 2.2 under Linux, which
 is my development platform.
 
-It has been reported by users also to run successfuly under:
+It has also been reported to run successfuly under:
  * BeOS (Dano release) - Python 2.1
 	Needed to change the python interpreter location, as expected. Also,
 	there was a problem with BeOS's bash that didn't like the 'read'
 	command, which is used in msnsetup.
+ * Linux (i386) - Python 2.0
+ 	Releases up to D3 needed small fixes because of changes in the time
+	module in Python 2.1. The following versions had the fix included, so
+	they're fully 2.0 compatible.
 
 
 If you run it under a different platform, please let me know; specially if you
diff -ruN msnlib-d3/doc/reporting_bugs msnlib-d4/doc/reporting_bugs
--- msnlib-d3/doc/reporting_bugs	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/doc/reporting_bugs	Mon Jan 20 13:46:48 2003
@@ -3,7 +3,7 @@
 ------------------
 
 If you think you've got a bug (or you are sure about it =), please report it
-to albertogli@telpin.com.ar; specifying:
+to msnlib-devel@auriga.wearlab.de; specifying:
 
 * msnlib version
 * python version
diff -ruN msnlib-d3/install msnlib-d4/install
--- msnlib-d3/install	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/install	Mon Jan 20 10:42:37 2003
@@ -1,12 +1,31 @@
 #!/bin/bash
 
+# the first argument is the destination root directory
+# for the package, defaults to /usr/local if not present
+
+DESTDIR="/usr/local"
+if [ ".$1" != "." ]; then
+	DESTDIR="$1"
+fi
+
 echo "*** Installing the library"
 /usr/bin/env python setup.py install
+echo
+
+echo "*** Installing the documentation"
+rm -r $DESTDIR/doc/msnlib 2>/dev/null
+mkdir $DESTDIR/doc/msnlib 2>/dev/null
+cp -v README INSTALL $DESTDIR/doc/msnlib/
+cp -Rv doc/* $DESTDIR/doc/msnlib/
+echo
 
 echo "*** Installing the client"
-echo msn
-cp msn /usr/local/bin
-echo msnsetup
-cp msnsetup /usr/local/bin
+mkdir $DESTDIR/bin 2>/dev/null
+cp -v msn $DESTDIR/bin
+cp -v msnsetup $DESTDIR/bin
+echo
 
+echo "*** Done"
+echo "Please read the INSTALL file to see the next step"
+echo
 
diff -ruN msnlib-d3/msn msnlib-d4/msn
--- msnlib-d3/msn	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/msn	Mon Jan 20 13:53:10 2003
@@ -1,4 +1,4 @@
-#!/usr/bin/python -OQnew
+#!/usr/bin/env python 
 
 
 import sys
@@ -130,11 +130,13 @@
 	a parameter, this is used for history printed."""
 	nick = email2nick(email)
 	if not nick: nick = email
+	if email in ignored:
+		return
 	if ptime:
 		if recvtime:
 			ctime = time.strftime('%I:%M:%S%p', time.localtime(recvtime))
 		else:
-			ctime = time.strftime('%I:%M:%S%p')
+			ctime = time.strftime('%I:%M:%S%p', now())
 		printl('%s ' % ctime, c.blue)
 	printl('%s' % nick, c.cyan, 1)
 	if len(lines[eoh:]) == 1:
@@ -148,7 +150,7 @@
 
 def print_out_msg(nick, msg):
 	"Prints an outgoing message"
-	ctime = time.strftime('%I:%M:%S%p')
+	ctime = time.strftime('%I:%M:%S%p', now())
 	printl('%s ' % ctime, c.blue)
 	printl('%s' % nick, c.cyan, 1)
 	printl(' >>> ', c.yellow, 1)
@@ -279,6 +281,9 @@
 	del(fd)
 	return
 
+def now():
+	"Returns the current time, in tuple format"
+	return time.localtime(time.time())
 
 
 #
@@ -595,6 +600,8 @@
 			if var == 'password':
 				value = '<not displayed>'
 			printl(c.bold + var + ' = ' + c.normal + value + '\n')
+		printl(c.bold + 'use_termios = ' + str(use_termios) + '\n')
+		printl(c.bold + 'screensize = ' + str(winsize) + '\n')
 	
 	elif cmd == 'close':		# close a connection
 		p = params.split()
@@ -622,6 +629,29 @@
 			return 'Error: both parameters must be 1 or 0'
 		m.privacy(public, auth)
 	
+	elif cmd == 'lignore':		# ignore a user locally
+		p = params.split()
+		if len(p) == 0:
+			printl(c.bold + 'Locally ignored users\n')
+			for e in ignored:
+				printl(email2nick(e) + ' (' + e + ')\n')
+			return ''
+		email = nick2email(p[0])
+		if email in ignored: 
+			return 'User is already being locally ignored'
+		ignored.append(email)
+		return 'User is now being locally ignored'
+	
+	elif cmd == 'lunignore':	# unignore a locally ignored user
+		p = params.split()
+		if len(p) == 0:
+			return 'Error parsing command'
+		email = nick2email(p[0])
+		if email not in ignored:
+			return 'User is not being locally ignored' 
+		ignored.remove(email)
+		return 'User is no longer locally ignored'
+	
 	elif cmd == 'add':		# add a user
 		p = params.split()
 		if   len(p) == 0: 
@@ -705,6 +735,8 @@
 			if cmd == 'a': return 'Please write a message first'
 			if cmd == 'r': return 'Please reply a message first'
 			else: return 'Unknown nick %s' % str(p[0])
+		if m.users[email].status == 'FLN':
+			return 'Unable to send message: User is offline'
 		r = m.sendmsg(email, msg)
 		last_sent = email
 		if r == 1:
@@ -732,6 +764,8 @@
 		r += 'add email nick\t Adds the user "email" with the nick "nick"\n'
 		r += 'del nick\t Deletes the user with nick "nick"\n'
 		r += 'info [nick]\t Shows the user information and pending messages (if any), or our personal info\n'
+		r += 'lignore [nick]\t Locally ignores the user, or display the locally ignored users list\n'
+		r += 'lunignore nick\t Removes a user from the locally ignored users list\n'
 		r += 'close nick\t Closes the switchboard connection with "nick"\n'
 		r += 'config\t\t Shows the configuration\n'
 		r += 'nick newnick\t Changes your nick to "newnick"\n'
@@ -765,7 +799,7 @@
 	status = msnlib.reverse_status[t[0]]
 	email = t[1]
 	nick = md.users[email].nick
-	ctime = time.strftime('%I:%M:%S%p')
+	ctime = time.strftime('%I:%M:%S%p', now())
 	printl('\r%s ' % ctime, c.blue)
 	printl(nick, c.blue, 1)
 	printl(' changed status to ', c.magenta)
@@ -779,7 +813,7 @@
 	t = string.split(params)
 	email = t[0]
 	nick = md.users[email].nick
-	ctime = time.strftime('%I:%M:%S%p')
+	ctime = time.strftime('%I:%M:%S%p', now())
 	printl('\r%s ' % ctime, c.blue)
 	printl(nick, c.blue, 1)
 	printl(' changed status to ', c.magenta)
@@ -791,10 +825,15 @@
 def cb_fln(md, type, tid, params):
 	email = tid
 	nick = md.users[email].nick
-	ctime = time.strftime('%I:%M:%S%p')
+	ctime = time.strftime('%I:%M:%S%p', now())
 	printl('\r%s ' % ctime, c.blue)
 	printl(nick, c.blue, 1)
 	printl(' disconnected\n', c.magenta)
+	u = m.users[email]
+	if u.sbd and u.sbd.msgqueue:
+		printl(c.bold + "The following messages for " + nick + " will be discarded:\n")
+		for msg in u.sbd.msgqueue:
+			printl(c.bold + '\t>>> ' + c.normal + msg + '\n')
 	log_msg(email, 'status', 'disconnect')
 	msncb.cb_fln(md, type, tid, params)
 m.cb.fln = cb_fln
@@ -842,9 +881,9 @@
 		if not nick: nick = email
 		if not m.users[email].priv.has_key('typing'):
 			m.users[email].priv['typing'] = 0
-		if not m.users[email].priv['typing']:
+		if not m.users[email].priv['typing'] and email not in ignored:
 			printl('\r')
-			ctime = time.strftime('%I:%M:%S%p')
+			ctime = time.strftime('%I:%M:%S%p', now())
 			printl('%s ' % ctime, c.blue)
 			printl('%s' % nick, c.cyan, 1)
 			printl(' is typing\n', c.magenta)
@@ -928,7 +967,7 @@
 #
 # now the real thing
 #
-printl('* MSN Client (release D3) *\n', c.yellow, 1)
+printl('* MSN Client (release D4) *\n', c.yellow, 1)
 
 # first, the configuration
 printl('Loading config... ', c.green, 1)
@@ -1011,6 +1050,18 @@
 if config['auto away'] and config['auto away'] < 60:	# sanity check
 	perror('Warning: auto away time was set to less than a minute!\n')
 
+# encoding
+if not config.has_key('encoding'):
+	# we use posix standard way of defining standard locale, or just fall
+	# back to iso-8859-1; see locale(7) for more details
+	if os.environ.has_key('LC_ALL') and os.environ['LC_ALL']:
+		config['encoding'] = os.environ['LC_ALL']
+	elif os.environ.has_key('LANG') and os.environ['LANG']:
+		config['encoding'] = os.environ['LANG']
+	else:	
+		config['encoding'] = 'iso-8859-1'
+m.encoding = config['encoding']
+
 printl('done\n', c.green, 1)
 
 
@@ -1064,6 +1115,7 @@
 history_ring = []	# history buffer
 last_sent = ''		# email of the last person we sent a message to
 last_received = ''	# email of the last person we received a message from
+ignored = []		# people being locally ignored
 
 # auto-away
 timeout = config['auto away']
diff -ruN msnlib-d3/msncb.py msnlib-d4/msncb.py
--- msnlib-d3/msncb.py	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/msncb.py	Thu Jan 16 13:50:15 2003
@@ -171,6 +171,8 @@
 	email = tid
 	debug('FRIEND %s disconnected (%s)' % (email, type))
 	md.users[email].status = type
+	if md.users[email].sbd:
+		md.close(md.users[email].sbd)
 
 
 def cb_nln(md, type, tid, params):
diff -ruN msnlib-d3/msnlib.py msnlib-d4/msnlib.py
--- msnlib-d3/msnlib.py	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/msnlib.py	Mon Jan 20 13:52:59 2003
@@ -14,7 +14,7 @@
 """
 
 # constants
-VERSION = 0xD3
+VERSION = 0xD4
 LOGIN_HOST = 'messenger.hotmail.com'
 LOGIN_PORT = 1863
 
@@ -163,7 +163,7 @@
 		self.mobilep = None		# mobile phone
 
 		self.status = 'FLN'		# status
-		
+		self.encoding = 'iso-8859-1'	# local encoding
 		
 		self.lhost = LOGIN_HOST
 		self.lport = LOGIN_PORT
@@ -183,6 +183,21 @@
 	def fileno(self):
 		"Useful for select()"
 		return self.fd.fileno()
+
+	def encode(self, s):
+		"Encodes a string from local encoding to utf8"
+		try:
+			return s.decode(self.encoding).encode('utf-8')
+		except:
+			return s
+
+	def decode(self, s):
+		"Decodes a string from utf8 to local encoding"
+		try:
+			return s.decode('utf-8').encode(self.encoding)
+		except:
+			return s
+
 	
 	def pollable(self):
 		"""Return a pair of lists of poll()/select()ables network
@@ -233,6 +248,7 @@
 		if params: c = c + ' ' + params
 		debug(str(fd.fileno()) + ' >>> ' + c)
 		c = c + '\r\n'
+		c = self.encode(c)
 		return fd.send(c)
 	
 	
@@ -258,7 +274,7 @@
 		# the most common) so we cover our backs
 		if len(pbuf) >= 3:
 			tid = pbuf[1]
-			params = string.join(pbuf[2:])
+			params = string.join(self.decode(pbuf[2:]))
 		elif len(pbuf) == 2:
 			tid = pbuf[1]
 			params = ''
@@ -282,7 +298,7 @@
 			buf = buf + c
 			left = left - len(c)
 			
-		return buf
+		return self.decode(buf)
 	
 	
 	def submit_sbd(self, sbd):
diff -ruN msnlib-d3/msnrc.sample msnlib-d4/msnrc.sample
--- msnlib-d3/msnrc.sample	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/msnrc.sample	Thu Jan 16 10:55:56 2003
@@ -43,6 +43,13 @@
 # and so on)
 initial status = online
 
+# local encoding
+# it's the local character encoding, used to display and send the messages'
+# text in an standard way. don't worry about it if you never had problems when
+# sending non-english characters. it defaults to the environment variables
+# LC_ALL, or LANG, and if none is available to iso-8859-1.
+encoding = iso-8859-1
+
 # debug variable, can be yes or no; note that you can enable and disable it at
 # runtime using the 'debug' command, so this is mostly used when you want to
 # debug the whole session init.
diff -ruN msnlib-d3/msnsetup msnlib-d4/msnsetup
--- msnlib-d3/msnsetup	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/msnsetup	Mon Jan 20 13:51:58 2003
@@ -1,7 +1,5 @@
 #!/bin/bash
 
-VER="D3"
-
 function intro() {
 	echo
 	echo "This is a script for creating an initial configuration for the msn client."
@@ -48,7 +46,7 @@
 	touch "$HOME/.msn/msnrc"
 	chmod -R 0600 "$HOME/.msn/msnrc"
 	echo "# msn client configuration file" >> "$HOME/.msn/msnrc"
-	echo "# created automatically by the msnsetup script (version $VER)" >> "$HOME/.msn/msnrc"
+	echo "# created automatically by the msnsetup script" >> "$HOME/.msn/msnrc"
 	echo >> "$HOME/.msn/msnrc"
 	echo "email = $EMAIL" >> "$HOME/.msn/msnrc"
 	echo "password = $PASS" >> "$HOME/.msn/msnrc"
diff -ruN msnlib-d3/setup.py msnlib-d4/setup.py
--- msnlib-d3/setup.py	Tue Nov 26 11:44:30 2002
+++ msnlib-d4/setup.py	Mon Jan 20 13:52:11 2003
@@ -2,10 +2,11 @@
 from distutils.core import setup
 
 setup(name="msnlib",
-	version="D3",
+	version="D4",
 	description="MSN Messenger Library and Client",
 	author="Alberto Bertogli",
 	author_email="albertogli@telpin.com.ar",
+	url="http://users.auriga.wearlab.de/~alb/",
 	py_modules=['msnlib', 'msncb'],
 )
 									 
