From nobody@FreeBSD.org  Thu Jul 19 03:44:21 2007
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52])
	by hub.freebsd.org (Postfix) with ESMTP id 4DC2916A402
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 19 Jul 2007 03:44:21 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (groups.freebsd.org [69.147.83.33])
	by mx1.freebsd.org (Postfix) with ESMTP id 3C12713C4C5
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 19 Jul 2007 03:44:21 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.1/8.14.1) with ESMTP id l6J3iKQu061124
	for <freebsd-gnats-submit@FreeBSD.org>; Thu, 19 Jul 2007 03:44:20 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.1/8.14.1/Submit) id l6J3iKVb061123;
	Thu, 19 Jul 2007 03:44:20 GMT
	(envelope-from nobody)
Message-Id: <200707190344.l6J3iKVb061123@www.freebsd.org>
Date: Thu, 19 Jul 2007 03:44:20 GMT
From: viper <viper@perm.raid.ru>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [UPDATE] net/asterisk to 1.4.8
X-Send-Pr-Version: www-3.0

>Number:         114720
>Category:       ports
>Synopsis:       [UPDATE] net/asterisk to 1.4.8
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    sobomax
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          update
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jul 19 03:50:01 GMT 2007
>Closed-Date:    Sun Jul 22 10:45:42 GMT 2007
>Last-Modified:  Fri Jul 27 02:50:01 GMT 2007
>Originator:     viper
>Release:        7.0 and stable 6
>Organization:
>Environment:
FreeBSD xxxxxx 6.2-STABLE FreeBSD 6.2-STABLE #0: Mon Jul 16 12:57:31 YEKST 2007     viper@xxxxx:/usr/obj/usr/src/sys/xxxxx  i386
>Description:
The PR can be applied only after updating the associated ports (http://www.freebsd.org/cgi/query-pr.cgi? Pr = 114613 and http://www.freebsd.org/cgi/query-pr.cgi?pr=114612). This PR (http://www.freebsd.org/cgi/query-pr.cgi?pr=114712&cat=ports) does not seem workable for several reasons.

Information from the site asterisk.org

Asterisk 1.4.5
"There has been a very large number of bugs fixed since the last release, including crashes and other critical issues. There were 244 commits to the 1.4 source tree and 74 commits to the 1.2 source tree since the last set of releases. Also, keep in mind that the release branches are only changed to fix problems. In the same time frame, the development tree had 439 commits. There is a ChangeLog available in the tarball of each release with a complete list of changes."

Asterisk 1.4.6
"We would also like to continue to encourage the community to upgrade to the 1.4 series. There have been almost 100 changes to the 1.4 tree since the last release. Keep in mind that we are still planning to move the 1.2 series 
of Asterisk into security maintenance only beginning August 1st."

Asterisk 1.4.8
"These releases contain fixes for four critical security vulnerabilities. One of these vulnerabilities is a remotely exploitable stack buffer overflow, which could allow an attacker to execute arbitrary code on the target machine. The other three are all remotely exploitable crash vulnerabilities."

>How-To-Repeat:

>Fix:
Based on patch Richard E Neese and Phillip N.
My work as follows:
1. Minor cleanup make for happy "port test"
2. Cleanup "files/patch-configure"
3. Addes "files/patch-apps::app_rxfax.c", "files/patch-apps::app_txfax.c", "files/patch-configure.ac", "files/patch-makeopts.in" and "patch-build_tools::menuselect-deps.in"
4. Added work with spandsp.
6. Added work with Sqlite.
Reviewed at work.


Patch attached with submission follows:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	.
#	./asterisk
#	./asterisk/files
#	./asterisk/files/asterisk.sh.in
#	./asterisk/files/patch-Makefile
#	./asterisk/files/patch-agi::Makefile
#	./asterisk/files/patch-channels::Makefile
#	./asterisk/files/patch-channels::chan_h323.c
#	./asterisk/files/patch-channels::chan_sip.c
#	./asterisk/files/patch-channels::chan_skinny.c
#	./asterisk/files/patch-channels::chan_zap.c
#	./asterisk/files/patch-configure
#	./asterisk/files/patch-include::asterisk::utils.h
#	./asterisk/files/patch-main::Makefile
#	./asterisk/files/patch-main::db.c
#	./asterisk/files/patch-main::frame.c
#	./asterisk/files/patch-configure.ac
#	./asterisk/files/patch-apps::app_rxfax.c
#	./asterisk/files/patch-apps::app_txfax.c
#	./asterisk/files/patch-build_tools::menuselect-deps.in
#	./asterisk/files/patch-makeopts.in
#	./asterisk/Makefile
#	./asterisk/distinfo
#	./asterisk/pkg-descr
#	./asterisk/pkg-plist
#
echo c - .
mkdir -p . > /dev/null 2>&1
echo c - ./asterisk
mkdir -p ./asterisk > /dev/null 2>&1
echo c - ./asterisk/files
mkdir -p ./asterisk/files > /dev/null 2>&1
echo x - ./asterisk/files/asterisk.sh.in
sed 's/^X//' >./asterisk/files/asterisk.sh.in << 'END-of-./asterisk/files/asterisk.sh.in'
X#!/bin/sh
X
X# PROVIDE: asterisk
X# REQUIRE: DAEMON
X# KEYWORD: shutdown
X#
X# Add the following lines to /etc/rc.conf to enable asterisk:
X#
X# asterisk_enable="YES"
X#
X
X. %%RC_SUBR%%
X
Xname=asterisk
Xrcvar=`set_rcvar`
X
Xcommand=%%PREFIX%%/sbin/asterisk
X
Xload_rc_config $name
X
Xpidfile=${asterisk_pidfile:-"/var/run/asterisk.pid"}
X
Xasterisk_enable=${asterisk_enable:-"NO"}
X
Xrun_rc_command "$1"
END-of-./asterisk/files/asterisk.sh.in
echo x - ./asterisk/files/patch-Makefile
sed 's/^X//' >./asterisk/files/patch-Makefile << 'END-of-./asterisk/files/patch-Makefile'
X--- Makefile.orig	Tue Jun 19 11:06:33 2007
X+++ Makefile	Tue Jun 19 11:46:29 2007
X@@ -209,7 +209,7 @@
X 
X ifeq ($(OSARCH),FreeBSD)
X   # -V is understood by BSD Make, not by GNU make.
X-  BSDVERSION=$(shell make -V OSVERSION -f /usr/share/mk/bsd.port.subdir.mk)
X+  BSDVERSION=$(OSVERSION)
X   ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
X   AST_LIBS+=$(shell if test  $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
X endif
X@@ -374,15 +374,15 @@
X # Should static HTTP be installed during make samples or even with its own target ala
X # webvoicemail?  There are portions here that *could* be customized but might also be
X # improved a lot.  I'll put it here for now.
X-	mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
X+	$(MKDIR) $(DESTDIR)$(ASTDATADIR)/static-http
X 	for x in static-http/*; do \
X-		$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
X+		$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
X 	done
X-	mkdir -p $(DESTDIR)$(ASTDATADIR)/images
X+	$(MKDIR) $(DESTDIR)$(ASTDATADIR)/images
X 	for x in images/*.jpg; do \
X-		$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/images ; \
X+		$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTDATADIR)/images ; \
X 	done
X-	mkdir -p $(DESTDIR)$(AGI_DIR)
X+	$(MKDIR) $(DESTDIR)$(AGI_DIR)
X 	$(MAKE) -C sounds install
X 
X update: 
X@@ -403,45 +403,45 @@
X OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
X 
X bininstall: _all
X-	mkdir -p $(DESTDIR)$(MODULES_DIR)
X-	mkdir -p $(DESTDIR)$(ASTSBINDIR)
X-	mkdir -p $(DESTDIR)$(ASTETCDIR)
X-	mkdir -p $(DESTDIR)$(ASTBINDIR)
X-	mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
X-	$(INSTALL) -m 755 main/asterisk $(DESTDIR)$(ASTSBINDIR)/
X+	$(MKDIR) $(DESTDIR)$(MODULES_DIR)
X+	$(MKDIR) $(DESTDIR)$(ASTSBINDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTETCDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTBINDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTVARRUNDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/voicemail
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/dictate
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/system
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/tmp
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/meetme
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/monitor
X+	$(BSD_INSTALL_PROGRAM) main/asterisk $(DESTDIR)$(ASTSBINDIR)/
X 	$(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
X-	$(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
X-	$(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
X+	$(BSD_INSTALL_SCRIPT) contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
X+	$(BSD_INSTALL_SCRIPT) contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
X 	if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
X 		cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
X 		chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
X 	fi
X-	$(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
X-	$(INSTALL) -m 644 include/asterisk.h $(DESTDIR)$(includedir)
X-	$(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTHEADERDIR)
X+	$(BSD_INSTALL_DATA) include/asterisk.h $(DESTDIR)$(includedir)
X+	$(BSD_INSTALL_DATA) include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
X 	if [ -n "$(OLDHEADERS)" ]; then \
X 		rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
X 	fi
X-	mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
X-	mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
X-	mkdir -p $(DESTDIR)$(ASTDATADIR)/keys
X-	mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware
X-	mkdir -p $(DESTDIR)$(ASTDATADIR)/firmware/iax
X-	mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
X-	$(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
X-	$(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
X-	$(INSTALL) -m 644 doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
X-	$(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
X-	$(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
X-	$(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
X+	$(MKDIR) $(DESTDIR)$(ASTLOGDIR)/cdr-csv
X+	$(MKDIR) $(DESTDIR)$(ASTLOGDIR)/cdr-custom
X+	$(MKDIR) $(DESTDIR)$(ASTDATADIR)/keys
X+	$(MKDIR) $(DESTDIR)$(ASTDATADIR)/firmware
X+	$(MKDIR) $(DESTDIR)$(ASTDATADIR)/firmware/iax
X+	$(MKDIR) $(DESTDIR)$(ASTMANDIR)/man8
X+	$(BSD_INSTALL_DATA) keys/iaxtel.pub $(DESTDIR)$(ASTDATADIR)/keys
X+	$(BSD_INSTALL_DATA) keys/freeworlddialup.pub $(DESTDIR)$(ASTDATADIR)/keys
X+	$(BSD_INSTALL_DATA) doc/asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
X+	$(BSD_INSTALL_DATA) contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
X+	$(BSD_INSTALL_DATA) contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
X+	$(BSD_INSTALL_DATA) contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
X 	if [ -f contrib/firmware/iax/iaxy.bin ] ; then \
X-		$(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
X+		$(BSD_INSTALL_DATA) contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTDATADIR)/firmware/iax/iaxy.bin; \
X 	fi
X 
X $(SUBDIRS_INSTALL):
X@@ -468,7 +468,7 @@
X 		echo " WARNING WARNING WARNING" ;\
X 	fi
X 
X-install: datafiles bininstall $(SUBDIRS_INSTALL)
X+install: datafiles bininstall $(SUBDIRS_INSTALL) samples
X 	@if [ -x /usr/sbin/asterisk-post-install ]; then \
X 		/usr/sbin/asterisk-post-install $(DESTDIR) . ; \
X 	fi
X@@ -498,31 +498,23 @@
X upgrade: bininstall
X 
X adsi:
X-	mkdir -p $(DESTDIR)$(ASTETCDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTETCDIR)
X 	for x in configs/*.adsi; do \
X 		if [ ! -f $(DESTDIR)$(ASTETCDIR)/$$x ]; then \
X-			$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
X+			$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x` ; \
X 		fi ; \
X+		$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x`-dist ; \
X 	done
X 
X samples: adsi
X-	mkdir -p $(DESTDIR)$(ASTETCDIR)
X+	$(MKDIR) $(DESTDIR)$(ASTETCDIR)
X 	for x in configs/*.sample; do \
X-		if [ -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
X-			if [ "$(OVERWRITE)" = "y" ]; then \
X-				if cmp -s $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $$x ; then \
X-					echo "Config file $$x is unchanged"; \
X-					continue; \
X-				fi ; \
X-				mv -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`.old ; \
X-			else \
X-				echo "Skipping config file $$x"; \
X-				continue; \
X-			fi ;\
X+		$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`-dist ;\
X+		if [ ! -f $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ]; then \
X+			$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample`;\
X 		fi ; \
X-		$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`$(BASENAME) $$x .sample` ;\
X 	done
X-	if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
X+	if true; then \
X 		( \
X 		echo "[directories]" ; \
X 		echo "astetcdir => $(ASTETCDIR)" ; \
X@@ -543,20 +535,23 @@
X 		echo ";astctlowner = root" ; \
X 		echo ";astctlgroup = apache" ; \
X 		echo ";astctl = asterisk.ctl" ; \
X-		) > $(DESTDIR)$(ASTCONFPATH) ; \
X+		) > $(DESTDIR)$(ASTCONFPATH)-dist ; \
X+		if [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
X+			cp $(DESTDIR)$(ASTCONFPATH)-dist $(DESTDIR)$(ASTCONFPATH); \
X+		fi; \
X 	else \
X 		echo "Skipping asterisk.conf creation"; \
X 	fi
X-	mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
X+	$(MKDIR) $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
X 	build_tools/make_sample_voicemail $(DESTDIR)/$(ASTDATADIR) $(DESTDIR)/$(ASTSPOOLDIR)
X 
X webvmail:
X 	@[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
X 	@[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
X 	$(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
X-	mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
X+	$(MKDIR) $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
X 	for x in images/*.gif; do \
X-		$(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
X+		$(BSD_INSTALL_DATA) $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
X 	done
X 	@echo " +--------- Asterisk Web Voicemail ----------+"  
X 	@echo " +                                           +"
X@@ -583,10 +578,10 @@
X 
X __rpm: include/asterisk/version.h include/asterisk/buildopts.h spec
X 	rm -rf /tmp/asterisk ; \
X-	mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
X+	$(MKDIR) /tmp/asterisk/redhat/RPMS/i386 ; \
X 	$(MAKE) DESTDIR=/tmp/asterisk install ; \
X 	$(MAKE) DESTDIR=/tmp/asterisk samples ; \
X-	mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
X+	$(MKDIR) /tmp/asterisk/etc/rc.d/init.d ; \
X 	cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
X 	rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
X 
X@@ -597,19 +592,19 @@
X config:
X 	@if [ "${OSARCH}" = "linux-gnu" ]; then \
X 		if [ -f /etc/redhat-release -o -f /etc/fedora-release ]; then \
X-			$(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
X+			$(BSD_INSTALL_SCRIPT) contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
X 			/sbin/chkconfig --add asterisk; \
X 		elif [ -f /etc/debian_version ]; then \
X-			$(INSTALL) -m 755 contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk; \
X+			$(BSD_INSTALL_SCRIPT) contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk; \
X 			/usr/sbin/update-rc.d asterisk start 10 2 3 4 5 . stop 91 2 3 4 5 .; \
X 		elif [ -f /etc/gentoo-release ]; then \
X-			$(INSTALL) -m 755 contrib/init.d/rc.gentoo.asterisk /etc/init.d/asterisk; \
X+			$(BSD_INSTALL_SCRIPT) contrib/init.d/rc.gentoo.asterisk /etc/init.d/asterisk; \
X 			/sbin/rc-update add asterisk default; \
X 		elif [ -f /etc/mandrake-release ]; then \
X-			$(INSTALL) -m 755 contrib/init.d/rc.mandrake.asterisk /etc/rc.d/init.d/asterisk; \
X+			$(BSD_INSTALL_SCRIPT) contrib/init.d/rc.mandrake.asterisk /etc/rc.d/init.d/asterisk; \
X 			/sbin/chkconfig --add asterisk; \
X 		elif [ -f /etc/SuSE-release -o -f /etc/novell-release ]; then \
X-			$(INSTALL) -m 755 contrib/init.d/rc.suse.asterisk /etc/init.d/asterisk; \
X+			$(BSD_INSTALL_SCRIPT) contrib/init.d/rc.suse.asterisk /etc/init.d/asterisk; \
X 			/sbin/chkconfig --add asterisk; \
X 		elif [ -f /etc/slackware-version ]; then \
X 			echo "Slackware is not currently supported, although an init script does exist for it." \
END-of-./asterisk/files/patch-Makefile
echo x - ./asterisk/files/patch-agi::Makefile
sed 's/^X//' >./asterisk/files/patch-agi::Makefile << 'END-of-./asterisk/files/patch-agi::Makefile'
X--- agi/Makefile.orig	Sat Dec 16 23:14:34 2006
X+++ agi/Makefile	Wed Mar 28 11:13:21 2007
X@@ -13,7 +13,9 @@
X 
X .PHONY: clean all uninstall
X 
X-AGIS=agi-test.agi eagi-test eagi-sphinx-test jukebox.agi
X+AGIS_BIN=eagi-test eagi-sphinx-test
X+AGIS_SCR=agi-test.agi jukebox.agi
X+AGIS=$(AGIS_SCR) $(AGIS_BIN)
X 
X ifeq ($(OSARCH),SunOS)
X   LIBS+=-lsocket -lnsl
X@@ -31,8 +33,9 @@ eagi-test: eagi-test.o strcompat.o
X eagi-sphinx-test: eagi-sphinx-test.o
X 
X install: all
X-	mkdir -p $(DESTDIR)$(AGI_DIR)
X-	for x in $(AGIS); do $(INSTALL) -m 755 $$x $(DESTDIR)$(AGI_DIR) ; done
X+	$(MKDIR) -p $(DESTDIR)$(AGI_DIR)
X+	for x in $(AGIS_BIN); do $(BSD_INSTALL_PROGRAM) $$x $(DESTDIR)$(AGI_DIR) ; done
X+	for x in $(AGIS_SCR); do $(BSD_INSTALL_SCRIPT) $$x $(DESTDIR)$(AGI_DIR) ; done
X 
X uninstall:
X 	for x in $(AGIS); do rm -f $(DESTDIR)$(AGI_DIR)/$$x ; done
END-of-./asterisk/files/patch-agi::Makefile
echo x - ./asterisk/files/patch-channels::Makefile
sed 's/^X//' >./asterisk/files/patch-channels::Makefile << 'END-of-./asterisk/files/patch-channels::Makefile'
X
X$FreeBSD: ports/net/asterisk/files/patch-channels::Makefile,v 1.13 2007/04/13 08:06:05 sobomax Exp $
X
X--- channels/Makefile.orig
X+++ channels/Makefile
X@@ -26,8 +26,8 @@
X endif
X 
X ifeq ($(OSARCH),FreeBSD)
X-  PTLIB=-lpt_FreeBSD_x86_r
X-  H323LIB=-lh323_FreeBSD_x86_r
X+  PTLIB=-lpt_r
X+  H323LIB=-lh323_r
X   CHANH323LIB=-pthread
X endif
X 
X@@ -72,12 +72,12 @@
X h323/libchanh323.a h323/Makefile.ast:
X 	$(CMD_PREFIX) $(MAKE) -C h323
X 	$(CMD_PREFIX) rm -f ../main/asterisk
X-	$(CMD_PREFIX) echo "***************************************************************"
X-	$(CMD_PREFIX) echo
X-	$(CMD_PREFIX) echo "********** Re-run 'make' to pick up H.323 parameters **********"
X-	$(CMD_PREFIX) echo
X-	$(CMD_PREFIX) echo "***************************************************************"
X-	$(CMD_PREFIX) exit 1
X+#	$(CMD_PREFIX) echo "***************************************************************"
X+#	$(CMD_PREFIX) echo
X+#	$(CMD_PREFIX) echo "********** Re-run 'make' to pick up H.323 parameters **********"
X+#	$(CMD_PREFIX) echo
X+#	$(CMD_PREFIX) echo "***************************************************************"
X+#	$(CMD_PREFIX) exit 1
X endif
X 
X gentone: gentone.c
END-of-./asterisk/files/patch-channels::Makefile
echo x - ./asterisk/files/patch-channels::chan_h323.c
sed 's/^X//' >./asterisk/files/patch-channels::chan_h323.c << 'END-of-./asterisk/files/patch-channels::chan_h323.c'
X
X$FreeBSD: ports/net/asterisk/files/patch-channels::chan_h323.c,v 1.7 2006/02/06 20:39:59 sobomax Exp $
X
X--- channels/chan_h323.c.orig
X+++ channels/chan_h323.c
X@@ -31,6 +31,7 @@
X  * \ingroup channel_drivers
X  */
X 
X+#include <sys/types.h>
X #include <sys/socket.h>
X #include <sys/signal.h>
X #include <sys/param.h>
END-of-./asterisk/files/patch-channels::chan_h323.c
echo x - ./asterisk/files/patch-channels::chan_sip.c
sed 's/^X//' >./asterisk/files/patch-channels::chan_sip.c << 'END-of-./asterisk/files/patch-channels::chan_sip.c'
X--- channels/chan_sip.c.orig	Wed Mar 28 11:23:42 2007
X+++ channels/chan_sip.c	Wed Mar 28 11:36:27 2007
X@@ -484,7 +484,7 @@ static const struct cfsip_options {
X #define DEFAULT_MOHINTERPRET    "default"
X #define DEFAULT_MOHSUGGEST      ""
X #define DEFAULT_VMEXTEN 	"asterisk"
X-#define DEFAULT_CALLERID 	"asterisk"
X+#define DEFAULT_CALLERID 	"Unknown"
X #define DEFAULT_NOTIFYMIME 	"application/simple-message-summary"
X #define DEFAULT_MWITIME 	10
X #define DEFAULT_ALLOWGUEST	TRUE
X@@ -3822,6 +3823,8 @@ static struct ast_channel *sip_new(struc
X 	ast_codec_pref_remove2(&tmp->nativeformats, ~i->usercapability);
X 	fmt = ast_codec_pref_index_audio(&tmp->nativeformats, 0);
X 
X+	pbx_builtin_setvar_helper(tmp, "SIP_CODEC_USED", ast_getformatname(fmt));
X+
X 	/* If we have a prefcodec setting, we have an inbound channel that set a 
X 	   preferred format for this call. Otherwise, we check the jointcapability
X 	   We also check for vrtp. If it's not there, we are not allowed do any video anyway.
X@@ -11203,6 +11215,13 @@ static int build_reply_digest(struct sip
X  		secret =  p->peersecret;
X  		md5secret = p->peermd5secret;
X  	}
X+	/* No authentication. Try to get auth info from channel vars */
X+	if (ast_strlen_zero(username))
X+	{
X+		username = pbx_builtin_getvar_helper(p->owner, "SIP_AUTH_NAME");
X+		secret = pbx_builtin_getvar_helper(p->owner, "SIP_AUTH_SECRET");
X+		md5secret = pbx_builtin_getvar_helper(p->owner, "SIP_AUTH_MD5SECRET");
X+	}
X 	if (ast_strlen_zero(username))	/* We have no authentication */
X 		return -1;
X 
X
END-of-./asterisk/files/patch-channels::chan_sip.c
echo x - ./asterisk/files/patch-channels::chan_skinny.c
sed 's/^X//' >./asterisk/files/patch-channels::chan_skinny.c << 'END-of-./asterisk/files/patch-channels::chan_skinny.c'
X
X$FreeBSD: ports/net/asterisk/files/patch-channels::chan_skinny.c,v 1.1 2006/05/23 02:47:04 sobomax Exp $
X
X--- channels/chan_skinny.c.orig
X+++ channels/chan_skinny.c
X@@ -99,7 +99,7 @@
X #define htolel(x) (x)
X #define htoles(x) (x)
X #else
X-#if defined(SOLARIS) || defined(__Darwin__) || defined(__NetBSD__)
X+#if defined(SOLARIS) || defined(__Darwin__) || defined(__NetBSD__) || defined(__FreeBSD__)
X #define __bswap_16(x) \
X      ((((x) & 0xff00) >> 8) | \
X       (((x) & 0x00ff) << 8))
END-of-./asterisk/files/patch-channels::chan_skinny.c
echo x - ./asterisk/files/patch-channels::chan_zap.c
sed 's/^X//' >./asterisk/files/patch-channels::chan_zap.c << 'END-of-./asterisk/files/patch-channels::chan_zap.c'
X
X$FreeBSD: ports/net/asterisk/files/patch-channels::chan_zap.c,v 1.4 2006/01/17 22:27:45 sobomax Exp $
X
X--- channels/chan_zap.c.orig	Tue Nov 29 20:24:39 2005
X+++ channels/chan_zap.c	Fri Jan 13 13:28:33 2006
X@@ -638,6 +638,7 @@ static struct zt_pvt {
X 	int cidlen;
X 	int ringt;
X 	int ringt_base;
X+	int waitnorings;
X 	int stripmsd;
X 	int callwaitcas;
X 	int callwaitrings;
X@@ -2308,6 +2309,19 @@ static int zt_hangup(struct ast_channel 
X 	}
X 	
X 	ast_mutex_lock(&p->lock);
X+	switch (p->sig) {
X+	case SIG_FXSGS:
X+	case SIG_FXSKS:
X+	case SIG_FXSLS:
X+		if((ast->_state == AST_STATE_RING) && (p->ringt > 1))
X+		{
X+			p->waitnorings = 1;
X+		}
X+		break;
X+	default:
X+		break;
X+	};
X+
X 	
X 	index = zt_get_index(ast, p, 1);
X 
X@@ -6129,7 +6143,37 @@ static void *ss_thread(void *data)
X 		ast_setstate(chan, AST_STATE_RING);
X 		chan->rings = 1;
X 		p->ringt = p->ringt_base;
X+		p->waitnorings = 0;
X 		res = ast_pbx_run(chan);
X+
X+		if(p->waitnorings)
X+		{
X+			p->ringt = p->ringt_base;
X+			for(;;)
X+			{
X+				int i,j=0;
X+				i = ZT_IOMUX_SIGEVENT | ZT_IOMUX_NOWAIT;
X+				if (ioctl(p->subs[index].zfd, ZT_IOMUX, &i) == -1)
X+					break;
X+
X+				if (ioctl(p->subs[index].zfd, ZT_GETEVENT, &j) == -1)
X+					break;
X+
X+				if(j == ZT_EVENT_RINGOFFHOOK)
X+					p->ringt = p->ringt_base;
X+
X+				usleep(20000);
X+
X+				if (p->ringt <= 0)
X+					break;
X+
X+				else if (p->ringt > 0)
X+					p->ringt--;
X+			}
X+			p->ringt = 0;
X+			p->waitnorings = 0;
X+		}
X+
X 		if (res) {
X 			ast_hangup(chan);
X 			ast_log(LOG_WARNING, "PBX exited non-zero\n");
X@@ -6431,7 +6475,7 @@ static void *do_monitor(void *data)
X 		i = iflist;
X 		while(i) {
X 			if ((i->subs[SUB_REAL].zfd > -1) && i->sig && (!i->radio)) {
X-				if (!i->owner && !i->subs[SUB_REAL].owner) {
X+				if (!i->owner && !i->subs[SUB_REAL].owner && !i->waitnorings) {
X 					/* This needs to be watched, as it lacks an owner */
X 					pfds[count].fd = i->subs[SUB_REAL].zfd;
X 					pfds[count].events = POLLPRI;
END-of-./asterisk/files/patch-channels::chan_zap.c
echo x - ./asterisk/files/patch-configure
sed 's/^X//' >./asterisk/files/patch-configure << 'END-of-./asterisk/files/patch-configure'
X--- configure.orig	Fri Jun 29 20:18:36 2007
X+++ configure	Tue Jul 10 16:05:20 2007
X@@ -820,6 +820,10 @@
X RADIUS_INCLUDE
X RADIUS_DIR
X PBX_RADIUS
X+SPANDSP_LIB
X+SPANDSP_INCLUDE
X+SPANDSP_DIR
X+PBX_SPANDSP
X SPEEX_LIB
X SPEEX_INCLUDE
X SPEEX_DIR
X@@ -1525,6 +1529,7 @@
X   --with-h323=PATH        use OpenH323 files in PATH
X   --with-qt=PATH          use Qt files in PATH
X   --with-radius=PATH      use Radius Client files in PATH
X+  --with-spandsp=PATH     use Spandsp library files in PATH
X   --with-speex=PATH       use Speex files in PATH
X   --with-sqlite=PATH      use SQLite files in PATH
X   --with-suppserv=PATH    use mISDN Supplemental Services files in PATH
X@@ -8297,6 +8302,36 @@
X 
X PBX_RADIUS=0
X 
X+SPANDSP_DESCRIP="Spandsp Library"
X+SPANDSP_OPTION="spandsp"
X+
X+# Check whether --with-spandsp was given.
X+if test "${with_spandsp+set}" = set; then
X+  withval=$with_spandsp;
X+case ${withval} in
X+     n|no)
X+     USE_SPANDSP=no
X+     PBX_SPANDSP=0
X+     ;;
X+     y|ye|yes)
X+     SPANDSP_DIR="/usr/local"
X+     SPANDSP_LIB="-L/usr/local/lib -lspandsp"
X+     SPANDSP_INCLUDE="-I${SPANDSP_DIR}/include"
X+     SPANDSP_MANDATORY="yes"
X+     PBX_SPANDSP=1
X+     ;;
X+     *)
X+     SPANDSP_DIR="${withval}"
X+     SPANDSP_LIB="-L${SPANDSP_DIR}/lib -lspandsp"
X+     SPANDSP_INCLUDE="-I${SPANDSP_DIR}/include"
X+     SPANDSP_MANDATORY="yes"
X+     PBX_SPANDSP=1
X+     ;;
X+esac
X+
X+fi
X+
X+
X 
X 
X 
X@@ -25416,7 +25451,7 @@
X 
X 	fi
X 
X-	PLATFORM_OPENH323="h323_${PWLIB_PLATFORM}_${OPENH323_SUFFIX}"
X+	PLATFORM_OPENH323="h323_${OPENH323_SUFFIX}"
X 
X 	if test "${HAS_OPENH323:-unset}" != "unset"; then
X 	   { echo "$as_me:$LINENO: checking OpenH323 installation validity" >&5
X@@ -32039,6 +32074,10 @@
X RADIUS_INCLUDE!$RADIUS_INCLUDE$ac_delim
X RADIUS_DIR!$RADIUS_DIR$ac_delim
X PBX_RADIUS!$PBX_RADIUS$ac_delim
X+SPANDSP_LIB!$SPANDSP_LIB$ac_delim
X+SPANDSP_INCLUDE!$SPANDSP_INCLUDE$ac_delim
X+SPANDSP_DIR!$SPANDSP_DIR$ac_delim
X+PBX_SPANDSP!$PBX_SPANDSP$ac_delim
X SPEEX_LIB!$SPEEX_LIB$ac_delim
X SPEEX_INCLUDE!$SPEEX_INCLUDE$ac_delim
X SPEEX_DIR!$SPEEX_DIR$ac_delim
X@@ -32126,7 +32165,7 @@
X LTLIBOBJS!$LTLIBOBJS$ac_delim
X _ACEOF
X 
X-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 92; then
X+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 96; then
X     break
X   elif $ac_last_try; then
X     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
END-of-./asterisk/files/patch-configure
echo x - ./asterisk/files/patch-include::asterisk::utils.h
sed 's/^X//' >./asterisk/files/patch-include::asterisk::utils.h << 'END-of-./asterisk/files/patch-include::asterisk::utils.h'
X
X$FreeBSD: ports/net/asterisk/files/patch-include::asterisk::utils.h,v 1.1 2004/10/17 18:00:02 sobomax Exp $
X
X--- include/asterisk/utils.h	2004/10/10 12:55:50	1.1
X+++ include/asterisk/utils.h	2004/10/10 12:56:43
X@@ -37,7 +37,6 @@
X #ifdef inet_ntoa
X #undef inet_ntoa
X #endif
X-#define inet_ntoa __dont__use__inet_ntoa__use__ast_inet_ntoa__instead__
X 
X #ifdef LINUX
X #define ast_pthread_create pthread_create
END-of-./asterisk/files/patch-include::asterisk::utils.h
echo x - ./asterisk/files/patch-main::Makefile
sed 's/^X//' >./asterisk/files/patch-main::Makefile << 'END-of-./asterisk/files/patch-main::Makefile'
X--- main/Makefile.orig	Wed Mar 28 11:08:42 2007
X+++ main/Makefile	Wed Mar 28 11:09:20 2007
X@@ -98,8 +98,8 @@ editline/libedit.a:
X 	cd editline && test -f config.h || CFLAGS="$(PTHREAD_CFLAGS) $(ASTCFLAGS:-Werror=)" LDFLAGS="$(ASTLDFLAGS)" ./configure --build=$(BUILD_PLATFORM) --host=$(HOST_PLATFORM) --with-ncurses=$(NCURSES_DIR) --with-curses=$(CURSES_DIR) --with-termcap=$(TERMCAP_DIR) --with-tinfo=$(TINFO_DIR)
X 	$(MAKE) -C editline libedit.a
X 
X-db1-ast/libdb1.a:
X-	CFLAGS="$(ASTCFLAGS)" LDFLAGS="$(ASTLDFLAGS)" $(MAKE) -C db1-ast libdb1.a
X+#db1-ast/libdb1.a:
X+#	CFLAGS="$(ASTCFLAGS)" LDFLAGS="$(ASTLDFLAGS)" $(MAKE) -C db1-ast libdb1.a
X 
X ast_expr2.c ast_expr2.h:
X 	bison -o $@ -d --name-prefix=ast_yy ast_expr2.y
X@@ -127,7 +127,7 @@ else
X   H323LDLIBS=
X endif
X 
X-asterisk: $(OBJS) editline/libedit.a db1-ast/libdb1.a $(AST_EMBED_LDSCRIPTS)
X+asterisk: $(OBJS) editline/libedit.a $(AST_EMBED_LDSCRIPTS)
X 	@$(ASTTOPDIR)/build_tools/make_build_h > $(ASTTOPDIR)/include/asterisk/build.h.tmp
X 	@if cmp -s $(ASTTOPDIR)/include/asterisk/build.h.tmp $(ASTTOPDIR)/include/asterisk/build.h ; then echo ; else \
X 		mv $(ASTTOPDIR)/include/asterisk/build.h.tmp $(ASTTOPDIR)/include/asterisk/build.h ; \
END-of-./asterisk/files/patch-main::Makefile
echo x - ./asterisk/files/patch-main::db.c
sed 's/^X//' >./asterisk/files/patch-main::db.c << 'END-of-./asterisk/files/patch-main::db.c'
X
X$FreeBSD: ports/net/asterisk/files/patch-main::db.c,v 1.1 2007/04/13 08:06:05 sobomax Exp $
X
X--- main/db.c.orig	Fri Jan 13 11:05:32 2006
X+++ main/db.c	Fri Jan 13 11:06:55 2006
X@@ -35,6 +35,7 @@
X #include <errno.h>
X #include <unistd.h>
X #include <dirent.h>
X+#include <db.h>
X 
X #include "asterisk.h"
X 
X@@ -51,7 +52,6 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revisi
X #include "asterisk/utils.h"
X #include "asterisk/lock.h"
X #include "asterisk/manager.h"
X-#include "db1-ast/include/db.h"
X 
X #ifdef __CYGWIN__
X #define dbopen __dbopen
END-of-./asterisk/files/patch-main::db.c
echo x - ./asterisk/files/patch-main::frame.c
sed 's/^X//' >./asterisk/files/patch-main::frame.c << 'END-of-./asterisk/files/patch-main::frame.c'
X
X$FreeBSD: ports/net/asterisk/files/patch-main::frame.c,v 1.1 2007/04/13 08:06:05 sobomax Exp $
X
X--- main/frame.c.orig	Wed Jan 25 13:22:43 2006
X+++ main/frame.c	Wed Jan 25 13:21:25 2006
X@@ -1170,7 +1170,7 @@ static int g723_len(unsigned char buf)
X {
X 	switch(buf & TYPE_MASK) {
X 	case TYPE_DONTSEND:
X-		return 0;
X+		return 2;
X 		break;
X 	case TYPE_SILENCE:
X 		return 4;
END-of-./asterisk/files/patch-main::frame.c
echo x - ./asterisk/files/patch-configure.ac
sed 's/^X//' >./asterisk/files/patch-configure.ac << 'END-of-./asterisk/files/patch-configure.ac'
X--- configure.ac.orig	Fri Jun 29 20:18:36 2007
X+++ configure.ac	Tue Jul 10 14:14:40 2007
X@@ -196,6 +196,7 @@
X AST_EXT_LIB_SETUP([OPENH323], [OpenH323], [h323])
X AST_EXT_LIB_SETUP([QT], [Qt], [qt])
X AST_EXT_LIB_SETUP([RADIUS], [Radius Client], [radius])
X+AST_EXT_LIB_SETUP([SPANDSP], [Spandsp Library], [spandsp])
X AST_EXT_LIB_SETUP([SPEEX], [Speex], [speex])
X AST_EXT_LIB_SETUP([SQLITE], [SQLite], [sqlite])
X AST_EXT_LIB_SETUP([SUPPSERV], [mISDN Supplemental Services], [suppserv])
X@@ -912,6 +913,8 @@
X AC_LANG_POP
X 
X AST_EXT_LIB_CHECK([RADIUS], [radiusclient-ng], [rc_read_config], [radiusclient-ng.h])
X+
X+AST_EXT_LIB_CHECK([SPANDSP], [spandsp], [fax_init], [spandsp.h], [-ltiff])
X 
X AST_EXT_LIB_CHECK([SPEEX], [speex], [speex_encode], [speex/speex.h], [-lm])
X 
END-of-./asterisk/files/patch-configure.ac
echo x - ./asterisk/files/patch-apps::app_rxfax.c
sed 's/^X//' >./asterisk/files/patch-apps::app_rxfax.c << 'END-of-./asterisk/files/patch-apps::app_rxfax.c'
X--- apps/app_rxfax.c.orig	Tue Jul 10 15:28:04 2007
X+++ apps/app_rxfax.c	Tue Jul 10 15:27:28 2007
X@@ -0,0 +1,380 @@
X+/*
X+ * Asterisk -- A telephony toolkit for Linux.
X+ *
X+ * Trivial application to receive a TIFF FAX file
X+ * 
X+ * Copyright (C) 2003, Steve Underwood
X+ *
X+ * Steve Underwood <steveu@coppice.org>
X+ *
X+ * This program is free software, distributed under the terms of
X+ * the GNU General Public License
X+ */
X+
X+/*** MODULEINFO
X+         <depend>spandsp</depend>
X+***/
X+ 
X+#include "asterisk.h"
X+
X+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
X+
X+#include <string.h>
X+#include <stdlib.h>
X+#include <stdio.h>
X+#include <inttypes.h>
X+#include <pthread.h>
X+#include <errno.h>
X+#include <tiffio.h>
X+
X+#include <spandsp.h>
X+
X+#include "asterisk/lock.h"
X+#include "asterisk/file.h"
X+#include "asterisk/logger.h"
X+#include "asterisk/channel.h"
X+#include "asterisk/pbx.h"
X+#include "asterisk/module.h"
X+#include "asterisk/manager.h"
X+
X+#ifndef AST_MODULE
X+#define AST_MODULE "app_rxfax"
X+#endif
X+
X+static char *app = "RxFAX";
X+
X+static char *synopsis = "Receive a FAX to a file";
X+
X+static char *descrip = 
X+"  RxFAX(filename[|caller][|debug]): Receives a FAX from the channel into the\n"
X+"given filename. If the file exists it will be overwritten. The file\n"
X+"should be in TIFF/F format.\n"
X+"The \"caller\" option makes the application behave as a calling machine,\n"
X+"rather than the answering machine. The default behaviour is to behave as\n"
X+"an answering machine.\n"
X+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
X+"     LOCALHEADERINFO to generate a header line on each page.\n"
X+"Sets REMOTESTATIONID to the sender CSID.\n"
X+"     FAXPAGES to the number of pages received.\n"
X+"     FAXBITRATE to the transmition rate.\n"
X+"     FAXRESOLUTION to the resolution.\n"
X+"Returns -1 when the user hangs up.\n"
X+"Returns 0 otherwise.\n";
X+
X+#define MAX_BLOCK_SIZE 240
X+
X+static void span_message(int level, const char *msg)
X+{
X+    int ast_level;
X+    
X+    if (level == SPAN_LOG_WARNING)
X+        ast_level = __LOG_WARNING;
X+    else if (level == SPAN_LOG_WARNING)
X+        ast_level = __LOG_WARNING;
X+    else
X+        ast_level = __LOG_DEBUG;
X+    ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+#if 0
X+static void t30_flush(t30_state_t *s, int which)
X+{
X+    /* TODO: */
X+}
X+/*- End of function --------------------------------------------------------*/
X+#endif
X+
X+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
X+{
X+    struct ast_channel *chan;
X+    t30_stats_t t;
X+    char local_ident[21];
X+    char far_ident[21];
X+    char buf[11];
X+    
X+    chan = (struct ast_channel *) user_data;
X+    if (result == T30_ERR_OK)
X+    {
X+        t30_get_transfer_statistics(s, &t);
X+        t30_get_far_ident(s, far_ident);
X+        t30_get_local_ident(s, local_ident);
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+        ast_log(LOG_DEBUG, "Fax successfully received.\n");
X+        ast_log(LOG_DEBUG, "Remote station id: %s\n", far_ident);
X+        ast_log(LOG_DEBUG, "Local station id:  %s\n", local_ident);
X+        ast_log(LOG_DEBUG, "Pages transferred: %i\n", t.pages_transferred);
X+        ast_log(LOG_DEBUG, "Image resolution:  %i x %i\n", t.x_resolution, t.y_resolution);
X+        ast_log(LOG_DEBUG, "Transfer Rate:     %i\n", t.bit_rate);
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+        manager_event(EVENT_FLAG_CALL,
X+                      "FaxReceived", "Channel: %s\nExten: %s\nCallerID: %s\nRemoteStationID: %s\nLocalStationID: %s\nPagesTransferred: %i\nResolution: %i\nTransferRate: %i\nFileName: %s\n",
X+                      chan->name,
X+                      chan->exten,
X+                      (chan->cid.cid_num)  ?  chan->cid.cid_num  :  "",
X+                      far_ident,
X+                      local_ident,
X+                      t.pages_transferred,
X+                      t.y_resolution,
X+                      t.bit_rate,
X+                      s->rx_file);
X+        pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
X+        snprintf(buf, sizeof(buf), "%i", t.pages_transferred);
X+        pbx_builtin_setvar_helper(chan, "FAXPAGES", buf);
X+        snprintf(buf, sizeof(buf), "%i", t.y_resolution);
X+        pbx_builtin_setvar_helper(chan, "FAXRESOLUTION", buf);
X+        snprintf(buf, sizeof(buf), "%i", t.bit_rate);
X+        pbx_builtin_setvar_helper(chan, "FAXBITRATE", buf);
X+    }
X+    else
X+    {
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+        ast_log(LOG_DEBUG, "Fax receive not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+    }
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static void phase_d_handler(t30_state_t *s, void *user_data, int result)
X+{
X+    struct ast_channel *chan;
X+    t30_stats_t t;
X+    
X+    chan = (struct ast_channel *) user_data;
X+    if (result)
X+    {
X+        t30_get_transfer_statistics(s, &t);
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+        ast_log(LOG_DEBUG, "Pages transferred:  %i\n", t.pages_transferred);
X+        ast_log(LOG_DEBUG, "Image size:         %i x %i\n", t.width, t.length);
X+        ast_log(LOG_DEBUG, "Image resolution    %i x %i\n", t.x_resolution, t.y_resolution);
X+        ast_log(LOG_DEBUG, "Transfer Rate:      %i\n", t.bit_rate);
X+        ast_log(LOG_DEBUG, "Bad rows            %i\n", t.bad_rows);
X+        ast_log(LOG_DEBUG, "Longest bad row run %i\n", t.longest_bad_row_run);
X+        ast_log(LOG_DEBUG, "Compression type    %i\n", t.encoding);
X+        ast_log(LOG_DEBUG, "Image size (bytes)  %i\n", t.image_size);
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+    }
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int rxfax_exec(struct ast_channel *chan, void *data)
X+{
X+    int res = 0;
X+    char template_file[256];
X+    char target_file[256];
X+    char *s;
X+    char *t;
X+    char *v;
X+    const char *x;
X+    int option;
X+    int len;
X+    int i;
X+    fax_state_t fax;
X+    int calling_party;
X+    int verbose;
X+    int samples;
X+
X+    struct ast_module_user *u;
X+    struct ast_frame *inf = NULL;
X+    struct ast_frame outf;
X+
X+    int original_read_fmt;
X+    int original_write_fmt;
X+    
X+    uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
X+    uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
X+
X+    if (chan == NULL)
X+    {
X+        ast_log(LOG_WARNING, "Fax receive channel is NULL. Giving up.\n");
X+        return -1;
X+    }
X+
X+    span_set_message_handler(span_message);
X+
X+    /* The next few lines of code parse out the filename and header from the input string */
X+    if (data == NULL)
X+    {
X+        /* No data implies no filename or anything is present */
X+        ast_log(LOG_WARNING, "Rxfax requires an argument (filename)\n");
X+        return -1;
X+    }
X+    
X+    calling_party = FALSE;
X+    verbose = FALSE;
X+    target_file[0] = '\0';
X+
X+    for (option = 0, v = s = data;  v;  option++, s++)
X+    {
X+        t = s;
X+        v = strchr(s, '|');
X+        s = (v)  ?  v  :  s + strlen(s);
X+        strncpy((char *) buf, t, s - t);
X+        buf[s - t] = '\0';
X+        if (option == 0)
X+        {
X+            /* The first option is always the file name */
X+            len = s - t;
X+            if (len > 255)
X+                len = 255;
X+            strncpy(target_file, t, len);
X+            target_file[len] = '\0';
X+            /* Allow the use of %d in the file name for a wild card of sorts, to
X+               create a new file with the specified name scheme */
X+            if ((x = strchr(target_file, '%'))  &&  x[1] == 'd')
X+            {
X+                strcpy(template_file, target_file);
X+                i = 0;
X+                do
X+                {
X+                    snprintf(target_file, 256, template_file, 1);
X+                    i++;
X+                }
X+                while (ast_fileexists(target_file, "", chan->language) != -1);
X+            }
X+        }
X+        else if (strncmp("caller", t, s - t) == 0)
X+        {
X+            calling_party = TRUE;
X+        }
X+        else if (strncmp("debug", t, s - t) == 0)
X+        {
X+            verbose = TRUE;
X+        }
X+    }
X+
X+    /* Done parsing */
X+
X+    u = ast_module_user_add(chan);
X+
X+    if (chan->_state != AST_STATE_UP)
X+    {
X+        /* Shouldn't need this, but checking to see if channel is already answered
X+         * Theoretically asterisk should already have answered before running the app */
X+        res = ast_answer(chan);
X+    }
X+    
X+    if (!res)
X+    {
X+        original_read_fmt = chan->readformat;
X+        if (original_read_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
X+            if (res < 0)
X+            {
X+                ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
X+                return -1;
X+            }
X+        }
X+        original_write_fmt = chan->writeformat;
X+        if (original_write_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
X+            if (res < 0)
X+            {
X+                ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
X+                res = ast_set_read_format(chan, original_read_fmt);
X+                if (res)
X+                    ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
X+                return -1;
X+            }
X+        }
X+        fax_init(&fax, calling_party);
X+        if (verbose)
X+            fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
X+        x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
X+        if (x  &&  x[0])
X+            t30_set_local_ident(&fax.t30_state, x);
X+        x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
X+        if (x  &&  x[0])
X+            t30_set_header_info(&fax.t30_state, x);
X+        t30_set_rx_file(&fax.t30_state, target_file, -1);
X+        //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
X+        t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
X+        t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
X+        t30_set_ecm_capability(&fax.t30_state, TRUE);
X+        t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
X+        while (ast_waitfor(chan, -1) > -1)
X+        {
X+            inf = ast_read(chan);
X+            if (inf == NULL)
X+            {
X+                res = -1;
X+                break;
X+            }
X+            if (inf->frametype == AST_FRAME_VOICE)
X+            {
X+                if (fax_rx(&fax, inf->data, inf->samples))
X+                    break;
X+                samples = (inf->samples <= MAX_BLOCK_SIZE)  ?  inf->samples  :  MAX_BLOCK_SIZE;
X+                len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
X+                if (len)
X+                {
X+                    memset(&outf, 0, sizeof(outf));
X+                    outf.frametype = AST_FRAME_VOICE;
X+                    outf.subclass = AST_FORMAT_SLINEAR;
X+                    outf.datalen = len*sizeof(int16_t);
X+                    outf.samples = len;
X+                    outf.data = &buf[AST_FRIENDLY_OFFSET];
X+                    outf.offset = AST_FRIENDLY_OFFSET;
X+                    outf.src = "RxFAX";
X+                    if (ast_write(chan, &outf) < 0)
X+                    {
X+                        ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
X+                        break;
X+                    }
X+                }
X+            }
X+            ast_frfree(inf);
X+        }
X+        if (inf == NULL)
X+        {
X+            ast_log(LOG_DEBUG, "Got hangup\n");
X+            res = -1;
X+        }
X+        if (original_read_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_read_format(chan, original_read_fmt);
X+            if (res)
X+                ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
X+        }
X+        if (original_write_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_write_format(chan, original_write_fmt);
X+            if (res)
X+                ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
X+        }
X+        t30_terminate(&fax.t30_state);
X+    }
X+    else
X+    {
X+        ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
X+    }
X+    ast_module_user_remove(u);
X+    return res;
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int unload_module(void)
X+{
X+	int res;
X+
X+	ast_module_user_hangup_all();
X+
X+	res = ast_unregister_application(app);	
X+	
X+
X+	return res;
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int load_module(void)
X+{
X+	return ast_register_application(app, rxfax_exec, synopsis, descrip);
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Receive Application");
X+
X+/*- End of file ------------------------------------------------------------*/
END-of-./asterisk/files/patch-apps::app_rxfax.c
echo x - ./asterisk/files/patch-apps::app_txfax.c
sed 's/^X//' >./asterisk/files/patch-apps::app_txfax.c << 'END-of-./asterisk/files/patch-apps::app_txfax.c'
X--- apps/app_txfax.c.orig	Tue Jul 10 15:28:13 2007
X+++ apps/app_txfax.c	Tue Jul 10 15:27:37 2007
X@@ -0,0 +1,306 @@
X+/*
X+ * Asterisk -- A telephony toolkit for Linux.
X+ *
X+ * Trivial application to send a TIFF file as a FAX
X+ * 
X+ * Copyright (C) 2003, Steve Underwood
X+ *
X+ * Steve Underwood <steveu@coppice.org>
X+ *
X+ * This program is free software, distributed under the terms of
X+ * the GNU General Public License
X+ */
X+
X+/*** MODULEINFO
X+         <depend>spandsp</depend>
X+***/
X+ 
X+#include "asterisk.h"
X+
X+ASTERISK_FILE_VERSION(__FILE__, "$Revision:$")
X+
X+#include <string.h>
X+#include <stdlib.h>
X+#include <stdio.h>
X+#include <inttypes.h>
X+#include <pthread.h>
X+#include <errno.h>
X+#include <tiffio.h>
X+
X+#include <spandsp.h>
X+
X+#include "asterisk/lock.h"
X+#include "asterisk/file.h"
X+#include "asterisk/logger.h"
X+#include "asterisk/channel.h"
X+#include "asterisk/pbx.h"
X+#include "asterisk/module.h"
X+
X+#ifndef AST_MODULE
X+#define AST_MODULE "app_txfax"
X+#endif
X+
X+static char *app = "TxFAX";
X+
X+static char *synopsis = "Send a FAX file";
X+
X+static char *descrip = 
X+"  TxFAX(filename[|caller][|debug]):  Send a given TIFF file to the channel as a FAX.\n"
X+"The \"caller\" option makes the application behave as a calling machine,\n"
X+"rather than the answering machine. The default behaviour is to behave as\n"
X+"an answering machine.\n"
X+"Uses LOCALSTATIONID to identify itself to the remote end.\n"
X+"     LOCALHEADERINFO to generate a header line on each page.\n"
X+"Sets REMOTESTATIONID to the receiver CSID.\n"
X+"Returns -1 when the user hangs up, or if the file does not exist.\n"
X+"Returns 0 otherwise.\n";
X+
X+#define MAX_BLOCK_SIZE 240
X+
X+static void span_message(int level, const char *msg)
X+{
X+    int ast_level;
X+    
X+    if (level == SPAN_LOG_WARNING)
X+        ast_level = __LOG_WARNING;
X+    else if (level == SPAN_LOG_WARNING)
X+        ast_level = __LOG_WARNING;
X+    else
X+        ast_level = __LOG_DEBUG;
X+    ast_log(ast_level, __FILE__, __LINE__, __PRETTY_FUNCTION__, msg);
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+#if 0
X+static void t30_flush(t30_state_t *s, int which)
X+{
X+    /* TODO: */
X+}
X+/*- End of function --------------------------------------------------------*/
X+#endif
X+
X+static void phase_e_handler(t30_state_t *s, void *user_data, int result)
X+{
X+    struct ast_channel *chan;
X+    char far_ident[21];
X+    
X+    chan = (struct ast_channel *) user_data;
X+    if (result == T30_ERR_OK)
X+    {
X+        t30_get_far_ident(s, far_ident);
X+        pbx_builtin_setvar_helper(chan, "REMOTESTATIONID", far_ident);
X+    }
X+    else
X+    {
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+        ast_log(LOG_DEBUG, "Fax send not successful - result (%d) %s.\n", result, t30_completion_code_to_str(result));
X+        ast_log(LOG_DEBUG, "==============================================================================\n");
X+    }
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int txfax_exec(struct ast_channel *chan, void *data)
X+{
X+    int res = 0;
X+    char source_file[256];
X+    char *s;
X+    char *t;
X+    char *v;
X+    const char *x;
X+    int option;
X+    int len;
X+    fax_state_t fax;
X+    int calling_party;
X+    int verbose;
X+    int samples;
X+    
X+    struct ast_module_user *u;
X+    struct ast_frame *inf = NULL;
X+    struct ast_frame outf;
X+
X+    int original_read_fmt;
X+    int original_write_fmt;
X+    
X+    uint8_t __buf[sizeof(uint16_t)*MAX_BLOCK_SIZE + 2*AST_FRIENDLY_OFFSET];
X+    uint8_t *buf = __buf + AST_FRIENDLY_OFFSET;
X+
X+    if (chan == NULL)
X+    {
X+        ast_log(LOG_WARNING, "Fax transmit channel is NULL. Giving up.\n");
X+        return -1;
X+    }
X+
X+    span_set_message_handler(span_message);
X+
X+    /* The next few lines of code parse out the filename and header from the input string */
X+    if (data == NULL)
X+    {
X+        /* No data implies no filename or anything is present */
X+        ast_log(LOG_WARNING, "Txfax requires an argument (filename)\n");
X+        return -1;
X+    }
X+    
X+    calling_party = FALSE;
X+    verbose = FALSE;
X+    source_file[0] = '\0'; 
X+
X+    for (option = 0, v = s = data;  v;  option++, s++)
X+    {
X+        t = s;
X+        v = strchr(s, '|');
X+        s = (v)  ?  v  :  s + strlen(s);
X+        strncpy((char *) buf, t, s - t);
X+        buf[s - t] = '\0';
X+        if (option == 0)
X+        {
X+            /* The first option is always the file name */
X+            len = s - t;
X+            if (len > 255)
X+                len = 255;
X+            strncpy(source_file, t, len);
X+            source_file[len] = '\0';
X+        }
X+        else if (strncmp("caller", t, s - t) == 0)
X+        {
X+            calling_party = TRUE;
X+        }
X+        else if (strncmp("debug", t, s - t) == 0)
X+        {
X+            verbose = TRUE;
X+        }
X+    }
X+
X+    /* Done parsing */
X+
X+    u = ast_module_user_add(chan);
X+
X+    if (chan->_state != AST_STATE_UP)
X+    {
X+        /* Shouldn't need this, but checking to see if channel is already answered
X+         * Theoretically asterisk should already have answered before running the app */
X+        res = ast_answer(chan);
X+    }
X+    
X+    if (!res)
X+    {
X+        original_read_fmt = chan->readformat;
X+        if (original_read_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_read_format(chan, AST_FORMAT_SLINEAR);
X+            if (res < 0)
X+            {
X+                ast_log(LOG_WARNING, "Unable to set to linear read mode, giving up\n");
X+                return -1;
X+            }
X+        }
X+        original_write_fmt = chan->writeformat;
X+        if (original_write_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_write_format(chan, AST_FORMAT_SLINEAR);
X+            if (res < 0)
X+            {
X+                ast_log(LOG_WARNING, "Unable to set to linear write mode, giving up\n");
X+                res = ast_set_read_format(chan, original_read_fmt);
X+                if (res)
X+                    ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
X+                return -1;
X+            }
X+        }
X+        fax_init(&fax, calling_party);
X+        if (verbose)
X+	    fax.logging.level = SPAN_LOG_SHOW_SEVERITY | SPAN_LOG_SHOW_PROTOCOL | SPAN_LOG_FLOW;
X+
X+        x = pbx_builtin_getvar_helper(chan, "LOCALSTATIONID");
X+        if (x  &&  x[0])
X+            t30_set_local_ident(&fax.t30_state, x);
X+        x = pbx_builtin_getvar_helper(chan, "LOCALHEADERINFO");
X+        if (x  &&  x[0])
X+            t30_set_header_info(&fax.t30_state, x);
X+        t30_set_tx_file(&fax.t30_state, source_file, -1, -1);
X+        //t30_set_phase_b_handler(&fax.t30_state, phase_b_handler, chan);
X+        //t30_set_phase_d_handler(&fax.t30_state, phase_d_handler, chan);
X+        t30_set_phase_e_handler(&fax.t30_state, phase_e_handler, chan);
X+        t30_set_ecm_capability(&fax.t30_state, TRUE);
X+        t30_set_supported_compressions(&fax.t30_state, T30_SUPPORT_T4_1D_COMPRESSION | T30_SUPPORT_T4_2D_COMPRESSION | T30_SUPPORT_T6_COMPRESSION);
X+        while (ast_waitfor(chan, -1) > -1)
X+        {
X+            inf = ast_read(chan);
X+            if (inf == NULL)
X+            {
X+                res = -1;
X+                break;
X+            }
X+            if (inf->frametype == AST_FRAME_VOICE)
X+            {
X+                if (fax_rx(&fax, inf->data, inf->samples))
X+                    break;
X+                samples = (inf->samples <= MAX_BLOCK_SIZE)  ?  inf->samples  :  MAX_BLOCK_SIZE;
X+                len = fax_tx(&fax, (int16_t *) &buf[AST_FRIENDLY_OFFSET], samples);
X+                if (len)
X+                {
X+                    memset(&outf, 0, sizeof(outf));
X+                    outf.frametype = AST_FRAME_VOICE;
X+                    outf.subclass = AST_FORMAT_SLINEAR;
X+                    outf.datalen = len*sizeof(int16_t);
X+                    outf.samples = len;
X+                    outf.data = &buf[AST_FRIENDLY_OFFSET];
X+                    outf.offset = AST_FRIENDLY_OFFSET;
X+                    if (ast_write(chan, &outf) < 0)
X+                    {
X+                        ast_log(LOG_WARNING, "Unable to write frame to channel; %s\n", strerror(errno));
X+                        break;
X+                    }
X+                }
X+            }
X+            ast_frfree(inf);
X+        }
X+        if (inf == NULL)
X+        {
X+            ast_log(LOG_DEBUG, "Got hangup\n");
X+            res = -1;
X+        }
X+        if (original_read_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_read_format(chan, original_read_fmt);
X+            if (res)
X+                ast_log(LOG_WARNING, "Unable to restore read format on '%s'\n", chan->name);
X+        }
X+        if (original_write_fmt != AST_FORMAT_SLINEAR)
X+        {
X+            res = ast_set_write_format(chan, original_write_fmt);
X+            if (res)
X+                ast_log(LOG_WARNING, "Unable to restore write format on '%s'\n", chan->name);
X+        }
X+        t30_terminate(&fax.t30_state);
X+    }
X+    else
X+    {
X+        ast_log(LOG_WARNING, "Could not answer channel '%s'\n", chan->name);
X+    }
X+    ast_module_user_remove(u);
X+    return res;
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int unload_module(void)
X+{
X+	int res;
X+
X+	ast_module_user_hangup_all();
X+
X+	res = ast_unregister_application(app);	
X+	
X+
X+	return res;
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+static int load_module(void)
X+{
X+    return ast_register_application(app, txfax_exec, synopsis, descrip);
X+}
X+/*- End of function --------------------------------------------------------*/
X+
X+AST_MODULE_INFO_STANDARD(ASTERISK_GPL_KEY, "Trivial FAX Transmit Application");
X+
X+/*- End of file ------------------------------------------------------------*/
END-of-./asterisk/files/patch-apps::app_txfax.c
echo x - ./asterisk/files/patch-build_tools::menuselect-deps.in
sed 's/^X//' >./asterisk/files/patch-build_tools::menuselect-deps.in << 'END-of-./asterisk/files/patch-build_tools::menuselect-deps.in'
X--- build_tools/menuselect-deps.in.orig	2006-09-03 15:50:32.000000000 +0800
X+++ build_tools/menuselect-deps.in	2006-09-03 15:50:44.000000000 +0800
X@@ -17,10 +17,11 @@
X PGSQL=@PBX_PGSQL@
X POPT=@PBX_POPT@
X PRI=@PBX_PRI@
X QT=@PBX_QT@
X RADIUS=@PBX_RADIUS@
X+SPANDSP=@PBX_SPANDSP@
X SPEEX=@PBX_SPEEX@
X SQLITE=@PBX_SQLITE@
X SSL=@PBX_OPENSSL@
X TONEZONE=@PBX_TONEZONE@
X UNIXODBC=@PBX_UNIXODBC@
END-of-./asterisk/files/patch-build_tools::menuselect-deps.in
echo x - ./asterisk/files/patch-makeopts.in
sed 's/^X//' >./asterisk/files/patch-makeopts.in << 'END-of-./asterisk/files/patch-makeopts.in'
X--- makeopts.in.orig	2006-09-03 15:53:47.000000000 +0800
X+++ makeopts.in	2006-09-03 15:53:53.000000000 +0800
X@@ -120,10 +120,13 @@
X QT_LIB=@QT_LIB@
X 
X RADIUS_INCLUDE=@RADIUS_INCLUDE@
X RADIUS_LIB=@RADIUS_LIB@
X 
X+SPANDSP_INCLUDE=@SPANDSP_INCLUDE@
X+SPANDSP_LIB=@SPANDSP_LIB@
X+
X SPEEX_INCLUDE=@SPEEX_INCLUDE@
X SPEEX_LIB=@SPEEX_LIB@
X 
X SQLITE_INCLUDE=@SQLITE_INCLUDE@
X SQLITE_LIB=@SQLITE_LIB@
END-of-./asterisk/files/patch-makeopts.in
echo x - ./asterisk/Makefile
sed 's/^X//' >./asterisk/Makefile << 'END-of-./asterisk/Makefile'
X# New ports collection makefile for:	asterisk
X# Date created:				17 October 2003
X# Whom:					Maxim Sobolev <sobomax@portaone.com>
X#
X# $FreeBSD: ports/net/asterisk/Makefile,v 1.73 2007/05/29 20:52:15 sobomax Exp $
X#
X
XPORTNAME=	asterisk
XPORTVERSION=	1.4.8
XPORTREVISION=	1
XCATEGORIES=	net
XMASTER_SITES=	http://ftp.digium.com/pub/asterisk/ \
X		http://ftp.digium.com/pub/asterisk/old-releases/
XDISTNAME=	${PORTNAME}-${PORTVERSION}
X
XMAINTAINER=	sobomax@FreeBSD.org
XCOMMENT=	An Open Source PBX and telephony toolkit
X
XLIB_DEPENDS=	speex.1:${PORTSDIR}/audio/speex \
X		newt.51:${PORTSDIR}/devel/newt \
X		curl.4:${PORTSDIR}/ftp/curl
X
XONLY_FOR_ARCHS=	i386 sparc64 amd64
X
XGNU_CONFIGURE=	yes
XCONFIGURE_ARGS=	--mandir=${LOCALBASE}/man
XCONFIGURE_ENV=	CPPFLAGS="-I${LOCALBASE}/include" \
X		LDFLAGS="-L${LOCALBASE}/lib"
XUSE_GMAKE=	yes
XUSE_BISON=	yes
XUSE_RC_SUBR=	asterisk.sh
XMAKE_ENV=	PTHREAD_CFLAGS="${PTHREAD_CFLAGS}" \
X		PTHREAD_LIBS="${PTHREAD_LIBS}" \
X		MKDIR="${MKDIR}" \
X		PWLIBDIR=${LOCALBASE}/share/pwlib \
X		OPENH323DIR=${LOCALBASE}/share/openh323 \
X		OSVERSION=${OSVERSION} \
X		CXX="${CXX}"
XMAN8=		asterisk.8 astgenkey.8 autosupport.8 safe_asterisk.8
X
XOPTIONS=	OGGVORBIS	"Enable Ogg Vorbis support" on \
X		ODBC		"Enable ODBC support" off \
X		POSTGRES	"Enable PostgreSQL support" off \
X		RADIUS		"Enable RADIUS accounting support" off \
X		SNMP		"Enable SNMP support" off \
X		SQLITE		"Enable SQLITE support" off \
X		H323		"Enable H.323 support" on \
X		FREETDS		"Enable FreeTDS support" off \
X		JABBER		"Enable Jabber and Gtalk support" off \
X		ZAPTEL		"Enable Zaptel support" on 
X
X
X.include <bsd.port.pre.mk>
X
X.if defined(WITHOUT_H323)
XPLIST_SUB+=	WITH_H323="@comment "
XCONFIGURE_ARGS+=	--without-h323
X.else
XPLIST_SUB+=	WITH_H323=""
XCONFIGURE_ARGS+=	--with-h323="/usr/local"
XLIB_DEPENDS+=	pt_r.1:${PORTSDIR}/devel/pwlib \
X		h323_r.1:${PORTSDIR}/net/openh323
X.endif
X
X.if defined(WITHOUT_ZAPTEL)
XPLIST_SUB+=	WITH_ZAPTEL="@comment "
XCONFIGURE_ARGS+=	--without-zaptel
X.else
XPLIST_SUB+=	WITH_ZAPTEL=""
XCONFIGURE_ARGS+=	--with-zaptel
XBUILD_DEPENDS+=	libpri>=1.2.0:${PORTSDIR}/misc/libpri \
X		${LOCALBASE}/include/zaptel/zaptel.h:${PORTSDIR}/misc/zaptel
XLIB_DEPENDS+=	pri.1:${PORTSDIR}/misc/libpri
XRUN_DEPENDS+=	${LOCALBASE}/include/zaptel/zaptel.h:${PORTSDIR}/misc/zaptel
X.endif
X
X#
X# WITH_FREETDS, WITH_PGSQL and WITH_SQLITE can also be added to MAKE_ENV
X# similarly
X.if defined(WITHOUT_ODBC)
XPLIST_SUB+=	WITH_ODBC="@comment "
XCONFIGURE_ARGS+=	--without-odbc
X.else
XPLIST_SUB+=	WITH_ODBC=""
XCONFIGURE_ARGS+=	--with-odbc
XLIB_DEPENDS+=	odbc.1:${PORTSDIR}/databases/unixODBC
X.endif
X
X.if defined(WITHOUT_FREETDS)
XPLIST_SUB+=	WITH_FREETDS="@comment "
XCONFIGURE_ARGS+=	--without-tds
X.else
XPLIST_SUB+=	WITH_FREETDS=""
XCONFIGURE_ARGS+=	--with-tds=${LOCALBASE}
XLIB_DEPENDS+=	tds.5:${PORTSDIR}/databases/freetds
X.endif
X
X.if defined(WITHOUT_POSTGRES)
XPLIST_SUB+=	WITH_POSTGRES="@comment "
XCONFIGURE_ARGS+=	--without-postgres
X.else
XPLIST_SUB+=	WITH_POSTGRES=""
XUSE_PGSQL=	yes
XCONFIGURE_ARGS+=	--with-postgres
X.endif
X
X.if defined(WITHOUT_OGGVORBIS)
XPLIST_SUB+=	WITH_OGGVORBIS="@comment "
XCONFIGURE_ARGS+=	--without-ogg
X.else
XPLIST_SUB+=	WITH_OGGVORBIS=""
XCONFIGURE_ARGS+=	--with-ogg
XLIB_DEPENDS+=	vorbis.3:${PORTSDIR}/audio/libvorbis
X.endif
X
X.if defined(WITHOUT_RADIUS)
XPLIST_SUB+=	WITH_RADIUS="@comment "
XCONFIGURE_ARGS+=	--without-radius
X.else
XPLIST_SUB+=	WITH_RADIUS=""
XCONFIGURE_ARGS+=	--with-radius
XLIB_DEPENDS+=	radiusclient-ng.2:${PORTSDIR}/net/radiusclient
X.endif
X
X.if defined(WITHOUT_SNMP)
XPLIST_SUB+=	WITH_SNMP="@comment "
XCONFIGURE_ARGS+=	--without-netsnmp
X.else
XPLIST_SUB+=	WITH_SNMP=""
XCONFIGURE_ARGS+=	--with-netsnmp
XLIB_DEPENDS+=	netsnmp.10:${PORTSDIR}/net-mgmt/net-snmp
X.endif
X
X.if defined(WITHOUT_SQLITE)
XPLIST_SUB+=	WITH_SQLITE="@comment "
XCONFIGURE_ARGS+=	--without-sqlite
X.else
XPLIST_SUB+=	WITH_SQLITE=""
XCONFIGURE_ARGS+=	--with-sqlite
XLIB_DEPENDS+=	sqlite:${PORTSDIR}/databases/sqlite2
X.endif
X
X.if defined(WITHOUT_JABBER)
XPLIST_SUB+=	WITH_JABBER="@comment "
XCONFIGURE_ARGS+=	--without-iksemel
X.else
XPLIST_SUB+=	WITH_JABBER=""
XCONFIGURE_ARGS+=	--with-iksemel
XLIB_DEPENDS+=	iksemel.3:${PORTSDIR}/textproc/iksemel
X.endif
X
X
X.if defined(WITHOUT_FAX)
XPLIST_SUB+=	WITH_FAX="@comment "
X.else
XMAKE_ENV+=	WITH_FAX=yes
XCONFIGURE_ARGS+=	--with-spandsp=yes
XLIB_DEPENDS+=	spandsp.0:${PORTSDIR}/comms/spandsp-devel
XPLIST_SUB+=	WITH_FAX=""
X.endif
X
X
Xpost-extract:
X.if ${OSVERSION} > 700000
X.if defined(CPUTYPE)
XBROKEN= "You must disable CPUTYPE in /etc/make.conf"
X.endif
X.endif
X
Xpost-patch:
X	@${REINPLACE_CMD} -e 's|/var/lib|${PREFIX}/share|g' ${WRKSRC}/configs/musiconhold.conf.sample
X
X.include <bsd.port.post.mk>
END-of-./asterisk/Makefile
echo x - ./asterisk/distinfo
sed 's/^X//' >./asterisk/distinfo << 'END-of-./asterisk/distinfo'
XMD5 (asterisk-1.4.8.tar.gz) = 7263ff56ad93cbb5efb971a536ee6a51
XSHA256 (asterisk-1.4.8.tar.gz) = 3eabdf2c52d366abe7dd1e303b982fa7aad12945b1ac32ee97dc4b652041a43f
XSIZE (asterisk-1.4.8.tar.gz) = 11171190
END-of-./asterisk/distinfo
echo x - ./asterisk/pkg-descr
sed 's/^X//' >./asterisk/pkg-descr << 'END-of-./asterisk/pkg-descr'
XAsterisk is an Open Source PBX and telephony toolkit.  It is, in a
Xsense, middleware between Internet and telephony channels on the bottom,
Xand Internet and telephony applications at the top.
X
XWWW: http://www.asteriskpbx.com
END-of-./asterisk/pkg-descr
echo x - ./asterisk/pkg-plist
sed 's/^X//' >./asterisk/pkg-plist << 'END-of-./asterisk/pkg-plist'
X@unexec if cmp -s %D/etc/asterisk/adsi.conf %D/etc/asterisk/adsi.conf-dist; then rm -f %D/etc/asterisk/adsi.conf; fi
Xetc/asterisk/adsi.conf-dist
X@unexec if cmp -s %D/etc/asterisk/adtranvofr.conf %D/etc/asterisk/adtranvofr.conf-dist; then rm -f %D/etc/asterisk/adtranvofr.conf; fi
Xetc/asterisk/adtranvofr.conf-dist
X@unexec if cmp -s %D/etc/asterisk/agents.conf %D/etc/asterisk/agents.conf-dist; then rm -f %D/etc/asterisk/agents.conf; fi
Xetc/asterisk/agents.conf-dist
X@unexec if cmp -s %D/etc/asterisk/alarmreceiver.conf %D/etc/asterisk/alarmreceiver.conf-dist; then rm -f %D/etc/asterisk/alarmreceiver.conf; fi
Xetc/asterisk/alarmreceiver.conf-dist
X@unexec if cmp -s %D/etc/asterisk/alsa.conf %D/etc/asterisk/alsa.conf-dist; then rm -f %D/etc/asterisk/alsa.conf; fi
Xetc/asterisk/alsa.conf-dist
X@unexec if cmp -s %D/etc/asterisk/asterisk.adsi %D/etc/asterisk/asterisk.adsi-dist; then rm -f %D/etc/asterisk/asterisk.adsi; fi
Xetc/asterisk/asterisk.adsi-dist
X@unexec if cmp -s %D/etc/asterisk/asterisk.conf %D/etc/asterisk/asterisk.conf-dist; then rm -f %D/etc/asterisk/asterisk.conf; fi
Xetc/asterisk/asterisk.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr.conf %D/etc/asterisk/cdr.conf-dist; then rm -f %D/etc/asterisk/cdr.conf; fi
Xetc/asterisk/cdr.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr_custom.conf %D/etc/asterisk/cdr_custom.conf-dist; then rm -f %D/etc/asterisk/cdr_custom.conf; fi
Xetc/asterisk/cdr_custom.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr_manager.conf %D/etc/asterisk/cdr_manager.conf-dist; then rm -f %D/etc/asterisk/cdr_manager.conf; fi
Xetc/asterisk/cdr_manager.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr_odbc.conf %D/etc/asterisk/cdr_odbc.conf-dist; then rm -f %D/etc/asterisk/cdr_odbc.conf; fi
Xetc/asterisk/cdr_odbc.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr_pgsql.conf %D/etc/asterisk/cdr_pgsql.conf-dist; then rm -f %D/etc/asterisk/cdr_pgsql.conf; fi
Xetc/asterisk/cdr_pgsql.conf-dist
X@unexec if cmp -s %D/etc/asterisk/cdr_tds.conf %D/etc/asterisk/cdr_tds.conf-dist; then rm -f %D/etc/asterisk/cdr_tds.conf; fi
Xetc/asterisk/cdr_tds.conf-dist
X@unexec if cmp -s %D/etc/asterisk/codecs.conf %D/etc/asterisk/codecs.conf-dist; then rm -f %D/etc/asterisk/codecs.conf; fi
Xetc/asterisk/codecs.conf-dist
X@unexec if cmp -s %D/etc/asterisk/dnsmgr.conf %D/etc/asterisk/dnsmgr.conf-dist; then rm -f %D/etc/asterisk/dnsmgr.conf; fi
Xetc/asterisk/dnsmgr.conf-dist
X@unexec if cmp -s %D/etc/asterisk/dundi.conf %D/etc/asterisk/dundi.conf-dist; then rm -f %D/etc/asterisk/dundi.conf; fi
Xetc/asterisk/dundi.conf-dist
X@unexec if cmp -s %D/etc/asterisk/enum.conf %D/etc/asterisk/enum.conf-dist; then rm -f %D/etc/asterisk/enum.conf; fi
Xetc/asterisk/enum.conf-dist
X@unexec if cmp -s %D/etc/asterisk/extconfig.conf %D/etc/asterisk/extconfig.conf-dist; then rm -f %D/etc/asterisk/extconfig.conf; fi
Xetc/asterisk/extconfig.conf-dist
X@unexec if cmp -s %D/etc/asterisk/extensions.ael %D/etc/asterisk/extensions.ael-dist; then rm -f %D/etc/asterisk/extensions.ael; fi
Xetc/asterisk/extensions.ael-dist
X@unexec if cmp -s %D/etc/asterisk/extensions.conf %D/etc/asterisk/extensions.conf-dist; then rm -f %D/etc/asterisk/extensions.conf; fi
Xetc/asterisk/extensions.conf-dist
X@unexec if cmp -s %D/etc/asterisk/features.conf %D/etc/asterisk/features.conf-dist; then rm -f %D/etc/asterisk/features.conf; fi
Xetc/asterisk/features.conf-dist
X@unexec if cmp -s %D/etc/asterisk/festival.conf %D/etc/asterisk/festival.conf-dist; then rm -f %D/etc/asterisk/festival.conf; fi
Xetc/asterisk/festival.conf-dist
X@unexec if cmp -s %D/etc/asterisk/iax.conf %D/etc/asterisk/iax.conf-dist; then rm -f %D/etc/asterisk/iax.conf; fi
Xetc/asterisk/iax.conf-dist
X@unexec if cmp -s %D/etc/asterisk/iaxprov.conf %D/etc/asterisk/iaxprov.conf-dist; then rm -f %D/etc/asterisk/iaxprov.conf; fi
Xetc/asterisk/iaxprov.conf-dist
X@unexec if cmp -s %D/etc/asterisk/indications.conf %D/etc/asterisk/indications.conf-dist; then rm -f %D/etc/asterisk/indications.conf; fi
Xetc/asterisk/indications.conf-dist
X@unexec if cmp -s %D/etc/asterisk/logger.conf %D/etc/asterisk/logger.conf-dist; then rm -f %D/etc/asterisk/logger.conf; fi
Xetc/asterisk/logger.conf-dist
X@unexec if cmp -s %D/etc/asterisk/manager.conf %D/etc/asterisk/manager.conf-dist; then rm -f %D/etc/asterisk/manager.conf; fi
Xetc/asterisk/manager.conf-dist
X@unexec if cmp -s %D/etc/asterisk/meetme.conf %D/etc/asterisk/meetme.conf-dist; then rm -f %D/etc/asterisk/meetme.conf; fi
Xetc/asterisk/meetme.conf-dist
X@unexec if cmp -s %D/etc/asterisk/mgcp.conf %D/etc/asterisk/mgcp.conf-dist; then rm -f %D/etc/asterisk/mgcp.conf; fi
Xetc/asterisk/mgcp.conf-dist
X@unexec if cmp -s %D/etc/asterisk/misdn.conf %D/etc/asterisk/misdn.conf-dist; then rm -f %D/etc/asterisk/misdn.conf; fi
Xetc/asterisk/misdn.conf-dist
X@unexec if cmp -s %D/etc/asterisk/modem.conf %D/etc/asterisk/modem.conf-dist; then rm -f %D/etc/asterisk/modem.conf; fi
Xetc/asterisk/modem.conf-dist
X@unexec if cmp -s %D/etc/asterisk/modules.conf %D/etc/asterisk/modules.conf-dist; then rm -f %D/etc/asterisk/modules.conf; fi
Xetc/asterisk/modules.conf-dist
X@unexec if cmp -s %D/etc/asterisk/musiconhold.conf %D/etc/asterisk/musiconhold.conf-dist; then rm -f %D/etc/asterisk/musiconhold.conf; fi
Xetc/asterisk/musiconhold.conf-dist
X@unexec if cmp -s %D/etc/asterisk/osp.conf %D/etc/asterisk/osp.conf-dist; then rm -f %D/etc/asterisk/osp.conf; fi
Xetc/asterisk/osp.conf-dist
X@unexec if cmp -s %D/etc/asterisk/oss.conf %D/etc/asterisk/oss.conf-dist; then rm -f %D/etc/asterisk/oss.conf; fi
Xetc/asterisk/oss.conf-dist
X@unexec if cmp -s %D/etc/asterisk/phone.conf %D/etc/asterisk/phone.conf-dist; then rm -f %D/etc/asterisk/phone.conf; fi
Xetc/asterisk/phone.conf-dist
X@unexec if cmp -s %D/etc/asterisk/privacy.conf %D/etc/asterisk/privacy.conf-dist; then rm -f %D/etc/asterisk/privacy.conf; fi
Xetc/asterisk/privacy.conf-dist
X@unexec if cmp -s %D/etc/asterisk/queues.conf %D/etc/asterisk/queues.conf-dist; then rm -f %D/etc/asterisk/queues.conf; fi
Xetc/asterisk/queues.conf-dist
X@unexec if cmp -s %D/etc/asterisk/res_odbc.conf %D/etc/asterisk/res_odbc.conf-dist; then rm -f %D/etc/asterisk/res_odbc.conf; fi
Xetc/asterisk/res_odbc.conf-dist
X@unexec if cmp -s %D/etc/asterisk/rpt.conf %D/etc/asterisk/rpt.conf-dist; then rm -f %D/etc/asterisk/rpt.conf; fi
Xetc/asterisk/rpt.conf-dist
X@unexec if cmp -s %D/etc/asterisk/rtp.conf %D/etc/asterisk/rtp.conf-dist; then rm -f %D/etc/asterisk/rtp.conf; fi
Xetc/asterisk/rtp.conf-dist
X@unexec if cmp -s %D/etc/asterisk/sip.conf %D/etc/asterisk/sip.conf-dist; then rm -f %D/etc/asterisk/sip.conf; fi
Xetc/asterisk/sip.conf-dist
X@unexec if cmp -s %D/etc/asterisk/sip_notify.conf %D/etc/asterisk/sip_notify.conf-dist; then rm -f %D/etc/asterisk/sip_notify.conf; fi
Xetc/asterisk/sip_notify.conf-dist
X@unexec if cmp -s %D/etc/asterisk/skinny.conf %D/etc/asterisk/skinny.conf-dist; then rm -f %D/etc/asterisk/skinny.conf; fi
Xetc/asterisk/skinny.conf-dist
X@unexec if cmp -s %D/etc/asterisk/telcordia-1.adsi %D/etc/asterisk/telcordia-1.adsi-dist; then rm -f %D/etc/asterisk/telcordia-1.adsi; fi
Xetc/asterisk/telcordia-1.adsi-dist
X@unexec if cmp -s %D/etc/asterisk/voicemail.conf %D/etc/asterisk/voicemail.conf-dist; then rm -f %D/etc/asterisk/voicemail.conf; fi
Xetc/asterisk/voicemail.conf-dist
X@unexec if cmp -s %D/etc/asterisk/vpb.conf %D/etc/asterisk/vpb.conf-dist; then rm -f %D/etc/asterisk/vpb.conf; fi
Xetc/asterisk/vpb.conf-dist
X@unexec if cmp -s %D/etc/asterisk/zapata.conf %D/etc/asterisk/zapata.conf-dist; then rm -f %D/etc/asterisk/zapata.conf; fi
Xetc/asterisk/zapata.conf-dist
X@unexec if cmp -s %D/etc/asterisk/udptl.conf %D/etc/asterisk/udptl.conf-dist; then rm -f %D/etc/asterisk/udptl.conf; fi
Xetc/asterisk/udptl.conf-dist
X@unexec if cmp -s %D/etc/asterisk/users.conf %D/etc/asterisk/users.conf-dist; then rm -f %D/etc/asterisk/users.conf; fi
Xetc/asterisk/users.conf-dist
X@unexec if cmp -s %D/etc/asterisk/smdi.conf %D/etc/asterisk/smdi.conf-dist; then rm -f %D/etc/asterisk/smdi.conf; fi
Xetc/asterisk/smdi.conf-dist
X@unexec if cmp -s %D/etc/asterisk/sla.conf %D/etc/asterisk/sla.conf-dist; then rm -f %D/etc/asterisk/sla.conf; fi
Xetc/asterisk/sla.conf-dist
X@unexec if cmp -s %D/etc/asterisk/say.conf %D/etc/asterisk/say.conf-dist; then rm -f %D/etc/asterisk/say.conf; fi
Xetc/asterisk/say.conf-dist
X@unexec if cmp -s %D/etc/asterisk/res_snmp.conf %D/etc/asterisk/res_snmp.conf-dist; then rm -f %D/etc/asterisk/res_snmp.conf; fi
Xetc/asterisk/res_snmp.conf-dist
X@unexec if cmp -s %D/etc/asterisk/muted.conf %D/etc/asterisk/muted.conf-dist; then rm -f %D/etc/asterisk/muted.conf; fi
Xetc/asterisk/muted.conf-dist
X@unexec if cmp -s %D/etc/asterisk/jabber.conf %D/etc/asterisk/jabber.conf-dist; then rm -f %D/etc/asterisk/jabber.conf; fi
Xetc/asterisk/jabber.conf-dist
X@unexec if cmp -s %D/etc/asterisk/http.conf %D/etc/asterisk/http.conf-dist; then rm -f %D/etc/asterisk/http.conf; fi
Xetc/asterisk/http.conf-dist
X@unexec if cmp -s %D/etc/asterisk/h323.conf %D/etc/asterisk/h323.conf-dist; then rm -f %D/etc/asterisk/h323.conf; fi
Xetc/asterisk/h323.conf-dist
X@unexec if cmp -s %D/etc/asterisk/gtalk.conf %D/etc/asterisk/gtalk.conf-dist; then rm -f %D/etc/asterisk/gtalk.conf; fi
Xetc/asterisk/gtalk.conf-dist
X@unexec if cmp -s %D/etc/asterisk/func_odbc.conf %D/etc/asterisk/func_odbc.conf-dist; then rm -f %D/etc/asterisk/func_odbc.conf; fi
Xetc/asterisk/func_odbc.conf-dist
X@unexec if cmp -s %D/etc/asterisk/followme.conf %D/etc/asterisk/followme.conf-dist; then rm -f %D/etc/asterisk/followme.conf; fi
Xetc/asterisk/followme.conf-dist
X@unexec if cmp -s %D/etc/asterisk/amd.conf %D/etc/asterisk/amd.conf-dist; then rm -f %D/etc/asterisk/amd.conf; fi
Xetc/asterisk/amd.conf-dist
Xinclude/asterisk.h
Xinclude/asterisk/abstract_jb.h
Xinclude/asterisk/acl.h
Xinclude/asterisk/adsi.h
Xinclude/asterisk/ael_structs.h
Xinclude/asterisk/aes.h
Xinclude/asterisk/agi.h
Xinclude/asterisk/alaw.h
Xinclude/asterisk/app.h
Xinclude/asterisk/ast_expr.h
Xinclude/asterisk/astdb.h
Xinclude/asterisk/astmm.h
Xinclude/asterisk/astobj.h
Xinclude/asterisk/astosp.h
Xinclude/asterisk/autoconfig.h
Xinclude/asterisk/build.h
Xinclude/asterisk/buildopts.h
Xinclude/asterisk/callerid.h
Xinclude/asterisk/causes.h
Xinclude/asterisk/cdr.h
Xinclude/asterisk/channel.h
Xinclude/asterisk/chanspy.h
Xinclude/asterisk/chanvars.h
Xinclude/asterisk/cli.h
Xinclude/asterisk/compat.h
Xinclude/asterisk/compiler.h
Xinclude/asterisk/config.h
Xinclude/asterisk/crypto.h
Xinclude/asterisk/devicestate.h
Xinclude/asterisk/dial.h
Xinclude/asterisk/dlfcn-compat.h
Xinclude/asterisk/dns.h
Xinclude/asterisk/dnsmgr.h
Xinclude/asterisk/doxyref.h
Xinclude/asterisk/dsp.h
Xinclude/asterisk/dundi.h
Xinclude/asterisk/endian.h
Xinclude/asterisk/enum.h
Xinclude/asterisk/features.h
Xinclude/asterisk/file.h
Xinclude/asterisk/frame.h
Xinclude/asterisk/fskmodem.h
Xinclude/asterisk/http.h
Xinclude/asterisk/image.h
Xinclude/asterisk/indications.h
Xinclude/asterisk/inline_api.h
Xinclude/asterisk/io.h
Xinclude/asterisk/jabber.h
Xinclude/asterisk/jingle.h
Xinclude/asterisk/linkedlists.h
Xinclude/asterisk/localtime.h
Xinclude/asterisk/lock.h
Xinclude/asterisk/logger.h
Xinclude/asterisk/manager.h
Xinclude/asterisk/md5.h
Xinclude/asterisk/module.h
Xinclude/asterisk/monitor.h
Xinclude/asterisk/musiconhold.h
Xinclude/asterisk/netsock.h
Xinclude/asterisk/options.h
Xinclude/asterisk/paths.h
Xinclude/asterisk/pbx.h
Xinclude/asterisk/plc.h
Xinclude/asterisk/poll-compat.h
Xinclude/asterisk/privacy.h
Xinclude/asterisk/res_odbc.h
Xinclude/asterisk/rtp.h
Xinclude/asterisk/say.h
Xinclude/asterisk/sched.h
Xinclude/asterisk/sha1.h
Xinclude/asterisk/slinfactory.h
Xinclude/asterisk/smdi.h
Xinclude/asterisk/speech.h
Xinclude/asterisk/srv.h
Xinclude/asterisk/stringfields.h
Xinclude/asterisk/strings.h
Xinclude/asterisk/tdd.h
Xinclude/asterisk/term.h
Xinclude/asterisk/threadstorage.h
Xinclude/asterisk/time.h
Xinclude/asterisk/transcap.h
Xinclude/asterisk/translate.h
Xinclude/asterisk/udptl.h
Xinclude/asterisk/ulaw.h
Xinclude/asterisk/unaligned.h
Xinclude/asterisk/utils.h
Xinclude/asterisk/version.h
Xlib/asterisk/modules/app_adsiprog.so
Xlib/asterisk/modules/app_alarmreceiver.so
Xlib/asterisk/modules/app_amd.so
Xlib/asterisk/modules/app_authenticate.so
Xlib/asterisk/modules/app_cdr.so
Xlib/asterisk/modules/app_chanisavail.so
Xlib/asterisk/modules/app_channelredirect.so
Xlib/asterisk/modules/app_chanspy.so
Xlib/asterisk/modules/app_controlplayback.so
Xlib/asterisk/modules/app_db.so
Xlib/asterisk/modules/app_dial.so
Xlib/asterisk/modules/app_dictate.so
Xlib/asterisk/modules/app_directed_pickup.so
Xlib/asterisk/modules/app_directory.so
Xlib/asterisk/modules/app_disa.so
Xlib/asterisk/modules/app_dumpchan.so
Xlib/asterisk/modules/app_echo.so
Xlib/asterisk/modules/app_exec.so
Xlib/asterisk/modules/app_externalivr.so
Xlib/asterisk/modules/app_festival.so
Xlib/asterisk/modules/app_followme.so
Xlib/asterisk/modules/app_forkcdr.so
Xlib/asterisk/modules/app_getcpeid.so
Xlib/asterisk/modules/app_hasnewvoicemail.so
Xlib/asterisk/modules/app_ices.so
Xlib/asterisk/modules/app_image.so
Xlib/asterisk/modules/app_lookupblacklist.so
Xlib/asterisk/modules/app_lookupcidname.so
Xlib/asterisk/modules/app_macro.so
Xlib/asterisk/modules/app_milliwatt.so
Xlib/asterisk/modules/app_mixmonitor.so
Xlib/asterisk/modules/app_morsecode.so
Xlib/asterisk/modules/app_mp3.so
Xlib/asterisk/modules/app_nbscat.so
Xlib/asterisk/modules/app_parkandannounce.so
Xlib/asterisk/modules/app_playback.so
Xlib/asterisk/modules/app_privacy.so
Xlib/asterisk/modules/app_queue.so
Xlib/asterisk/modules/app_random.so
Xlib/asterisk/modules/app_read.so
Xlib/asterisk/modules/app_readfile.so
Xlib/asterisk/modules/app_realtime.so
Xlib/asterisk/modules/app_record.so
X%%WITH_FAX%%lib/asterisk/modules/app_rxfax.so
Xlib/asterisk/modules/app_sayunixtime.so
Xlib/asterisk/modules/app_senddtmf.so
Xlib/asterisk/modules/app_sendtext.so
Xlib/asterisk/modules/app_setcallerid.so
Xlib/asterisk/modules/app_setcdruserfield.so
Xlib/asterisk/modules/app_settransfercapability.so
Xlib/asterisk/modules/app_sms.so
Xlib/asterisk/modules/app_softhangup.so
Xlib/asterisk/modules/app_speech_utils.so
Xlib/asterisk/modules/app_stack.so
Xlib/asterisk/modules/app_system.so
Xlib/asterisk/modules/app_talkdetect.so
Xlib/asterisk/modules/app_test.so
Xlib/asterisk/modules/app_transfer.so
X%%WITH_FAX%%lib/asterisk/modules/app_txfax.so
Xlib/asterisk/modules/app_url.so
Xlib/asterisk/modules/app_userevent.so
Xlib/asterisk/modules/app_verbose.so
Xlib/asterisk/modules/app_voicemail.so
Xlib/asterisk/modules/app_waitforring.so
Xlib/asterisk/modules/app_waitforsilence.so
Xlib/asterisk/modules/app_while.so
Xlib/asterisk/modules/app_zapateller.so
Xlib/asterisk/modules/cdr_csv.so
Xlib/asterisk/modules/cdr_custom.so
Xlib/asterisk/modules/cdr_manager.so
X%%WITH_POSTGRES%%lib/asterisk/modules/cdr_pgsql.so
X%%WITH_RADIUS%%lib/asterisk/modules/cdr_radius.so
X%%WITH_SQLITE%%lib/asterisk/modules/cdr_sqlite.so
Xlib/asterisk/modules/chan_agent.so
X%%WITH_JABBER%%lib/asterisk/modules/chan_gtalk.so
Xlib/asterisk/modules/chan_iax2.so
Xlib/asterisk/modules/chan_local.so
Xlib/asterisk/modules/chan_mgcp.so
Xlib/asterisk/modules/chan_oss.so
Xlib/asterisk/modules/chan_sip.so
Xlib/asterisk/modules/chan_skinny.so
Xlib/asterisk/modules/codec_a_mu.so
Xlib/asterisk/modules/codec_adpcm.so
Xlib/asterisk/modules/codec_alaw.so
Xlib/asterisk/modules/codec_g726.so
Xlib/asterisk/modules/codec_gsm.so
Xlib/asterisk/modules/codec_ilbc.so
Xlib/asterisk/modules/codec_lpc10.so
Xlib/asterisk/modules/codec_speex.so
Xlib/asterisk/modules/codec_ulaw.so
Xlib/asterisk/modules/format_g723.so
Xlib/asterisk/modules/format_g726.so
Xlib/asterisk/modules/format_g729.so
Xlib/asterisk/modules/format_gsm.so
Xlib/asterisk/modules/format_h263.so
Xlib/asterisk/modules/format_h264.so
Xlib/asterisk/modules/format_ilbc.so
Xlib/asterisk/modules/format_jpeg.so
X%%WITH_OGGVORBIS%%lib/asterisk/modules/format_ogg_vorbis.so
Xlib/asterisk/modules/format_pcm.so
Xlib/asterisk/modules/format_sln.so
Xlib/asterisk/modules/format_vox.so
Xlib/asterisk/modules/format_wav.so
Xlib/asterisk/modules/format_wav_gsm.so
Xlib/asterisk/modules/func_base64.so
Xlib/asterisk/modules/func_callerid.so
Xlib/asterisk/modules/func_cdr.so
Xlib/asterisk/modules/func_channel.so
Xlib/asterisk/modules/func_curl.so
Xlib/asterisk/modules/func_cut.so
Xlib/asterisk/modules/func_db.so
Xlib/asterisk/modules/func_enum.so
Xlib/asterisk/modules/func_env.so
Xlib/asterisk/modules/func_global.so
Xlib/asterisk/modules/func_groupcount.so
Xlib/asterisk/modules/func_language.so
Xlib/asterisk/modules/func_logic.so
Xlib/asterisk/modules/func_math.so
Xlib/asterisk/modules/func_md5.so
Xlib/asterisk/modules/func_moh.so
X%%WITH_ODBC%%lib/asterisk/modules/func_odbc.so
Xlib/asterisk/modules/func_rand.so
Xlib/asterisk/modules/func_realtime.so
Xlib/asterisk/modules/func_sha1.so
Xlib/asterisk/modules/func_strings.so
Xlib/asterisk/modules/func_timeout.so
Xlib/asterisk/modules/func_uri.so
Xlib/asterisk/modules/pbx_ael.so
Xlib/asterisk/modules/pbx_config.so
Xlib/asterisk/modules/pbx_dundi.so
Xlib/asterisk/modules/pbx_loopback.so
Xlib/asterisk/modules/pbx_realtime.so
Xlib/asterisk/modules/pbx_spool.so
Xlib/asterisk/modules/res_adsi.so
Xlib/asterisk/modules/res_agi.so
Xlib/asterisk/modules/res_clioriginate.so
X%%WITH_POSTGRES%%lib/asterisk/modules/res_config_pgsql.so
Xlib/asterisk/modules/res_convert.so
Xlib/asterisk/modules/res_crypto.so
Xlib/asterisk/modules/res_features.so
Xlib/asterisk/modules/res_indications.so
X%%WITH_JABBER%%lib/asterisk/modules/res_jabber.so
Xlib/asterisk/modules/res_monitor.so
Xlib/asterisk/modules/res_musiconhold.so
Xlib/asterisk/modules/res_smdi.so
X%%WITH_SNMP%%lib/asterisk/modules/res_snmp.so
Xlib/asterisk/modules/res_speech.so
Xsbin/aelparse
Xsbin/asterisk
Xsbin/astgenkey
Xsbin/astman
Xsbin/autosupport
Xsbin/muted
Xsbin/rasterisk
Xsbin/safe_asterisk
Xsbin/smsq
Xsbin/stereorize
Xsbin/streamplayer
Xshare/asterisk/agi-bin/agi-test.agi
Xshare/asterisk/agi-bin/eagi-sphinx-test
Xshare/asterisk/agi-bin/eagi-test
Xshare/asterisk/agi-bin/jukebox.agi
Xshare/asterisk/firmware/iax/iaxy.bin
Xshare/asterisk/images/asterisk-intro.jpg
Xshare/asterisk/keys/freeworlddialup.pub
Xshare/asterisk/keys/iaxtel.pub
Xshare/asterisk/moh/.asterisk-moh-freeplay-wav
Xshare/asterisk/moh/LICENSE-asterisk-moh-freeplay-wav
Xshare/asterisk/moh/fpm-calm-river.wav
Xshare/asterisk/moh/fpm-sunshine.wav
Xshare/asterisk/moh/fpm-world-mix.wav
Xshare/asterisk/sounds/.asterisk-core-sounds-en-gsm-1.4.7
Xshare/asterisk/sounds/CREDITS-asterisk-core-en-1.4.7
Xshare/asterisk/sounds/agent-alreadyon.gsm
Xshare/asterisk/sounds/agent-incorrect.gsm
Xshare/asterisk/sounds/agent-loggedoff.gsm
Xshare/asterisk/sounds/agent-loginok.gsm
Xshare/asterisk/sounds/agent-newlocation.gsm
Xshare/asterisk/sounds/agent-pass.gsm
Xshare/asterisk/sounds/agent-user.gsm
Xshare/asterisk/sounds/auth-incorrect.gsm
Xshare/asterisk/sounds/auth-thankyou.gsm
Xshare/asterisk/sounds/beep.gsm
Xshare/asterisk/sounds/beeperr.gsm
Xshare/asterisk/sounds/conf-adminmenu.gsm
Xshare/asterisk/sounds/conf-enteringno.gsm
Xshare/asterisk/sounds/conf-errormenu.gsm
Xshare/asterisk/sounds/conf-getchannel.gsm
Xshare/asterisk/sounds/conf-getconfno.gsm
Xshare/asterisk/sounds/conf-getpin.gsm
Xshare/asterisk/sounds/conf-hasjoin.gsm
Xshare/asterisk/sounds/conf-hasleft.gsm
Xshare/asterisk/sounds/conf-invalid.gsm
Xshare/asterisk/sounds/conf-invalidpin.gsm
Xshare/asterisk/sounds/conf-kicked.gsm
Xshare/asterisk/sounds/conf-leaderhasleft.gsm
Xshare/asterisk/sounds/conf-locked.gsm
Xshare/asterisk/sounds/conf-lockednow.gsm
Xshare/asterisk/sounds/conf-muted.gsm
Xshare/asterisk/sounds/conf-noempty.gsm
Xshare/asterisk/sounds/conf-onlyone.gsm
Xshare/asterisk/sounds/conf-onlyperson.gsm
Xshare/asterisk/sounds/conf-otherinparty.gsm
Xshare/asterisk/sounds/conf-placeintoconf.gsm
Xshare/asterisk/sounds/conf-thereare.gsm
Xshare/asterisk/sounds/conf-unlockednow.gsm
Xshare/asterisk/sounds/conf-unmuted.gsm
Xshare/asterisk/sounds/conf-usermenu.gsm
Xshare/asterisk/sounds/conf-userswilljoin.gsm
Xshare/asterisk/sounds/conf-userwilljoin.gsm
Xshare/asterisk/sounds/conf-waitforleader.gsm
Xshare/asterisk/sounds/core-sounds-en.txt
Xshare/asterisk/sounds/demo-abouttotry.gsm
Xshare/asterisk/sounds/demo-congrats.gsm
Xshare/asterisk/sounds/demo-echodone.gsm
Xshare/asterisk/sounds/demo-echotest.gsm
Xshare/asterisk/sounds/demo-enterkeywords.gsm
Xshare/asterisk/sounds/demo-instruct.gsm
Xshare/asterisk/sounds/demo-moreinfo.gsm
Xshare/asterisk/sounds/demo-nogo.gsm
Xshare/asterisk/sounds/demo-nomatch.gsm
Xshare/asterisk/sounds/demo-thanks.gsm
Xshare/asterisk/sounds/dictate/both_help.gsm
Xshare/asterisk/sounds/dictate/enter_filename.gsm
Xshare/asterisk/sounds/dictate/forhelp.gsm
Xshare/asterisk/sounds/dictate/pause.gsm
Xshare/asterisk/sounds/dictate/paused.gsm
Xshare/asterisk/sounds/dictate/play_help.gsm
Xshare/asterisk/sounds/dictate/playback.gsm
Xshare/asterisk/sounds/dictate/playback_mode.gsm
Xshare/asterisk/sounds/dictate/record.gsm
Xshare/asterisk/sounds/dictate/record_help.gsm
Xshare/asterisk/sounds/dictate/record_mode.gsm
Xshare/asterisk/sounds/dictate/truncating_audio.gsm
Xshare/asterisk/sounds/digits/0.gsm
Xshare/asterisk/sounds/digits/1.gsm
Xshare/asterisk/sounds/digits/10.gsm
Xshare/asterisk/sounds/digits/11.gsm
Xshare/asterisk/sounds/digits/12.gsm
Xshare/asterisk/sounds/digits/13.gsm
Xshare/asterisk/sounds/digits/14.gsm
Xshare/asterisk/sounds/digits/15.gsm
Xshare/asterisk/sounds/digits/16.gsm
Xshare/asterisk/sounds/digits/17.gsm
Xshare/asterisk/sounds/digits/18.gsm
Xshare/asterisk/sounds/digits/19.gsm
Xshare/asterisk/sounds/digits/2.gsm
Xshare/asterisk/sounds/digits/20.gsm
Xshare/asterisk/sounds/digits/3.gsm
Xshare/asterisk/sounds/digits/30.gsm
Xshare/asterisk/sounds/digits/4.gsm
Xshare/asterisk/sounds/digits/40.gsm
Xshare/asterisk/sounds/digits/5.gsm
Xshare/asterisk/sounds/digits/50.gsm
Xshare/asterisk/sounds/digits/6.gsm
Xshare/asterisk/sounds/digits/60.gsm
Xshare/asterisk/sounds/digits/7.gsm
Xshare/asterisk/sounds/digits/70.gsm
Xshare/asterisk/sounds/digits/8.gsm
Xshare/asterisk/sounds/digits/80.gsm
Xshare/asterisk/sounds/digits/9.gsm
Xshare/asterisk/sounds/digits/90.gsm
Xshare/asterisk/sounds/digits/a-m.gsm
Xshare/asterisk/sounds/digits/at.gsm
Xshare/asterisk/sounds/digits/day-0.gsm
Xshare/asterisk/sounds/digits/day-1.gsm
Xshare/asterisk/sounds/digits/day-2.gsm
Xshare/asterisk/sounds/digits/day-3.gsm
Xshare/asterisk/sounds/digits/day-4.gsm
Xshare/asterisk/sounds/digits/day-5.gsm
Xshare/asterisk/sounds/digits/day-6.gsm
Xshare/asterisk/sounds/digits/dollars.gsm
Xshare/asterisk/sounds/digits/h-1.gsm
Xshare/asterisk/sounds/digits/h-10.gsm
Xshare/asterisk/sounds/digits/h-11.gsm
Xshare/asterisk/sounds/digits/h-12.gsm
Xshare/asterisk/sounds/digits/h-13.gsm
Xshare/asterisk/sounds/digits/h-14.gsm
Xshare/asterisk/sounds/digits/h-15.gsm
Xshare/asterisk/sounds/digits/h-16.gsm
Xshare/asterisk/sounds/digits/h-17.gsm
Xshare/asterisk/sounds/digits/h-18.gsm
Xshare/asterisk/sounds/digits/h-19.gsm
Xshare/asterisk/sounds/digits/h-2.gsm
Xshare/asterisk/sounds/digits/h-20.gsm
Xshare/asterisk/sounds/digits/h-3.gsm
Xshare/asterisk/sounds/digits/h-30.gsm
Xshare/asterisk/sounds/digits/h-4.gsm
Xshare/asterisk/sounds/digits/h-5.gsm
Xshare/asterisk/sounds/digits/h-6.gsm
Xshare/asterisk/sounds/digits/h-7.gsm
Xshare/asterisk/sounds/digits/h-8.gsm
Xshare/asterisk/sounds/digits/h-9.gsm
Xshare/asterisk/sounds/digits/hundred.gsm
Xshare/asterisk/sounds/digits/million.gsm
Xshare/asterisk/sounds/digits/minus.gsm
Xshare/asterisk/sounds/digits/mon-0.gsm
Xshare/asterisk/sounds/digits/mon-1.gsm
Xshare/asterisk/sounds/digits/mon-10.gsm
Xshare/asterisk/sounds/digits/mon-11.gsm
Xshare/asterisk/sounds/digits/mon-2.gsm
Xshare/asterisk/sounds/digits/mon-3.gsm
Xshare/asterisk/sounds/digits/mon-4.gsm
Xshare/asterisk/sounds/digits/mon-5.gsm
Xshare/asterisk/sounds/digits/mon-6.gsm
Xshare/asterisk/sounds/digits/mon-7.gsm
Xshare/asterisk/sounds/digits/mon-8.gsm
Xshare/asterisk/sounds/digits/mon-9.gsm
Xshare/asterisk/sounds/digits/oclock.gsm
Xshare/asterisk/sounds/digits/oh.gsm
Xshare/asterisk/sounds/digits/p-m.gsm
Xshare/asterisk/sounds/digits/pound.gsm
Xshare/asterisk/sounds/digits/star.gsm
Xshare/asterisk/sounds/digits/thousand.gsm
Xshare/asterisk/sounds/digits/today.gsm
Xshare/asterisk/sounds/digits/tomorrow.gsm
Xshare/asterisk/sounds/digits/yesterday.gsm
Xshare/asterisk/sounds/dir-instr.gsm
Xshare/asterisk/sounds/dir-intro-fn.gsm
Xshare/asterisk/sounds/dir-intro.gsm
Xshare/asterisk/sounds/dir-nomatch.gsm
Xshare/asterisk/sounds/dir-nomore.gsm
Xshare/asterisk/sounds/followme/call-from.gsm
Xshare/asterisk/sounds/followme/no-recording.gsm
Xshare/asterisk/sounds/followme/options.gsm
Xshare/asterisk/sounds/followme/pls-hold-while-try.gsm
Xshare/asterisk/sounds/followme/sorry.gsm
Xshare/asterisk/sounds/followme/status.gsm
Xshare/asterisk/sounds/hello-world.gsm
Xshare/asterisk/sounds/hours.gsm
Xshare/asterisk/sounds/invalid.gsm
Xshare/asterisk/sounds/letters/a.gsm
Xshare/asterisk/sounds/letters/at.gsm
Xshare/asterisk/sounds/letters/b.gsm
Xshare/asterisk/sounds/letters/c.gsm
Xshare/asterisk/sounds/letters/d.gsm
Xshare/asterisk/sounds/letters/dash.gsm
Xshare/asterisk/sounds/letters/dollar.gsm
Xshare/asterisk/sounds/letters/dot.gsm
Xshare/asterisk/sounds/letters/e.gsm
Xshare/asterisk/sounds/letters/equals.gsm
Xshare/asterisk/sounds/letters/exclaimation-point.gsm
Xshare/asterisk/sounds/letters/f.gsm
Xshare/asterisk/sounds/letters/g.gsm
Xshare/asterisk/sounds/letters/h.gsm
Xshare/asterisk/sounds/letters/i.gsm
Xshare/asterisk/sounds/letters/j.gsm
Xshare/asterisk/sounds/letters/k.gsm
Xshare/asterisk/sounds/letters/l.gsm
Xshare/asterisk/sounds/letters/m.gsm
Xshare/asterisk/sounds/letters/n.gsm
Xshare/asterisk/sounds/letters/o.gsm
Xshare/asterisk/sounds/letters/p.gsm
Xshare/asterisk/sounds/letters/plus.gsm
Xshare/asterisk/sounds/letters/q.gsm
Xshare/asterisk/sounds/letters/r.gsm
Xshare/asterisk/sounds/letters/s.gsm
Xshare/asterisk/sounds/letters/slash.gsm
Xshare/asterisk/sounds/letters/space.gsm
Xshare/asterisk/sounds/letters/t.gsm
Xshare/asterisk/sounds/letters/u.gsm
Xshare/asterisk/sounds/letters/v.gsm
Xshare/asterisk/sounds/letters/w.gsm
Xshare/asterisk/sounds/letters/x.gsm
Xshare/asterisk/sounds/letters/y.gsm
Xshare/asterisk/sounds/letters/z.gsm
Xshare/asterisk/sounds/letters/zed.gsm
Xshare/asterisk/sounds/minutes.gsm
Xshare/asterisk/sounds/pbx-invalid.gsm
Xshare/asterisk/sounds/pbx-invalidpark.gsm
Xshare/asterisk/sounds/pbx-transfer.gsm
Xshare/asterisk/sounds/phonetic/9_p.gsm
Xshare/asterisk/sounds/phonetic/a_p.gsm
Xshare/asterisk/sounds/phonetic/b_p.gsm
Xshare/asterisk/sounds/phonetic/c_p.gsm
Xshare/asterisk/sounds/phonetic/d_p.gsm
Xshare/asterisk/sounds/phonetic/e_p.gsm
Xshare/asterisk/sounds/phonetic/f_p.gsm
Xshare/asterisk/sounds/phonetic/g_p.gsm
Xshare/asterisk/sounds/phonetic/h_p.gsm
Xshare/asterisk/sounds/phonetic/i_p.gsm
Xshare/asterisk/sounds/phonetic/j_p.gsm
Xshare/asterisk/sounds/phonetic/k_p.gsm
Xshare/asterisk/sounds/phonetic/l_p.gsm
Xshare/asterisk/sounds/phonetic/m_p.gsm
Xshare/asterisk/sounds/phonetic/n_p.gsm
Xshare/asterisk/sounds/phonetic/o_p.gsm
Xshare/asterisk/sounds/phonetic/p_p.gsm
Xshare/asterisk/sounds/phonetic/q_p.gsm
Xshare/asterisk/sounds/phonetic/r_p.gsm
Xshare/asterisk/sounds/phonetic/s_p.gsm
Xshare/asterisk/sounds/phonetic/t_p.gsm
Xshare/asterisk/sounds/phonetic/u_p.gsm
Xshare/asterisk/sounds/phonetic/v_p.gsm
Xshare/asterisk/sounds/phonetic/w_p.gsm
Xshare/asterisk/sounds/phonetic/x_p.gsm
Xshare/asterisk/sounds/phonetic/y_p.gsm
Xshare/asterisk/sounds/phonetic/z_p.gsm
Xshare/asterisk/sounds/priv-callee-options.gsm
Xshare/asterisk/sounds/priv-callpending.gsm
Xshare/asterisk/sounds/priv-introsaved.gsm
Xshare/asterisk/sounds/priv-recordintro.gsm
Xshare/asterisk/sounds/privacy-incorrect.gsm
Xshare/asterisk/sounds/privacy-prompt.gsm
Xshare/asterisk/sounds/privacy-thankyou.gsm
Xshare/asterisk/sounds/privacy-unident.gsm
Xshare/asterisk/sounds/queue-callswaiting.gsm
Xshare/asterisk/sounds/queue-holdtime.gsm
Xshare/asterisk/sounds/queue-less-than.gsm
Xshare/asterisk/sounds/queue-minutes.gsm
Xshare/asterisk/sounds/queue-periodic-announce.gsm
Xshare/asterisk/sounds/queue-reporthold.gsm
Xshare/asterisk/sounds/queue-seconds.gsm
Xshare/asterisk/sounds/queue-thankyou.gsm
Xshare/asterisk/sounds/queue-thereare.gsm
Xshare/asterisk/sounds/queue-youarenext.gsm
Xshare/asterisk/sounds/screen-callee-options.gsm
Xshare/asterisk/sounds/seconds.gsm
Xshare/asterisk/sounds/silence/1.gsm
Xshare/asterisk/sounds/silence/10.gsm
Xshare/asterisk/sounds/silence/2.gsm
Xshare/asterisk/sounds/silence/3.gsm
Xshare/asterisk/sounds/silence/4.gsm
Xshare/asterisk/sounds/silence/5.gsm
Xshare/asterisk/sounds/silence/6.gsm
Xshare/asterisk/sounds/silence/7.gsm
Xshare/asterisk/sounds/silence/8.gsm
Xshare/asterisk/sounds/silence/9.gsm
Xshare/asterisk/sounds/spy-agent.gsm
Xshare/asterisk/sounds/spy-h323.gsm
Xshare/asterisk/sounds/spy-iax.gsm
Xshare/asterisk/sounds/spy-iax2.gsm
Xshare/asterisk/sounds/spy-mgcp.gsm
Xshare/asterisk/sounds/spy-sip.gsm
Xshare/asterisk/sounds/spy-skinny.gsm
Xshare/asterisk/sounds/spy-zap.gsm
Xshare/asterisk/sounds/ss-noservice.gsm
Xshare/asterisk/sounds/transfer.gsm
Xshare/asterisk/sounds/tt-allbusy.gsm
Xshare/asterisk/sounds/tt-monkeys.gsm
Xshare/asterisk/sounds/tt-monkeysintro.gsm
Xshare/asterisk/sounds/tt-somethingwrong.gsm
Xshare/asterisk/sounds/tt-weasels.gsm
Xshare/asterisk/sounds/vm-Cust1.gsm
Xshare/asterisk/sounds/vm-Cust2.gsm
Xshare/asterisk/sounds/vm-Cust3.gsm
Xshare/asterisk/sounds/vm-Cust4.gsm
Xshare/asterisk/sounds/vm-Cust5.gsm
Xshare/asterisk/sounds/vm-Family.gsm
Xshare/asterisk/sounds/vm-Friends.gsm
Xshare/asterisk/sounds/vm-INBOX.gsm
Xshare/asterisk/sounds/vm-Old.gsm
Xshare/asterisk/sounds/vm-Work.gsm
Xshare/asterisk/sounds/vm-advopts.gsm
Xshare/asterisk/sounds/vm-and.gsm
Xshare/asterisk/sounds/vm-calldiffnum.gsm
Xshare/asterisk/sounds/vm-changeto.gsm
Xshare/asterisk/sounds/vm-delete.gsm
Xshare/asterisk/sounds/vm-deleted.gsm
Xshare/asterisk/sounds/vm-dialout.gsm
Xshare/asterisk/sounds/vm-enter-num-to-call.gsm
Xshare/asterisk/sounds/vm-extension.gsm
Xshare/asterisk/sounds/vm-first.gsm
Xshare/asterisk/sounds/vm-for.gsm
Xshare/asterisk/sounds/vm-forward.gsm
Xshare/asterisk/sounds/vm-forwardoptions.gsm
Xshare/asterisk/sounds/vm-from-extension.gsm
Xshare/asterisk/sounds/vm-from-phonenumber.gsm
Xshare/asterisk/sounds/vm-from.gsm
Xshare/asterisk/sounds/vm-goodbye.gsm
Xshare/asterisk/sounds/vm-helpexit.gsm
Xshare/asterisk/sounds/vm-incorrect-mailbox.gsm
Xshare/asterisk/sounds/vm-incorrect.gsm
Xshare/asterisk/sounds/vm-instructions.gsm
Xshare/asterisk/sounds/vm-intro.gsm
Xshare/asterisk/sounds/vm-isonphone.gsm
Xshare/asterisk/sounds/vm-isunavail.gsm
Xshare/asterisk/sounds/vm-last.gsm
Xshare/asterisk/sounds/vm-leavemsg.gsm
Xshare/asterisk/sounds/vm-login.gsm
Xshare/asterisk/sounds/vm-mailboxfull.gsm
Xshare/asterisk/sounds/vm-message.gsm
Xshare/asterisk/sounds/vm-messages.gsm
Xshare/asterisk/sounds/vm-minutes.gsm
Xshare/asterisk/sounds/vm-mismatch.gsm
Xshare/asterisk/sounds/vm-msginstruct.gsm
Xshare/asterisk/sounds/vm-msgsaved.gsm
Xshare/asterisk/sounds/vm-newpassword.gsm
Xshare/asterisk/sounds/vm-newuser.gsm
Xshare/asterisk/sounds/vm-next.gsm
Xshare/asterisk/sounds/vm-no.gsm
Xshare/asterisk/sounds/vm-nobodyavail.gsm
Xshare/asterisk/sounds/vm-nobox.gsm
Xshare/asterisk/sounds/vm-nomore.gsm
Xshare/asterisk/sounds/vm-nonumber.gsm
Xshare/asterisk/sounds/vm-num-i-have.gsm
Xshare/asterisk/sounds/vm-onefor.gsm
Xshare/asterisk/sounds/vm-options.gsm
Xshare/asterisk/sounds/vm-opts.gsm
Xshare/asterisk/sounds/vm-passchanged.gsm
Xshare/asterisk/sounds/vm-password.gsm
Xshare/asterisk/sounds/vm-press.gsm
Xshare/asterisk/sounds/vm-prev.gsm
Xshare/asterisk/sounds/vm-reachoper.gsm
Xshare/asterisk/sounds/vm-rec-busy.gsm
Xshare/asterisk/sounds/vm-rec-name.gsm
Xshare/asterisk/sounds/vm-rec-temp.gsm
Xshare/asterisk/sounds/vm-rec-unv.gsm
Xshare/asterisk/sounds/vm-received.gsm
Xshare/asterisk/sounds/vm-reenterpassword.gsm
Xshare/asterisk/sounds/vm-repeat.gsm
Xshare/asterisk/sounds/vm-review.gsm
Xshare/asterisk/sounds/vm-saved.gsm
Xshare/asterisk/sounds/vm-savedto.gsm
Xshare/asterisk/sounds/vm-savefolder.gsm
Xshare/asterisk/sounds/vm-savemessage.gsm
Xshare/asterisk/sounds/vm-saveoper.gsm
Xshare/asterisk/sounds/vm-sorry.gsm
Xshare/asterisk/sounds/vm-star-cancel.gsm
Xshare/asterisk/sounds/vm-starmain.gsm
Xshare/asterisk/sounds/vm-tempgreetactive.gsm
Xshare/asterisk/sounds/vm-tempgreeting.gsm
Xshare/asterisk/sounds/vm-tempgreeting2.gsm
Xshare/asterisk/sounds/vm-tempremoved.gsm
Xshare/asterisk/sounds/vm-then-pound.gsm
Xshare/asterisk/sounds/vm-theperson.gsm
Xshare/asterisk/sounds/vm-tocallback.gsm
Xshare/asterisk/sounds/vm-tocallnum.gsm
Xshare/asterisk/sounds/vm-tocancel.gsm
Xshare/asterisk/sounds/vm-tocancelmsg.gsm
Xshare/asterisk/sounds/vm-toenternumber.gsm
Xshare/asterisk/sounds/vm-toforward.gsm
Xshare/asterisk/sounds/vm-tohearenv.gsm
Xshare/asterisk/sounds/vm-tomakecall.gsm
Xshare/asterisk/sounds/vm-tooshort.gsm
Xshare/asterisk/sounds/vm-toreply.gsm
Xshare/asterisk/sounds/vm-torerecord.gsm
Xshare/asterisk/sounds/vm-undelete.gsm
Xshare/asterisk/sounds/vm-undeleted.gsm
Xshare/asterisk/sounds/vm-unknown-caller.gsm
Xshare/asterisk/sounds/vm-whichbox.gsm
Xshare/asterisk/sounds/vm-youhave.gsm
Xshare/asterisk/static-http/ajamdemo.html
Xshare/asterisk/static-http/astman.css
Xshare/asterisk/static-http/astman.js
Xshare/asterisk/static-http/prototype.js
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_flash.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_meetme.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_page.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_zapbarge.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_zapras.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/app_zapscan.so
X%%WITH_ODBC%%lib/asterisk/modules/cdr_odbc.so
X%%WITH_FREETDS%%lib/asterisk/modules/cdr_tds.so
X%%WITH_H323%%lib/asterisk/modules/chan_h323.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/chan_zap.so
X%%WITH_ZAPTEL%%lib/asterisk/modules/codec_zap.so
X%%WITH_ODBC%%lib/asterisk/modules/res_config_odbc.so
X%%WITH_ODBC%%lib/asterisk/modules/res_odbc.so
X@dirrm share/asterisk/static-http
X@dirrm share/asterisk/sounds/silence
X@dirrm share/asterisk/sounds/phonetic
X@dirrm share/asterisk/sounds/letters
X@dirrm share/asterisk/sounds/fr
X@dirrm share/asterisk/sounds/followme
X@dirrm share/asterisk/sounds/es
X@dirrm share/asterisk/sounds/digits
X@dirrm share/asterisk/sounds/dictate
X@dirrm share/asterisk/sounds
X@dirrm share/asterisk/moh
X@dirrm share/asterisk/keys
X@dirrm share/asterisk/images
X@dirrm share/asterisk/firmware/iax
X@dirrm share/asterisk/firmware
X@dirrm share/asterisk/agi-bin
X@dirrm share/asterisk
X@dirrm lib/asterisk/modules
X@dirrm lib/asterisk
X@dirrm include/asterisk
X@dirrmtry etc/asterisk
X@cwd /var
Xspool/asterisk/voicemail/default/1234/busy.gsm
Xspool/asterisk/voicemail/default/1234/unavail.gsm
X@exec mkdir -p %D/log/asterisk/cdr-csv
X@exec mkdir -p %D/log/asterisk/cdr-custom
X@exec mkdir -p %D/spool/asterisk/voicemail/default/1234/INBOX
X@exec mkdir -p %D/spool/asterisk/dictate
X@exec mkdir -p %D/spool/asterisk/meetme
X@exec mkdir -p %D/spool/asterisk/monitor
X@exec mkdir -p %D/spool/asterisk/system
X@exec mkdir -p %D/spool/asterisk/tmp
X@dirrm spool/asterisk/dictate
X@dirrm spool/asterisk/meetme
X@dirrm spool/asterisk/monitor
X@dirrm spool/asterisk/system
X@dirrm spool/asterisk/voicemail/default/1234/INBOX
X@dirrm spool/asterisk/voicemail/default/1234
X@dirrm spool/asterisk/voicemail/default
X@dirrm spool/asterisk/voicemail
X@dirrm spool/asterisk/tmp
X@dirrm spool/asterisk
X@dirrm log/asterisk/cdr-csv
X@dirrm log/asterisk/cdr-custom
X@dirrm log/asterisk
END-of-./asterisk/pkg-plist
exit



>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-ports-bugs->sobomax 
Responsible-Changed-By: edwin 
Responsible-Changed-When: Thu Jul 19 03:50:15 UTC 2007 
Responsible-Changed-Why:  
Over to maintainer 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114720 
State-Changed-From-To: open->feedback 
State-Changed-By: linimon 
State-Changed-When: Thu Jul 19 05:53:09 UTC 2007 
State-Changed-Why:  
Please submit updates in diff -u format, as sepcified by the Porter's 
Handbook.  Thanks. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114720 

From: "viper" <viper@perm.raid.ru>
To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-ports-bugs@FreeBSD.org
Cc:  
Subject: Re: ports/114720: [UPDATE] net/asterisk to 1.4.8
Date: Thu, 19 Jul 2007 13:36:41 +0600

 This is a multi-part message in MIME format.
 
 ------=OPENWEBMAIL_ATT_0.811475673082413
 Content-Type: text/plain;
 	charset=koi8-r
 
 
 
 _______________________
 Best regards, 
 VipeR
 
 
 ------=OPENWEBMAIL_ATT_0.811475673082413
 Content-Type: application/octet-stream;
 	name="asterisk.patch"
 Content-Disposition: attachment; filename="asterisk.patch"
 Content-Transfer-Encoding: base64
 
 ZGlmZiAtcnVOIGFzdGVyaXNrLm9yaWcvTWFrZWZpbGUgYXN0ZXJpc2svTWFrZWZpbGUKLS0tIGFz
 dGVyaXNrLm9yaWcvTWFrZWZpbGUJMjAwNy0wNS0zMCAwMjo1MjoxNS4wMDAwMDAwMDAgKzA2MDAK
 KysrIGFzdGVyaXNrL01ha2VmaWxlCTIwMDctMDctMTggMTg6MTI6NDEuMDAwMDAwMDAwICswNjAw
 CkBAIC02LDI1ICs2LDI0IEBACiAjCiAKIFBPUlROQU1FPQlhc3RlcmlzawotUE9SVFZFUlNJT049
 CTEuNC40Ci1QT1JUUkVWSVNJT049CTIKK1BPUlRWRVJTSU9OPQkxLjQuOAorUE9SVFJFVklTSU9O
 PQkxCiBDQVRFR09SSUVTPQluZXQKIE1BU1RFUl9TSVRFUz0JaHR0cDovL2Z0cC5kaWdpdW0uY29t
 L3B1Yi9hc3Rlcmlzay8gXAogCQlodHRwOi8vZnRwLmRpZ2l1bS5jb20vcHViL2FzdGVyaXNrL29s
 ZC1yZWxlYXNlcy8KK0RJU1ROQU1FPQkke1BPUlROQU1FfS0ke1BPUlRWRVJTSU9OfQogCiBNQUlO
 VEFJTkVSPQlzb2JvbWF4QEZyZWVCU0Qub3JnCiBDT01NRU5UPQlBbiBPcGVuIFNvdXJjZSBQQlgg
 YW5kIHRlbGVwaG9ueSB0b29sa2l0CiAKLUJVSUxEX0RFUEVORFM9CW1wZzEyMzoke1BPUlRTRElS
 fS9hdWRpby9tcGcxMjMKIExJQl9ERVBFTkRTPQlzcGVleC4xOiR7UE9SVFNESVJ9L2F1ZGlvL3Nw
 ZWV4IFwKIAkJbmV3dC41MToke1BPUlRTRElSfS9kZXZlbC9uZXd0IFwKIAkJY3VybC40OiR7UE9S
 VFNESVJ9L2Z0cC9jdXJsCi1SVU5fREVQRU5EUz0JbXBnMTIzOiR7UE9SVFNESVJ9L2F1ZGlvL21w
 ZzEyMwogCiBPTkxZX0ZPUl9BUkNIUz0JaTM4NiBzcGFyYzY0IGFtZDY0CiAKIEdOVV9DT05GSUdV
 UkU9CXllcwotQ09ORklHVVJFX0FSR1M9IC0tbWFuZGlyPSR7TE9DQUxCQVNFfS9tYW4KK0NPTkZJ
 R1VSRV9BUkdTPQktLW1hbmRpcj0ke0xPQ0FMQkFTRX0vbWFuCiBDT05GSUdVUkVfRU5WPQlDUFBG
 TEFHUz0iLUkke0xPQ0FMQkFTRX0vaW5jbHVkZSIgXAogCQlMREZMQUdTPSItTCR7TE9DQUxCQVNF
 fS9saWIiCiBVU0VfR01BS0U9CXllcwpAQCAtNDAsMzggKzM5LDM1IEBACiBNQU44PQkJYXN0ZXJp
 c2suOCBhc3RnZW5rZXkuOCBhdXRvc3VwcG9ydC44IHNhZmVfYXN0ZXJpc2suOAogCiBPUFRJT05T
 PQlPR0dWT1JCSVMJIkVuYWJsZSBPZ2cgVm9yYmlzIHN1cHBvcnQiIG9uIFwKLQkJT0RCQwkJIkVu
 YWJsZSBPREJDIHN1cHBvcnQiIG9uIFwKLQkJUE9TVEdSRVMJIkVuYWJsZSBQb3N0Z3JlU1FMIHN1
 cHBvcnQiIG9uIFwKLQkJUkFESVVTCQkiRW5hYmxlIFJBRElVUyBhY2NvdW50aW5nIHN1cHBvcnQi
 IG9uIFwKLQkJU05NUAkJIkVuYWJsZSBTTk1QIHN1cHBvcnQiIG9uIFwKKwkJT0RCQwkJIkVuYWJs
 ZSBPREJDIHN1cHBvcnQiIG9mZiBcCisJCVBPU1RHUkVTCSJFbmFibGUgUG9zdGdyZVNRTCBzdXBw
 b3J0IiBvZmYgXAorCQlSQURJVVMJCSJFbmFibGUgUkFESVVTIGFjY291bnRpbmcgc3VwcG9ydCIg
 b2ZmIFwKKwkJU05NUAkJIkVuYWJsZSBTTk1QIHN1cHBvcnQiIG9mZiBcCisJCVNRTElURQkJIkVu
 YWJsZSBTUUxJVEUgc3VwcG9ydCIgb2ZmIFwKIAkJSDMyMwkJIkVuYWJsZSBILjMyMyBzdXBwb3J0
 IiBvbiBcCi0JCUZSRUVURFMJCSJFbmFibGUgRnJlZVREUyBzdXBwb3J0IiBvbiBcCi0JCUpBQkJF
 UgkJIkVuYWJsZSBKYWJiZXIgYW5kIEd0YWxrIHN1cHBvcnQiIG9uCisJCUZSRUVURFMJCSJFbmFi
 bGUgRnJlZVREUyBzdXBwb3J0IiBvZmYgXAorCQlKQUJCRVIJCSJFbmFibGUgSmFiYmVyIGFuZCBH
 dGFsayBzdXBwb3J0IiBvZmYgXAorCQlaQVBURUwJCSJFbmFibGUgWmFwdGVsIHN1cHBvcnQiIG9u
 IAogCi0uaW5jbHVkZSA8YnNkLnBvcnQucHJlLm1rPgogCi0uaWYgJHtBUkNIfSA9PSAiaTM4NiIK
 LU9QVElPTlMrPQlaQVBURUwJCSJFbmFibGUgWmFwdGVsIHN1cHBvcnQiIG9uCi0uZWxzZQotV0lU
 SE9VVF9aQVBURUw9CXllcwotLmVuZGlmCisuaW5jbHVkZSA8YnNkLnBvcnQucHJlLm1rPgogCiAu
 aWYgZGVmaW5lZChXSVRIT1VUX0gzMjMpCiBQTElTVF9TVUIrPQlXSVRIX0gzMjM9IkBjb21tZW50
 ICIKLUNPTkZJR1VSRV9BUkdTKz0gLS13aXRob3V0LWgzMjMKK0NPTkZJR1VSRV9BUkdTKz0JLS13
 aXRob3V0LWgzMjMKIC5lbHNlCiBQTElTVF9TVUIrPQlXSVRIX0gzMjM9IiIKLUNPTkZJR1VSRV9B
 UkdTKz0gLS13aXRoLWgzMjMKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRoLWgzMjM9Ii91c3IvbG9j
 YWwiCiBMSUJfREVQRU5EUys9CXB0X3IuMToke1BPUlRTRElSfS9kZXZlbC9wd2xpYiBcCiAJCWgz
 MjNfci4xOiR7UE9SVFNESVJ9L25ldC9vcGVuaDMyMwogLmVuZGlmCiAKIC5pZiBkZWZpbmVkKFdJ
 VEhPVVRfWkFQVEVMKQogUExJU1RfU1VCKz0JV0lUSF9aQVBURUw9IkBjb21tZW50ICIKLUNPTkZJ
 R1VSRV9BUkdTKz0gLS13aXRob3V0LXphcHRlbAorQ09ORklHVVJFX0FSR1MrPQktLXdpdGhvdXQt
 emFwdGVsCiAuZWxzZQogUExJU1RfU1VCKz0JV0lUSF9aQVBURUw9IiIKLUNPTkZJR1VSRV9BUkdT
 Kz0gLS13aXRoLXphcHRlbAorQ09ORklHVVJFX0FSR1MrPQktLXdpdGgtemFwdGVsCiBCVUlMRF9E
 RVBFTkRTKz0JbGlicHJpPj0xLjIuMDoke1BPUlRTRElSfS9taXNjL2xpYnByaSBcCiAJCSR7TE9D
 QUxCQVNFfS9pbmNsdWRlL3phcHRlbC96YXB0ZWwuaDoke1BPUlRTRElSfS9taXNjL3phcHRlbAog
 TElCX0RFUEVORFMrPQlwcmkuMToke1BPUlRTRElSfS9taXNjL2xpYnByaQpAQCAtODMsNjggKzc5
 LDk1IEBACiAjIHNpbWlsYXJseQogLmlmIGRlZmluZWQoV0lUSE9VVF9PREJDKQogUExJU1RfU1VC
 Kz0JV0lUSF9PREJDPSJAY29tbWVudCAiCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aG91dC1vZGJj
 CitDT05GSUdVUkVfQVJHUys9CS0td2l0aG91dC1vZGJjCiAuZWxzZQogUExJU1RfU1VCKz0JV0lU
 SF9PREJDPSIiCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aC1vZGJjCitDT05GSUdVUkVfQVJHUys9
 CS0td2l0aC1vZGJjCiBMSUJfREVQRU5EUys9CW9kYmMuMToke1BPUlRTRElSfS9kYXRhYmFzZXMv
 dW5peE9EQkMKIC5lbmRpZgogCiAuaWYgZGVmaW5lZChXSVRIT1VUX0ZSRUVURFMpCiBQTElTVF9T
 VUIrPQlXSVRIX0ZSRUVURFM9IkBjb21tZW50ICIKLUNPTkZJR1VSRV9BUkdTKz0gLS13aXRob3V0
 LXRkcworQ09ORklHVVJFX0FSR1MrPQktLXdpdGhvdXQtdGRzCiAuZWxzZQogUExJU1RfU1VCKz0J
 V0lUSF9GUkVFVERTPSIiCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aC10ZHM9JHtMT0NBTEJBU0V9
 CitDT05GSUdVUkVfQVJHUys9CS0td2l0aC10ZHM9JHtMT0NBTEJBU0V9CiBMSUJfREVQRU5EUys9
 CXRkcy41OiR7UE9SVFNESVJ9L2RhdGFiYXNlcy9mcmVldGRzCiAuZW5kaWYKIAogLmlmIGRlZmlu
 ZWQoV0lUSE9VVF9QT1NUR1JFUykKIFBMSVNUX1NVQis9CVdJVEhfUE9TVEdSRVM9IkBjb21tZW50
 ICIKLUNPTkZJR1VSRV9BUkdTKz0gLS13aXRob3V0LXBvc3RncmVzCitDT05GSUdVUkVfQVJHUys9
 CS0td2l0aG91dC1wb3N0Z3JlcwogLmVsc2UKIFBMSVNUX1NVQis9CVdJVEhfUE9TVEdSRVM9IiIK
 IFVTRV9QR1NRTD0JeWVzCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aC1wb3N0Z3JlcworQ09ORklH
 VVJFX0FSR1MrPQktLXdpdGgtcG9zdGdyZXMKIC5lbmRpZgogCiAuaWYgZGVmaW5lZChXSVRIT1VU
 X09HR1ZPUkJJUykKIFBMSVNUX1NVQis9CVdJVEhfT0dHVk9SQklTPSJAY29tbWVudCAiCi1DT05G
 SUdVUkVfQVJHUys9IC0td2l0aG91dC1vZ2cKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRob3V0LW9n
 ZwogLmVsc2UKIFBMSVNUX1NVQis9CVdJVEhfT0dHVk9SQklTPSIiCi1DT05GSUdVUkVfQVJHUys9
 IC0td2l0aC1vZ2cKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRoLW9nZwogTElCX0RFUEVORFMrPQl2
 b3JiaXMuMzoke1BPUlRTRElSfS9hdWRpby9saWJ2b3JiaXMKIC5lbmRpZgogCiAuaWYgZGVmaW5l
 ZChXSVRIT1VUX1JBRElVUykKIFBMSVNUX1NVQis9CVdJVEhfUkFESVVTPSJAY29tbWVudCAiCi1D
 T05GSUdVUkVfQVJHUys9IC0td2l0aG91dC1yYWRpdXMKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRo
 b3V0LXJhZGl1cwogLmVsc2UKIFBMSVNUX1NVQis9CVdJVEhfUkFESVVTPSIiCi1DT05GSUdVUkVf
 QVJHUys9IC0td2l0aC1yYWRpdXMKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRoLXJhZGl1cwogTElC
 X0RFUEVORFMrPQlyYWRpdXNjbGllbnQtbmcuMjoke1BPUlRTRElSfS9uZXQvcmFkaXVzY2xpZW50
 CiAuZW5kaWYKIAogLmlmIGRlZmluZWQoV0lUSE9VVF9TTk1QKQogUExJU1RfU1VCKz0JV0lUSF9T
 Tk1QPSJAY29tbWVudCAiCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aG91dC1uZXRzbm1wCitDT05G
 SUdVUkVfQVJHUys9CS0td2l0aG91dC1uZXRzbm1wCiAuZWxzZQogUExJU1RfU1VCKz0JV0lUSF9T
 Tk1QPSIiCi1DT05GSUdVUkVfQVJHUys9IC0td2l0aC1uZXRzbm1wCitDT05GSUdVUkVfQVJHUys9
 CS0td2l0aC1uZXRzbm1wCiBMSUJfREVQRU5EUys9CW5ldHNubXAuMTA6JHtQT1JUU0RJUn0vbmV0
 LW1nbXQvbmV0LXNubXAKIC5lbmRpZgogCisuaWYgZGVmaW5lZChXSVRIT1VUX1NRTElURSkKK1BM
 SVNUX1NVQis9CVdJVEhfU1FMSVRFPSJAY29tbWVudCAiCitDT05GSUdVUkVfQVJHUys9CS0td2l0
 aG91dC1zcWxpdGUKKy5lbHNlCitQTElTVF9TVUIrPQlXSVRIX1NRTElURT0iIgorQ09ORklHVVJF
 X0FSR1MrPQktLXdpdGgtc3FsaXRlCitMSUJfREVQRU5EUys9CXNxbGl0ZToke1BPUlRTRElSfS9k
 YXRhYmFzZXMvc3FsaXRlMgorLmVuZGlmCisKIC5pZiBkZWZpbmVkKFdJVEhPVVRfSkFCQkVSKQog
 UExJU1RfU1VCKz0JV0lUSF9KQUJCRVI9IkBjb21tZW50ICIKLUNPTkZJR1VSRV9BUkdTKz0gLS13
 aXRob3V0LWlrc2VtZWwKK0NPTkZJR1VSRV9BUkdTKz0JLS13aXRob3V0LWlrc2VtZWwKIC5lbHNl
 CiBQTElTVF9TVUIrPQlXSVRIX0pBQkJFUj0iIgotQ09ORklHVVJFX0FSR1MrPSAtLXdpdGgtaWtz
 ZW1lbAorQ09ORklHVVJFX0FSR1MrPQktLXdpdGgtaWtzZW1lbAogTElCX0RFUEVORFMrPQlpa3Nl
 bWVsLjM6JHtQT1JUU0RJUn0vdGV4dHByb2MvaWtzZW1lbAogLmVuZGlmCiAKKworLmlmIGRlZmlu
 ZWQoV0lUSE9VVF9GQVgpCitQTElTVF9TVUIrPQlXSVRIX0ZBWD0iQGNvbW1lbnQgIgorLmVsc2UK
 K01BS0VfRU5WKz0JV0lUSF9GQVg9eWVzCitDT05GSUdVUkVfQVJHUys9CS0td2l0aC1zcGFuZHNw
 PXllcworTElCX0RFUEVORFMrPQlzcGFuZHNwLjA6JHtQT1JUU0RJUn0vY29tbXMvc3BhbmRzcC1k
 ZXZlbAorUExJU1RfU1VCKz0JV0lUSF9GQVg9IiIKKy5lbmRpZgorCisKK3Bvc3QtZXh0cmFjdDoK
 Ky5pZiAke09TVkVSU0lPTn0gPiA3MDAwMDAKKy5pZiBkZWZpbmVkKENQVVRZUEUpCitCUk9LRU49
 ICJZb3UgbXVzdCBkaXNhYmxlIENQVVRZUEUgaW4gL2V0Yy9tYWtlLmNvbmYiCisuZW5kaWYKKy5l
 bmRpZgorCiBwb3N0LXBhdGNoOgotCSR7UkVJTlBMQUNFX0NNRH0gLWUgJ3N8L3Zhci9saWJ8JHtQ
 UkVGSVh9L3NoYXJlfGcnICR7V1JLU1JDfS9jb25maWdzL211c2ljb25ob2xkLmNvbmYuc2FtcGxl
 CisJQCR7UkVJTlBMQUNFX0NNRH0gLWUgJ3N8L3Zhci9saWJ8JHtQUkVGSVh9L3NoYXJlfGcnICR7
 V1JLU1JDfS9jb25maWdzL211c2ljb25ob2xkLmNvbmYuc2FtcGxlCiAKIC5pbmNsdWRlIDxic2Qu
 cG9ydC5wb3N0Lm1rPgpkaWZmIC1ydU4gYXN0ZXJpc2sub3JpZy9kaXN0aW5mbyBhc3Rlcmlzay9k
 aXN0aW5mbwotLS0gYXN0ZXJpc2sub3JpZy9kaXN0aW5mbwkyMDA3LTA1LTI5IDAwOjE2OjM1LjAw
 MDAwMDAwMCArMDYwMAorKysgYXN0ZXJpc2svZGlzdGluZm8JMjAwNy0wNy0xOCAxMTo1NzozMS4w
 MDAwMDAwMDAgKzA2MDAKQEAgLTEsMyArMSwzIEBACi1NRDUgKGFzdGVyaXNrLTEuNC40LnRhci5n
 eikgPSA5MGY2YTJlYTUxMTNhZDI2ZGUzOTM1MTc1NzZhMWVkZQotU0hBMjU2IChhc3Rlcmlzay0x
 LjQuNC50YXIuZ3opID0gODJhMjhkOGY1MTE3MDNkZTVmYzYyMzExMjNmMTVhN2MyZmJkYTU0ZmY5
 YzBhNjg2ZTQwNWY3NGQxYzAzYWNhNwotU0laRSAoYXN0ZXJpc2stMS40LjQudGFyLmd6KSA9IDE3
 MDgxNjMxCitNRDUgKGFzdGVyaXNrLTEuNC44LnRhci5neikgPSA3MjYzZmY1NmFkOTNjYmI1ZWZi
 OTcxYTUzNmVlNmE1MQorU0hBMjU2IChhc3Rlcmlzay0xLjQuOC50YXIuZ3opID0gM2VhYmRmMmM1
 MmQzNjZhYmU3ZGQxZTMwM2I5ODJmYTdhYWQxMjk0NWIxYWMzMmVlOTdkYzRiNjUyMDQxYTQzZgor
 U0laRSAoYXN0ZXJpc2stMS40LjgudGFyLmd6KSA9IDExMTcxMTkwCmRpZmYgLXJ1TiBhc3Rlcmlz
 ay5vcmlnL2ZpbGVzL3BhdGNoLU1ha2VmaWxlIGFzdGVyaXNrL2ZpbGVzL3BhdGNoLU1ha2VmaWxl
 Ci0tLSBhc3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLU1ha2VmaWxlCTIwMDctMDQtMTYgMTQ6NDA6
 MTUuMDAwMDAwMDAwICswNjAwCisrKyBhc3Rlcmlzay9maWxlcy9wYXRjaC1NYWtlZmlsZQkyMDA3
 LTA3LTEyIDE2OjQ1OjQ3LjAwMDAwMDAwMCArMDYwMApAQCAtMSw5ICsxLDYgQEAKLQotJEZyZWVC
 U0Q6IHBvcnRzL25ldC9hc3Rlcmlzay9maWxlcy9wYXRjaC1NYWtlZmlsZSx2IDEuMTkgMjAwNy8w
 NC8xNiAwODo0MDoxNSBzb2JvbWF4IEV4cCAkCi0KLS0tLSBNYWtlZmlsZS5vcmlnCi0rKysgTWFr
 ZWZpbGUKLUBAIC0yMDcsNyArMjA3LDcgQEAKKy0tLSBNYWtlZmlsZS5vcmlnCVR1ZSBKdW4gMTkg
 MTE6MDY6MzMgMjAwNworKysrIE1ha2VmaWxlCVR1ZSBKdW4gMTkgMTE6NDY6MjkgMjAwNworQEAg
 LTIwOSw3ICsyMDksNyBAQAogIAogIGlmZXEgKCQoT1NBUkNIKSxGcmVlQlNEKQogICAgIyAtViBp
 cyB1bmRlcnN0b29kIGJ5IEJTRCBNYWtlLCBub3QgYnkgR05VIG1ha2UuCkBAIC0xMiw3ICs5LDcg
 QEAKICAgIEFTVENGTEFHUys9JChzaGVsbCBpZiB0ZXN0ICQoQlNEVkVSU0lPTikgLWx0IDUwMDAx
 NiA7IHRoZW4gZWNobyAiLURfVEhSRUFEX1NBRkUiOyBmaSkKICAgIEFTVF9MSUJTKz0kKHNoZWxs
 IGlmIHRlc3QgICQoQlNEVkVSU0lPTikgLWx0IDUwMjEwMiA7IHRoZW4gZWNobyAiLWxjX3IiOyBl
 bHNlIGVjaG8gIi1wdGhyZWFkIjsgZmkpCiAgZW5kaWYKLUBAIC0zNzEsMTUgKzM3MSwxNSBAQAor
 QEAgLTM3NCwxNSArMzc0LDE1IEBACiAgIyBTaG91bGQgc3RhdGljIEhUVFAgYmUgaW5zdGFsbGVk
 IGR1cmluZyBtYWtlIHNhbXBsZXMgb3IgZXZlbiB3aXRoIGl0cyBvd24gdGFyZ2V0IGFsYQogICMg
 d2Vidm9pY2VtYWlsPyAgVGhlcmUgYXJlIHBvcnRpb25zIGhlcmUgdGhhdCAqY291bGQqIGJlIGN1
 c3RvbWl6ZWQgYnV0IG1pZ2h0IGFsc28gYmUKICAjIGltcHJvdmVkIGEgbG90LiAgSSdsbCBwdXQg
 aXQgaGVyZSBmb3Igbm93LgpAQCAtMzMsNyArMzAsNyBAQAogIAkkKE1BS0UpIC1DIHNvdW5kcyBp
 bnN0YWxsCiAgCiAgdXBkYXRlOiAKLUBAIC00MDAsNDUgKzQwMCw0NSBAQAorQEAgLTQwMyw0NSAr
 NDAzLDQ1IEBACiAgT0xESEVBREVSUz0kKGZpbHRlci1vdXQgJChORVdIRUFERVJTKSwkKG5vdGRp
 ciAkKHdpbGRjYXJkICQoREVTVERJUikkKEFTVEhFQURFUkRJUikvKi5oKSkpCiAgCiAgYmluaW5z
 dGFsbDogX2FsbApAQCAtNjcsNyArNjQsNyBAQAogKwkkKEJTRF9JTlNUQUxMX1NDUklQVCkgY29u
 dHJpYi9zY3JpcHRzL2FzdGdlbmtleSAkKERFU1RESVIpJChBU1RTQklORElSKS8KICsJJChCU0Rf
 SU5TVEFMTF9TQ1JJUFQpIGNvbnRyaWIvc2NyaXB0cy9hdXRvc3VwcG9ydCAkKERFU1RESVIpJChB
 U1RTQklORElSKS8KICAJaWYgWyAhIC1mICQoREVTVERJUikkKEFTVFNCSU5ESVIpL3NhZmVfYXN0
 ZXJpc2sgXTsgdGhlbiBcCi0gCQljYXQgY29udHJpYi9zY3JpcHRzL3NhZmVfYXN0ZXJpc2sgfCBz
 ZWQgJ3N8X19BU1RFUklTS19TQklOX0RJUl9ffCQoQVNUU0JJTkRJUil8OycgPiAkKERFU1RESVIp
 JChBU1RTQklORElSKS9zYWZlX2FzdGVyaXNrIDtcCisgCQljYXQgY29udHJpYi9zY3JpcHRzL3Nh
 ZmVfYXN0ZXJpc2sgfCBzZWQgJ3N8X19BU1RFUklTS19TQklOX0RJUl9ffCQoQVNUU0JJTkRJUil8
 O3N8X19BU1RFUklTS19WQVJSVU5fRElSX198JChBU1RWQVJSVU5ESVIpfDsnID4gJChERVNURElS
 KSQoQVNUU0JJTkRJUikvc2FmZV9hc3RlcmlzayA7XAogIAkJY2htb2QgNzU1ICQoREVTVERJUikk
 KEFTVFNCSU5ESVIpL3NhZmVfYXN0ZXJpc2s7XAogIAlmaQogLQkkKElOU1RBTEwpIC1kICQoREVT
 VERJUikkKEFTVEhFQURFUkRJUikKQEAgLTEwOSw3ICsxMDYsNyBAQAogIAlmaQogIAogICQoU1VC
 RElSU19JTlNUQUxMKToKLUBAIC00NjUsNyArNDY1LDcgQEAKK0BAIC00NjgsNyArNDY4LDcgQEAK
 ICAJCWVjaG8gIiBXQVJOSU5HIFdBUk5JTkcgV0FSTklORyIgO1wKICAJZmkKICAKQEAgLTExOCw3
 ICsxMTUsNyBAQAogIAlAaWYgWyAteCAvdXNyL3NiaW4vYXN0ZXJpc2stcG9zdC1pbnN0YWxsIF07
 IHRoZW4gXAogIAkJL3Vzci9zYmluL2FzdGVyaXNrLXBvc3QtaW5zdGFsbCAkKERFU1RESVIpIC4g
 OyBcCiAgCWZpCi1AQCAtNDk1LDMxICs0OTUsMjMgQEAKK0BAIC00OTgsMzEgKzQ5OCwyMyBAQAog
 IHVwZ3JhZGU6IGJpbmluc3RhbGwKICAKICBhZHNpOgpAQCAtMTU4LDcgKzE1NSw3IEBACiAgCQko
 IFwKICAJCWVjaG8gIltkaXJlY3Rvcmllc10iIDsgXAogIAkJZWNobyAiYXN0ZXRjZGlyID0+ICQo
 QVNURVRDRElSKSIgOyBcCi1AQCAtNTQwLDIwICs1MzIsMjMgQEAKK0BAIC01NDMsMjAgKzUzNSwy
 MyBAQAogIAkJZWNobyAiO2FzdGN0bG93bmVyID0gcm9vdCIgOyBcCiAgCQllY2hvICI7YXN0Y3Rs
 Z3JvdXAgPSBhcGFjaGUiIDsgXAogIAkJZWNobyAiO2FzdGN0bCA9IGFzdGVyaXNrLmN0bCIgOyBc
 CkBAIC0xODYsNyArMTgzLDcgQEAKICAJZG9uZQogIAlAZWNobyAiICstLS0tLS0tLS0gQXN0ZXJp
 c2sgV2ViIFZvaWNlbWFpbCAtLS0tLS0tLS0tKyIgIAogIAlAZWNobyAiICsgICAgICAgICAgICAg
 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyIKLUBAIC01ODAsMTAgKzU3NSwxMCBAQAor
 QEAgLTU4MywxMCArNTc4LDEwIEBACiAgCiAgX19ycG06IGluY2x1ZGUvYXN0ZXJpc2svdmVyc2lv
 bi5oIGluY2x1ZGUvYXN0ZXJpc2svYnVpbGRvcHRzLmggc3BlYwogIAlybSAtcmYgL3RtcC9hc3Rl
 cmlzayA7IFwKQEAgLTE5OSw3ICsxOTYsNyBAQAogIAljcCAtZiBjb250cmliL2luaXQuZC9yYy5y
 ZWRoYXQuYXN0ZXJpc2sgL3RtcC9hc3Rlcmlzay9ldGMvcmMuZC9pbml0LmQvYXN0ZXJpc2sgOyBc
 CiAgCXJwbWJ1aWxkIC0tcmNmaWxlIC91c3IvbGliL3JwbS9ycG1yYzpyZWRoYXQvcnBtcmMgLWJi
 IGFzdGVyaXNrLnNwZWMKICAKLUBAIC01OTQsMTkgKzU4OSwxOSBAQAorQEAgLTU5NywxOSArNTky
 LDE5IEBACiAgY29uZmlnOgogIAlAaWYgWyAiJHtPU0FSQ0h9IiA9ICJsaW51eC1nbnUiIF07IHRo
 ZW4gXAogIAkJaWYgWyAtZiAvZXRjL3JlZGhhdC1yZWxlYXNlIC1vIC1mIC9ldGMvZmVkb3JhLXJl
 bGVhc2UgXTsgdGhlbiBcCmRpZmYgLXJ1TiBhc3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLWFwcHM6
 OmFwcF9yeGZheC5jIGFzdGVyaXNrL2ZpbGVzL3BhdGNoLWFwcHM6OmFwcF9yeGZheC5jCi0tLSBh
 c3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLWFwcHM6OmFwcF9yeGZheC5jCTE5NzAtMDEtMDEgMDU6
 MDA6MDAuMDAwMDAwMDAwICswNTAwCisrKyBhc3Rlcmlzay9maWxlcy9wYXRjaC1hcHBzOjphcHBf
 cnhmYXguYwkyMDA3LTA3LTEyIDE2OjQ1OjQ3LjAwMDAwMDAwMCArMDYwMApAQCAtMCwwICsxLDM4
 MyBAQAorLS0tIGFwcHMvYXBwX3J4ZmF4LmMub3JpZwlUdWUgSnVsIDEwIDE1OjI4OjA0IDIwMDcK
 KysrKyBhcHBzL2FwcF9yeGZheC5jCVR1ZSBKdWwgMTAgMTU6Mjc6MjggMjAwNworQEAgLTAsMCAr
 MSwzODAgQEAKKysvKgorKyAqIEFzdGVyaXNrIC0tIEEgdGVsZXBob255IHRvb2xraXQgZm9yIExp
 bnV4LgorKyAqCisrICogVHJpdmlhbCBhcHBsaWNhdGlvbiB0byByZWNlaXZlIGEgVElGRiBGQVgg
 ZmlsZQorKyAqIAorKyAqIENvcHlyaWdodCAoQykgMjAwMywgU3RldmUgVW5kZXJ3b29kCisrICoK
 KysgKiBTdGV2ZSBVbmRlcndvb2QgPHN0ZXZldUBjb3BwaWNlLm9yZz4KKysgKgorKyAqIFRoaXMg
 cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YK
 KysgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKi8KKysKKysvKioqIE1PRFVM
 RUlORk8KKysgICAgICAgICA8ZGVwZW5kPnNwYW5kc3A8L2RlcGVuZD4KKysqKiovCisrIAorKyNp
 bmNsdWRlICJhc3Rlcmlzay5oIgorKworK0FTVEVSSVNLX0ZJTEVfVkVSU0lPTihfX0ZJTEVfXywg
 IiRSZXZpc2lvbjokIikKKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPHN0ZGxp
 Yi5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgorKyNpbmNs
 dWRlIDxwdGhyZWFkLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2luY2x1ZGUgPHRpZmZpby5o
 PgorKworKyNpbmNsdWRlIDxzcGFuZHNwLmg+CisrCisrI2luY2x1ZGUgImFzdGVyaXNrL2xvY2su
 aCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svZmlsZS5oIgorKyNpbmNsdWRlICJhc3Rlcmlzay9sb2dn
 ZXIuaCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svY2hhbm5lbC5oIgorKyNpbmNsdWRlICJhc3Rlcmlz
 ay9wYnguaCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svbW9kdWxlLmgiCisrI2luY2x1ZGUgImFzdGVy
 aXNrL21hbmFnZXIuaCIKKysKKysjaWZuZGVmIEFTVF9NT0RVTEUKKysjZGVmaW5lIEFTVF9NT0RV
 TEUgImFwcF9yeGZheCIKKysjZW5kaWYKKysKKytzdGF0aWMgY2hhciAqYXBwID0gIlJ4RkFYIjsK
 KysKKytzdGF0aWMgY2hhciAqc3lub3BzaXMgPSAiUmVjZWl2ZSBhIEZBWCB0byBhIGZpbGUiOwor
 KworK3N0YXRpYyBjaGFyICpkZXNjcmlwID0gCisrIiAgUnhGQVgoZmlsZW5hbWVbfGNhbGxlcl1b
 fGRlYnVnXSk6IFJlY2VpdmVzIGEgRkFYIGZyb20gdGhlIGNoYW5uZWwgaW50byB0aGVcbiIKKysi
 Z2l2ZW4gZmlsZW5hbWUuIElmIHRoZSBmaWxlIGV4aXN0cyBpdCB3aWxsIGJlIG92ZXJ3cml0dGVu
 LiBUaGUgZmlsZVxuIgorKyJzaG91bGQgYmUgaW4gVElGRi9GIGZvcm1hdC5cbiIKKysiVGhlIFwi
 Y2FsbGVyXCIgb3B0aW9uIG1ha2VzIHRoZSBhcHBsaWNhdGlvbiBiZWhhdmUgYXMgYSBjYWxsaW5n
 IG1hY2hpbmUsXG4iCisrInJhdGhlciB0aGFuIHRoZSBhbnN3ZXJpbmcgbWFjaGluZS4gVGhlIGRl
 ZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGJlaGF2ZSBhc1xuIgorKyJhbiBhbnN3ZXJpbmcgbWFjaGlu
 ZS5cbiIKKysiVXNlcyBMT0NBTFNUQVRJT05JRCB0byBpZGVudGlmeSBpdHNlbGYgdG8gdGhlIHJl
 bW90ZSBlbmQuXG4iCisrIiAgICAgTE9DQUxIRUFERVJJTkZPIHRvIGdlbmVyYXRlIGEgaGVhZGVy
 IGxpbmUgb24gZWFjaCBwYWdlLlxuIgorKyJTZXRzIFJFTU9URVNUQVRJT05JRCB0byB0aGUgc2Vu
 ZGVyIENTSUQuXG4iCisrIiAgICAgRkFYUEFHRVMgdG8gdGhlIG51bWJlciBvZiBwYWdlcyByZWNl
 aXZlZC5cbiIKKysiICAgICBGQVhCSVRSQVRFIHRvIHRoZSB0cmFuc21pdGlvbiByYXRlLlxuIgor
 KyIgICAgIEZBWFJFU09MVVRJT04gdG8gdGhlIHJlc29sdXRpb24uXG4iCisrIlJldHVybnMgLTEg
 d2hlbiB0aGUgdXNlciBoYW5ncyB1cC5cbiIKKysiUmV0dXJucyAwIG90aGVyd2lzZS5cbiI7Cisr
 CisrI2RlZmluZSBNQVhfQkxPQ0tfU0laRSAyNDAKKysKKytzdGF0aWMgdm9pZCBzcGFuX21lc3Nh
 Z2UoaW50IGxldmVsLCBjb25zdCBjaGFyICptc2cpCisreworKyAgICBpbnQgYXN0X2xldmVsOwor
 KyAgICAKKysgICAgaWYgKGxldmVsID09IFNQQU5fTE9HX1dBUk5JTkcpCisrICAgICAgICBhc3Rf
 bGV2ZWwgPSBfX0xPR19XQVJOSU5HOworKyAgICBlbHNlIGlmIChsZXZlbCA9PSBTUEFOX0xPR19X
 QVJOSU5HKQorKyAgICAgICAgYXN0X2xldmVsID0gX19MT0dfV0FSTklORzsKKysgICAgZWxzZQor
 KyAgICAgICAgYXN0X2xldmVsID0gX19MT0dfREVCVUc7CisrICAgIGFzdF9sb2coYXN0X2xldmVs
 LCBfX0ZJTEVfXywgX19MSU5FX18sIF9fUFJFVFRZX0ZVTkNUSU9OX18sIG1zZyk7CisrfQorKy8q
 LSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0qLworKworKyNpZiAwCisrc3RhdGljIHZvaWQgdDMwX2ZsdXNoKHQz
 MF9zdGF0ZV90ICpzLCBpbnQgd2hpY2gpCisreworKyAgICAvKiBUT0RPOiAqLworK30KKysvKi0g
 RW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tKi8KKysjZW5kaWYKKysKKytzdGF0aWMgdm9pZCBwaGFzZV9lX2hhbmRs
 ZXIodDMwX3N0YXRlX3QgKnMsIHZvaWQgKnVzZXJfZGF0YSwgaW50IHJlc3VsdCkKKyt7CisrICAg
 IHN0cnVjdCBhc3RfY2hhbm5lbCAqY2hhbjsKKysgICAgdDMwX3N0YXRzX3QgdDsKKysgICAgY2hh
 ciBsb2NhbF9pZGVudFsyMV07CisrICAgIGNoYXIgZmFyX2lkZW50WzIxXTsKKysgICAgY2hhciBi
 dWZbMTFdOworKyAgICAKKysgICAgY2hhbiA9IChzdHJ1Y3QgYXN0X2NoYW5uZWwgKikgdXNlcl9k
 YXRhOworKyAgICBpZiAocmVzdWx0ID09IFQzMF9FUlJfT0spCisrICAgIHsKKysgICAgICAgIHQz
 MF9nZXRfdHJhbnNmZXJfc3RhdGlzdGljcyhzLCAmdCk7CisrICAgICAgICB0MzBfZ2V0X2Zhcl9p
 ZGVudChzLCBmYXJfaWRlbnQpOworKyAgICAgICAgdDMwX2dldF9sb2NhbF9pZGVudChzLCBsb2Nh
 bF9pZGVudCk7CisrICAgICAgICBhc3RfbG9nKExPR19ERUJVRywgIj09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PVxuIik7CisrICAgICAgICBhc3RfbG9nKExPR19ERUJVRywgIkZheCBzdWNjZXNzZnVsbHkg
 cmVjZWl2ZWQuXG4iKTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiUmVtb3RlIHN0YXRp
 b24gaWQ6ICVzXG4iLCBmYXJfaWRlbnQpOworKyAgICAgICAgYXN0X2xvZyhMT0dfREVCVUcsICJM
 b2NhbCBzdGF0aW9uIGlkOiAgJXNcbiIsIGxvY2FsX2lkZW50KTsKKysgICAgICAgIGFzdF9sb2co
 TE9HX0RFQlVHLCAiUGFnZXMgdHJhbnNmZXJyZWQ6ICVpXG4iLCB0LnBhZ2VzX3RyYW5zZmVycmVk
 KTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiSW1hZ2UgcmVzb2x1dGlvbjogICVpIHgg
 JWlcbiIsIHQueF9yZXNvbHV0aW9uLCB0LnlfcmVzb2x1dGlvbik7CisrICAgICAgICBhc3RfbG9n
 KExPR19ERUJVRywgIlRyYW5zZmVyIFJhdGU6ICAgICAlaVxuIiwgdC5iaXRfcmF0ZSk7CisrICAg
 ICAgICBhc3RfbG9nKExPR19ERUJVRywgIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CisrICAg
 ICAgICBtYW5hZ2VyX2V2ZW50KEVWRU5UX0ZMQUdfQ0FMTCwKKysgICAgICAgICAgICAgICAgICAg
 ICAgIkZheFJlY2VpdmVkIiwgIkNoYW5uZWw6ICVzXG5FeHRlbjogJXNcbkNhbGxlcklEOiAlc1xu
 UmVtb3RlU3RhdGlvbklEOiAlc1xuTG9jYWxTdGF0aW9uSUQ6ICVzXG5QYWdlc1RyYW5zZmVycmVk
 OiAlaVxuUmVzb2x1dGlvbjogJWlcblRyYW5zZmVyUmF0ZTogJWlcbkZpbGVOYW1lOiAlc1xuIiwK
 KysgICAgICAgICAgICAgICAgICAgICAgY2hhbi0+bmFtZSwKKysgICAgICAgICAgICAgICAgICAg
 ICAgY2hhbi0+ZXh0ZW4sCisrICAgICAgICAgICAgICAgICAgICAgIChjaGFuLT5jaWQuY2lkX251
 bSkgID8gIGNoYW4tPmNpZC5jaWRfbnVtICA6ICAiIiwKKysgICAgICAgICAgICAgICAgICAgICAg
 ZmFyX2lkZW50LAorKyAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9pZGVudCwKKysgICAgICAg
 ICAgICAgICAgICAgICAgdC5wYWdlc190cmFuc2ZlcnJlZCwKKysgICAgICAgICAgICAgICAgICAg
 ICAgdC55X3Jlc29sdXRpb24sCisrICAgICAgICAgICAgICAgICAgICAgIHQuYml0X3JhdGUsCisr
 ICAgICAgICAgICAgICAgICAgICAgIHMtPnJ4X2ZpbGUpOworKyAgICAgICAgcGJ4X2J1aWx0aW5f
 c2V0dmFyX2hlbHBlcihjaGFuLCAiUkVNT1RFU1RBVElPTklEIiwgZmFyX2lkZW50KTsKKysgICAg
 ICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIlaSIsIHQucGFnZXNfdHJhbnNmZXJyZWQp
 OworKyAgICAgICAgcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihjaGFuLCAiRkFYUEFHRVMiLCBi
 dWYpOworKyAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiVpIiwgdC55X3Jlc29s
 dXRpb24pOworKyAgICAgICAgcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihjaGFuLCAiRkFYUkVT
 T0xVVElPTiIsIGJ1Zik7CisrICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiJWki
 LCB0LmJpdF9yYXRlKTsKKysgICAgICAgIHBieF9idWlsdGluX3NldHZhcl9oZWxwZXIoY2hhbiwg
 IkZBWEJJVFJBVEUiLCBidWYpOworKyAgICB9CisrICAgIGVsc2UKKysgICAgeworKyAgICAgICAg
 YXN0X2xvZyhMT0dfREVCVUcsICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOworKyAgICAgICAg
 YXN0X2xvZyhMT0dfREVCVUcsICJGYXggcmVjZWl2ZSBub3Qgc3VjY2Vzc2Z1bCAtIHJlc3VsdCAo
 JWQpICVzLlxuIiwgcmVzdWx0LCB0MzBfY29tcGxldGlvbl9jb2RlX3RvX3N0cihyZXN1bHQpKTsK
 KysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsK
 KysgICAgfQorK30KKysvKi0gRW5kIG9mIGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKysKKytzdGF0aWMgdm9pZCBwaGFz
 ZV9kX2hhbmRsZXIodDMwX3N0YXRlX3QgKnMsIHZvaWQgKnVzZXJfZGF0YSwgaW50IHJlc3VsdCkK
 Kyt7CisrICAgIHN0cnVjdCBhc3RfY2hhbm5lbCAqY2hhbjsKKysgICAgdDMwX3N0YXRzX3QgdDsK
 KysgICAgCisrICAgIGNoYW4gPSAoc3RydWN0IGFzdF9jaGFubmVsICopIHVzZXJfZGF0YTsKKysg
 ICAgaWYgKHJlc3VsdCkKKysgICAgeworKyAgICAgICAgdDMwX2dldF90cmFuc2Zlcl9zdGF0aXN0
 aWNzKHMsICZ0KTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiPT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09XG4iKTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiUGFnZXMgdHJhbnNmZXJy
 ZWQ6ICAlaVxuIiwgdC5wYWdlc190cmFuc2ZlcnJlZCk7CisrICAgICAgICBhc3RfbG9nKExPR19E
 RUJVRywgIkltYWdlIHNpemU6ICAgICAgICAgJWkgeCAlaVxuIiwgdC53aWR0aCwgdC5sZW5ndGgp
 OworKyAgICAgICAgYXN0X2xvZyhMT0dfREVCVUcsICJJbWFnZSByZXNvbHV0aW9uICAgICVpIHgg
 JWlcbiIsIHQueF9yZXNvbHV0aW9uLCB0LnlfcmVzb2x1dGlvbik7CisrICAgICAgICBhc3RfbG9n
 KExPR19ERUJVRywgIlRyYW5zZmVyIFJhdGU6ICAgICAgJWlcbiIsIHQuYml0X3JhdGUpOworKyAg
 ICAgICAgYXN0X2xvZyhMT0dfREVCVUcsICJCYWQgcm93cyAgICAgICAgICAgICVpXG4iLCB0LmJh
 ZF9yb3dzKTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiTG9uZ2VzdCBiYWQgcm93IHJ1
 biAlaVxuIiwgdC5sb25nZXN0X2JhZF9yb3dfcnVuKTsKKysgICAgICAgIGFzdF9sb2coTE9HX0RF
 QlVHLCAiQ29tcHJlc3Npb24gdHlwZSAgICAlaVxuIiwgdC5lbmNvZGluZyk7CisrICAgICAgICBh
 c3RfbG9nKExPR19ERUJVRywgIkltYWdlIHNpemUgKGJ5dGVzKSAgJWlcbiIsIHQuaW1hZ2Vfc2l6
 ZSk7CisrICAgICAgICBhc3RfbG9nKExPR19ERUJVRywgIj09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxu
 Iik7CisrICAgIH0KKyt9CisrLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisrCisrc3RhdGljIGludCBy
 eGZheF9leGVjKHN0cnVjdCBhc3RfY2hhbm5lbCAqY2hhbiwgdm9pZCAqZGF0YSkKKyt7CisrICAg
 IGludCByZXMgPSAwOworKyAgICBjaGFyIHRlbXBsYXRlX2ZpbGVbMjU2XTsKKysgICAgY2hhciB0
 YXJnZXRfZmlsZVsyNTZdOworKyAgICBjaGFyICpzOworKyAgICBjaGFyICp0OworKyAgICBjaGFy
 ICp2OworKyAgICBjb25zdCBjaGFyICp4OworKyAgICBpbnQgb3B0aW9uOworKyAgICBpbnQgbGVu
 OworKyAgICBpbnQgaTsKKysgICAgZmF4X3N0YXRlX3QgZmF4OworKyAgICBpbnQgY2FsbGluZ19w
 YXJ0eTsKKysgICAgaW50IHZlcmJvc2U7CisrICAgIGludCBzYW1wbGVzOworKworKyAgICBzdHJ1
 Y3QgYXN0X21vZHVsZV91c2VyICp1OworKyAgICBzdHJ1Y3QgYXN0X2ZyYW1lICppbmYgPSBOVUxM
 OworKyAgICBzdHJ1Y3QgYXN0X2ZyYW1lIG91dGY7CisrCisrICAgIGludCBvcmlnaW5hbF9yZWFk
 X2ZtdDsKKysgICAgaW50IG9yaWdpbmFsX3dyaXRlX2ZtdDsKKysgICAgCisrICAgIHVpbnQ4X3Qg
 X19idWZbc2l6ZW9mKHVpbnQxNl90KSpNQVhfQkxPQ0tfU0laRSArIDIqQVNUX0ZSSUVORExZX09G
 RlNFVF07CisrICAgIHVpbnQ4X3QgKmJ1ZiA9IF9fYnVmICsgQVNUX0ZSSUVORExZX09GRlNFVDsK
 KysKKysgICAgaWYgKGNoYW4gPT0gTlVMTCkKKysgICAgeworKyAgICAgICAgYXN0X2xvZyhMT0df
 V0FSTklORywgIkZheCByZWNlaXZlIGNoYW5uZWwgaXMgTlVMTC4gR2l2aW5nIHVwLlxuIik7Cisr
 ICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgICAgc3Bhbl9zZXRfbWVzc2FnZV9oYW5k
 bGVyKHNwYW5fbWVzc2FnZSk7CisrCisrICAgIC8qIFRoZSBuZXh0IGZldyBsaW5lcyBvZiBjb2Rl
 IHBhcnNlIG91dCB0aGUgZmlsZW5hbWUgYW5kIGhlYWRlciBmcm9tIHRoZSBpbnB1dCBzdHJpbmcg
 Ki8KKysgICAgaWYgKGRhdGEgPT0gTlVMTCkKKysgICAgeworKyAgICAgICAgLyogTm8gZGF0YSBp
 bXBsaWVzIG5vIGZpbGVuYW1lIG9yIGFueXRoaW5nIGlzIHByZXNlbnQgKi8KKysgICAgICAgIGFz
 dF9sb2coTE9HX1dBUk5JTkcsICJSeGZheCByZXF1aXJlcyBhbiBhcmd1bWVudCAoZmlsZW5hbWUp
 XG4iKTsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyAgICAKKysgICAgY2FsbGluZ19w
 YXJ0eSA9IEZBTFNFOworKyAgICB2ZXJib3NlID0gRkFMU0U7CisrICAgIHRhcmdldF9maWxlWzBd
 ID0gJ1wwJzsKKysKKysgICAgZm9yIChvcHRpb24gPSAwLCB2ID0gcyA9IGRhdGE7ICB2OyAgb3B0
 aW9uKyssIHMrKykKKysgICAgeworKyAgICAgICAgdCA9IHM7CisrICAgICAgICB2ID0gc3RyY2hy
 KHMsICd8Jyk7CisrICAgICAgICBzID0gKHYpICA/ICB2ICA6ICBzICsgc3RybGVuKHMpOworKyAg
 ICAgICAgc3RybmNweSgoY2hhciAqKSBidWYsIHQsIHMgLSB0KTsKKysgICAgICAgIGJ1ZltzIC0g
 dF0gPSAnXDAnOworKyAgICAgICAgaWYgKG9wdGlvbiA9PSAwKQorKyAgICAgICAgeworKyAgICAg
 ICAgICAgIC8qIFRoZSBmaXJzdCBvcHRpb24gaXMgYWx3YXlzIHRoZSBmaWxlIG5hbWUgKi8KKysg
 ICAgICAgICAgICBsZW4gPSBzIC0gdDsKKysgICAgICAgICAgICBpZiAobGVuID4gMjU1KQorKyAg
 ICAgICAgICAgICAgICBsZW4gPSAyNTU7CisrICAgICAgICAgICAgc3RybmNweSh0YXJnZXRfZmls
 ZSwgdCwgbGVuKTsKKysgICAgICAgICAgICB0YXJnZXRfZmlsZVtsZW5dID0gJ1wwJzsKKysgICAg
 ICAgICAgICAvKiBBbGxvdyB0aGUgdXNlIG9mICVkIGluIHRoZSBmaWxlIG5hbWUgZm9yIGEgd2ls
 ZCBjYXJkIG9mIHNvcnRzLCB0bworKyAgICAgICAgICAgICAgIGNyZWF0ZSBhIG5ldyBmaWxlIHdp
 dGggdGhlIHNwZWNpZmllZCBuYW1lIHNjaGVtZSAqLworKyAgICAgICAgICAgIGlmICgoeCA9IHN0
 cmNocih0YXJnZXRfZmlsZSwgJyUnKSkgICYmICB4WzFdID09ICdkJykKKysgICAgICAgICAgICB7
 CisrICAgICAgICAgICAgICAgIHN0cmNweSh0ZW1wbGF0ZV9maWxlLCB0YXJnZXRfZmlsZSk7Cisr
 ICAgICAgICAgICAgICAgIGkgPSAwOworKyAgICAgICAgICAgICAgICBkbworKyAgICAgICAgICAg
 ICAgICB7CisrICAgICAgICAgICAgICAgICAgICBzbnByaW50Zih0YXJnZXRfZmlsZSwgMjU2LCB0
 ZW1wbGF0ZV9maWxlLCAxKTsKKysgICAgICAgICAgICAgICAgICAgIGkrKzsKKysgICAgICAgICAg
 ICAgICAgfQorKyAgICAgICAgICAgICAgICB3aGlsZSAoYXN0X2ZpbGVleGlzdHModGFyZ2V0X2Zp
 bGUsICIiLCBjaGFuLT5sYW5ndWFnZSkgIT0gLTEpOworKyAgICAgICAgICAgIH0KKysgICAgICAg
 IH0KKysgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAoImNhbGxlciIsIHQsIHMgLSB0KSA9PSAwKQor
 KyAgICAgICAgeworKyAgICAgICAgICAgIGNhbGxpbmdfcGFydHkgPSBUUlVFOworKyAgICAgICAg
 fQorKyAgICAgICAgZWxzZSBpZiAoc3RybmNtcCgiZGVidWciLCB0LCBzIC0gdCkgPT0gMCkKKysg
 ICAgICAgIHsKKysgICAgICAgICAgICB2ZXJib3NlID0gVFJVRTsKKysgICAgICAgIH0KKysgICAg
 fQorKworKyAgICAvKiBEb25lIHBhcnNpbmcgKi8KKysKKysgICAgdSA9IGFzdF9tb2R1bGVfdXNl
 cl9hZGQoY2hhbik7CisrCisrICAgIGlmIChjaGFuLT5fc3RhdGUgIT0gQVNUX1NUQVRFX1VQKQor
 KyAgICB7CisrICAgICAgICAvKiBTaG91bGRuJ3QgbmVlZCB0aGlzLCBidXQgY2hlY2tpbmcgdG8g
 c2VlIGlmIGNoYW5uZWwgaXMgYWxyZWFkeSBhbnN3ZXJlZAorKyAgICAgICAgICogVGhlb3JldGlj
 YWxseSBhc3RlcmlzayBzaG91bGQgYWxyZWFkeSBoYXZlIGFuc3dlcmVkIGJlZm9yZSBydW5uaW5n
 IHRoZSBhcHAgKi8KKysgICAgICAgIHJlcyA9IGFzdF9hbnN3ZXIoY2hhbik7CisrICAgIH0KKysg
 ICAgCisrICAgIGlmICghcmVzKQorKyAgICB7CisrICAgICAgICBvcmlnaW5hbF9yZWFkX2ZtdCA9
 IGNoYW4tPnJlYWRmb3JtYXQ7CisrICAgICAgICBpZiAob3JpZ2luYWxfcmVhZF9mbXQgIT0gQVNU
 X0ZPUk1BVF9TTElORUFSKQorKyAgICAgICAgeworKyAgICAgICAgICAgIHJlcyA9IGFzdF9zZXRf
 cmVhZF9mb3JtYXQoY2hhbiwgQVNUX0ZPUk1BVF9TTElORUFSKTsKKysgICAgICAgICAgICBpZiAo
 cmVzIDwgMCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGFzdF9sb2coTE9HX1dB
 Uk5JTkcsICJVbmFibGUgdG8gc2V0IHRvIGxpbmVhciByZWFkIG1vZGUsIGdpdmluZyB1cFxuIik7
 CisrICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgICAgICB9CisrICAgICAgICB9
 CisrICAgICAgICBvcmlnaW5hbF93cml0ZV9mbXQgPSBjaGFuLT53cml0ZWZvcm1hdDsKKysgICAg
 ICAgIGlmIChvcmlnaW5hbF93cml0ZV9mbXQgIT0gQVNUX0ZPUk1BVF9TTElORUFSKQorKyAgICAg
 ICAgeworKyAgICAgICAgICAgIHJlcyA9IGFzdF9zZXRfd3JpdGVfZm9ybWF0KGNoYW4sIEFTVF9G
 T1JNQVRfU0xJTkVBUik7CisrICAgICAgICAgICAgaWYgKHJlcyA8IDApCisrICAgICAgICAgICAg
 eworKyAgICAgICAgICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHNldCB0
 byBsaW5lYXIgd3JpdGUgbW9kZSwgZ2l2aW5nIHVwXG4iKTsKKysgICAgICAgICAgICAgICAgcmVz
 ID0gYXN0X3NldF9yZWFkX2Zvcm1hdChjaGFuLCBvcmlnaW5hbF9yZWFkX2ZtdCk7CisrICAgICAg
 ICAgICAgICAgIGlmIChyZXMpCisrICAgICAgICAgICAgICAgICAgICBhc3RfbG9nKExPR19XQVJO
 SU5HLCAiVW5hYmxlIHRvIHJlc3RvcmUgcmVhZCBmb3JtYXQgb24gJyVzJ1xuIiwgY2hhbi0+bmFt
 ZSk7CisrICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKysgICAgICAgICAgICB9CisrICAgICAg
 ICB9CisrICAgICAgICBmYXhfaW5pdCgmZmF4LCBjYWxsaW5nX3BhcnR5KTsKKysgICAgICAgIGlm
 ICh2ZXJib3NlKQorKyAgICAgICAgICAgIGZheC5sb2dnaW5nLmxldmVsID0gU1BBTl9MT0dfU0hP
 V19TRVZFUklUWSB8IFNQQU5fTE9HX1NIT1dfUFJPVE9DT0wgfCBTUEFOX0xPR19GTE9XOworKyAg
 ICAgICAgeCA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hhbiwgIkxPQ0FMU1RBVElPTklE
 Iik7CisrICAgICAgICBpZiAoeCAgJiYgIHhbMF0pCisrICAgICAgICAgICAgdDMwX3NldF9sb2Nh
 bF9pZGVudCgmZmF4LnQzMF9zdGF0ZSwgeCk7CisrICAgICAgICB4ID0gcGJ4X2J1aWx0aW5fZ2V0
 dmFyX2hlbHBlcihjaGFuLCAiTE9DQUxIRUFERVJJTkZPIik7CisrICAgICAgICBpZiAoeCAgJiYg
 IHhbMF0pCisrICAgICAgICAgICAgdDMwX3NldF9oZWFkZXJfaW5mbygmZmF4LnQzMF9zdGF0ZSwg
 eCk7CisrICAgICAgICB0MzBfc2V0X3J4X2ZpbGUoJmZheC50MzBfc3RhdGUsIHRhcmdldF9maWxl
 LCAtMSk7CisrICAgICAgICAvL3QzMF9zZXRfcGhhc2VfYl9oYW5kbGVyKCZmYXgudDMwX3N0YXRl
 LCBwaGFzZV9iX2hhbmRsZXIsIGNoYW4pOworKyAgICAgICAgdDMwX3NldF9waGFzZV9kX2hhbmRs
 ZXIoJmZheC50MzBfc3RhdGUsIHBoYXNlX2RfaGFuZGxlciwgY2hhbik7CisrICAgICAgICB0MzBf
 c2V0X3BoYXNlX2VfaGFuZGxlcigmZmF4LnQzMF9zdGF0ZSwgcGhhc2VfZV9oYW5kbGVyLCBjaGFu
 KTsKKysgICAgICAgIHQzMF9zZXRfZWNtX2NhcGFiaWxpdHkoJmZheC50MzBfc3RhdGUsIFRSVUUp
 OworKyAgICAgICAgdDMwX3NldF9zdXBwb3J0ZWRfY29tcHJlc3Npb25zKCZmYXgudDMwX3N0YXRl
 LCBUMzBfU1VQUE9SVF9UNF8xRF9DT01QUkVTU0lPTiB8IFQzMF9TVVBQT1JUX1Q0XzJEX0NPTVBS
 RVNTSU9OIHwgVDMwX1NVUFBPUlRfVDZfQ09NUFJFU1NJT04pOworKyAgICAgICAgd2hpbGUgKGFz
 dF93YWl0Zm9yKGNoYW4sIC0xKSA+IC0xKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGluZiA9
 IGFzdF9yZWFkKGNoYW4pOworKyAgICAgICAgICAgIGlmIChpbmYgPT0gTlVMTCkKKysgICAgICAg
 ICAgICB7CisrICAgICAgICAgICAgICAgIHJlcyA9IC0xOworKyAgICAgICAgICAgICAgICBicmVh
 azsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKGluZi0+ZnJhbWV0eXBlID09IEFT
 VF9GUkFNRV9WT0lDRSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGlmIChmYXhf
 cngoJmZheCwgaW5mLT5kYXRhLCBpbmYtPnNhbXBsZXMpKQorKyAgICAgICAgICAgICAgICAgICAg
 YnJlYWs7CisrICAgICAgICAgICAgICAgIHNhbXBsZXMgPSAoaW5mLT5zYW1wbGVzIDw9IE1BWF9C
 TE9DS19TSVpFKSAgPyAgaW5mLT5zYW1wbGVzICA6ICBNQVhfQkxPQ0tfU0laRTsKKysgICAgICAg
 ICAgICAgICAgbGVuID0gZmF4X3R4KCZmYXgsIChpbnQxNl90ICopICZidWZbQVNUX0ZSSUVORExZ
 X09GRlNFVF0sIHNhbXBsZXMpOworKyAgICAgICAgICAgICAgICBpZiAobGVuKQorKyAgICAgICAg
 ICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJm91dGYsIDAsIHNpemVvZihv
 dXRmKSk7CisrICAgICAgICAgICAgICAgICAgICBvdXRmLmZyYW1ldHlwZSA9IEFTVF9GUkFNRV9W
 T0lDRTsKKysgICAgICAgICAgICAgICAgICAgIG91dGYuc3ViY2xhc3MgPSBBU1RfRk9STUFUX1NM
 SU5FQVI7CisrICAgICAgICAgICAgICAgICAgICBvdXRmLmRhdGFsZW4gPSBsZW4qc2l6ZW9mKGlu
 dDE2X3QpOworKyAgICAgICAgICAgICAgICAgICAgb3V0Zi5zYW1wbGVzID0gbGVuOworKyAgICAg
 ICAgICAgICAgICAgICAgb3V0Zi5kYXRhID0gJmJ1ZltBU1RfRlJJRU5ETFlfT0ZGU0VUXTsKKysg
 ICAgICAgICAgICAgICAgICAgIG91dGYub2Zmc2V0ID0gQVNUX0ZSSUVORExZX09GRlNFVDsKKysg
 ICAgICAgICAgICAgICAgICAgIG91dGYuc3JjID0gIlJ4RkFYIjsKKysgICAgICAgICAgICAgICAg
 ICAgIGlmIChhc3Rfd3JpdGUoY2hhbiwgJm91dGYpIDwgMCkKKysgICAgICAgICAgICAgICAgICAg
 IHsKKysgICAgICAgICAgICAgICAgICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5hYmxl
 IHRvIHdyaXRlIGZyYW1lIHRvIGNoYW5uZWw7ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworKyAg
 ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAg
 ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGFzdF9mcmZyZWUo
 aW5mKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChpbmYgPT0gTlVMTCkKKysgICAgICAgIHsK
 KysgICAgICAgICAgICBhc3RfbG9nKExPR19ERUJVRywgIkdvdCBoYW5ndXBcbiIpOworKyAgICAg
 ICAgICAgIHJlcyA9IC0xOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKG9yaWdpbmFsX3JlYWRf
 Zm10ICE9IEFTVF9GT1JNQVRfU0xJTkVBUikKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXMg
 PSBhc3Rfc2V0X3JlYWRfZm9ybWF0KGNoYW4sIG9yaWdpbmFsX3JlYWRfZm10KTsKKysgICAgICAg
 ICAgICBpZiAocmVzKQorKyAgICAgICAgICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5h
 YmxlIHRvIHJlc3RvcmUgcmVhZCBmb3JtYXQgb24gJyVzJ1xuIiwgY2hhbi0+bmFtZSk7CisrICAg
 ICAgICB9CisrICAgICAgICBpZiAob3JpZ2luYWxfd3JpdGVfZm10ICE9IEFTVF9GT1JNQVRfU0xJ
 TkVBUikKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXMgPSBhc3Rfc2V0X3dyaXRlX2Zvcm1h
 dChjaGFuLCBvcmlnaW5hbF93cml0ZV9mbXQpOworKyAgICAgICAgICAgIGlmIChyZXMpCisrICAg
 ICAgICAgICAgICAgIGFzdF9sb2coTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVzdG9yZSB3cml0
 ZSBmb3JtYXQgb24gJyVzJ1xuIiwgY2hhbi0+bmFtZSk7CisrICAgICAgICB9CisrICAgICAgICB0
 MzBfdGVybWluYXRlKCZmYXgudDMwX3N0YXRlKTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsK
 KysgICAgICAgIGFzdF9sb2coTE9HX1dBUk5JTkcsICJDb3VsZCBub3QgYW5zd2VyIGNoYW5uZWwg
 JyVzJ1xuIiwgY2hhbi0+bmFtZSk7CisrICAgIH0KKysgICAgYXN0X21vZHVsZV91c2VyX3JlbW92
 ZSh1KTsKKysgICAgcmV0dXJuIHJlczsKKyt9CisrLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisrCisr
 c3RhdGljIGludCB1bmxvYWRfbW9kdWxlKHZvaWQpCisreworKwlpbnQgcmVzOworKworKwlhc3Rf
 bW9kdWxlX3VzZXJfaGFuZ3VwX2FsbCgpOworKworKwlyZXMgPSBhc3RfdW5yZWdpc3Rlcl9hcHBs
 aWNhdGlvbihhcHApOwkKKysJCisrCisrCXJldHVybiByZXM7CisrfQorKy8qLSBFbmQgb2YgZnVu
 Y3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0qLworKworK3N0YXRpYyBpbnQgbG9hZF9tb2R1bGUodm9pZCkKKyt7CisrCXJldHVybiBh
 c3RfcmVnaXN0ZXJfYXBwbGljYXRpb24oYXBwLCByeGZheF9leGVjLCBzeW5vcHNpcywgZGVzY3Jp
 cCk7CisrfQorKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworKworK0FTVF9NT0RVTEVfSU5GT19TVEFO
 REFSRChBU1RFUklTS19HUExfS0VZLCAiVHJpdmlhbCBGQVggUmVjZWl2ZSBBcHBsaWNhdGlvbiIp
 OworKworKy8qLSBFbmQgb2YgZmlsZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC1ydU4gYXN0ZXJpc2sub3JpZy9maWxl
 cy9wYXRjaC1hcHBzOjphcHBfdHhmYXguYyBhc3Rlcmlzay9maWxlcy9wYXRjaC1hcHBzOjphcHBf
 dHhmYXguYwotLS0gYXN0ZXJpc2sub3JpZy9maWxlcy9wYXRjaC1hcHBzOjphcHBfdHhmYXguYwkx
 OTcwLTAxLTAxIDA1OjAwOjAwLjAwMDAwMDAwMCArMDUwMAorKysgYXN0ZXJpc2svZmlsZXMvcGF0
 Y2gtYXBwczo6YXBwX3R4ZmF4LmMJMjAwNy0wNy0xMiAxNjo0NTo0Ny4wMDAwMDAwMDAgKzA2MDAK
 QEAgLTAsMCArMSwzMDkgQEAKKy0tLSBhcHBzL2FwcF90eGZheC5jLm9yaWcJVHVlIEp1bCAxMCAx
 NToyODoxMyAyMDA3CisrKysgYXBwcy9hcHBfdHhmYXguYwlUdWUgSnVsIDEwIDE1OjI3OjM3IDIw
 MDcKK0BAIC0wLDAgKzEsMzA2IEBACisrLyoKKysgKiBBc3RlcmlzayAtLSBBIHRlbGVwaG9ueSB0
 b29sa2l0IGZvciBMaW51eC4KKysgKgorKyAqIFRyaXZpYWwgYXBwbGljYXRpb24gdG8gc2VuZCBh
 IFRJRkYgZmlsZSBhcyBhIEZBWAorKyAqIAorKyAqIENvcHlyaWdodCAoQykgMjAwMywgU3RldmUg
 VW5kZXJ3b29kCisrICoKKysgKiBTdGV2ZSBVbmRlcndvb2QgPHN0ZXZldUBjb3BwaWNlLm9yZz4K
 KysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRl
 ciB0aGUgdGVybXMgb2YKKysgKiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKi8K
 KysKKysvKioqIE1PRFVMRUlORk8KKysgICAgICAgICA8ZGVwZW5kPnNwYW5kc3A8L2RlcGVuZD4K
 KysqKiovCisrIAorKyNpbmNsdWRlICJhc3Rlcmlzay5oIgorKworK0FTVEVSSVNLX0ZJTEVfVkVS
 U0lPTihfX0ZJTEVfXywgIiRSZXZpc2lvbjokIikKKysKKysjaW5jbHVkZSA8c3RyaW5nLmg+Cisr
 I2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDxpbnR0
 eXBlcy5oPgorKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisrI2luY2x1ZGUgPGVycm5vLmg+CisrI2lu
 Y2x1ZGUgPHRpZmZpby5oPgorKworKyNpbmNsdWRlIDxzcGFuZHNwLmg+CisrCisrI2luY2x1ZGUg
 ImFzdGVyaXNrL2xvY2suaCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svZmlsZS5oIgorKyNpbmNsdWRl
 ICJhc3Rlcmlzay9sb2dnZXIuaCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svY2hhbm5lbC5oIgorKyNp
 bmNsdWRlICJhc3Rlcmlzay9wYnguaCIKKysjaW5jbHVkZSAiYXN0ZXJpc2svbW9kdWxlLmgiCisr
 CisrI2lmbmRlZiBBU1RfTU9EVUxFCisrI2RlZmluZSBBU1RfTU9EVUxFICJhcHBfdHhmYXgiCisr
 I2VuZGlmCisrCisrc3RhdGljIGNoYXIgKmFwcCA9ICJUeEZBWCI7CisrCisrc3RhdGljIGNoYXIg
 KnN5bm9wc2lzID0gIlNlbmQgYSBGQVggZmlsZSI7CisrCisrc3RhdGljIGNoYXIgKmRlc2NyaXAg
 PSAKKysiICBUeEZBWChmaWxlbmFtZVt8Y2FsbGVyXVt8ZGVidWddKTogIFNlbmQgYSBnaXZlbiBU
 SUZGIGZpbGUgdG8gdGhlIGNoYW5uZWwgYXMgYSBGQVguXG4iCisrIlRoZSBcImNhbGxlclwiIG9w
 dGlvbiBtYWtlcyB0aGUgYXBwbGljYXRpb24gYmVoYXZlIGFzIGEgY2FsbGluZyBtYWNoaW5lLFxu
 IgorKyJyYXRoZXIgdGhhbiB0aGUgYW5zd2VyaW5nIG1hY2hpbmUuIFRoZSBkZWZhdWx0IGJlaGF2
 aW91ciBpcyB0byBiZWhhdmUgYXNcbiIKKysiYW4gYW5zd2VyaW5nIG1hY2hpbmUuXG4iCisrIlVz
 ZXMgTE9DQUxTVEFUSU9OSUQgdG8gaWRlbnRpZnkgaXRzZWxmIHRvIHRoZSByZW1vdGUgZW5kLlxu
 IgorKyIgICAgIExPQ0FMSEVBREVSSU5GTyB0byBnZW5lcmF0ZSBhIGhlYWRlciBsaW5lIG9uIGVh
 Y2ggcGFnZS5cbiIKKysiU2V0cyBSRU1PVEVTVEFUSU9OSUQgdG8gdGhlIHJlY2VpdmVyIENTSUQu
 XG4iCisrIlJldHVybnMgLTEgd2hlbiB0aGUgdXNlciBoYW5ncyB1cCwgb3IgaWYgdGhlIGZpbGUg
 ZG9lcyBub3QgZXhpc3QuXG4iCisrIlJldHVybnMgMCBvdGhlcndpc2UuXG4iOworKworKyNkZWZp
 bmUgTUFYX0JMT0NLX1NJWkUgMjQwCisrCisrc3RhdGljIHZvaWQgc3Bhbl9tZXNzYWdlKGludCBs
 ZXZlbCwgY29uc3QgY2hhciAqbXNnKQorK3sKKysgICAgaW50IGFzdF9sZXZlbDsKKysgICAgCisr
 ICAgIGlmIChsZXZlbCA9PSBTUEFOX0xPR19XQVJOSU5HKQorKyAgICAgICAgYXN0X2xldmVsID0g
 X19MT0dfV0FSTklORzsKKysgICAgZWxzZSBpZiAobGV2ZWwgPT0gU1BBTl9MT0dfV0FSTklORykK
 KysgICAgICAgIGFzdF9sZXZlbCA9IF9fTE9HX1dBUk5JTkc7CisrICAgIGVsc2UKKysgICAgICAg
 IGFzdF9sZXZlbCA9IF9fTE9HX0RFQlVHOworKyAgICBhc3RfbG9nKGFzdF9sZXZlbCwgX19GSUxF
 X18sIF9fTElORV9fLCBfX1BSRVRUWV9GVU5DVElPTl9fLCBtc2cpOworK30KKysvKi0gRW5kIG9m
 IGZ1bmN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tKi8KKysKKysjaWYgMAorK3N0YXRpYyB2b2lkIHQzMF9mbHVzaCh0MzBfc3RhdGVf
 dCAqcywgaW50IHdoaWNoKQorK3sKKysgICAgLyogVE9ETzogKi8KKyt9CisrLyotIEVuZCBvZiBm
 dW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLSovCisrI2VuZGlmCisrCisrc3RhdGljIHZvaWQgcGhhc2VfZV9oYW5kbGVyKHQzMF9z
 dGF0ZV90ICpzLCB2b2lkICp1c2VyX2RhdGEsIGludCByZXN1bHQpCisreworKyAgICBzdHJ1Y3Qg
 YXN0X2NoYW5uZWwgKmNoYW47CisrICAgIGNoYXIgZmFyX2lkZW50WzIxXTsKKysgICAgCisrICAg
 IGNoYW4gPSAoc3RydWN0IGFzdF9jaGFubmVsICopIHVzZXJfZGF0YTsKKysgICAgaWYgKHJlc3Vs
 dCA9PSBUMzBfRVJSX09LKQorKyAgICB7CisrICAgICAgICB0MzBfZ2V0X2Zhcl9pZGVudChzLCBm
 YXJfaWRlbnQpOworKyAgICAgICAgcGJ4X2J1aWx0aW5fc2V0dmFyX2hlbHBlcihjaGFuLCAiUkVN
 T1RFU1RBVElPTklEIiwgZmFyX2lkZW50KTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysg
 ICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKKysg
 ICAgICAgIGFzdF9sb2coTE9HX0RFQlVHLCAiRmF4IHNlbmQgbm90IHN1Y2Nlc3NmdWwgLSByZXN1
 bHQgKCVkKSAlcy5cbiIsIHJlc3VsdCwgdDMwX2NvbXBsZXRpb25fY29kZV90b19zdHIocmVzdWx0
 KSk7CisrICAgICAgICBhc3RfbG9nKExPR19ERUJVRywgIj09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxu
 Iik7CisrICAgIH0KKyt9CisrLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisrCisrc3RhdGljIGludCB0
 eGZheF9leGVjKHN0cnVjdCBhc3RfY2hhbm5lbCAqY2hhbiwgdm9pZCAqZGF0YSkKKyt7CisrICAg
 IGludCByZXMgPSAwOworKyAgICBjaGFyIHNvdXJjZV9maWxlWzI1Nl07CisrICAgIGNoYXIgKnM7
 CisrICAgIGNoYXIgKnQ7CisrICAgIGNoYXIgKnY7CisrICAgIGNvbnN0IGNoYXIgKng7CisrICAg
 IGludCBvcHRpb247CisrICAgIGludCBsZW47CisrICAgIGZheF9zdGF0ZV90IGZheDsKKysgICAg
 aW50IGNhbGxpbmdfcGFydHk7CisrICAgIGludCB2ZXJib3NlOworKyAgICBpbnQgc2FtcGxlczsK
 KysgICAgCisrICAgIHN0cnVjdCBhc3RfbW9kdWxlX3VzZXIgKnU7CisrICAgIHN0cnVjdCBhc3Rf
 ZnJhbWUgKmluZiA9IE5VTEw7CisrICAgIHN0cnVjdCBhc3RfZnJhbWUgb3V0ZjsKKysKKysgICAg
 aW50IG9yaWdpbmFsX3JlYWRfZm10OworKyAgICBpbnQgb3JpZ2luYWxfd3JpdGVfZm10OworKyAg
 ICAKKysgICAgdWludDhfdCBfX2J1ZltzaXplb2YodWludDE2X3QpKk1BWF9CTE9DS19TSVpFICsg
 MipBU1RfRlJJRU5ETFlfT0ZGU0VUXTsKKysgICAgdWludDhfdCAqYnVmID0gX19idWYgKyBBU1Rf
 RlJJRU5ETFlfT0ZGU0VUOworKworKyAgICBpZiAoY2hhbiA9PSBOVUxMKQorKyAgICB7CisrICAg
 ICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiRmF4IHRyYW5zbWl0IGNoYW5uZWwgaXMgTlVMTC4g
 R2l2aW5nIHVwLlxuIik7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgIH0KKysKKysgICAgc3Bh
 bl9zZXRfbWVzc2FnZV9oYW5kbGVyKHNwYW5fbWVzc2FnZSk7CisrCisrICAgIC8qIFRoZSBuZXh0
 IGZldyBsaW5lcyBvZiBjb2RlIHBhcnNlIG91dCB0aGUgZmlsZW5hbWUgYW5kIGhlYWRlciBmcm9t
 IHRoZSBpbnB1dCBzdHJpbmcgKi8KKysgICAgaWYgKGRhdGEgPT0gTlVMTCkKKysgICAgeworKyAg
 ICAgICAgLyogTm8gZGF0YSBpbXBsaWVzIG5vIGZpbGVuYW1lIG9yIGFueXRoaW5nIGlzIHByZXNl
 bnQgKi8KKysgICAgICAgIGFzdF9sb2coTE9HX1dBUk5JTkcsICJUeGZheCByZXF1aXJlcyBhbiBh
 cmd1bWVudCAoZmlsZW5hbWUpXG4iKTsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorKyAg
 ICAKKysgICAgY2FsbGluZ19wYXJ0eSA9IEZBTFNFOworKyAgICB2ZXJib3NlID0gRkFMU0U7Cisr
 ICAgIHNvdXJjZV9maWxlWzBdID0gJ1wwJzsgCisrCisrICAgIGZvciAob3B0aW9uID0gMCwgdiA9
 IHMgPSBkYXRhOyAgdjsgIG9wdGlvbisrLCBzKyspCisrICAgIHsKKysgICAgICAgIHQgPSBzOwor
 KyAgICAgICAgdiA9IHN0cmNocihzLCAnfCcpOworKyAgICAgICAgcyA9ICh2KSAgPyAgdiAgOiAg
 cyArIHN0cmxlbihzKTsKKysgICAgICAgIHN0cm5jcHkoKGNoYXIgKikgYnVmLCB0LCBzIC0gdCk7
 CisrICAgICAgICBidWZbcyAtIHRdID0gJ1wwJzsKKysgICAgICAgIGlmIChvcHRpb24gPT0gMCkK
 KysgICAgICAgIHsKKysgICAgICAgICAgICAvKiBUaGUgZmlyc3Qgb3B0aW9uIGlzIGFsd2F5cyB0
 aGUgZmlsZSBuYW1lICovCisrICAgICAgICAgICAgbGVuID0gcyAtIHQ7CisrICAgICAgICAgICAg
 aWYgKGxlbiA+IDI1NSkKKysgICAgICAgICAgICAgICAgbGVuID0gMjU1OworKyAgICAgICAgICAg
 IHN0cm5jcHkoc291cmNlX2ZpbGUsIHQsIGxlbik7CisrICAgICAgICAgICAgc291cmNlX2ZpbGVb
 bGVuXSA9ICdcMCc7CisrICAgICAgICB9CisrICAgICAgICBlbHNlIGlmIChzdHJuY21wKCJjYWxs
 ZXIiLCB0LCBzIC0gdCkgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBjYWxsaW5nX3Bh
 cnR5ID0gVFJVRTsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAoImRlYnVn
 IiwgdCwgcyAtIHQpID09IDApCisrICAgICAgICB7CisrICAgICAgICAgICAgdmVyYm9zZSA9IFRS
 VUU7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLyogRG9uZSBwYXJzaW5nICovCisrCisr
 ICAgIHUgPSBhc3RfbW9kdWxlX3VzZXJfYWRkKGNoYW4pOworKworKyAgICBpZiAoY2hhbi0+X3N0
 YXRlICE9IEFTVF9TVEFURV9VUCkKKysgICAgeworKyAgICAgICAgLyogU2hvdWxkbid0IG5lZWQg
 dGhpcywgYnV0IGNoZWNraW5nIHRvIHNlZSBpZiBjaGFubmVsIGlzIGFscmVhZHkgYW5zd2VyZWQK
 KysgICAgICAgICAqIFRoZW9yZXRpY2FsbHkgYXN0ZXJpc2sgc2hvdWxkIGFscmVhZHkgaGF2ZSBh
 bnN3ZXJlZCBiZWZvcmUgcnVubmluZyB0aGUgYXBwICovCisrICAgICAgICByZXMgPSBhc3RfYW5z
 d2VyKGNoYW4pOworKyAgICB9CisrICAgIAorKyAgICBpZiAoIXJlcykKKysgICAgeworKyAgICAg
 ICAgb3JpZ2luYWxfcmVhZF9mbXQgPSBjaGFuLT5yZWFkZm9ybWF0OworKyAgICAgICAgaWYgKG9y
 aWdpbmFsX3JlYWRfZm10ICE9IEFTVF9GT1JNQVRfU0xJTkVBUikKKysgICAgICAgIHsKKysgICAg
 ICAgICAgICByZXMgPSBhc3Rfc2V0X3JlYWRfZm9ybWF0KGNoYW4sIEFTVF9GT1JNQVRfU0xJTkVB
 Uik7CisrICAgICAgICAgICAgaWYgKHJlcyA8IDApCisrICAgICAgICAgICAgeworKyAgICAgICAg
 ICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHNldCB0byBsaW5lYXIgcmVh
 ZCBtb2RlLCBnaXZpbmcgdXBcbiIpOworKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisrICAg
 ICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgb3JpZ2luYWxfd3JpdGVfZm10ID0gY2hh
 bi0+d3JpdGVmb3JtYXQ7CisrICAgICAgICBpZiAob3JpZ2luYWxfd3JpdGVfZm10ICE9IEFTVF9G
 T1JNQVRfU0xJTkVBUikKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXMgPSBhc3Rfc2V0X3dy
 aXRlX2Zvcm1hdChjaGFuLCBBU1RfRk9STUFUX1NMSU5FQVIpOworKyAgICAgICAgICAgIGlmIChy
 ZXMgPCAwKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgYXN0X2xvZyhMT0dfV0FS
 TklORywgIlVuYWJsZSB0byBzZXQgdG8gbGluZWFyIHdyaXRlIG1vZGUsIGdpdmluZyB1cFxuIik7
 CisrICAgICAgICAgICAgICAgIHJlcyA9IGFzdF9zZXRfcmVhZF9mb3JtYXQoY2hhbiwgb3JpZ2lu
 YWxfcmVhZF9mbXQpOworKyAgICAgICAgICAgICAgICBpZiAocmVzKQorKyAgICAgICAgICAgICAg
 ICAgICAgYXN0X2xvZyhMT0dfV0FSTklORywgIlVuYWJsZSB0byByZXN0b3JlIHJlYWQgZm9ybWF0
 IG9uICclcydcbiIsIGNoYW4tPm5hbWUpOworKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7Cisr
 ICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgZmF4X2luaXQoJmZheCwgY2FsbGlu
 Z19wYXJ0eSk7CisrICAgICAgICBpZiAodmVyYm9zZSkKKysJICAgIGZheC5sb2dnaW5nLmxldmVs
 ID0gU1BBTl9MT0dfU0hPV19TRVZFUklUWSB8IFNQQU5fTE9HX1NIT1dfUFJPVE9DT0wgfCBTUEFO
 X0xPR19GTE9XOworKworKyAgICAgICAgeCA9IHBieF9idWlsdGluX2dldHZhcl9oZWxwZXIoY2hh
 biwgIkxPQ0FMU1RBVElPTklEIik7CisrICAgICAgICBpZiAoeCAgJiYgIHhbMF0pCisrICAgICAg
 ICAgICAgdDMwX3NldF9sb2NhbF9pZGVudCgmZmF4LnQzMF9zdGF0ZSwgeCk7CisrICAgICAgICB4
 ID0gcGJ4X2J1aWx0aW5fZ2V0dmFyX2hlbHBlcihjaGFuLCAiTE9DQUxIRUFERVJJTkZPIik7Cisr
 ICAgICAgICBpZiAoeCAgJiYgIHhbMF0pCisrICAgICAgICAgICAgdDMwX3NldF9oZWFkZXJfaW5m
 bygmZmF4LnQzMF9zdGF0ZSwgeCk7CisrICAgICAgICB0MzBfc2V0X3R4X2ZpbGUoJmZheC50MzBf
 c3RhdGUsIHNvdXJjZV9maWxlLCAtMSwgLTEpOworKyAgICAgICAgLy90MzBfc2V0X3BoYXNlX2Jf
 aGFuZGxlcigmZmF4LnQzMF9zdGF0ZSwgcGhhc2VfYl9oYW5kbGVyLCBjaGFuKTsKKysgICAgICAg
 IC8vdDMwX3NldF9waGFzZV9kX2hhbmRsZXIoJmZheC50MzBfc3RhdGUsIHBoYXNlX2RfaGFuZGxl
 ciwgY2hhbik7CisrICAgICAgICB0MzBfc2V0X3BoYXNlX2VfaGFuZGxlcigmZmF4LnQzMF9zdGF0
 ZSwgcGhhc2VfZV9oYW5kbGVyLCBjaGFuKTsKKysgICAgICAgIHQzMF9zZXRfZWNtX2NhcGFiaWxp
 dHkoJmZheC50MzBfc3RhdGUsIFRSVUUpOworKyAgICAgICAgdDMwX3NldF9zdXBwb3J0ZWRfY29t
 cHJlc3Npb25zKCZmYXgudDMwX3N0YXRlLCBUMzBfU1VQUE9SVF9UNF8xRF9DT01QUkVTU0lPTiB8
 IFQzMF9TVVBQT1JUX1Q0XzJEX0NPTVBSRVNTSU9OIHwgVDMwX1NVUFBPUlRfVDZfQ09NUFJFU1NJ
 T04pOworKyAgICAgICAgd2hpbGUgKGFzdF93YWl0Zm9yKGNoYW4sIC0xKSA+IC0xKQorKyAgICAg
 ICAgeworKyAgICAgICAgICAgIGluZiA9IGFzdF9yZWFkKGNoYW4pOworKyAgICAgICAgICAgIGlm
 IChpbmYgPT0gTlVMTCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHJlcyA9IC0x
 OworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAg
 aWYgKGluZi0+ZnJhbWV0eXBlID09IEFTVF9GUkFNRV9WT0lDRSkKKysgICAgICAgICAgICB7Cisr
 ICAgICAgICAgICAgICAgIGlmIChmYXhfcngoJmZheCwgaW5mLT5kYXRhLCBpbmYtPnNhbXBsZXMp
 KQorKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIHNhbXBsZXMg
 PSAoaW5mLT5zYW1wbGVzIDw9IE1BWF9CTE9DS19TSVpFKSAgPyAgaW5mLT5zYW1wbGVzICA6ICBN
 QVhfQkxPQ0tfU0laRTsKKysgICAgICAgICAgICAgICAgbGVuID0gZmF4X3R4KCZmYXgsIChpbnQx
 Nl90ICopICZidWZbQVNUX0ZSSUVORExZX09GRlNFVF0sIHNhbXBsZXMpOworKyAgICAgICAgICAg
 ICAgICBpZiAobGVuKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICBt
 ZW1zZXQoJm91dGYsIDAsIHNpemVvZihvdXRmKSk7CisrICAgICAgICAgICAgICAgICAgICBvdXRm
 LmZyYW1ldHlwZSA9IEFTVF9GUkFNRV9WT0lDRTsKKysgICAgICAgICAgICAgICAgICAgIG91dGYu
 c3ViY2xhc3MgPSBBU1RfRk9STUFUX1NMSU5FQVI7CisrICAgICAgICAgICAgICAgICAgICBvdXRm
 LmRhdGFsZW4gPSBsZW4qc2l6ZW9mKGludDE2X3QpOworKyAgICAgICAgICAgICAgICAgICAgb3V0
 Zi5zYW1wbGVzID0gbGVuOworKyAgICAgICAgICAgICAgICAgICAgb3V0Zi5kYXRhID0gJmJ1ZltB
 U1RfRlJJRU5ETFlfT0ZGU0VUXTsKKysgICAgICAgICAgICAgICAgICAgIG91dGYub2Zmc2V0ID0g
 QVNUX0ZSSUVORExZX09GRlNFVDsKKysgICAgICAgICAgICAgICAgICAgIGlmIChhc3Rfd3JpdGUo
 Y2hhbiwgJm91dGYpIDwgMCkKKysgICAgICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAg
 ICAgICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHdyaXRlIGZyYW1lIHRv
 IGNoYW5uZWw7ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworKyAgICAgICAgICAgICAgICAgICAg
 ICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICB9Cisr
 ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGFzdF9mcmZyZWUoaW5mKTsKKysgICAgICAgIH0K
 KysgICAgICAgIGlmIChpbmYgPT0gTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBhc3Rf
 bG9nKExPR19ERUJVRywgIkdvdCBoYW5ndXBcbiIpOworKyAgICAgICAgICAgIHJlcyA9IC0xOwor
 KyAgICAgICAgfQorKyAgICAgICAgaWYgKG9yaWdpbmFsX3JlYWRfZm10ICE9IEFTVF9GT1JNQVRf
 U0xJTkVBUikKKysgICAgICAgIHsKKysgICAgICAgICAgICByZXMgPSBhc3Rfc2V0X3JlYWRfZm9y
 bWF0KGNoYW4sIG9yaWdpbmFsX3JlYWRfZm10KTsKKysgICAgICAgICAgICBpZiAocmVzKQorKyAg
 ICAgICAgICAgICAgICBhc3RfbG9nKExPR19XQVJOSU5HLCAiVW5hYmxlIHRvIHJlc3RvcmUgcmVh
 ZCBmb3JtYXQgb24gJyVzJ1xuIiwgY2hhbi0+bmFtZSk7CisrICAgICAgICB9CisrICAgICAgICBp
 ZiAob3JpZ2luYWxfd3JpdGVfZm10ICE9IEFTVF9GT1JNQVRfU0xJTkVBUikKKysgICAgICAgIHsK
 KysgICAgICAgICAgICByZXMgPSBhc3Rfc2V0X3dyaXRlX2Zvcm1hdChjaGFuLCBvcmlnaW5hbF93
 cml0ZV9mbXQpOworKyAgICAgICAgICAgIGlmIChyZXMpCisrICAgICAgICAgICAgICAgIGFzdF9s
 b2coTE9HX1dBUk5JTkcsICJVbmFibGUgdG8gcmVzdG9yZSB3cml0ZSBmb3JtYXQgb24gJyVzJ1xu
 IiwgY2hhbi0+bmFtZSk7CisrICAgICAgICB9CisrICAgICAgICB0MzBfdGVybWluYXRlKCZmYXgu
 dDMwX3N0YXRlKTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysgICAgICAgIGFzdF9sb2co
 TE9HX1dBUk5JTkcsICJDb3VsZCBub3QgYW5zd2VyIGNoYW5uZWwgJyVzJ1xuIiwgY2hhbi0+bmFt
 ZSk7CisrICAgIH0KKysgICAgYXN0X21vZHVsZV91c2VyX3JlbW92ZSh1KTsKKysgICAgcmV0dXJu
 IHJlczsKKyt9CisrLyotIEVuZCBvZiBmdW5jdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisrCisrc3RhdGljIGludCB1bmxvYWRf
 bW9kdWxlKHZvaWQpCisreworKwlpbnQgcmVzOworKworKwlhc3RfbW9kdWxlX3VzZXJfaGFuZ3Vw
 X2FsbCgpOworKworKwlyZXMgPSBhc3RfdW5yZWdpc3Rlcl9hcHBsaWNhdGlvbihhcHApOwkKKysJ
 CisrCisrCXJldHVybiByZXM7CisrfQorKy8qLSBFbmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworKworK3N0YXRp
 YyBpbnQgbG9hZF9tb2R1bGUodm9pZCkKKyt7CisrICAgIHJldHVybiBhc3RfcmVnaXN0ZXJfYXBw
 bGljYXRpb24oYXBwLCB0eGZheF9leGVjLCBzeW5vcHNpcywgZGVzY3JpcCk7CisrfQorKy8qLSBF
 bmQgb2YgZnVuY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tLS0qLworKworK0FTVF9NT0RVTEVfSU5GT19TVEFOREFSRChBU1RFUklTS19H
 UExfS0VZLCAiVHJpdmlhbCBGQVggVHJhbnNtaXQgQXBwbGljYXRpb24iKTsKKysKKysvKi0gRW5k
 IG9mIGZpbGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
 LS0tLS0tLS0tLS0tKi8KZGlmZiAtcnVOIGFzdGVyaXNrLm9yaWcvZmlsZXMvcGF0Y2gtYnVpbGRf
 dG9vbHM6Om1lbnVzZWxlY3QtZGVwcy5pbiBhc3Rlcmlzay9maWxlcy9wYXRjaC1idWlsZF90b29s
 czo6bWVudXNlbGVjdC1kZXBzLmluCi0tLSBhc3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLWJ1aWxk
 X3Rvb2xzOjptZW51c2VsZWN0LWRlcHMuaW4JMTk3MC0wMS0wMSAwNTowMDowMC4wMDAwMDAwMDAg
 KzA1MDAKKysrIGFzdGVyaXNrL2ZpbGVzL3BhdGNoLWJ1aWxkX3Rvb2xzOjptZW51c2VsZWN0LWRl
 cHMuaW4JMjAwNy0wNy0xMiAxNjo0NTo0Ny4wMDAwMDAwMDAgKzA2MDAKQEAgLTAsMCArMSwxNCBA
 QAorLS0tIGJ1aWxkX3Rvb2xzL21lbnVzZWxlY3QtZGVwcy5pbi5vcmlnCTIwMDYtMDktMDMgMTU6
 NTA6MzIuMDAwMDAwMDAwICswODAwCisrKysgYnVpbGRfdG9vbHMvbWVudXNlbGVjdC1kZXBzLmlu
 CTIwMDYtMDktMDMgMTU6NTA6NDQuMDAwMDAwMDAwICswODAwCitAQCAtMTcsMTAgKzE3LDExIEBA
 CisgUEdTUUw9QFBCWF9QR1NRTEAKKyBQT1BUPUBQQlhfUE9QVEAKKyBQUkk9QFBCWF9QUklACisg
 UVQ9QFBCWF9RVEAKKyBSQURJVVM9QFBCWF9SQURJVVNACisrU1BBTkRTUD1AUEJYX1NQQU5EU1BA
 CisgU1BFRVg9QFBCWF9TUEVFWEAKKyBTUUxJVEU9QFBCWF9TUUxJVEVACisgU1NMPUBQQlhfT1BF
 TlNTTEAKKyBUT05FWk9ORT1AUEJYX1RPTkVaT05FQAorIFVOSVhPREJDPUBQQlhfVU5JWE9EQkNA
 CmRpZmYgLXJ1TiBhc3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLWNvbmZpZ3VyZSBhc3Rlcmlzay9m
 aWxlcy9wYXRjaC1jb25maWd1cmUKLS0tIGFzdGVyaXNrLm9yaWcvZmlsZXMvcGF0Y2gtY29uZmln
 dXJlCTIwMDctMDQtMTMgMTQ6MDY6MDUuMDAwMDAwMDAwICswNjAwCisrKyBhc3Rlcmlzay9maWxl
 cy9wYXRjaC1jb25maWd1cmUJMjAwNy0wNy0xMiAxNjo0NTo0Ny4wMDAwMDAwMDAgKzA2MDAKQEAg
 LTEsMjcgKzEsNjIgQEAKLQotJEZyZWVCU0Q6IHBvcnRzL25ldC9hc3Rlcmlzay9maWxlcy9wYXRj
 aC1jb25maWd1cmUsdiAxLjEgMjAwNy8wNC8xMyAwODowNjowNSBzb2JvbWF4IEV4cCAkCi0KLS0t
 LSBjb25maWd1cmUub3JpZwotKysrIGNvbmZpZ3VyZQotQEAgLTIzNzc2LDcgKzIzNzc2LDcgQEAK
 LSAgIGVjaG8gJEVDSE9fTiAiKGNhY2hlZCkgJEVDSE9fQyIgPiY2Ci0gZWxzZQotICAgYWNfY2hl
 Y2tfbGliX3NhdmVfTElCUz0kTElCUwotLUxJQlM9Ii1sb2RiYyAke3BieGxpYmRpcn0gLWxsdGRs
 ICRMSUJTIgotK0xJQlM9Ii1sb2RiYyAke3BieGxpYmRpcn0gJExJQlMiCi0gY2F0ID5jb25mdGVz
 dC4kYWNfZXh0IDw8X0FDRU9GCi0gLyogY29uZmRlZnMuaC4gICovCi0gX0FDRU9GCi1AQCAtMjM4
 NTUsNyArMjM4NTUsNyBAQAorLS0tIGNvbmZpZ3VyZS5vcmlnCUZyaSBKdW4gMjkgMjA6MTg6MzYg
 MjAwNworKysrIGNvbmZpZ3VyZQlUdWUgSnVsIDEwIDE2OjA1OjIwIDIwMDcKK0BAIC04MjAsNiAr
 ODIwLDEwIEBACisgUkFESVVTX0lOQ0xVREUKKyBSQURJVVNfRElSCisgUEJYX1JBRElVUworK1NQ
 QU5EU1BfTElCCisrU1BBTkRTUF9JTkNMVURFCisrU1BBTkRTUF9ESVIKKytQQlhfU1BBTkRTUAor
 IFNQRUVYX0xJQgorIFNQRUVYX0lOQ0xVREUKKyBTUEVFWF9ESVIKK0BAIC0xNTI1LDYgKzE1Mjks
 NyBAQAorICAgLS13aXRoLWgzMjM9UEFUSCAgICAgICAgdXNlIE9wZW5IMzIzIGZpbGVzIGluIFBB
 VEgKKyAgIC0td2l0aC1xdD1QQVRIICAgICAgICAgIHVzZSBRdCBmaWxlcyBpbiBQQVRICisgICAt
 LXdpdGgtcmFkaXVzPVBBVEggICAgICB1c2UgUmFkaXVzIENsaWVudCBmaWxlcyBpbiBQQVRICisr
 ICAtLXdpdGgtc3BhbmRzcD1QQVRIICAgICB1c2UgU3BhbmRzcCBsaWJyYXJ5IGZpbGVzIGluIFBB
 VEgKKyAgIC0td2l0aC1zcGVleD1QQVRIICAgICAgIHVzZSBTcGVleCBmaWxlcyBpbiBQQVRICisg
 ICAtLXdpdGgtc3FsaXRlPVBBVEggICAgICB1c2UgU1FMaXRlIGZpbGVzIGluIFBBVEgKKyAgIC0t
 d2l0aC1zdXBwc2Vydj1QQVRIICAgIHVzZSBtSVNETiBTdXBwbGVtZW50YWwgU2VydmljZXMgZmls
 ZXMgaW4gUEFUSAorQEAgLTgyOTcsNiArODMwMiwzNiBAQAorIAorIFBCWF9SQURJVVM9MAorIAor
 K1NQQU5EU1BfREVTQ1JJUD0iU3BhbmRzcCBMaWJyYXJ5IgorK1NQQU5EU1BfT1BUSU9OPSJzcGFu
 ZHNwIgorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3BhbmRzcCB3YXMgZ2l2ZW4uCisraWYg
 dGVzdCAiJHt3aXRoX3NwYW5kc3Arc2V0fSIgPSBzZXQ7IHRoZW4KKysgIHdpdGh2YWw9JHdpdGhf
 c3BhbmRzcDsKKytjYXNlICR7d2l0aHZhbH0gaW4KKysgICAgIG58bm8pCisrICAgICBVU0VfU1BB
 TkRTUD1ubworKyAgICAgUEJYX1NQQU5EU1A9MAorKyAgICAgOzsKKysgICAgIHl8eWV8eWVzKQor
 KyAgICAgU1BBTkRTUF9ESVI9Ii91c3IvbG9jYWwiCisrICAgICBTUEFORFNQX0xJQj0iLUwvdXNy
 L2xvY2FsL2xpYiAtbHNwYW5kc3AiCisrICAgICBTUEFORFNQX0lOQ0xVREU9Ii1JJHtTUEFORFNQ
 X0RJUn0vaW5jbHVkZSIKKysgICAgIFNQQU5EU1BfTUFOREFUT1JZPSJ5ZXMiCisrICAgICBQQlhf
 U1BBTkRTUD0xCisrICAgICA7OworKyAgICAgKikKKysgICAgIFNQQU5EU1BfRElSPSIke3dpdGh2
 YWx9IgorKyAgICAgU1BBTkRTUF9MSUI9Ii1MJHtTUEFORFNQX0RJUn0vbGliIC1sc3BhbmRzcCIK
 KysgICAgIFNQQU5EU1BfSU5DTFVERT0iLUkke1NQQU5EU1BfRElSfS9pbmNsdWRlIgorKyAgICAg
 U1BBTkRTUF9NQU5EQVRPUlk9InllcyIKKysgICAgIFBCWF9TUEFORFNQPTEKKysgICAgIDs7Cisr
 ZXNhYworKworK2ZpCisrCisrCiAgCiAgCi0gICAgaWYgdGVzdCAiJHtBU1RfVU5JWE9EQkNfRk9V
 TkR9IiA9ICJ5ZXMiOyB0aGVuCi0tICAgICAgVU5JWE9EQkNfTElCPSItbG9kYmMgLWxsdGRsIgot
 KyAgICAgIFVOSVhPREJDX0xJQj0iLWxvZGJjIgotICAgICAgIFVOSVhPREJDX0hFQURFUl9GT1VO
 RD0iMSIKLSAgICAgICBpZiB0ZXN0ICJ4JHtVTklYT0RCQ19ESVJ9IiAhPSAieCI7IHRoZW4KLSAg
 ICAgICAgICBVTklYT0RCQ19MSUI9IiR7cGJ4bGliZGlyfSAke1VOSVhPREJDX0xJQn0iCi1AQCAt
 MjgwNjUsNyArMjgwNjUsNyBAQAorIAorQEAgLTI1NDE2LDcgKzI1NDUxLDcgQEAKICAKICAJZmkK
 ICAKQEAgLTMwLDMgKzY1LDIzIEBACiAgCiAgCWlmIHRlc3QgIiR7SEFTX09QRU5IMzIzOi11bnNl
 dH0iICE9ICJ1bnNldCI7IHRoZW4KICAJICAgeyBlY2hvICIkYXNfbWU6JExJTkVOTzogY2hlY2tp
 bmcgT3BlbkgzMjMgaW5zdGFsbGF0aW9uIHZhbGlkaXR5IiA+JjUKK0BAIC0zMjAzOSw2ICszMjA3
 NCwxMCBAQAorIFJBRElVU19JTkNMVURFISRSQURJVVNfSU5DTFVERSRhY19kZWxpbQorIFJBRElV
 U19ESVIhJFJBRElVU19ESVIkYWNfZGVsaW0KKyBQQlhfUkFESVVTISRQQlhfUkFESVVTJGFjX2Rl
 bGltCisrU1BBTkRTUF9MSUIhJFNQQU5EU1BfTElCJGFjX2RlbGltCisrU1BBTkRTUF9JTkNMVURF
 ISRTUEFORFNQX0lOQ0xVREUkYWNfZGVsaW0KKytTUEFORFNQX0RJUiEkU1BBTkRTUF9ESVIkYWNf
 ZGVsaW0KKytQQlhfU1BBTkRTUCEkUEJYX1NQQU5EU1AkYWNfZGVsaW0KKyBTUEVFWF9MSUIhJFNQ
 RUVYX0xJQiRhY19kZWxpbQorIFNQRUVYX0lOQ0xVREUhJFNQRUVYX0lOQ0xVREUkYWNfZGVsaW0K
 KyBTUEVFWF9ESVIhJFNQRUVYX0RJUiRhY19kZWxpbQorQEAgLTMyMTI2LDcgKzMyMTY1LDcgQEAK
 KyBMVExJQk9CSlMhJExUTElCT0JKUyRhY19kZWxpbQorIF9BQ0VPRgorIAorLSAgaWYgdGVzdCBg
 c2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25mJCRzdWJzLnNlZCB8IGdyZXAgLWMgWGAg
 PSA5MjsgdGhlbgorKyAgaWYgdGVzdCBgc2VkIC1uICJzLy4qJGFjX2RlbGltXCQvWC9wIiBjb25m
 JCRzdWJzLnNlZCB8IGdyZXAgLWMgWGAgPSA5NjsgdGhlbgorICAgICBicmVhaworICAgZWxpZiAk
 YWNfbGFzdF90cnk7IHRoZW4KKyAgICAgeyB7IGVjaG8gIiRhc19tZTokTElORU5POiBlcnJvcjog
 Y291bGQgbm90IG1ha2UgJENPTkZJR19TVEFUVVMiID4mNQpkaWZmIC1ydU4gYXN0ZXJpc2sub3Jp
 Zy9maWxlcy9wYXRjaC1jb25maWd1cmUuYWMgYXN0ZXJpc2svZmlsZXMvcGF0Y2gtY29uZmlndXJl
 LmFjCi0tLSBhc3Rlcmlzay5vcmlnL2ZpbGVzL3BhdGNoLWNvbmZpZ3VyZS5hYwkxOTcwLTAxLTAx
 IDA1OjAwOjAwLjAwMDAwMDAwMCArMDUwMAorKysgYXN0ZXJpc2svZmlsZXMvcGF0Y2gtY29uZmln
 dXJlLmFjCTIwMDctMDctMTIgMTY6NDU6NDcuMDAwMDAwMDAwICswNjAwCkBAIC0wLDAgKzEsMTkg
 QEAKKy0tLSBjb25maWd1cmUuYWMub3JpZwlGcmkgSnVuIDI5IDIwOjE4OjM2IDIwMDcKKysrKyBj
 b25maWd1cmUuYWMJVHVlIEp1bCAxMCAxNDoxNDo0MCAyMDA3CitAQCAtMTk2LDYgKzE5Niw3IEBA
 CisgQVNUX0VYVF9MSUJfU0VUVVAoW09QRU5IMzIzXSwgW09wZW5IMzIzXSwgW2gzMjNdKQorIEFT
 VF9FWFRfTElCX1NFVFVQKFtRVF0sIFtRdF0sIFtxdF0pCisgQVNUX0VYVF9MSUJfU0VUVVAoW1JB
 RElVU10sIFtSYWRpdXMgQ2xpZW50XSwgW3JhZGl1c10pCisrQVNUX0VYVF9MSUJfU0VUVVAoW1NQ
 QU5EU1BdLCBbU3BhbmRzcCBMaWJyYXJ5XSwgW3NwYW5kc3BdKQorIEFTVF9FWFRfTElCX1NFVFVQ
 KFtTUEVFWF0sIFtTcGVleF0sIFtzcGVleF0pCisgQVNUX0VYVF9MSUJfU0VUVVAoW1NRTElURV0s
 IFtTUUxpdGVdLCBbc3FsaXRlXSkKKyBBU1RfRVhUX0xJQl9TRVRVUChbU1VQUFNFUlZdLCBbbUlT
 RE4gU3VwcGxlbWVudGFsIFNlcnZpY2VzXSwgW3N1cHBzZXJ2XSkKK0BAIC05MTIsNiArOTEzLDgg
 QEAKKyBBQ19MQU5HX1BPUAorIAorIEFTVF9FWFRfTElCX0NIRUNLKFtSQURJVVNdLCBbcmFkaXVz
 Y2xpZW50LW5nXSwgW3JjX3JlYWRfY29uZmlnXSwgW3JhZGl1c2NsaWVudC1uZy5oXSkKKysKKytB
 U1RfRVhUX0xJQl9DSEVDSyhbU1BBTkRTUF0sIFtzcGFuZHNwXSwgW2ZheF9pbml0XSwgW3NwYW5k
 c3AuaF0sIFstbHRpZmZdKQorIAorIEFTVF9FWFRfTElCX0NIRUNLKFtTUEVFWF0sIFtzcGVleF0s
 IFtzcGVleF9lbmNvZGVdLCBbc3BlZXgvc3BlZXguaF0sIFstbG1dKQorIApkaWZmIC1ydU4gYXN0
 ZXJpc2sub3JpZy9maWxlcy9wYXRjaC1tYWluOjp1dGlscy5jIGFzdGVyaXNrL2ZpbGVzL3BhdGNo
 LW1haW46OnV0aWxzLmMKLS0tIGFzdGVyaXNrLm9yaWcvZmlsZXMvcGF0Y2gtbWFpbjo6dXRpbHMu
 YwkyMDA3LTA0LTEzIDE0OjA2OjA1LjAwMDAwMDAwMCArMDYwMAorKysgYXN0ZXJpc2svZmlsZXMv
 cGF0Y2gtbWFpbjo6dXRpbHMuYwkxOTcwLTAxLTAxIDA1OjAwOjAwLjAwMDAwMDAwMCArMDUwMApA
 QCAtMSwxNCArMCwwIEBACi0KLSRGcmVlQlNEOiBwb3J0cy9uZXQvYXN0ZXJpc2svZmlsZXMvcGF0
 Y2gtbWFpbjo6dXRpbHMuYyx2IDEuMSAyMDA3LzA0LzEzIDA4OjA2OjA1IHNvYm9tYXggRXhwICQK
 LQotLS0tIG1haW4vdXRpbHMuYwotKysrIG1haW4vdXRpbHMuYwotQEAgLTU4LDcgKzU4LDcgQEAK
 LSBzdGF0aWMgY2hhciBiYXNlNjRbNjRdOwotIHN0YXRpYyBjaGFyIGIyYVsyNTZdOwotIAotLSNp
 ZiBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVk
 KCBfX05ldEJTRF9fICkgfHwgZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5f
 XykKLSsjaWYgKGRlZmluZWQoX19GcmVlQlNEX18pICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgNjAx
 MTAzKSB8fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBkZWZpbmVkKCBfX05ldEJTRF9fICkgfHwg
 ZGVmaW5lZChfX0FQUExFX18pIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSAKLSAvKiBkdWg/IEVS
 QU5HRSB2YWx1ZSBjb3BpZWQgZnJvbSB3ZWIuLi4gKi8KLSAjZGVmaW5lIEVSQU5HRSAzNApkaWZm
 IC1ydU4gYXN0ZXJpc2sub3JpZy9maWxlcy9wYXRjaC1tYWtlb3B0cy5pbiBhc3Rlcmlzay9maWxl
 cy9wYXRjaC1tYWtlb3B0cy5pbgotLS0gYXN0ZXJpc2sub3JpZy9maWxlcy9wYXRjaC1tYWtlb3B0
 cy5pbgkxOTcwLTAxLTAxIDA1OjAwOjAwLjAwMDAwMDAwMCArMDUwMAorKysgYXN0ZXJpc2svZmls
 ZXMvcGF0Y2gtbWFrZW9wdHMuaW4JMjAwNy0wNy0xMiAxNjo0NTo0Ny4wMDAwMDAwMDAgKzA2MDAK
 QEAgLTAsMCArMSwxNiBAQAorLS0tIG1ha2VvcHRzLmluLm9yaWcJMjAwNi0wOS0wMyAxNTo1Mzo0
 Ny4wMDAwMDAwMDAgKzA4MDAKKysrKyBtYWtlb3B0cy5pbgkyMDA2LTA5LTAzIDE1OjUzOjUzLjAw
 MDAwMDAwMCArMDgwMAorQEAgLTEyMCwxMCArMTIwLDEzIEBACisgUVRfTElCPUBRVF9MSUJACisg
 CisgUkFESVVTX0lOQ0xVREU9QFJBRElVU19JTkNMVURFQAorIFJBRElVU19MSUI9QFJBRElVU19M
 SUJACisgCisrU1BBTkRTUF9JTkNMVURFPUBTUEFORFNQX0lOQ0xVREVACisrU1BBTkRTUF9MSUI9
 QFNQQU5EU1BfTElCQAorKworIFNQRUVYX0lOQ0xVREU9QFNQRUVYX0lOQ0xVREVACisgU1BFRVhf
 TElCPUBTUEVFWF9MSUJACisgCisgU1FMSVRFX0lOQ0xVREU9QFNRTElURV9JTkNMVURFQAorIFNR
 TElURV9MSUI9QFNRTElURV9MSUJACmRpZmYgLXJ1TiBhc3Rlcmlzay5vcmlnL3BrZy1wbGlzdCBh
 c3Rlcmlzay9wa2ctcGxpc3QKLS0tIGFzdGVyaXNrLm9yaWcvcGtnLXBsaXN0CTIwMDctMDUtMjkg
 MDI6MjE6MDguMDAwMDAwMDAwICswNjAwCisrKyBhc3Rlcmlzay9wa2ctcGxpc3QJMjAwNy0wNy0x
 OCAxMDo1ODowOC4wMDAwMDAwMDAgKzA2MDAKQEAgLTI1Miw2ICsyNTIsNyBAQAogbGliL2FzdGVy
 aXNrL21vZHVsZXMvYXBwX3JlYWRmaWxlLnNvCiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9hcHBfcmVh
 bHRpbWUuc28KIGxpYi9hc3Rlcmlzay9tb2R1bGVzL2FwcF9yZWNvcmQuc28KKyUlV0lUSF9GQVgl
 JWxpYi9hc3Rlcmlzay9tb2R1bGVzL2FwcF9yeGZheC5zbwogbGliL2FzdGVyaXNrL21vZHVsZXMv
 YXBwX3NheXVuaXh0aW1lLnNvCiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9hcHBfc2VuZGR0bWYuc28K
 IGxpYi9hc3Rlcmlzay9tb2R1bGVzL2FwcF9zZW5kdGV4dC5zbwpAQCAtMjY2LDYgKzI2Nyw3IEBA
 CiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9hcHBfdGFsa2RldGVjdC5zbwogbGliL2FzdGVyaXNrL21v
 ZHVsZXMvYXBwX3Rlc3Quc28KIGxpYi9hc3Rlcmlzay9tb2R1bGVzL2FwcF90cmFuc2Zlci5zbwor
 JSVXSVRIX0ZBWCUlbGliL2FzdGVyaXNrL21vZHVsZXMvYXBwX3R4ZmF4LnNvCiBsaWIvYXN0ZXJp
 c2svbW9kdWxlcy9hcHBfdXJsLnNvCiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9hcHBfdXNlcmV2ZW50
 LnNvCiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9hcHBfdmVyYm9zZS5zbwpAQCAtMjc5LDggKzI4MSw4
 IEBACiBsaWIvYXN0ZXJpc2svbW9kdWxlcy9jZHJfbWFuYWdlci5zbwogJSVXSVRIX1BPU1RHUkVT
 JSVsaWIvYXN0ZXJpc2svbW9kdWxlcy9jZHJfcGdzcWwuc28KICUlV0lUSF9SQURJVVMlJWxpYi9h
 c3Rlcmlzay9tb2R1bGVzL2Nkcl9yYWRpdXMuc28KKyUlV0lUSF9TUUxJVEUlJWxpYi9hc3Rlcmlz
 ay9tb2R1bGVzL2Nkcl9zcWxpdGUuc28KIGxpYi9hc3Rlcmlzay9tb2R1bGVzL2NoYW5fYWdlbnQu
 c28KLWxpYi9hc3Rlcmlzay9tb2R1bGVzL2NoYW5fZmVhdHVyZXMuc28KICUlV0lUSF9KQUJCRVIl
 JWxpYi9hc3Rlcmlzay9tb2R1bGVzL2NoYW5fZ3RhbGsuc28KIGxpYi9hc3Rlcmlzay9tb2R1bGVz
 L2NoYW5faWF4Mi5zbwogbGliL2FzdGVyaXNrL21vZHVsZXMvY2hhbl9sb2NhbC5zbwpAQCAtMzc4
 LDggKzM4MCw4IEBACiBzaGFyZS9hc3Rlcmlzay9tb2gvZnBtLWNhbG0tcml2ZXIud2F2CiBzaGFy
 ZS9hc3Rlcmlzay9tb2gvZnBtLXN1bnNoaW5lLndhdgogc2hhcmUvYXN0ZXJpc2svbW9oL2ZwbS13
 b3JsZC1taXgud2F2Ci1zaGFyZS9hc3Rlcmlzay9zb3VuZHMvLmFzdGVyaXNrLWNvcmUtc291bmRz
 LWVuLWdzbS0xLjQuNgotc2hhcmUvYXN0ZXJpc2svc291bmRzL0NSRURJVFMtYXN0ZXJpc2stY29y
 ZS1lbi0xLjQuNgorc2hhcmUvYXN0ZXJpc2svc291bmRzLy5hc3Rlcmlzay1jb3JlLXNvdW5kcy1l
 bi1nc20tMS40LjcKK3NoYXJlL2FzdGVyaXNrL3NvdW5kcy9DUkVESVRTLWFzdGVyaXNrLWNvcmUt
 ZW4tMS40LjcKIHNoYXJlL2FzdGVyaXNrL3NvdW5kcy9hZ2VudC1hbHJlYWR5b24uZ3NtCiBzaGFy
 ZS9hc3Rlcmlzay9zb3VuZHMvYWdlbnQtaW5jb3JyZWN0LmdzbQogc2hhcmUvYXN0ZXJpc2svc291
 bmRzL2FnZW50LWxvZ2dlZG9mZi5nc20KQEAgLTc0OSw3ICs3NTEsNiBAQAogc2hhcmUvYXN0ZXJp
 c2svc291bmRzL3ZtLXVua25vd24tY2FsbGVyLmdzbQogc2hhcmUvYXN0ZXJpc2svc291bmRzL3Zt
 LXdoaWNoYm94LmdzbQogc2hhcmUvYXN0ZXJpc2svc291bmRzL3ZtLXlvdWhhdmUuZ3NtCi1zaGFy
 ZS9hc3Rlcmlzay9zb3VuZHMveAogc2hhcmUvYXN0ZXJpc2svc3RhdGljLWh0dHAvYWphbWRlbW8u
 aHRtbAogc2hhcmUvYXN0ZXJpc2svc3RhdGljLWh0dHAvYXN0bWFuLmNzcwogc2hhcmUvYXN0ZXJp
 c2svc3RhdGljLWh0dHAvYXN0bWFuLmpzCg==
 
 ------=OPENWEBMAIL_ATT_0.811475673082413--
State-Changed-From-To: feedback->open 
State-Changed-By: linimon 
State-Changed-When: Thu Jul 19 07:55:19 UTC 2007 
State-Changed-Why:  
Feedback received. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114720 
State-Changed-From-To: open->closed 
State-Changed-By: sobomax 
State-Changed-When: Sun Jul 22 10:45:14 UTC 2007 
State-Changed-Why:  
Commited with some mods, thanks! 

http://www.freebsd.org/cgi/query-pr.cgi?pr=114720 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114720: commit references a PR
Date: Sun, 22 Jul 2007 10:40:42 +0000 (UTC)

 sobomax     2007-07-22 10:40:35 UTC
 
   FreeBSD ports repository
 
   Modified files:
     net/asterisk         Makefile distinfo pkg-plist 
     net/asterisk/files   asterisk.sh.in patch-Makefile 
                          patch-configure 
   Removed files:
     net/asterisk/files   patch-main::utils.c 
   Log:
   o Update to 1.4.8, which fixes some security issues.
   
   PR:             114720, 114712
   
   o Enable zaptel channel and friends on AMD64.
   
   PR:             112624
   
   o Improve startup script.
   
   PR:             107222
   
   Revision  Changes    Path
   1.74      +8 -7      ports/net/asterisk/Makefile
   1.25      +3 -3      ports/net/asterisk/distinfo
   1.7       +8 -0      ports/net/asterisk/files/asterisk.sh.in
   1.20      +9 -9      ports/net/asterisk/files/patch-Makefile
   1.2       +73 -18    ports/net/asterisk/files/patch-configure
   1.2       +0 -14     ports/net/asterisk/files/patch-main::utils.c (dead)
   1.29      +4 -4      ports/net/asterisk/pkg-plist
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: Phillip Neumann <pneumann@gmail.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114720: [UPDATE] net/asterisk to 1.4.8
Date: Sun, 22 Jul 2007 11:05:22 -0400

 Hi, im curious:
 
 * I can read in /usr/ports/net/asterisk/work/asterisk-1.4.8/doc/mp3.txt,
 that mpg123 is not recomended, why keep using it?
 
 * Is there anything wrong with SQLLite and FAX support? i dont really
 use them, but its just for curiosity...
 
 thanks!!
 
 
 

From: "viper" <viper@perm.raid.ru>
To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-ports-bugs@FreeBSD.org
Cc:  
Subject: Re: ports/114720: [UPDATE] net/asterisk to 1.4.8
Date: Mon, 23 Jul 2007 02:43:24 +0600

 	
 I wonder what is wrong with the support of faxes and sqlite? 
 I use work with faxes, and they are working normally. 
 
 _______________________
 Best regards, 
 VipeR
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: ports/114720: commit references a PR
Date: Fri, 27 Jul 2007 02:41:23 +0000 (UTC)

 sobomax     2007-07-27 02:41:10 UTC
 
   FreeBSD ports repository
 
   Modified files:
     net/asterisk         Makefile distinfo pkg-plist 
     net/asterisk/files   patch-channels::chan_skinny.c 
   Log:
   Update to 1.4.9.
   
   Sponsored by: Sippy Software, Inc. ( http://www.sippysoft.com/ )
   
   Enable SQLite support.
   
   PR:             114720
   Submitted by:   VipeR
   
   Revision  Changes    Path
   1.77      +12 -2     ports/net/asterisk/Makefile
   1.26      +3 -3      ports/net/asterisk/distinfo
   1.2       +5 -5      ports/net/asterisk/files/patch-channels::chan_skinny.c
   1.30      +1 -0      ports/net/asterisk/pkg-plist
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
>Unformatted:
