From nobody@FreeBSD.org Sat Mar 10 17:29:02 2007 Return-Path: Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6D2BA16A400 for ; Sat, 10 Mar 2007 17:29:02 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (www.freebsd.org [69.147.83.33]) by mx1.freebsd.org (Postfix) with ESMTP id 5B6D113C481 for ; Sat, 10 Mar 2007 17:29:02 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from www.freebsd.org (localhost [127.0.0.1]) by www.freebsd.org (8.13.1/8.13.1) with ESMTP id l2AHT2Nn043024 for ; Sat, 10 Mar 2007 17:29:02 GMT (envelope-from nobody@www.freebsd.org) Received: (from nobody@localhost) by www.freebsd.org (8.13.1/8.13.1/Submit) id l2AHT2g8043022; Sat, 10 Mar 2007 17:29:02 GMT (envelope-from nobody) Message-Id: <200703101729.l2AHT2g8043022@www.freebsd.org> Date: Sat, 10 Mar 2007 17:29:02 GMT From: Nemo Liu To: freebsd-gnats-submit@FreeBSD.org Subject: [NEW PORT] [java] Jboss5b1 X-Send-Pr-Version: www-3.0 >Number: 110163 >Category: ports >Synopsis: [NEW PORT] java/jboss5b1 >Confidential: no >Severity: non-critical >Priority: medium >Responsible: delphij >State: closed >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Sat Mar 10 17:30:03 GMT 2007 >Closed-Date: Wed Mar 28 05:50:35 GMT 2007 >Last-Modified: Wed Mar 28 05:50:35 GMT 2007 >Originator: Nemo Liu >Release: 6.2 >Organization: >Environment: FreeBSD nfstest.sina.com.cn 6.2-STORM-r4 FreeBSD 6.2-STORM-r4 #1: Thu Feb 1 09:43:06 UTC 2007 root@mammoth.sina.com:/usr/obj/usr/src/sys/SMP i386 >Description: NEW PORT: jboss5 Boss AS 5 GA will be Java EE 5 certified and will include the following core technologies. * JBoss Microcontainer - POJO based microcontainer removing the dependency on JMX * EJB 3.0 - Fully certified as part of the Java EE 5 compliant JBoss AS 5 * Hibernate 3.2 - JPA certified * JBoss Messaging 1.2 - the next generation messaging platform from JBoss with HA features. * JBoss WebServices 2.0 - new custom built JAX-WS compliant WebServices stack. * JBoss Seam 1.1 - a powerful new application framework to build next generation Web 2.0 applications by unifying and integrating popular service oriented architecture (SOA) technologies >How-To-Repeat: >Fix: 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: # # /home/liutong/jboss5 # /home/liutong/jboss5/files # /home/liutong/jboss5/files/daemonctl.1 # /home/liutong/jboss5/files/daemonctl.c # /home/liutong/jboss5/files/patch-serial-autoinc # /home/liutong/jboss5/files/pkg-message # /home/liutong/jboss5/files/startup.sh.in # /home/liutong/jboss5/Makefile # /home/liutong/jboss5/distinfo # /home/liutong/jboss5/pkg-deinstall # /home/liutong/jboss5/pkg-descr # /home/liutong/jboss5/pkg-install # echo c - /home/liutong/jboss5 mkdir -p /home/liutong/jboss5 > /dev/null 2>&1 echo c - /home/liutong/jboss5/files mkdir -p /home/liutong/jboss5/files > /dev/null 2>&1 echo x - /home/liutong/jboss5/files/daemonctl.1 sed 's/^X//' >/home/liutong/jboss5/files/daemonctl.1 << 'END-of-/home/liutong/jboss5/files/daemonctl.1' X.Dd February 21, 2002 X.Dt %%CONTROL_SCRIPT_MANPAGE_TITLE%% 1 X.Os FreeBSD X.Sh NAME X.Nm %%CONTROL_SCRIPT_NAME%% X.Nd %%APP_TITLE%% server control interface X.Sh SYNOPSIS X.Nm X.Op Fl java-options X.Ar {start|restart|stop} X.Sh DESCRIPTION XThe X.Nm Xprogram provides an restricted interface to the %%APP_TITLE%% Xapplication server. The X.Nm Xprogram is only accessible to users in the 'www' group, and will Xonly invoke the %%JAVA_PORT_OS_DESCRIPTION%% %%JAVA_PORT_VERSION%% JVM. X.Pp XAny Java options listed are handed off directly to the JVM. Any Xclasspath options will be ignored. X.Pp XThe program expects exactly one of the following terminating commands: X.Bl -tag -width indent X.It Ar start XStart %%APP_TITLE%%, if it is not already running. X.It Ar restart XRestart %%APP_TITLE%%. If it is already running, then it will be stopped and Xthen started right after that. Otherwise it will just be started up. X.It Ar stop XStop %%APP_TITLE%%, if it is actually running. X.El X.Sh ERRORS XThe following error conditions are detected. They will be checked in the Xspecified order. In each case an error message is printed with the name of the Xcontrol program prepended. X.Pp XIf no argument is passed, then a simple help message is printed and the Xprogram exists with error code 0. X.Pp XIf at least one argument is passed, but it is different from X.Ar start , X.Ar restart Xor X.Ar stop Xthen the help message is printed as well, and the program exits with error Xcode 1. X.Pp XThe following errors conditions are defined: X.Bl -tag -width indent X.It Em Illegal program argument (error code 1) X.It Em PID file not found (error code 2) X.It Em PID file too large (error code 3) X.It Em PID file contains illegal character (error code 4) X.It Em Kill of process failed (error code 5) X.It Em %%APP_TITLE%% is already running (error code 6) X.It Em %%APP_TITLE%% is not running (error code 7) X.It Em Unable to chdir to the %%APP_TITLE%% home directory (error code 8) X.It Em Unable to open the stdout log file (error code 9) X.It Em Unable to open the stderr log file (error code 10) X.It Em Unable to start %%APP_TITLE%% (error code 11) X.El X.Sh FILES X.Bl -tag -width -indent X.It Pa %%PID_FILE%% XThe %%APP_TITLE%% PID file that is used to store the process ID of the Xcurrently running process in. It is emptied as soon as the server is stopped Xand filled with the process ID when it is started. It should never be writable Xfor anyone but X.Em www , X.It Pa %%STARTUP_SCRIPT%% XA script that starts the X.Nm Xprogram. It is used to start %%APP_TITLE%% at startup time. X.El X.Sh AUTHORS X.An Ernst de Haan Aq znerd@FreeBSD.org X.An Jonathan Chen Aq jonc@chen.org.nz END-of-/home/liutong/jboss5/files/daemonctl.1 echo x - /home/liutong/jboss5/files/daemonctl.c sed 's/^X//' >/home/liutong/jboss5/files/daemonctl.c << 'END-of-/home/liutong/jboss5/files/daemonctl.c' X/* X * -*- mode: Fundamental; tab-width: 4; -*- X * ex:ts=4 X * X * Daemon control program, with Java Startup options. X * X * Original by Ernst de Haan X * www/jakarta-tomcat4/files/daemonctl.c X * X * $FreeBSD$ X */ X X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X#include X X#define TRUE 1 X#define FALSE 0 X X/* The interval in seconds between the checks to make sure the process X died after a kill */ X#define STOP_TIME_INTERVAL 1 X X#define ERR_ILLEGAL_ARGUMENT 1 X#define ERR_PID_FILE_NOT_FOUND 2 X#define ERR_KILL_FAILED 5 X#define ERR_ALREADY_RUNNING 6 X#define ERR_NOT_RUNNING 7 X#define ERR_CHDIR_TO_APP_HOME 8 X#define ERR_ACCESS_JAR_FILE 17 X#define ERR_STDOUT_LOGFILE_OPEN 9 X#define ERR_STDERR_LOGFILE_OPEN 10 X#define ERR_FORK_FAILED 11 X#define ERR_STAT_JAVA_HOME 12 X#define ERR_JAVA_HOME_NOT_DIR 13 X#define ERR_STAT_JAVA_CMD 14 X#define ERR_JAVA_CMD_NOT_FILE 15 X#define ERR_JAVA_CMD_NOT_EXECUTABLE 16 X X/* X Function declarations. X */ Xstatic void printUsage (void); Xstatic int readPID (void); Xstatic void writePID (int pid); Xstatic void clearPID (void); Xstatic void start (int javaOpt, char * javaArgs [], int jbossOpt, char * jbossArgs []); Xstatic void stop (void); Xstatic void restart (int javaOpt, char * javaArgs [], int jbossOpt, char * jbossArgs []); Xstatic void logOutput (char *); X X/* X Globals X */ Xstatic int isQuiet = FALSE; Xstatic char * optQuiet = "-q", /* quiet option */ X * optConfig = "-config"; /* jboss configuration option */ X X/** X * Main function. This function is called when this program is executed. X * X * @param argc X * the number of arguments plus one, so always greater than 0. X * X * @param argv X * the arguments in an array of character pointers, where the last argument X * element is followed by a NULL element. X */ Xint Xmain ( X int argc, X char *argv []) X{ X /* Declare variables, like all other good ANSI C programs do :) */ X int i, javaOpt, jbossOpt; X char *argument, **javaArgs, **jbossArgs; X X /* Parse the arguments */ X if (argc < 2) X { X printUsage (); X return 0; X } X X /* XXX: Fix for setting up the environment for the java wrapper script */ X setuid (geteuid ()); X setgid (getegid ()); X X /* X Build up java and jboss option blocks. X */ X javaOpt = jbossOpt = 0; X for (i = 1; i < argc; i++) X { X if (strcmp (argv [i], optQuiet) == 0) X { X isQuiet = TRUE; X X } else if (strcmp (argv [i], optConfig) == 0) X { X jbossOpt += 2; X if (++i >= argc) X { X printUsage (); X return ERR_ILLEGAL_ARGUMENT; X } X X } else if (*argv [i] == '-') X { X javaOpt++; X } X } X if (javaOpt == 0) X javaArgs = NULL; X else X { X int j = 0; X javaArgs = malloc (sizeof (char *) * javaOpt); X for (i = 0; i < argc; i++) X { X if (strcmp (argv [i], optQuiet) && X strcmp (argv [i], optConfig) && X *argv [i] == '-') X { X javaArgs [j++] = argv [i]; X } X } X } X if (jbossOpt == 0) X jbossArgs = NULL; X else X { X int j = 0; X jbossArgs = malloc (sizeof (char *) * jbossOpt); X for (i = 0; i < argc; i++) X { X if (strcmp (argv [i], optConfig) == 0) X { X jbossArgs [j++] = "-c"; X jbossArgs [j++] = argv [++i]; X } X } X } X X /* X Decide on just what to call. X */ X argument = argv [argc - 1]; X if (strcmp ("start", argument) == 0) X { X start (javaOpt, javaArgs, jbossOpt, jbossArgs); X X } else if (strcmp ("stop", argument) == 0) X { X stop (); X X } else if (strcmp ("restart", argument) == 0) X { X restart (javaOpt, javaArgs, jbossOpt, jbossArgs); X X } else { X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Illegal argument \"%s\".\n", argument); X printUsage (); X exit (ERR_ILLEGAL_ARGUMENT); X } X X return EXIT_SUCCESS; X} X X/** X * Prints usage information to stdout. X */ Xstatic void XprintUsage (void) X{ X printf ("Usage: %%CONTROL_SCRIPT_NAME%% [java-options] [-config jbossconfig] {start|stop|restart}\n"); X} X X/** X * Reads a PID from the PID file. X * X * @return X * the PID, or -1 if the file was empty. X */ Xstatic int XreadPID (void) X{ X FILE * file; X int pid; X X logOutput (">> Reading PID file (%%PID_FILE%%)..."); X file = fopen ("%%PID_FILE%%", "r"); X if (!file) X { X logOutput (" [ FAILED ]\n"); X perror ("%%CONTROL_SCRIPT_NAME%%: Unable to open %%PID_FILE%% for reading: "); X exit (ERR_PID_FILE_NOT_FOUND); X } X if (fscanf (file, "%d", &pid) < 1) X pid = -1; X fclose (file); X X logOutput (" [ DONE ]\n"); X return pid; X} X X/** X * Writes a process ID to the specified file. The file is identified by a file X * handle. X * X * @param pid X * the PID to store, always greater than 0. X */ Xstatic void XwritePID ( X int pid) X{ X FILE * file; X X logOutput (">> Writing PID file..."); X file = fopen ("%%PID_FILE%%", "w"); X if (!file) X { X logOutput (" [ FAILED ]\n"); X perror ("%%CONTROL_SCRIPT_NAME%%: Unable to open %%PID_FILE%% for writing: "); X exit (ERR_PID_FILE_NOT_FOUND); X } X fprintf (file, "%d\n", pid); X fclose (file); X X logOutput (" [ DONE ]\n"); X} X X/** X Truncate the PID file. X */ Xstatic void XclearPID (void) X{ X if (truncate ("%%PID_FILE%%", 0) != 0) X { X perror ("%%CONTROL_SCRIPT_NAME%%: Unable to clear %%PID_FILE%%: "); X exit (ERR_PID_FILE_NOT_FOUND); X } X} X X/** X * Checks if the specified process is running. X * X * @param pid X * the process id, greater than 0. X * X * @return X * 0 if the specified process is not running, a different value otherwise. X */ Xstatic int XexistsProcess ( X int pid) X{ X int result; X X /* Check preconditions */ X assert (pid > 0); X X /* See if the process exists */ X result = kill (pid, 0); X X /* If the result is 0, then the process exists */ X return result == 0; X} X X/** X * Kills the process identified by the specified ID. X * X * @param pid X * the process id, greater than 0. X */ Xstatic void XkillProcess ( X int pid) X{ X int result; X unsigned int waited; X unsigned int forced; X unsigned int interval = STOP_TIME_INTERVAL; X unsigned int timeout = %%STOP_TIMEOUT%%; X X /* Check preconditions */ X assert (pid > 0); X X if (!isQuiet) X printf (">> Terminating process %d...", pid); X result = kill (pid, SIGTERM); X if (result < 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to kill process %d: ", pid); X perror (NULL); X exit (ERR_KILL_FAILED); X } X X /* Wait until the process is actually killed */ X result = existsProcess (pid); X for (waited=0; result == 1 && waited < timeout; waited += interval) X { X logOutput ("."); X fflush (stdout); X sleep (interval); X result = existsProcess (pid); X } X X /* If the process still exists, then have no mercy and kill it */ X forced = 0; X if (result == 1) X { X /* Force the process to die */ X result = kill (pid, SIGKILL); X if (result == 0) { X forced = 1; X logOutput (" [ KILLED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Process %d did not terminate within %%STOP_TIMEOUT%% sec. Killed.\n", pid); X } else if (result != ESRCH) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to kill process %d: ", pid); X perror (NULL); X exit (ERR_KILL_FAILED); X } X } X X if (forced == 0) { X logOutput (" [ DONE ]\n"); X } X} X X/** X * Starts the daemon. X */ Xstatic void Xstart ( X int javaOpt, X char * javaArgs [], X int jbossOpt, X char * jbossArgs []) X{ X int i, argc; X char ** argv; X int pid; X int result; X int stdoutLogFile; X int stderrLogFile; X struct stat sb; X X pid = readPID (); X X logOutput (">> Starting %%APP_TITLE%% %%PORTVERSION%%..."); X if (pid != -1) X { X /* Check if the process actually exists */ X result = existsProcess (pid); X if (result == 1) X { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: %%APP_TITLE%% %%PORTVERSION%% is already running, PID is %d.\n", pid); X exit (ERR_ALREADY_RUNNING); X } X } X X /* Check if the JDK home directory is actually a directory */ X result = stat ("%%JAVA_HOME%%", &sb); X if (result != 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to stat %%JAVA_HOME%%: "); X perror (NULL); X exit (ERR_STAT_JAVA_HOME); X } X if (!S_ISDIR (sb.st_mode)) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Java home directory %%JAVA_HOME%% is not a directory.\n"); X exit (ERR_JAVA_HOME_NOT_DIR); X } X X /* Check if the Java command is actually an executable regular file */ X result = stat ("%%JAVA%%", &sb); X if (result != 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to stat %%JAVA%%: "); X perror (NULL); X exit (ERR_STAT_JAVA_CMD); X } X if (!S_ISREG (sb.st_mode)) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Java command %%JAVA%% is not a regular file.\n"); X exit (ERR_JAVA_CMD_NOT_FILE); X } X result = access ("%%JAVA%%", X_OK); X if (result != 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Java command %%JAVA%% is not executable: "); X perror (NULL); X exit (ERR_JAVA_CMD_NOT_EXECUTABLE); X } X X /* Change directory */ X result = chdir ("%%APP_HOME%%"); X if (result < 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to access directory %%APP_HOME%%: "); X perror (NULL); X exit (ERR_CHDIR_TO_APP_HOME); X } X X /* See if the JAR file exists */ X result = access ("%%APP_HOME%%/%%JAR_FILE%%", R_OK); X if (result < 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to access JAR file %%APP_HOME%%/%%JAR_FILE%%: "); X perror (NULL); X exit (ERR_ACCESS_JAR_FILE); X } X X /* Open the stdout log file */ X stdoutLogFile = open ("%%STDOUT_LOG%%", O_WRONLY); X if (stdoutLogFile < 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to open %%STDOUT_LOG%% for writing: "); X perror (NULL); X exit (ERR_STDOUT_LOGFILE_OPEN); X } X lseek (stdoutLogFile, (off_t) 0, SEEK_END); X X /* Open the stderr log file */ X stderrLogFile = open ("%%STDERR_LOG%%", O_WRONLY); X if (stderrLogFile < 0) { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to open %%STDERR_LOG%% for writing: "); X perror (NULL); X exit (ERR_STDERR_LOGFILE_OPEN); X } X lseek (stderrLogFile, (off_t) 0, SEEK_END); X X /* Split this process in two */ X switch (pid = fork ()) X { X case -1: X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: Unable to fork: "); X perror (NULL); X exit (ERR_FORK_FAILED); X break; X X case 0: X /* Redirect stdout to log file */ X dup2 (stdoutLogFile, STDOUT_FILENO); X X /* Redirect stderr to log file */ X dup2 (stderrLogFile, STDERR_FILENO); X X /* TODO: Support redirection of both stdout and stderr to the same X file using pipe (2) */ X X /* X Build the argument vector, with the java/jboss options if any. X */ X argv = malloc (sizeof (char *) * (javaOpt + jbossOpt + 5)); X argc = 0; X argv [argc++] = "%%JAVA%%"; X for (i = 0; i < javaOpt; i++) X argv [argc++] = javaArgs [i]; X argv [argc++] = "-cp"; X argv [argc++] = "%%JAVA_CP%%"; X argv [argc++] = "%%JAVA_MAIN%%"; X for (i = 0; i < jbossOpt; i++) X argv [argc++] = jbossArgs [i]; X argv [argc++] = NULL; X X /* Execute the command */ X execv (argv [0], argv); X perror (NULL); X break; X X default: X logOutput (" [ DONE ]\n"); X writePID (pid); X } X} X X/** X * Stops the daemon. X */ Xstatic void Xstop (void) X{ X int pid; X X pid = readPID (); X X logOutput (">> Checking if %%APP_TITLE%% %%PORTVERSION%% is running..."); X X /* If there is a PID, see if the process still exists */ X if (pid != -1) X { X int result = kill (pid, 0); X if (result != 0 && errno == ESRCH) X { X clearPID (); X pid = -1; X } X } X X /* If there is no running process, produce an error */ X if (pid == -1) X { X logOutput (" [ FAILED ]\n"); X fprintf (stderr, "%%CONTROL_SCRIPT_NAME%%: %%APP_TITLE%% %%PORTVERSION%% is currently not running.\n"); X exit (ERR_NOT_RUNNING); X } X logOutput (" [ DONE ]\n"); X X /* Terminate the process */ X killProcess (pid); X clearPID (); X} X X X/** X * Restarts the process. If it not currently running, then it will fail. X */ Xstatic void Xrestart ( X int javaOpt, X char * javaArgs [], X int jbossOpt, X char * jbossArgs []) X{ X stop (); X start (javaOpt, javaArgs, jbossOpt, jbossArgs); X} X X/** X Output log to stdout. X */ Xstatic void XlogOutput ( X char * string) X{ X if (!isQuiet) X printf (string); X} END-of-/home/liutong/jboss5/files/daemonctl.c echo x - /home/liutong/jboss5/files/patch-serial-autoinc sed 's/^X//' >/home/liutong/jboss5/files/patch-serial-autoinc << 'END-of-/home/liutong/jboss5/files/patch-serial-autoinc' X$FreeBSD$ X XThis patch allows JBoss to correctly create tables when Xusing the auto-increment feature with Postgresql. X Xdiff -ruN ./server/src/etc/conf/default/standardjbosscmp-jdbc.xml /home/jonc/ports/jboss4/work/jboss-4.0.2-src/server/src/etc/conf/default/standardjbosscmp-jdbc.xml X--- ./server/src/etc/conf/default/standardjbosscmp-jdbc.xml Thu Jan 27 07:51:35 2005 X+++ /home/jonc/ports/jboss4/work/jboss-4.0.2-src/server/src/etc/conf/default/standardjbosscmp-jdbc.xml Tue May 17 16:13:34 2005 X@@ -1293,7 +1293,7 @@ X SELECT ?1 FROM ?2 WHERE ?3 ORDER BY ?4 FOR UPDATE X CONSTRAINT ?1 PRIMARY KEY (?2) X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 X+ ?1 serial X t X _ X 32 X@@ -1420,7 +1420,7 @@ X SELECT ?1 FROM ?2 WHERE ?3 ORDER BY ?4 FOR UPDATE X CONSTRAINT ?1 PRIMARY KEY (?2) X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 X+ ?1 serial X t X _ X 32 X@@ -1674,7 +1674,7 @@ X X CONSTRAINT ?1 PRIMARY KEY (?2) X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 IDENTITY X+ ?1 ?2 ?3 IDENTITY X ALTER TABLE ?1 ADD COLUMN ?2 ?3 X ALTER TABLE ?1 DROP COLUMN ?2 X t X@@ -1973,7 +1973,7 @@ X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X --> X ALTER TABLE ?1 ADD INDEX (?3), ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 auto_increment X+ ?1 ?2 ?3 auto_increment X ALTER TABLE ?1 MODIFY ?2 ?3 X t X _ X@@ -2113,7 +2113,7 @@ X SELECT ?1 FROM ?2 with (updlock) WHERE ?3 ORDER BY ?4 X CONSTRAINT ?1 PRIMARY KEY (?2) X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 IDENTITY X+ ?1 ?2 ?3 IDENTITY X ALTER TABLE ?1 ALTER COLUMN ?2 ?3 X t X _ X@@ -2245,7 +2245,7 @@ X SELECT ?1 FROM ?2 with (xlock) WHERE ?3 ORDER BY ?4 X CONSTRAINT ?1 PRIMARY KEY (?2) X ALTER TABLE ?1 ADD CONSTRAINT ?2 FOREIGN KEY (?3) REFERENCES ?4 (?5) X- ?1 IDENTITY X+ ?1 ?2 ?3 IDENTITY X t X _ X 32 Xdiff -ruN ./server/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java /home/jonc/ports/jboss4/work/jboss-4.0.2-src/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java X--- ./server/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java Tue Oct 26 22:28:23 2004 X+++ /home/jonc/ports/jboss4/work/jboss-4.0.2-src/server/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java Tue May 17 16:13:34 2005 X@@ -916,14 +916,18 @@ X // apply auto-increment template X if(type.getAutoIncrement()[0]) X { X- String columnClause = SQLUtil.getCreateTableColumnsClause(type); X JDBCFunctionMappingMetaData autoIncrement = X manager.getMetaData().getTypeMapping().getAutoIncrementTemplate(); X if(autoIncrement == null) X { X throw new IllegalStateException("auto-increment template not found"); X } X- String[] args = new String[]{columnClause}; X+ String[] args = new String[] X+ { X+ type.getColumnNames () [0], X+ type.getSQLTypes () [0], X+ type.getNotNull () [0] ? " not null " : "" X+ }; X autoIncrement.getFunctionSql(args, sqlBuffer); X } X else END-of-/home/liutong/jboss5/files/patch-serial-autoinc echo x - /home/liutong/jboss5/files/pkg-message sed 's/^X//' >/home/liutong/jboss5/files/pkg-message << 'END-of-/home/liutong/jboss5/files/pkg-message' X%%PKGNAME%% has been installed in %%APP_HOME%%. X XIf a user should be able to use %%CONTROL_SCRIPT_NAME%%, put it in the group '%%GROUP%%'. X XUse 'man %%CONTROL_SCRIPT_NAME%%' for information about starting and stopping %%APP_TITLE%%. X XTo run the %%APP_TITLE%% server from startup, add %%APP_SHORTNAME%%_enable="YES" in your /etc/rc.conf. Extra options can be found in the startup script. END-of-/home/liutong/jboss5/files/pkg-message echo x - /home/liutong/jboss5/files/startup.sh.in sed 's/^X//' >/home/liutong/jboss5/files/startup.sh.in << 'END-of-/home/liutong/jboss5/files/startup.sh.in' X#!/bin/sh X# X# %%APP_TITLE%% startup script. X# X# $FreeBSD$ X# X X# PROVIDE: %%APP_SHORTNAME%% X# REQUIRE: NETWORKING SERVERS X X# Add the following lines to /etc/rc.conf to enable %%APP_SHORTNAME%%: X# %%APP_SHORTNAME%%_enable (bool): Set to "NO" by default. X# Set it to "YES" to enable %%APP_SHORTNAME%% X# %%APP_SHORTNAME%%_flags (str): Set to "-server" by default. X# Extra JVM flags. X# %%APP_SHORTNAME%%_config (str): Set to "" by default X# JBoss server config, eg {all|default|minimal|standard} X# X. %%RC_SUBR%% X Xname="%%APP_SHORTNAME%%" Xrcvar=`set_rcvar` X Xstart_cmd="%%APP_SHORTNAME%%_start" Xrestart_cmd="%%APP_SHORTNAME%%_restart" Xpidfile="%%PID_FILE%%" Xprocname="%%JAVA%%" X X[ -z "$%%APP_SHORTNAME%%_enable" ] && %%APP_SHORTNAME%%_enable="NO" X[ -z "$%%APP_SHORTNAME%%_flags" ] && %%APP_SHORTNAME%%_flags="-server" X[ -z "$%%APP_SHORTNAME%%_config" ] && %%APP_SHORTNAME%%_config="" X X%%APP_SHORTNAME%%_start () X{ X checkyesno %%APP_SHORTNAME%%_enable && X { X if [ ! -f ${pidfile} ] X then X touch ${pidfile} X chown %%USER%%:%%GROUP%% ${pidfile} X fi X X echo "Starting %%APP_SHORTNAME%%." X %%CONTROL_SCRIPT%% -q ${%%APP_SHORTNAME%%_flags} ${%%APP_SHORTNAME%%_configflag} ${%%APP_SHORTNAME%%_config} start X } X} X X%%APP_SHORTNAME%%_restart () X{ X checkyesno %%APP_SHORTNAME%%_enable && X { X echo "Restarting %%APP_SHORTNAME%%." X %%CONTROL_SCRIPT%% -q ${%%APP_SHORTNAME%%_flags} ${%%APP_SHORTNAME%%_configflag} ${%%APP_SHORTNAME%%_config} restart X } X} X Xload_rc_config $name X X[ -n "${%%APP_SHORTNAME%%_config}" ] && %%APP_SHORTNAME%%_configflag="-config" X Xrun_rc_command "$1" END-of-/home/liutong/jboss5/files/startup.sh.in echo x - /home/liutong/jboss5/Makefile sed 's/^X//' >/home/liutong/jboss5/Makefile << 'END-of-/home/liutong/jboss5/Makefile' X# ports collection makefile for: jboss5 X# Date created: 7 May 2007 X# Whom: nemoliu@gmail.com X# X# $FreeBSD$ X# X XPORTNAME= ${APP_TITLE:L} XPORTVERSION= 5.0.0.b1 XPORTEPOCH= 1 XCATEGORIES= java devel XMASTER_SITES= ${MASTER_SITE_SOURCEFORGE} XMASTER_SITE_SUBDIR= ${PORTNAME} XDISTNAME= ${PORTNAME}-${PORTVERSION:R}.Beta1-src X XMAINTAINER= nemoliu@gmail.com XCOMMENT= Open-source J2EE application server (5.x family) X XBUILD_DEPENDS= ant:${PORTSDIR}/devel/apache-ant X XLATEST_LINK= jboss5 XUSE_JAVA= yes XJAVA_VERSION= 1.5+ X XUSE_RC_SUBR= startup.sh X X.if !defined(NOPORTDOCS) XPORTDOCS= * X.endif X XAPP_HOME?= ${PREFIX}/${APP_SHORTNAME} XDOCSDIR= ${PREFIX}/share/doc/${PKGBASE}${PORTVERSION:R} XLOG_DIR= ${APP_HOME}/log XAPP_TITLE= JBoss XAPP_SHORTNAME= ${UNIQUENAME} XCONTROL_SCRIPT_NAME= ${APP_SHORTNAME}ctl XCONTROL_SCRIPT= ${PREFIX}/bin/${CONTROL_SCRIPT_NAME} XCONTROL_SCRIPT_MANPAGE_TITLE= ${CONTROL_SCRIPT_NAME:U} XSTARTUP_SCRIPT_NAME= ${APP_SHORTNAME}.sh XSTARTUP_SCRIPT= ${PREFIX}/etc/rc.d/${STARTUP_SCRIPT_NAME} XUSER= www XGROUP= www XSTDOUT_LOG= ${LOG_DIR}/stdout.log XSTDERR_LOG= ${LOG_DIR}/stderr.log XAUTO_START?= NO XSTOP_TIMEOUT?= 5 XPID_FILE= /var/run/${APP_SHORTNAME}.pid XJAVA_OPTS= XJAVA_CP= bin/run.jar:${JAVA_HOME}/lib/tools.jar XJAVA_MAIN= org.jboss.Main XDAEMONCTL_DIR= ${FILESDIR} XDAEMONCTL_FILES=daemonctl.c daemonctl.1 startup.sh.in pkg-message XMAN1= ${CONTROL_SCRIPT_NAME}.1 X XJBOSSOUTPUT= ${WRKSRC}/build/output/${PORTNAME}-${PORTVERSION:R}.Beta1 XAPP_HOME_FILES= bin client lib server X XPLIST_FILES= ${CONTROL_SCRIPT:S,^${PREFIX}/,,} \ X ${STARTUP_SCRIPT:S,^${PREFIX}/,,} \ X ${STDOUT_LOG:S,^${PREFIX}/,,} \ X ${STDERR_LOG:S,^${PREFIX}/,,} X XPKGMESSAGE= ${WRKDIR}/pkg-message.fmt X X.include X Xdo-configure: X @(cd ${DAEMONCTL_DIR} && ${CP} ${DAEMONCTL_FILES} ${WRKDIR}) X @(cd ${WRKDIR} && ${REINPLACE_CMD} \ X -e "s|%%RC_SUBR%%|${RC_SUBR}|g;" \ X -e "s|%%APP_HOME%%|${APP_HOME}|g;" \ X -e "s|%%APP_SHORTNAME%%|${APP_SHORTNAME}|g;" \ X -e "s|%%APP_TITLE%%|${APP_TITLE}|g;" \ X -e "s|%%CONTROL_SCRIPT%%|${CONTROL_SCRIPT}|g;" \ X -e "s|%%CONTROL_SCRIPT_MANPAGE_TITLE%%|${CONTROL_SCRIPT_MANPAGE_TITLE}|g;" \ X -e "s|%%CONTROL_SCRIPT_NAME%%|${CONTROL_SCRIPT_NAME}|g;" \ X -e "s|%%GROUP%%|${GROUP}|g;" \ X -e "s|%%JAVA%%|${JAVA}|g;" \ X -e "s|%%JAVA_CP%%|${JAVA_CP}|g;" \ X -e "s|%%JAVA_HOME%%|${JAVA_HOME}|g;" \ X -e "s|%%JAVA_MAIN%%|${JAVA_MAIN}|g;" \ X -e "s|%%JAVA_OPTS%%|${JAVA_OPTS}|g;" \ X -e "s|%%JAVA_PORT_VERSION%%|${JAVA_PORT_VERSION}|g;" \ X -e "s|%%JAVA_PORT_OS_DESCRIPTION%%|${JAVA_PORT_OS_DESCRIPTION}|g;" \ X -e "s|%%JAR_FILE%%|${JAR_FILE}|g;" \ X -e "s|%%LOG_DIR%%|${LOG_DIR}|g;" \ X -e "s|%%PID_FILE%%|${PID_FILE}|g;" \ X -e "s|%%PKGNAME%%|${PKGNAME}|g;" \ X -e "s|%%PORTNAME%%|${PORTNAME}|g;" \ X -e "s|%%PORTVERSION%%|${PORTVERSION}|g;" \ X -e "s|%%PREFIX%%|${PREFIX}|g;" \ X -e "s|%%STARTUP_SCRIPT%%|${STARTUP_SCRIPT}|g;" \ X -e "s|%%STDERR_LOG%%|${STDERR_LOG}|g;" \ X -e "s|%%STDOUT_LOG%%|${STDOUT_LOG}|g;" \ X -e "s|%%STOP_TIMEOUT%%|${STOP_TIMEOUT}|g;" \ X -e "s|%%USER%%|${USER}|g;" ${DAEMONCTL_FILES}) X @${FMT} -s 80 ${WRKDIR}/pkg-message >${PKGMESSAGE} X Xpost-configure: X @${ECHO_MSG} "Installation settings:" X @${ECHO_MSG} " Destination directory: ${APP_HOME}" X @${ECHO_MSG} " Control program location: ${CONTROL_SCRIPT}" X @${ECHO_MSG} " Startup script location: ${STARTUP_SCRIPT}" X @${ECHO_MSG} " Location of JDK: ${JAVA_HOME}" X @${ECHO_MSG} " Location of Java port: ${JAVA_PORT}" X @${ECHO_MSG} " Startup Java Options: ${JAVA_OPTS}" X @${ECHO_MSG} " Running as (user/group): ${USER}/${GROUP}" X @${ECHO_MSG} " Logfile stdout: ${STDOUT_LOG}" X @${ECHO_MSG} " Logfile stderr: ${STDERR_LOG}" X @${ECHO_MSG} " Starting after install: ${AUTO_START}" X @${ECHO_MSG} " Stop time-out: ${STOP_TIMEOUT} sec." X Xdo-build: X (cd ${WRKDIR} && ${CC} ${CFLAGS} -o ${CONTROL_SCRIPT_NAME} daemonctl.c) X (cd ${WRKSRC}/build && ${SETENV} JAVA_HOME="${JAVA_HOME}" PATH="${JAVA_HOME}/bin:${PATH}" ${SH} build.sh) X Xpre-install: X @${SETENV} PKG_PREFIX=${PREFIX} ${SH} ${PKGINSTALL} ${PKGNAME} PRE-INSTALL X Xdo-install: X ${MKDIR} ${APP_HOME} && ${CHOWN} ${USER}:${GROUP} ${APP_HOME} X ${MKDIR} ${LOG_DIR} && ${CHOWN} ${USER}:${GROUP} ${LOG_DIR} X (cd ${JBOSSOUTPUT} && ${FIND} ${APP_HOME_FILES} |\ X ${CPIO} -pdmu -R ${USER}:${GROUP} ${APP_HOME}) X ${INSTALL} -o ${USER} -g ${GROUP} -m 06754\ X ${WRKDIR}/${CONTROL_SCRIPT_NAME} ${CONTROL_SCRIPT} X ${INSTALL_SCRIPT} ${WRKDIR}/startup.sh ${STARTUP_SCRIPT} X ${INSTALL} -o ${USER} -g ${GROUP} -m 0640 /dev/null ${STDOUT_LOG} X ${INSTALL} -o ${USER} -g ${GROUP} -m 0640 /dev/null ${STDERR_LOG} X ${INSTALL} -o ${USER} -g ${GROUP} -m 0640 /dev/null ${PID_FILE} X ${INSTALL_MAN} ${WRKDIR}/daemonctl.1 ${MANPREFIX}/man/man1/${CONTROL_SCRIPT_NAME}.1 X.if !defined(NOPORTDOCS) X cd ${JBOSSOUTPUT}/docs \ X && ${FIND} . -type d -exec ${MKDIR} ${DOCSDIR}/{} \; \ X && ${FIND} . -type f -exec ${INSTALL_DATA} {} ${DOCSDIR}/{} \; X.endif X Xpost-install: X @${FIND} -s ${APP_HOME_FILES:S,^,${JBOSSOUTPUT}/,} -not -type d | \ X ${SED} -ne 's,^${JBOSSOUTPUT},${APP_HOME:S,${PREFIX}/,,},p' >> ${TMPPLIST} X @${FIND} -s -d ${APP_HOME_FILES:S,^,${JBOSSOUTPUT}/,} -type d | \ X ${SED} -ne 's,^${JBOSSOUTPUT},@dirrm ${APP_HOME:S,${PREFIX}/,,},p' >> ${TMPPLIST} X @${ECHO_CMD} "@dirrm ${APP_HOME:S,^${PREFIX}/,,}/log" >> ${TMPPLIST} X @${ECHO_CMD} "@dirrm ${APP_HOME:S,^${PREFIX}/,,}" >> ${TMPPLIST} X.if ${AUTO_START} == "YES" X @${CONTROL_SCRIPT} start || true X.endif X.if !defined(BATCH) X @${CAT} ${PKGMESSAGE} X.endif X X.include END-of-/home/liutong/jboss5/Makefile echo x - /home/liutong/jboss5/distinfo sed 's/^X//' >/home/liutong/jboss5/distinfo << 'END-of-/home/liutong/jboss5/distinfo' XMD5 (jboss-5.0.0.Beta1-src.tar.gz) = 92365ed9bafae925c071e23e723216be XSHA256 (jboss-5.0.0.Beta1-src.tar.gz) = f0916edce3053a3cc5e689559822b559e0d4b08582eeb606f0208ca7634ef1e5 XSIZE (jboss-5.0.0.Beta1-src.tar.gz) = 114347235 END-of-/home/liutong/jboss5/distinfo echo x - /home/liutong/jboss5/pkg-deinstall sed 's/^X//' >/home/liutong/jboss5/pkg-deinstall << 'END-of-/home/liutong/jboss5/pkg-deinstall' X#!/bin/sh X# X# This script does the following. X# X# * Checks if the JBoss PID file exists. If it does, it kills the X# JBoss process and removes the PID file. X# X# $FreeBSD$ X# X X# Make sure we're in the right stage of the process Xif [ "$2" = "DEINSTALL" ]; then X X # Kill JBoss if it is still running X PID_FILE=/var/run/jboss.pid X if [ -s ${PID_FILE} ]; then X PID=`cat ${PID_FILE}` X echo -n ">> Killing JBoss Server process (${PID})..." X /bin/kill ${PID} > /dev/null 2> /dev/null X if [ $? -eq 0 ]; then X echo " [ DONE ]" X else X echo " [ FAILED ]" X fi X echo -n ">> Removing PID file (${PID_FILE})..." X rm ${PID_FILE} > /dev/null 2> /dev/null X if [ $? -eq 0 ]; then X echo " [ DONE ]" X else X echo " [ FAILED ]" X fi X fi Xfi X Xexit 0 END-of-/home/liutong/jboss5/pkg-deinstall echo x - /home/liutong/jboss5/pkg-descr sed 's/^X//' >/home/liutong/jboss5/pkg-descr << 'END-of-/home/liutong/jboss5/pkg-descr' XJBoss AS 5 GA will be Java EE 5 certified and will include the following core Xtechnologies. X X * JBoss Microcontainer - POJO based microcontainer removing the dependency X on JMX X * EJB 3.0 - Fully certified as part of the Java EE 5 compliant JBoss AS 5 X * Hibernate 3.2 - JPA certified X * JBoss Messaging 1.2 - the next generation messaging platform from JBoss X with HA features. X * JBoss WebServices 2.0 - new custom built JAX-WS compliant WebServices X stack. X * JBoss Seam 1.1 - a powerful new application framework to build next X generation Web 2.0 applications by unifying and integrating popular X service oriented architecture (SOA) technologies X XWWW: http://www.jboss.org/ END-of-/home/liutong/jboss5/pkg-descr echo x - /home/liutong/jboss5/pkg-install sed 's/^X//' >/home/liutong/jboss5/pkg-install << 'END-of-/home/liutong/jboss5/pkg-install' X#!/bin/sh X# X# Checks if the 'www' user and group exist. If they don't, then X# an attempt is made to create both. X# X# $FreeBSD$ X# X X# Make sure we're called during the 'make install' process Xif [ "$2" != "PRE-INSTALL" ]; then X exit 0 Xfi X X# Set some constants XUSER=www XGROUP=${USER} XUID=80 XGID=${UID} X X# See if the group already exists Xif ! pw groupshow "${GROUP}" 2>/dev/null 1>&2; then X X # If not, try to create it X if pw groupadd ${GROUP} -g ${GID}; then X echo "Added group \"${GROUP}\"." X else X echo "Adding group \"${GROUP}\" failed..." X exit 1 X fi Xfi X X# See if the user already exists Xif ! pw usershow "${USER}" 2>/dev/null 1>&2; then X X # If not, try to create it X if pw useradd ${USER} -u ${UID} -g ${GROUP} -h - \ X -s "/sbin/nologin" -d "/nonexistent" \ X -c "World Wide Web Owner"; \ X then X echo "Added user \"${USER}\"." X else X echo "Adding user \"${USER}\" failed..." X exit 1 X fi Xfi Xexit 0 END-of-/home/liutong/jboss5/pkg-install exit >Release-Note: >Audit-Trail: Responsible-Changed-From-To: freebsd-ports-bugs->freebsd-java Responsible-Changed-By: delphij Responsible-Changed-When: Thu Mar 15 07:32:38 UTC 2007 Responsible-Changed-Why: Over to freebsd-java@ http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 From: nemo To: bug-followup@FreeBSD.org, nemoliu@gmail.com Cc: delphij@freebsd.org Subject: Re: ports/110163: [NEW PORT] [java] Jboss5b1 Date: Sun, 25 Mar 2007 22:22:27 +0800 ------=_Part_225228_27186714.1174832547365 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline I rewrite the patch, this one should be better. ------=_Part_225228_27186714.1174832547365 Content-Type: text/plain; name="jboss5.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="jboss5.txt" X-Attachment-Id: f_ezpkxfsp IyBUaGlzIGlzIGEgc2hlbGwgYXJjaGl2ZS4gIFNhdmUgaXQgaW4gYSBmaWxlLCByZW1vdmUgYW55 dGhpbmcgYmVmb3JlCiMgdGhpcyBsaW5lLCBhbmQgdGhlbiB1bnBhY2sgaXQgYnkgZW50ZXJpbmcg InNoIGZpbGUiLiAgTm90ZSwgaXQgbWF5CiMgY3JlYXRlIGRpcmVjdG9yaWVzOyBmaWxlcyBhbmQg ZGlyZWN0b3JpZXMgd2lsbCBiZSBvd25lZCBieSB5b3UgYW5kCiMgaGF2ZSBkZWZhdWx0IHBlcm1p c3Npb25zLgojCiMgVGhpcyBhcmNoaXZlIGNvbnRhaW5zOgojCiMJL2hvbWUvbGl1dG9uZy9qYm9z czUKIwkvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcwojCS9ob21lL2xpdXRvbmcvamJvc3M1L2Zp bGVzL3BhdGNoLWJ1aWxkLWNvbW1vbi54bWwKIwkvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9k YWVtb25jdGwuMS5pbgojCS9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2pib3NzNS5zaC5pbgoj CS9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2RhZW1vbmN0bC5jLmluCiMJL2hvbWUvbGl1dG9u Zy9qYm9zczUvZmlsZXMvcGF0Y2gtYnVpbGQueG1sCiMJL2hvbWUvbGl1dG9uZy9qYm9zczUvZmls ZXMvcGtnLWluc3RhbGwuaW4KIwkvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9wa2ctZGVpbnN0 YWxsLmluCiMJL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvcGtnLW1lc3NhZ2UuaW4KIwkvaG9t ZS9saXV0b25nL2pib3NzNS9maWxlcy9wYXRjaC1idWlsZG1hZ2ljLmVudAojCS9ob21lL2xpdXRv bmcvamJvc3M1L01ha2VmaWxlCiMJL2hvbWUvbGl1dG9uZy9qYm9zczUvZGlzdGluZm8KIwkvaG9t ZS9saXV0b25nL2pib3NzNS9wa2ctZGVzY3IKIwplY2hvIGMgLSAvaG9tZS9saXV0b25nL2pib3Nz NQpta2RpciAtcCAvaG9tZS9saXV0b25nL2pib3NzNSA+IC9kZXYvbnVsbCAyPiYxCmVjaG8gYyAt IC9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzCm1rZGlyIC1wIC9ob21lL2xpdXRvbmcvamJvc3M1 L2ZpbGVzID4gL2Rldi9udWxsIDI+JjEKZWNobyB4IC0gL2hvbWUvbGl1dG9uZy9qYm9zczUvZmls ZXMvcGF0Y2gtYnVpbGQtY29tbW9uLnhtbApzZWQgJ3MvXlgvLycgPi9ob21lL2xpdXRvbmcvamJv c3M1L2ZpbGVzL3BhdGNoLWJ1aWxkLWNvbW1vbi54bWwgPDwgJ0VORC1vZi0vaG9tZS9saXV0b25n L2pib3NzNS9maWxlcy9wYXRjaC1idWlsZC1jb21tb24ueG1sJwpYLS0tIC4vdG9vbHMvZXRjL2J1 aWxkbWFnaWMvYnVpbGQtY29tbW9uLnhtbC5vcmlnCVN1biBNYXIgMjUgMjA6MjU6NTIgMjAwNwpY KysrIC4vdG9vbHMvZXRjL2J1aWxkbWFnaWMvYnVpbGQtY29tbW9uLnhtbAlTdW4gTWFyIDI1IDIw OjI3OjE4IDIwMDcKWEBAIC0yLDcgKzIsNyBAQApYIApYICAgPCEtLSBNYWtlIHN1cmUgd2UgaGF2 ZSB0aGUgcmlnaHQgdmVyc2lvbiBvZiBBbnQgLS0+ClggICA8cHJvcGVydHkgbmFtZT0iYnVpbGRt YWdpYy5hbnQxNi5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNiIvPgpYLQpYKyAgPHByb3BlcnR5IG5h bWU9ImJ1aWxkbWFnaWMuYW50MTcuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjciLz4KWCAgIDwhLS0K WCAgICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBvdGhlciBzdXBwb3J0ZWQgQW50IHZlcnNp b25zIHdoZW4gdGhleQpYICAgICAgfCBiZWNvbWUgYXZhaWFsYmxlLgpYQEAgLTEyLDEzICsxMiwx NiBAQApYICAgICA8b3I+ClggICAgICAgPGNvbnRhaW5zIHN0cmluZz0iJHthbnQudmVyc2lvbn0i IApYIAkgICAgICAgIHN1YnN0cmluZz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE2LmJh c2V2ZXJzaW9ufSIvPgpYKyAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259IgpY KyAgICAgICAgc3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTcuYmFzZXZl cnNpb259Ii8+ClggICAgIDwvb3I+ClggICA8L2NvbmRpdGlvbj4KWCAKWCAgIDxmYWlsIHVubGVz cz0iYnVpbGRtYWdpYy5hbnQuY29tcGF0aWJsZSI+ClggICBVbnN1cHBvcnRlZCBBbnQgdmVyc2lv bjoKWCAgICAgJHthbnQudmVyc2lvbn0KWC0gIFBsZWFzZSBpbnN0YWxsIGEgdmVyc2lvbiB3aGlj aCBpcyBjb21wYXRpYmxlIHdpdGggQW50ICR7YnVpbGRtYWdpYy5hbnQxNi5iYXNldmVyc2lvbn0u ClgrICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIEFu dCAke2J1aWxkbWFnaWMuYW50MTYuYmFzZXZlcnNpb259ClgrICBvciAke2J1aWxkbWFnaWMuYW50 MTcuYmFzZXZlcnNpb259LgpYICAgPC9mYWlsPgpYIApYICAgPCEtLSBKREsgRGV0ZWN0aW9uIC0t PgpFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvcGF0Y2gtYnVpbGQtY29tbW9uLnht bAplY2hvIHggLSAvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9kYWVtb25jdGwuMS5pbgpzZWQg J3MvXlgvLycgPi9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2RhZW1vbmN0bC4xLmluIDw8ICdF TkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvZGFlbW9uY3RsLjEuaW4nClguRGQgRmVi cnVhcnkgMjEsIDIwMDIKWC5EdCAlJUNPTlRST0xfU0NSSVBUX01BTlBBR0VfVElUTEUlJSAxClgu T3MgRnJlZUJTRApYLlNoIE5BTUUKWC5ObSAlJUNPTlRST0xfU0NSSVBUX05BTUUlJQpYLk5kICUl QVBQX1RJVExFJSUgc2VydmVyIGNvbnRyb2wgaW50ZXJmYWNlClguU2ggU1lOT1BTSVMKWC5ObQpY Lk9wIEZsIGphdmEtb3B0aW9ucwpYLkFyIHtzdGFydHxyZXN0YXJ0fHN0b3B9ClguU2ggREVTQ1JJ UFRJT04KWFRoZQpYLk5tClhwcm9ncmFtIHByb3ZpZGVzIGFuIHJlc3RyaWN0ZWQgaW50ZXJmYWNl IHRvIHRoZSAlJUFQUF9USVRMRSUlClhhcHBsaWNhdGlvbiBzZXJ2ZXIuIFRoZQpYLk5tClhwcm9n cmFtIGlzIG9ubHkgYWNjZXNzaWJsZSB0byB1c2VycyBpbiB0aGUgJ3d3dycgZ3JvdXAsIGFuZCB3 aWxsClhvbmx5IGludm9rZSB0aGUgJSVKQVZBX1BPUlRfT1NfREVTQ1JJUFRJT04lJSAlJUpBVkFf UE9SVF9WRVJTSU9OJSUgSlZNLgpYLlBwClhBbnkgSmF2YSBvcHRpb25zIGxpc3RlZCBhcmUgaGFu ZGVkIG9mZiBkaXJlY3RseSB0byB0aGUgSlZNLiBBbnkKWGNsYXNzcGF0aCBvcHRpb25zIHdpbGwg YmUgaWdub3JlZC4KWC5QcApYVGhlIHByb2dyYW0gZXhwZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUg Zm9sbG93aW5nIHRlcm1pbmF0aW5nIGNvbW1hbmRzOgpYLkJsIC10YWcgLXdpZHRoIGluZGVudApY Lkl0IEFyIHN0YXJ0ClhTdGFydCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBub3QgYWxyZWFkeSBy dW5uaW5nLgpYLkl0IEFyIHJlc3RhcnQKWFJlc3RhcnQgJSVBUFBfVElUTEUlJS4gSWYgaXQgaXMg YWxyZWFkeSBydW5uaW5nLCB0aGVuIGl0IHdpbGwgYmUgc3RvcHBlZCBhbmQKWHRoZW4gc3RhcnRl ZCByaWdodCBhZnRlciB0aGF0LiBPdGhlcndpc2UgaXQgd2lsbCBqdXN0IGJlIHN0YXJ0ZWQgdXAu ClguSXQgQXIgc3RvcApYU3RvcCAlJUFQUF9USVRMRSUlLCBpZiBpdCBpcyBhY3R1YWxseSBydW5u aW5nLgpYLkVsClguU2ggRVJST1JTClhUaGUgZm9sbG93aW5nIGVycm9yIGNvbmRpdGlvbnMgYXJl IGRldGVjdGVkLiBUaGV5IHdpbGwgYmUgY2hlY2tlZCBpbiB0aGUKWHNwZWNpZmllZCBvcmRlci4g SW4gZWFjaCBjYXNlIGFuIGVycm9yIG1lc3NhZ2UgaXMgcHJpbnRlZCB3aXRoIHRoZSBuYW1lIG9m IHRoZQpYY29udHJvbCBwcm9ncmFtIHByZXBlbmRlZC4KWC5QcApYSWYgbm8gYXJndW1lbnQgaXMg cGFzc2VkLCB0aGVuIGEgc2ltcGxlIGhlbHAgbWVzc2FnZSBpcyBwcmludGVkIGFuZCB0aGUKWHBy b2dyYW0gZXhpc3RzIHdpdGggZXJyb3IgY29kZSAwLgpYLlBwClhJZiBhdCBsZWFzdCBvbmUgYXJn dW1lbnQgaXMgcGFzc2VkLCBidXQgaXQgaXMgZGlmZmVyZW50IGZyb20KWC5BciBzdGFydCAsClgu QXIgcmVzdGFydApYb3IKWC5BciBzdG9wClh0aGVuIHRoZSBoZWxwIG1lc3NhZ2UgaXMgcHJpbnRl ZCBhcyB3ZWxsLCBhbmQgdGhlIHByb2dyYW0gZXhpdHMgd2l0aCBlcnJvcgpYY29kZSAxLgpYLlBw ClhUaGUgZm9sbG93aW5nIGVycm9ycyBjb25kaXRpb25zIGFyZSBkZWZpbmVkOgpYLkJsIC10YWcg LXdpZHRoIGluZGVudApYLkl0IEVtIElsbGVnYWwgcHJvZ3JhbSBhcmd1bWVudCAoZXJyb3IgY29k ZSAxKQpYLkl0IEVtIFBJRCBmaWxlIG5vdCBmb3VuZCAoZXJyb3IgY29kZSAyKQpYLkl0IEVtIFBJ RCBmaWxlIHRvbyBsYXJnZSAoZXJyb3IgY29kZSAzKQpYLkl0IEVtIFBJRCBmaWxlIGNvbnRhaW5z IGlsbGVnYWwgY2hhcmFjdGVyIChlcnJvciBjb2RlIDQpClguSXQgRW0gS2lsbCBvZiBwcm9jZXNz IGZhaWxlZCAoZXJyb3IgY29kZSA1KQpYLkl0IEVtICUlQVBQX1RJVExFJSUgaXMgYWxyZWFkeSBy dW5uaW5nIChlcnJvciBjb2RlIDYpClguSXQgRW0gJSVBUFBfVElUTEUlJSBpcyBub3QgcnVubmlu ZyAoZXJyb3IgY29kZSA3KQpYLkl0IEVtIFVuYWJsZSB0byBjaGRpciB0byB0aGUgJSVBUFBfVElU TEUlJSBob21lIGRpcmVjdG9yeSAoZXJyb3IgY29kZSA4KQpYLkl0IEVtIFVuYWJsZSB0byBvcGVu IHRoZSBzdGRvdXQgbG9nIGZpbGUgKGVycm9yIGNvZGUgOSkKWC5JdCBFbSBVbmFibGUgdG8gb3Bl biB0aGUgc3RkZXJyIGxvZyBmaWxlIChlcnJvciBjb2RlIDEwKQpYLkl0IEVtIFVuYWJsZSB0byBz dGFydCAlJUFQUF9USVRMRSUlIChlcnJvciBjb2RlIDExKQpYLkVsClguU2ggRklMRVMKWC5CbCAt dGFnIC13aWR0aCAtaW5kZW50ClguSXQgUGEgJSVQSURfRklMRSUlClhUaGUgJSVBUFBfVElUTEUl JSBQSUQgZmlsZSB0aGF0IGlzIHVzZWQgdG8gc3RvcmUgdGhlIHByb2Nlc3MgSUQgb2YgdGhlClhj dXJyZW50bHkgcnVubmluZyBwcm9jZXNzIGluLiBJdCBpcyBlbXB0aWVkIGFzIHNvb24gYXMgdGhl IHNlcnZlciBpcyBzdG9wcGVkClhhbmQgZmlsbGVkIHdpdGggdGhlIHByb2Nlc3MgSUQgd2hlbiBp dCBpcyBzdGFydGVkLiBJdCBzaG91bGQgbmV2ZXIgYmUgd3JpdGFibGUKWGZvciBhbnlvbmUgYnV0 ClguRW0gd3d3ICwKWC5JdCBQYSAlJVNUQVJUVVBfU0NSSVBUJSUKWEEgc2NyaXB0IHRoYXQgc3Rh cnRzIHRoZQpYLk5tClhwcm9ncmFtLiBJdCBpcyB1c2VkIHRvIHN0YXJ0ICUlQVBQX1RJVExFJSUg YXQgc3RhcnR1cCB0aW1lLgpYLkVsClguU2ggQVVUSE9SUwpYLkFuIEVybnN0IGRlIEhhYW4gQXEg em5lcmRARnJlZUJTRC5vcmcKWC5BbiBKb25hdGhhbiBDaGVuIEFxIGpvbmNAY2hlbi5vcmcubnoK RU5ELW9mLS9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2RhZW1vbmN0bC4xLmluCmVjaG8geCAt IC9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2pib3NzNS5zaC5pbgpzZWQgJ3MvXlgvLycgPi9o b21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2pib3NzNS5zaC5pbiA8PCAnRU5ELW9mLS9ob21lL2xp dXRvbmcvamJvc3M1L2ZpbGVzL2pib3NzNS5zaC5pbicKWCMhL2Jpbi9zaApYIwpYIyAlJUFQUF9U SVRMRSUlIHN0YXJ0dXAgc2NyaXB0LgpYIwpYIyAkRnJlZUJTRCQKWCMKWApYIyBQUk9WSURFOiAl JUFQUF9TSE9SVE5BTUUlJQpYIyBSRVFVSVJFOiBORVRXT1JLSU5HIFNFUlZFUlMKWApYIyBBZGQg dGhlIGZvbGxvd2luZyBsaW5lcyB0byAvZXRjL3JjLmNvbmYgdG8gZW5hYmxlICUlQVBQX1NIT1JU TkFNRSUlOgpYIyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgKGJvb2wpOgkJU2V0IHRvICJOTyIg YnkgZGVmYXVsdC4KWCMJCQkJU2V0IGl0IHRvICJZRVMiIHRvIGVuYWJsZSAlJUFQUF9TSE9SVE5B TUUlJQpYIyAlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyAoc3RyKToJCVNldCB0byAiLXNlcnZlciIg YnkgZGVmYXVsdC4KWCMJCQkJRXh0cmEgSlZNIGZsYWdzLgpYIyAlJUFQUF9TSE9SVE5BTUUlJV9j b25maWcgKHN0cik6CQlTZXQgdG8gIiIgYnkgZGVmYXVsdApYIwkJCQlKQm9zcyBzZXJ2ZXIgY29u ZmlnLCBlZyB7YWxsfGRlZmF1bHR8bWluaW1hbHxzdGFuZGFyZH0KWCMKWC4gJSVSQ19TVUJSJSUK WApYbmFtZT0iJSVBUFBfU0hPUlROQU1FJSUiClhyY3Zhcj1gc2V0X3JjdmFyYApYClhzdGFydF9j bWQ9IiUlQVBQX1NIT1JUTkFNRSUlX3N0YXJ0IgpYcmVzdGFydF9jbWQ9IiUlQVBQX1NIT1JUTkFN RSUlX3Jlc3RhcnQiClhwaWRmaWxlPSIlJVBJRF9GSUxFJSUiClhwcm9jbmFtZT0iJSVKQVZBJSUi ClgKWFsgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUiIF0JJiYgJSVBUFBfU0hPUlROQU1F JSVfZW5hYmxlPSJOTyIKWFsgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9mbGFncyIgXQkmJiAlJUFQ UF9TSE9SVE5BTUUlJV9mbGFncz0iLXNlcnZlciIKWFsgLXogIiQlJUFQUF9TSE9SVE5BTUUlJV9j b25maWciIF0JJiYgJSVBUFBfU0hPUlROQU1FJSVfY29uZmlnPSIiClgKWCUlQVBQX1NIT1JUTkFN RSUlX3N0YXJ0ICgpClh7ClgJY2hlY2t5ZXNubyAlJUFQUF9TSE9SVE5BTUUlJV9lbmFibGUgJiYK WAl7ClgJCWlmIFsgISAtZiAke3BpZGZpbGV9IF0KWAkJdGhlbgpYCQkJdG91Y2ggJHtwaWRmaWxl fQpYCQkJY2hvd24gJSVVU0VSJSU6JSVHUk9VUCUlICR7cGlkZmlsZX0KWAkJZmkKWApYCQllY2hv ICJTdGFydGluZyAlJUFQUF9TSE9SVE5BTUUlJS4iClgJCSUlQ09OVFJPTF9TQ1JJUFQlJSAtcSAk eyUlQVBQX1NIT1JUTkFNRSUlX2ZsYWdzfSAkeyUlQVBQX1NIT1JUTkFNRSUlX2NvbmZpZ2ZsYWd9 ICR7JSVBUFBfU0hPUlROQU1FJSVfY29uZmlnfSBzdGFydApYCX0KWH0KWApYJSVBUFBfU0hPUlRO QU1FJSVfcmVzdGFydCAoKQpYewpYCWNoZWNreWVzbm8gJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxl ICYmClgJewpYCQllY2hvICJSZXN0YXJ0aW5nICUlQVBQX1NIT1JUTkFNRSUlLiIKWAkJJSVDT05U Uk9MX1NDUklQVCUlIC1xICR7JSVBUFBfU0hPUlROQU1FJSVfZmxhZ3N9ICR7JSVBUFBfU0hPUlRO QU1FJSVfY29uZmlnZmxhZ30gJHslJUFQUF9TSE9SVE5BTUUlJV9jb25maWd9IHJlc3RhcnQKWAl9 Clh9ClgKWGxvYWRfcmNfY29uZmlnICRuYW1lClgKWFsgLW4gIiR7JSVBUFBfU0hPUlROQU1FJSVf Y29uZmlnfSIgXSAmJiAlJUFQUF9TSE9SVE5BTUUlJV9jb25maWdmbGFnPSItY29uZmlnIgpYClhy dW5fcmNfY29tbWFuZCAiJDEiCkVORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9qYm9z czUuc2guaW4KZWNobyB4IC0gL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvZGFlbW9uY3RsLmMu aW4Kc2VkICdzL15YLy8nID4vaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9kYWVtb25jdGwuYy5p biA8PCAnRU5ELW9mLS9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL2RhZW1vbmN0bC5jLmluJwpY LyoKWCAqIC0qLSBtb2RlOiBGdW5kYW1lbnRhbDsgdGFiLXdpZHRoOiA0OyAtKi0KWCAqIGV4OnRz PTQKWCAqClggKiBEYWVtb24gY29udHJvbCBwcm9ncmFtLCB3aXRoIEphdmEgU3RhcnR1cCBvcHRp b25zLgpYICoKWCAqCU9yaWdpbmFsIGJ5IEVybnN0IGRlIEhhYW4gPHpuZXJkQGZyZWVic2Qub3Jn PgpYICoJd3d3L2pha2FydGEtdG9tY2F0NC9maWxlcy9kYWVtb25jdGwuYwpYICoKWCAqICRGcmVl QlNEJApYICovClgKWCNpbmNsdWRlIDxhc3NlcnQuaD4KWCNpbmNsdWRlIDxmY250bC5oPgpYI2lu Y2x1ZGUgPHNpZ25hbC5oPgpYI2luY2x1ZGUgPHN0ZGFyZy5oPgpYI2luY2x1ZGUgPHN0ZGlvLmg+ ClgjaW5jbHVkZSA8c3RkbGliLmg+ClgjaW5jbHVkZSA8c3RyaW5nLmg+ClgjaW5jbHVkZSA8c3lz bG9nLmg+ClgjaW5jbHVkZSA8dW5pc3RkLmg+ClgjaW5jbHVkZSA8c3lzL2Vycm5vLmg+ClgjaW5j bHVkZSA8c3lzL3N0YXQuaD4KWCNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KWCNpbmNsdWRlIDxzeXMv dWlvLmg+ClgKWCNkZWZpbmUJVFJVRQkxClgjZGVmaW5lCUZBTFNFCTAKWApYLyogVGhlIGludGVy dmFsIGluIHNlY29uZHMgYmV0d2VlbiB0aGUgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGUgcHJvY2Vz cwpYICAgZGllZCBhZnRlciBhIGtpbGwgKi8KWCNkZWZpbmUgU1RPUF9USU1FX0lOVEVSVkFMCQkx ClgKWCNkZWZpbmUgRVJSX0lMTEVHQUxfQVJHVU1FTlQJCQkJMQpYI2RlZmluZSBFUlJfUElEX0ZJ TEVfTk9UX0ZPVU5ECQkJCTIKWCNkZWZpbmUgRVJSX0tJTExfRkFJTEVECQkJCQkJNQpYI2RlZmlu ZSBFUlJfQUxSRUFEWV9SVU5OSU5HCQkJCQk2ClgjZGVmaW5lIEVSUl9OT1RfUlVOTklORwkJCQkJ CTcKWCNkZWZpbmUgRVJSX0NIRElSX1RPX0FQUF9IT01FCQkJCTgKWCNkZWZpbmUgRVJSX0FDQ0VT U19KQVJfRklMRQkJCQkJMTcKWCNkZWZpbmUgRVJSX1NURE9VVF9MT0dGSUxFX09QRU4JCQkJOQpY I2RlZmluZSBFUlJfU1RERVJSX0xPR0ZJTEVfT1BFTgkJCQkxMApYI2RlZmluZSBFUlJfRk9SS19G QUlMRUQJCQkJCQkxMQpYI2RlZmluZSBFUlJfU1RBVF9KQVZBX0hPTUUJCQkJCTEyClgjZGVmaW5l IEVSUl9KQVZBX0hPTUVfTk9UX0RJUgkJCQkxMwpYI2RlZmluZSBFUlJfU1RBVF9KQVZBX0NNRAkJ CQkJMTQKWCNkZWZpbmUgRVJSX0pBVkFfQ01EX05PVF9GSUxFCQkJCTE1ClgjZGVmaW5lIEVSUl9K QVZBX0NNRF9OT1RfRVhFQ1VUQUJMRQkJCTE2ClgKWC8qClgJRnVuY3Rpb24gZGVjbGFyYXRpb25z LgpYICovClhzdGF0aWMgdm9pZCBwcmludFVzYWdlICh2b2lkKTsKWHN0YXRpYyBpbnQgcmVhZFBJ RCAodm9pZCk7ClhzdGF0aWMgdm9pZCB3cml0ZVBJRCAoaW50IHBpZCk7ClhzdGF0aWMgdm9pZCBj bGVhclBJRCAodm9pZCk7ClhzdGF0aWMgdm9pZCBzdGFydCAoaW50IGphdmFPcHQsIGNoYXIgKiBq YXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKWHN0YXRpYyB2 b2lkIHN0b3AgKHZvaWQpOwpYc3RhdGljIHZvaWQgcmVzdGFydCAoaW50IGphdmFPcHQsIGNoYXIg KiBqYXZhQXJncyBbXSwgaW50IGpib3NzT3B0LCBjaGFyICogamJvc3NBcmdzIFtdKTsKWHN0YXRp YyB2b2lkIGxvZ091dHB1dCAoY2hhciAqKTsKWApYLyoKWAlHbG9iYWxzClggKi8KWHN0YXRpYyBp bnQgaXNRdWlldCA9IEZBTFNFOwpYc3RhdGljIGNoYXIgKiBvcHRRdWlldCA9ICItcSIsCQkJLyog cXVpZXQgb3B0aW9uICovClgJCQkqIG9wdENvbmZpZyA9ICItY29uZmlnIjsJLyogamJvc3MgY29u ZmlndXJhdGlvbiBvcHRpb24gKi8KWApYLyoqClggKiBNYWluIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0 aW9uIGlzIGNhbGxlZCB3aGVuIHRoaXMgcHJvZ3JhbSBpcyBleGVjdXRlZC4KWCAqClggKiBAcGFy YW0gYXJnYwpYICogICAgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcGx1cyBvbmUsIHNvIGFsd2F5 cyBncmVhdGVyIHRoYW4gMC4KWCAqClggKiBAcGFyYW0gYXJndgpYICogICAgdGhlIGFyZ3VtZW50 cyBpbiBhbiBhcnJheSBvZiBjaGFyYWN0ZXIgcG9pbnRlcnMsIHdoZXJlIHRoZSBsYXN0IGFyZ3Vt ZW50ClggKiAgICBlbGVtZW50IGlzIGZvbGxvd2VkIGJ5IGEgTlVMTCBlbGVtZW50LgpYICovClhp bnQKWG1haW4gKApYIGludCBhcmdjLApYIGNoYXIgKmFyZ3YgW10pClh7ClgJLyogRGVjbGFyZSB2 YXJpYWJsZXMsIGxpa2UgYWxsIG90aGVyIGdvb2QgQU5TSSBDIHByb2dyYW1zIGRvIDopICovClgJ aW50IGksIGphdmFPcHQsIGpib3NzT3B0OwpYCWNoYXIgKmFyZ3VtZW50LCAqKmphdmFBcmdzLCAq Kmpib3NzQXJnczsKWApYCS8qIFBhcnNlIHRoZSBhcmd1bWVudHMgKi8KWAlpZiAoYXJnYyA8IDIp ClgJewpYCQlwcmludFVzYWdlICgpOwpYCQlyZXR1cm4gMDsKWAl9ClgKWAkvKiBYWFg6IEZpeCBm b3Igc2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQgZm9yIHRoZSBqYXZhIHdyYXBwZXIgc2NyaXB0 ICovClgJc2V0dWlkIChnZXRldWlkICgpKTsKWAlzZXRnaWQgKGdldGVnaWQgKCkpOwpYClgJLyoK WAkJQnVpbGQgdXAgamF2YSBhbmQgamJvc3Mgb3B0aW9uIGJsb2Nrcy4KWAkgKi8KWAlqYXZhT3B0 ID0gamJvc3NPcHQgPSAwOwpYCWZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspClgJewpYCQlpZiAo c3RyY21wIChhcmd2IFtpXSwgb3B0UXVpZXQpID09IDApClgJCXsKWAkJCWlzUXVpZXQgPSBUUlVF OwpYClgJCX0gZWxzZSBpZiAoc3RyY21wIChhcmd2IFtpXSwgb3B0Q29uZmlnKSA9PSAwKQpYCQl7 ClgJCQlqYm9zc09wdCArPSAyOwpYCQkJaWYgKCsraSA+PSBhcmdjKQpYCQkJewpYCQkJCXByaW50 VXNhZ2UgKCk7ClgJCQkJcmV0dXJuIEVSUl9JTExFR0FMX0FSR1VNRU5UOwpYCQkJfQpYClgJCX0g ZWxzZSBpZiAoKmFyZ3YgW2ldID09ICctJykKWAkJewpYCQkJamF2YU9wdCsrOwpYCQl9ClgJfQpY CWlmIChqYXZhT3B0ID09IDApClgJCWphdmFBcmdzID0gTlVMTDsKWAllbHNlClgJewpYCQlpbnQg aiA9IDA7ClgJCWphdmFBcmdzID0gbWFsbG9jIChzaXplb2YgKGNoYXIgKikgKiBqYXZhT3B0KTsK WAkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKWAkJewpYCQkJaWYgKHN0cmNtcCAoYXJndiBb aV0sIG9wdFF1aWV0KSAmJgpYCQkJCXN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgJiYKWAkJ CQkqYXJndiBbaV0gPT0gJy0nKQpYCQkJewpYCQkJCWphdmFBcmdzIFtqKytdID0gYXJndiBbaV07 ClgJCQl9ClgJCX0KWAl9ClgJaWYgKGpib3NzT3B0ID09IDApClgJCWpib3NzQXJncyA9IE5VTEw7 ClgJZWxzZQpYCXsKWAkJaW50IGogPSAwOwpYCQlqYm9zc0FyZ3MgPSBtYWxsb2MgKHNpemVvZiAo Y2hhciAqKSAqIGpib3NzT3B0KTsKWAkJZm9yIChpID0gMDsgaSA8IGFyZ2M7IGkrKykKWAkJewpY CQkJaWYgKHN0cmNtcCAoYXJndiBbaV0sIG9wdENvbmZpZykgPT0gMCkKWAkJCXsKWAkJCQlqYm9z c0FyZ3MgW2orK10gPSAiLWMiOwpYCQkJCWpib3NzQXJncyBbaisrXSA9IGFyZ3YgWysraV07ClgJ CQl9ClgJCX0KWAl9ClgKWAkvKgpYCQlEZWNpZGUgb24ganVzdCB3aGF0IHRvIGNhbGwuClgJICov ClgJYXJndW1lbnQgPSBhcmd2IFthcmdjIC0gMV07ClgJaWYgKHN0cmNtcCAoInN0YXJ0IiwgYXJn dW1lbnQpID09IDApClgJewpYCQlzdGFydCAoamF2YU9wdCwgamF2YUFyZ3MsIGpib3NzT3B0LCBq Ym9zc0FyZ3MpOwpYClgJfSBlbHNlIGlmIChzdHJjbXAgKCJzdG9wIiwgYXJndW1lbnQpID09IDAp ClgJewpYCQlzdG9wICgpOwpYClgJfSBlbHNlIGlmIChzdHJjbXAgKCJyZXN0YXJ0IiwgYXJndW1l bnQpID09IDApClgJewpYCQlyZXN0YXJ0IChqYXZhT3B0LCBqYXZhQXJncywgamJvc3NPcHQsIGpi b3NzQXJncyk7ClgKWAl9IGVsc2UgewpYCQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NS SVBUX05BTUUlJTogSWxsZWdhbCBhcmd1bWVudCBcIiVzXCIuXG4iLCBhcmd1bWVudCk7ClgJCXBy aW50VXNhZ2UgKCk7ClgJCWV4aXQgKEVSUl9JTExFR0FMX0FSR1VNRU5UKTsKWAl9ClgKWAlyZXR1 cm4gRVhJVF9TVUNDRVNTOwpYfQpYClgvKioKWCAqIFByaW50cyB1c2FnZSBpbmZvcm1hdGlvbiB0 byBzdGRvdXQuClggKi8KWHN0YXRpYyB2b2lkClhwcmludFVzYWdlICh2b2lkKQpYewpYCXByaW50 ZiAoIlVzYWdlOiAlJUNPTlRST0xfU0NSSVBUX05BTUUlJSBbamF2YS1vcHRpb25zXSBbLWNvbmZp ZyBqYm9zc2NvbmZpZ10ge3N0YXJ0fHN0b3B8cmVzdGFydH1cbiIpOwpYfQpYClgvKioKWCAqIFJl YWRzIGEgUElEIGZyb20gdGhlIFBJRCBmaWxlLgpYICoKWCAqIEByZXR1cm4KWCAqICAgIHRoZSBQ SUQsIG9yIC0xIGlmIHRoZSBmaWxlIHdhcyBlbXB0eS4KWCAqLwpYc3RhdGljIGludApYcmVhZFBJ RCAodm9pZCkKWHsKWAlGSUxFICogZmlsZTsKWAlpbnQgcGlkOwpYClgJbG9nT3V0cHV0ICgiPj4g UmVhZGluZyBQSUQgZmlsZSAoJSVQSURfRklMRSUlKS4uLiIpOwpYCWZpbGUgPSBmb3BlbiAoIiUl UElEX0ZJTEUlJSIsICJyIik7ClgJaWYgKCFmaWxlKQpYCXsKWAkJbG9nT3V0cHV0ICgiIFsgRkFJ TEVEIF1cbiIpOwpYCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRv IG9wZW4gJSVQSURfRklMRSUlIGZvciByZWFkaW5nOiAiKTsKWAkJZXhpdCAoRVJSX1BJRF9GSUxF X05PVF9GT1VORCk7ClgJfQpYCWlmIChmc2NhbmYgKGZpbGUsICIlZCIsICZwaWQpIDwgMSkKWAkJ cGlkID0gLTE7ClgJZmNsb3NlIChmaWxlKTsKWApYCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7 ClgJcmV0dXJuIHBpZDsKWH0KWApYLyoqClggKiBXcml0ZXMgYSBwcm9jZXNzIElEIHRvIHRoZSBz cGVjaWZpZWQgZmlsZS4gVGhlIGZpbGUgaXMgaWRlbnRpZmllZCBieSBhIGZpbGUKWCAqIGhhbmRs ZS4KWCAqClggKiBAcGFyYW0gcGlkClggKiAgICB0aGUgUElEIHRvIHN0b3JlLCBhbHdheXMgZ3Jl YXRlciB0aGFuIDAuClggKi8KWHN0YXRpYyB2b2lkClh3cml0ZVBJRCAoClggaW50IHBpZCkKWHsK WAlGSUxFICogZmlsZTsKWApYCWxvZ091dHB1dCAoIj4+IFdyaXRpbmcgUElEIGZpbGUuLi4iKTsK WAlmaWxlID0gZm9wZW4gKCIlJVBJRF9GSUxFJSUiLCAidyIpOwpYCWlmICghZmlsZSkKWAl7ClgJ CWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKWAkJcGVycm9yICgiJSVDT05UUk9MX1NDUklQ VF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlUElEX0ZJTEUlJSBmb3Igd3JpdGluZzogIik7ClgJ CWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwpYCX0KWAlmcHJpbnRmIChmaWxlLCAiJWRc biIsIHBpZCk7ClgJZmNsb3NlIChmaWxlKTsKWApYCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7 Clh9ClgKWC8qKgpYCVRydW5jYXRlIHRoZSBQSUQgZmlsZS4KWCAqLwpYc3RhdGljIHZvaWQKWGNs ZWFyUElEICh2b2lkKQpYewpYCWlmICh0cnVuY2F0ZSAoIiUlUElEX0ZJTEUlJSIsIDApICE9IDAp ClgJewpYCQlwZXJyb3IgKCIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGNsZWFy ICUlUElEX0ZJTEUlJTogIik7ClgJCWV4aXQgKEVSUl9QSURfRklMRV9OT1RfRk9VTkQpOwpYCX0K WH0KWApYLyoqClggKiBDaGVja3MgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIHJ1bm5pbmcu ClggKgpYICogQHBhcmFtIHBpZApYICogICAgdGhlIHByb2Nlc3MgaWQsIGdyZWF0ZXIgdGhhbiAw LgpYICoKWCAqIEByZXR1cm4KWCAqICAgIDAgaWYgdGhlIHNwZWNpZmllZCBwcm9jZXNzIGlzIG5v dCBydW5uaW5nLCBhIGRpZmZlcmVudCB2YWx1ZSBvdGhlcndpc2UuClggKi8KWHN0YXRpYyBpbnQK WGV4aXN0c1Byb2Nlc3MgKApYIGludCBwaWQpClh7ClgJaW50IHJlc3VsdDsKWApYCS8qIENoZWNr IHByZWNvbmRpdGlvbnMgKi8KWAlhc3NlcnQgKHBpZCA+IDApOwpYClgJLyogU2VlIGlmIHRoZSBw cm9jZXNzIGV4aXN0cyAqLwpYICAgCXJlc3VsdCA9IGtpbGwgKHBpZCwgMCk7ClgKWAkvKiBJZiB0 aGUgcmVzdWx0IGlzIDAsIHRoZW4gdGhlIHByb2Nlc3MgZXhpc3RzICovClgJcmV0dXJuIHJlc3Vs dCA9PSAwOwpYfQpYClgvKioKWCAqIEtpbGxzIHRoZSBwcm9jZXNzIGlkZW50aWZpZWQgYnkgdGhl IHNwZWNpZmllZCBJRC4KWCAqClggKiBAcGFyYW0gcGlkClggKiAgICB0aGUgcHJvY2VzcyBpZCwg Z3JlYXRlciB0aGFuIDAuClggKi8KWHN0YXRpYyB2b2lkClhraWxsUHJvY2VzcyAoClggaW50IHBp ZCkKWHsKWAlpbnQgcmVzdWx0OwpYCXVuc2lnbmVkIGludCB3YWl0ZWQ7ClgJdW5zaWduZWQgaW50 IGZvcmNlZDsKWAl1bnNpZ25lZCBpbnQgaW50ZXJ2YWwgPSBTVE9QX1RJTUVfSU5URVJWQUw7ClgJ dW5zaWduZWQgaW50IHRpbWVvdXQgID0gJSVTVE9QX1RJTUVPVVQlJTsKWApYCS8qIENoZWNrIHBy ZWNvbmRpdGlvbnMgKi8KWAlhc3NlcnQgKHBpZCA+IDApOwpYClgJaWYgKCFpc1F1aWV0KQpYCQlw cmludGYgKCI+PiBUZXJtaW5hdGluZyBwcm9jZXNzICVkLi4uIiwgcGlkKTsKWAlyZXN1bHQgPSBr aWxsIChwaWQsIFNJR1RFUk0pOwpYCWlmIChyZXN1bHQgPCAwKSB7ClgJCWxvZ091dHB1dCAoIiBb IEZBSUxFRCBdXG4iKTsKWAkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1F JSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3MgJWQ6ICIsIHBpZCk7ClgJCXBlcnJvciAoTlVMTCk7 ClgJCWV4aXQgKEVSUl9LSUxMX0ZBSUxFRCk7ClgJfQpYClgJLyogV2FpdCB1bnRpbCB0aGUgcHJv Y2VzcyBpcyBhY3R1YWxseSBraWxsZWQgKi8KWCAgICByZXN1bHQgPSBleGlzdHNQcm9jZXNzIChw aWQpOwpYCWZvciAod2FpdGVkPTA7IHJlc3VsdCA9PSAxICYmIHdhaXRlZCA8IHRpbWVvdXQ7IHdh aXRlZCArPSBpbnRlcnZhbCkKWAl7ClgJCWxvZ091dHB1dCAoIi4iKTsKWAkJZmZsdXNoIChzdGRv dXQpOwpYCQlzbGVlcCAoaW50ZXJ2YWwpOwpYICAgIAlyZXN1bHQgPSBleGlzdHNQcm9jZXNzIChw aWQpOwpYCX0KWApYCS8qIElmIHRoZSBwcm9jZXNzIHN0aWxsIGV4aXN0cywgdGhlbiBoYXZlIG5v IG1lcmN5IGFuZCBraWxsIGl0ICovClgJZm9yY2VkID0gMDsKWAlpZiAocmVzdWx0ID09IDEpClgJ ewpYCQkvKiBGb3JjZSB0aGUgcHJvY2VzcyB0byBkaWUgKi8KWAkJcmVzdWx0ID0ga2lsbCAocGlk LCBTSUdLSUxMKTsKWAkJaWYgKHJlc3VsdCA9PSAwKSB7ClgJCQlmb3JjZWQgPSAxOwpYCQkJbG9n T3V0cHV0ICgiIFsgS0lMTEVEIF1cbiIpOwpYCQkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9M X1NDUklQVF9OQU1FJSU6IFByb2Nlc3MgJWQgZGlkIG5vdCB0ZXJtaW5hdGUgd2l0aGluICUlU1RP UF9USU1FT1VUJSUgc2VjLiBLaWxsZWQuXG4iLCBwaWQpOwpYCQl9IGVsc2UgaWYgKHJlc3VsdCAh PSBFU1JDSCkgewpYCQkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwpYCQkJZnByaW50ZiAo c3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBraWxsIHByb2Nlc3Mg JWQ6ICIsIHBpZCk7ClgJCQlwZXJyb3IgKE5VTEwpOwpYCQkJZXhpdCAoRVJSX0tJTExfRkFJTEVE KTsKWAkJfQpYCX0KWApYCWlmIChmb3JjZWQgPT0gMCkgewpYCQlsb2dPdXRwdXQgKCIgWyBET05F IF1cbiIpOwpYCX0KWH0KWApYLyoqClggKiBTdGFydHMgdGhlIGRhZW1vbi4KWCAqLwpYc3RhdGlj IHZvaWQKWHN0YXJ0ICgKWCBpbnQgamF2YU9wdCwKWCBjaGFyICogamF2YUFyZ3MgW10sClggaW50 IGpib3NzT3B0LApYIGNoYXIgKiBqYm9zc0FyZ3MgW10pClh7ClgJaW50IGksIGFyZ2M7ClgJY2hh ciAqKiBhcmd2OwpYCWludCBwaWQ7ClgJaW50IHJlc3VsdDsKWAlpbnQgc3Rkb3V0TG9nRmlsZTsK WAlpbnQgc3RkZXJyTG9nRmlsZTsKWAlzdHJ1Y3Qgc3RhdCBzYjsKWApYCXBpZCA9IHJlYWRQSUQg KCk7ClgKWAlsb2dPdXRwdXQgKCI+PiBTdGFydGluZyAlJUFQUF9USVRMRSUlICUlUE9SVFZFUlNJ T04lJS4uLiIpOwpYCWlmIChwaWQgIT0gLTEpClgJewpYCQkvKiBDaGVjayBpZiB0aGUgcHJvY2Vz cyBhY3R1YWxseSBleGlzdHMgKi8KWAkJcmVzdWx0ID0gZXhpc3RzUHJvY2VzcyAocGlkKTsKWAkJ aWYgKHJlc3VsdCA9PSAxKQpYCQl7ClgJCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7ClgJ CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUl JSAlJVBPUlRWRVJTSU9OJSUgaXMgYWxyZWFkeSBydW5uaW5nLCBQSUQgaXMgJWQuXG4iLCBwaWQp OwpYCQkJZXhpdCAoRVJSX0FMUkVBRFlfUlVOTklORyk7ClgJCX0KWAl9ClgKWAkvKiBDaGVjayBp ZiB0aGUgSkRLIGhvbWUgZGlyZWN0b3J5IGlzIGFjdHVhbGx5IGEgZGlyZWN0b3J5ICovClgJcmVz dWx0ID0gc3RhdCAoIiUlSkFWQV9IT01FJSUiLCAmc2IpOwpYCWlmIChyZXN1bHQgIT0gMCkgewpY CQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7ClgJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09O VFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gc3RhdCAlJUpBVkFfSE9NRSUlOiAiKTsKWAkJ cGVycm9yIChOVUxMKTsKWAkJZXhpdCAoRVJSX1NUQVRfSkFWQV9IT01FKTsKWAl9ClgJaWYgKCFT X0lTRElSIChzYi5zdF9tb2RlKSkgewpYCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7ClgJ CWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBKYXZhIGhvbWUgZGly ZWN0b3J5ICUlSkFWQV9IT01FJSUgaXMgbm90IGEgZGlyZWN0b3J5LlxuIik7ClgJCWV4aXQgKEVS Ul9KQVZBX0hPTUVfTk9UX0RJUik7ClgJfQpYClgJLyogQ2hlY2sgaWYgdGhlIEphdmEgY29tbWFu ZCBpcyBhY3R1YWxseSBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZSAqLwpYCXJlc3VsdCA9IHN0 YXQgKCIlJUpBVkElJSIsICZzYik7ClgJaWYgKHJlc3VsdCAhPSAwKSB7ClgJCWxvZ091dHB1dCAo IiBbIEZBSUxFRCBdXG4iKTsKWAkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O QU1FJSU6IFVuYWJsZSB0byBzdGF0ICUlSkFWQSUlOiAiKTsKWAkJcGVycm9yIChOVUxMKTsKWAkJ ZXhpdCAoRVJSX1NUQVRfSkFWQV9DTUQpOwpYCX0KWAlpZiAoIVNfSVNSRUcgKHNiLnN0X21vZGUp KSB7ClgJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKWAkJZnByaW50ZiAoc3RkZXJyLCAi JSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IEphdmEgY29tbWFuZCAlJUpBVkElJSBpcyBub3QgYSBy ZWd1bGFyIGZpbGUuXG4iKTsKWAkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9GSUxFKTsKWAl9ClgJ cmVzdWx0ID0gYWNjZXNzICgiJSVKQVZBJSUiLCBYX09LKTsKWAlpZiAocmVzdWx0ICE9IDApIHsK WAkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwpYCQlmcHJpbnRmIChzdGRlcnIsICIlJUNP TlRST0xfU0NSSVBUX05BTUUlJTogSmF2YSBjb21tYW5kICUlSkFWQSUlIGlzIG5vdCBleGVjdXRh YmxlOiAiKTsKWAkJcGVycm9yIChOVUxMKTsKWAkJZXhpdCAoRVJSX0pBVkFfQ01EX05PVF9FWEVD VVRBQkxFKTsKWAl9ClgKWAkvKiBDaGFuZ2UgZGlyZWN0b3J5ICovClgJcmVzdWx0ID0gY2hkaXIg KCIlJUFQUF9IT01FJSUiKTsKWAlpZiAocmVzdWx0IDwgMCkgewpYCQlsb2dPdXRwdXQgKCIgWyBG QUlMRUQgXVxuIik7ClgJCWZwcmludGYgKHN0ZGVyciwgIiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUl OiBVbmFibGUgdG8gYWNjZXNzIGRpcmVjdG9yeSAlJUFQUF9IT01FJSU6ICIpOwpYCQlwZXJyb3Ig KE5VTEwpOwpYCQlleGl0IChFUlJfQ0hESVJfVE9fQVBQX0hPTUUpOwpYCX0KWApYCS8qIFNlZSBp ZiB0aGUgSkFSIGZpbGUgZXhpc3RzICovClgJcmVzdWx0ID0gYWNjZXNzICgiJSVBUFBfSE9NRSUl LyUlSkFSX0ZJTEUlJSIsIFJfT0spOwpYCWlmIChyZXN1bHQgPCAwKSB7ClgJCWxvZ091dHB1dCAo IiBbIEZBSUxFRCBdXG4iKTsKWAkJZnByaW50ZiAoc3RkZXJyLCAiJSVDT05UUk9MX1NDUklQVF9O QU1FJSU6IFVuYWJsZSB0byBhY2Nlc3MgSkFSIGZpbGUgJSVBUFBfSE9NRSUlLyUlSkFSX0ZJTEUl JTogIik7ClgJCXBlcnJvciAoTlVMTCk7ClgJCWV4aXQgKEVSUl9BQ0NFU1NfSkFSX0ZJTEUpOwpY CX0KWApYCS8qIE9wZW4gdGhlIHN0ZG91dCBsb2cgZmlsZSAqLwpYCXN0ZG91dExvZ0ZpbGUgPSBv cGVuICgiJSVTVERPVVRfTE9HJSUiLCBPX1dST05MWSk7ClgJaWYgKHN0ZG91dExvZ0ZpbGUgPCAw KSB7ClgJCWxvZ091dHB1dCAoIiBbIEZBSUxFRCBdXG4iKTsKWAkJZnByaW50ZiAoc3RkZXJyLCAi JSVDT05UUk9MX1NDUklQVF9OQU1FJSU6IFVuYWJsZSB0byBvcGVuICUlU1RET1VUX0xPRyUlIGZv ciB3cml0aW5nOiAiKTsKWAkJcGVycm9yIChOVUxMKTsKWAkJZXhpdCAoRVJSX1NURE9VVF9MT0dG SUxFX09QRU4pOwpYCX0KWAlsc2VlayAoc3Rkb3V0TG9nRmlsZSwgKG9mZl90KSAwLCBTRUVLX0VO RCk7ClgKWAkvKiBPcGVuIHRoZSBzdGRlcnIgbG9nIGZpbGUgKi8KWAlzdGRlcnJMb2dGaWxlID0g b3BlbiAoIiUlU1RERVJSX0xPRyUlIiwgT19XUk9OTFkpOwpYCWlmIChzdGRlcnJMb2dGaWxlIDwg MCkgewpYCQlsb2dPdXRwdXQgKCIgWyBGQUlMRUQgXVxuIik7ClgJCWZwcmludGYgKHN0ZGVyciwg IiUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlOiBVbmFibGUgdG8gb3BlbiAlJVNUREVSUl9MT0clJSBm b3Igd3JpdGluZzogIik7ClgJCXBlcnJvciAoTlVMTCk7ClgJCWV4aXQgKEVSUl9TVERFUlJfTE9H RklMRV9PUEVOKTsKWAl9ClgJbHNlZWsgKHN0ZGVyckxvZ0ZpbGUsIChvZmZfdCkgMCwgU0VFS19F TkQpOwpYClgJLyogU3BsaXQgdGhpcyBwcm9jZXNzIGluIHR3byAqLwpYCXN3aXRjaCAocGlkID0g Zm9yayAoKSkKWAl7ClgJY2FzZSAtMToKWAkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwpY CQlmcHJpbnRmIChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogVW5hYmxlIHRvIGZv cms6ICIpOwpYCQlwZXJyb3IgKE5VTEwpOwpYCQlleGl0IChFUlJfRk9SS19GQUlMRUQpOwpYCQli cmVhazsKWApYCWNhc2UgMDoKWAkJLyogUmVkaXJlY3Qgc3Rkb3V0IHRvIGxvZyBmaWxlICovClgJ CWR1cDIgKHN0ZG91dExvZ0ZpbGUsIFNURE9VVF9GSUxFTk8pOwpYClgJCS8qIFJlZGlyZWN0IHN0 ZGVyciB0byBsb2cgZmlsZSAqLwpYCQlkdXAyIChzdGRlcnJMb2dGaWxlLCBTVERFUlJfRklMRU5P KTsKWApYCQkvKiBUT0RPOiBTdXBwb3J0IHJlZGlyZWN0aW9uIG9mIGJvdGggc3Rkb3V0IGFuZCBz dGRlcnIgdG8gdGhlIHNhbWUKWAkJCQkgZmlsZSB1c2luZyBwaXBlICgyKSAqLwpYClgJCS8qClgJ CQlCdWlsZCB0aGUgYXJndW1lbnQgdmVjdG9yLCB3aXRoIHRoZSBqYXZhL2pib3NzIG9wdGlvbnMg aWYgYW55LgpYCQkgKi8KWAkJYXJndiA9IG1hbGxvYyAoc2l6ZW9mIChjaGFyICopICogKGphdmFP cHQgKyBqYm9zc09wdCArIDUpKTsKWAkJYXJnYyA9IDA7ClgJCWFyZ3YgW2FyZ2MrK10gPSAiJSVK QVZBJSUiOwpYCQlmb3IgKGkgPSAwOyBpIDwgamF2YU9wdDsgaSsrKQpYCQkJYXJndiBbYXJnYysr XSA9IGphdmFBcmdzIFtpXTsKWAkJYXJndiBbYXJnYysrXSA9ICItY3AiOwpYCQlhcmd2IFthcmdj KytdID0gIiUlSkFWQV9DUCUlIjsKWAkJYXJndiBbYXJnYysrXSA9ICIlJUpBVkFfTUFJTiUlIjsK WAkJZm9yIChpID0gMDsgaSA8IGpib3NzT3B0OyBpKyspClgJCQlhcmd2IFthcmdjKytdID0gamJv c3NBcmdzIFtpXTsKWAkJYXJndiBbYXJnYysrXSA9IE5VTEw7ClgKWAkJLyogRXhlY3V0ZSB0aGUg Y29tbWFuZCAqLwpYCQlleGVjdiAoYXJndiBbMF0sIGFyZ3YpOwpYCQlwZXJyb3IgKE5VTEwpOwpY CQlicmVhazsKWApYCWRlZmF1bHQ6ClgJCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7ClgJCXdy aXRlUElEIChwaWQpOwpYCX0KWH0KWApYLyoqClggKiBTdG9wcyB0aGUgZGFlbW9uLgpYICovClhz dGF0aWMgdm9pZApYc3RvcCAodm9pZCkKWHsKWAlpbnQgcGlkOwpYClgJcGlkID0gcmVhZFBJRCAo KTsKWApYCWxvZ091dHB1dCAoIj4+IENoZWNraW5nIGlmICUlQVBQX1RJVExFJSUgJSVQT1JUVkVS U0lPTiUlIGlzIHJ1bm5pbmcuLi4iKTsKWApYCS8qIElmIHRoZXJlIGlzIGEgUElELCBzZWUgaWYg dGhlIHByb2Nlc3Mgc3RpbGwgZXhpc3RzICovClgJaWYgKHBpZCAhPSAtMSkKWAl7ClgJCWludCBy ZXN1bHQgPSBraWxsIChwaWQsIDApOwpYCQlpZiAocmVzdWx0ICE9IDAgJiYgZXJybm8gPT0gRVNS Q0gpClgJCXsKWAkJCWNsZWFyUElEICgpOwpYCQkJcGlkID0gLTE7ClgJCX0KWAl9ClgKWAkvKiBJ ZiB0aGVyZSBpcyBubyBydW5uaW5nIHByb2Nlc3MsIHByb2R1Y2UgYW4gZXJyb3IgKi8KWAlpZiAo cGlkID09IC0xKQpYCXsKWAkJbG9nT3V0cHV0ICgiIFsgRkFJTEVEIF1cbiIpOwpYCQlmcHJpbnRm IChzdGRlcnIsICIlJUNPTlRST0xfU0NSSVBUX05BTUUlJTogJSVBUFBfVElUTEUlJSAlJVBPUlRW RVJTSU9OJSUgaXMgY3VycmVudGx5IG5vdCBydW5uaW5nLlxuIik7ClgJCWV4aXQgKEVSUl9OT1Rf UlVOTklORyk7ClgJfQpYCWxvZ091dHB1dCAoIiBbIERPTkUgXVxuIik7ClgKWAkvKiBUZXJtaW5h dGUgdGhlIHByb2Nlc3MgKi8KWAlraWxsUHJvY2VzcyAocGlkKTsKWAljbGVhclBJRCAoKTsKWH0K WApYClgvKioKWCAqIFJlc3RhcnRzIHRoZSBwcm9jZXNzLiBJZiBpdCBub3QgY3VycmVudGx5IHJ1 bm5pbmcsIHRoZW4gaXQgd2lsbCBmYWlsLgpYICovClhzdGF0aWMgdm9pZApYcmVzdGFydCAoClgg aW50IGphdmFPcHQsClggY2hhciAqIGphdmFBcmdzIFtdLApYIGludCBqYm9zc09wdCwKWCBjaGFy ICogamJvc3NBcmdzIFtdKQpYewpYCXN0b3AgKCk7ClgJc3RhcnQgKGphdmFPcHQsIGphdmFBcmdz LCBqYm9zc09wdCwgamJvc3NBcmdzKTsKWH0KWApYLyoqClgJT3V0cHV0IGxvZyB0byBzdGRvdXQu ClggKi8KWHN0YXRpYyB2b2lkClhsb2dPdXRwdXQgKApYIGNoYXIgKiBzdHJpbmcpClh7ClgJaWYg KCFpc1F1aWV0KQpYCQlwcmludGYgKHN0cmluZyk7Clh9CkVORC1vZi0vaG9tZS9saXV0b25nL2pi b3NzNS9maWxlcy9kYWVtb25jdGwuYy5pbgplY2hvIHggLSAvaG9tZS9saXV0b25nL2pib3NzNS9m aWxlcy9wYXRjaC1idWlsZC54bWwKc2VkICdzL15YLy8nID4vaG9tZS9saXV0b25nL2pib3NzNS9m aWxlcy9wYXRjaC1idWlsZC54bWwgPDwgJ0VORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9maWxl cy9wYXRjaC1idWlsZC54bWwnClgtLS0gLi9idWlsZC9idWlsZC54bWwub3JpZwlTdW4gTWFyIDI1 IDIxOjI5OjIxIDIwMDcKWCsrKyAuL2J1aWxkL2J1aWxkLnhtbAlTdW4gTWFyIDI1IDIxOjMwOjU2 IDIwMDcKWEBAIC00MCw2ICs0MCwzNiBAQApYICAgIC0tPgpYIApYICAgPHRhcmdldCBuYW1lPSJp bml0IiB1bmxlc3M9ImluaXQuZGlzYWJsZSIgZGVwZW5kcz0iX2J1aWxkbWFnaWM6aW5pdCI+Clgr ICAgICAgPCEtLSBNYWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgdmVyc2lvbiBvZiBBbnQgLS0+ ClgrICAgICAgPHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb24iIHZh bHVlPSIxLjUiLz4KWCsgICAgICA8cHJvcGVydHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNi5iYXNl dmVyc2lvbiIgdmFsdWU9IjEuNiIvPgpYKyAgICAgIDxwcm9wZXJ0eSBuYW1lPSJidWlsZG1hZ2lj LmFudDE3LmJhc2V2ZXJzaW9uIiB2YWx1ZT0iMS43Ii8+ClgrICAgICAgPCEtLQpYKyAgICAgICAg fCBBZGQgbmV3IGNvbmRpdGlvbnMgZm9yIG90aGVyIHN1cHBvcnRlZCBBbnQgdmVyc2lvbnMgd2hl biB0aGV5ClgrICAgICAgICB8IGJlY29tZSBhdmFpYWxibGUuClgrICAgICAgIC0tPgpYKwpYKyAg ICAgIDxjb25kaXRpb24gcHJvcGVydHk9ImJ1aWxkbWFnaWMuYW50LmNvbXBhdGlibGUiPgpYKyAg ICAgIDxvcj4KWCsgICAgICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIKWCsg ICAgICAgICAgICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNS5iYXNl dmVyc2lvbn0iLz4KWCsgICAgICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9ufSIK WCsgICAgICAgICAgICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQxNi5i YXNldmVyc2lvbn0iLz4KWCsgICAgICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9u fSIKWCsgICAgICAgICAgICBzdWJzdHJpbmc9IkFudCB2ZXJzaW9uICR7YnVpbGRtYWdpYy5hbnQx Ny5iYXNldmVyc2lvbn0iLz4KWCsgICAgICA8L29yPgpYKyAgICAgIDwvY29uZGl0aW9uPgpYKwpY KyAgICAgIDxmYWlsIHVubGVzcz0iYnVpbGRtYWdpYy5hbnQuY29tcGF0aWJsZSI+ClgrClgrICAg ICAgIFVuc3VwcG9ydGVkIEFudCB2ZXJzaW9uOgpYKwpYKyAgICAgICAke2FudC52ZXJzaW9ufQpY KwpYKyAgICAgICBQbGVhc2UgaW5zdGFsbCBhIHZlcnNpb24gd2hpY2ggaXMgY29tcGF0aWJsZSB3 aXRoIEFudCAke2J1aWxkbWFnaWMuYW50MTUuYmFzZXZlcnNpb259IG9yICR7YnVpbGRtYWdpYy5h bnQxNi5iYXNldmVyc2lvbn0KWCsgICAgICAgb3IgJHtidWlsZG1hZ2ljLmFudDE3LmJhc2V2ZXJz aW9ufS4KWCsKWCsgICAgICA8L2ZhaWw+ClggICA8L3RhcmdldD4KWCAKWCAKRU5ELW9mLS9ob21l L2xpdXRvbmcvamJvc3M1L2ZpbGVzL3BhdGNoLWJ1aWxkLnhtbAplY2hvIHggLSAvaG9tZS9saXV0 b25nL2pib3NzNS9maWxlcy9wa2ctaW5zdGFsbC5pbgpzZWQgJ3MvXlgvLycgPi9ob21lL2xpdXRv bmcvamJvc3M1L2ZpbGVzL3BrZy1pbnN0YWxsLmluIDw8ICdFTkQtb2YtL2hvbWUvbGl1dG9uZy9q Ym9zczUvZmlsZXMvcGtnLWluc3RhbGwuaW4nClgjIS9iaW4vc2gKWCMKWCMgQ2hlY2tzIGlmIHRo ZSAnd3d3JyB1c2VyIGFuZCBncm91cCBleGlzdC4gSWYgdGhleSBkb24ndCwgdGhlbgpYIyBhbiBh dHRlbXB0IGlzIG1hZGUgdG8gY3JlYXRlIGJvdGguClgjClgjICRGcmVlQlNEJApYIwpYClgjIE1h a2Ugc3VyZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoZSAnbWFrZSBpbnN0YWxsJyBwcm9jZXNzClhp ZiBbICIkMiIgIT0gIlBSRS1JTlNUQUxMIiBdOyB0aGVuClggICAgZXhpdCAwClhmaQpYClgjIFNl dCBzb21lIGNvbnN0YW50cwpYVVNFUj13d3cKWEdST1VQPSR7VVNFUn0KWFVJRD04MApYR0lEPSR7 VUlEfQpYClgjIFNlZSBpZiB0aGUgZ3JvdXAgYWxyZWFkeSBleGlzdHMKWGlmICEgcHcgZ3JvdXBz aG93ICIke0dST1VQfSIgMj4vZGV2L251bGwgMT4mMjsgdGhlbgpYClgJIyBJZiBub3QsIHRyeSB0 byBjcmVhdGUgaXQKWAlpZiBwdyBncm91cGFkZCAke0dST1VQfSAtZyAke0dJRH07IHRoZW4KWAkJ ZWNobyAiQWRkZWQgZ3JvdXAgXCIke0dST1VQfVwiLiIKWAllbHNlClgJCWVjaG8gIkFkZGluZyBn cm91cCBcIiR7R1JPVVB9XCIgZmFpbGVkLi4uIgpYCQlleGl0IDEKWAlmaQpYZmkKWApYIyBTZWUg aWYgdGhlIHVzZXIgYWxyZWFkeSBleGlzdHMKWGlmICEgcHcgdXNlcnNob3cgIiR7VVNFUn0iIDI+ L2Rldi9udWxsIDE+JjI7IHRoZW4KWApYCSMgSWYgbm90LCB0cnkgdG8gY3JlYXRlIGl0ClgJaWYg cHcgdXNlcmFkZCAke1VTRVJ9IC11ICR7VUlEfSAtZyAke0dST1VQfSAtaCAtIFwKWAkJLXMgIi9z YmluL25vbG9naW4iIC1kICIvbm9uZXhpc3RlbnQiIFwKWAkJLWMgIldvcmxkIFdpZGUgV2ViIE93 bmVyIjsgXApYCXRoZW4KWAkJZWNobyAiQWRkZWQgdXNlciBcIiR7VVNFUn1cIi4iClgJZWxzZQpY CQllY2hvICJBZGRpbmcgdXNlciBcIiR7VVNFUn1cIiBmYWlsZWQuLi4iClgJCWV4aXQgMQpYCWZp ClhmaQpYZXhpdCAwCkVORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9wa2ctaW5zdGFs bC5pbgplY2hvIHggLSAvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9wa2ctZGVpbnN0YWxsLmlu CnNlZCAncy9eWC8vJyA+L2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvcGtnLWRlaW5zdGFsbC5p biA8PCAnRU5ELW9mLS9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL3BrZy1kZWluc3RhbGwuaW4n ClgjIS9iaW4vc2gKWCMKWCMgVGhpcyBzY3JpcHQgZG9lcyB0aGUgZm9sbG93aW5nLgpYIwpYIyAq IENoZWNrcyBpZiB0aGUgSkJvc3MgUElEIGZpbGUgZXhpc3RzLiBJZiBpdCBkb2VzLCBpdCBraWxs cyB0aGUKWCMgICBKQm9zcyBwcm9jZXNzIGFuZCByZW1vdmVzIHRoZSBQSUQgZmlsZS4KWCMKWCMg JEZyZWVCU0QkClgjClgKWCMgTWFrZSBzdXJlIHdlJ3JlIGluIHRoZSByaWdodCBzdGFnZSBvZiB0 aGUgcHJvY2VzcwpYaWYgWyAiJDIiID0gIkRFSU5TVEFMTCIgXTsgdGhlbgpYClgJIyBLaWxsIEpC b3NzIGlmIGl0IGlzIHN0aWxsIHJ1bm5pbmcKWAlQSURfRklMRT0vdmFyL3J1bi9qYm9zcy5waWQK WAlpZiBbIC1zICR7UElEX0ZJTEV9IF07IHRoZW4KWAkJUElEPWBjYXQgJHtQSURfRklMRX1gClgJ CWVjaG8gLW4gIj4+IEtpbGxpbmcgSkJvc3MgU2VydmVyIHByb2Nlc3MgKCR7UElEfSkuLi4iClgJ CS9iaW4va2lsbCAke1BJRH0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsClgJCWlmIFsgJD8gLWVx IDAgXTsgdGhlbgpYCQkJZWNobyAiIFsgRE9ORSBdIgpYCQllbHNlClgJCQllY2hvICIgWyBGQUlM RUQgXSIKWAkJZmkKWAkJZWNobyAtbiAiPj4gUmVtb3ZpbmcgUElEIGZpbGUgKCR7UElEX0ZJTEV9 KS4uLiIKWAkJcm0gJHtQSURfRklMRX0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsClgJCWlmIFsg JD8gLWVxIDAgXTsgdGhlbgpYCQkJZWNobyAiIFsgRE9ORSBdIgpYCQllbHNlClgJCQllY2hvICIg WyBGQUlMRUQgXSIKWAkJZmkKWAlmaQpYZmkKWApYZXhpdCAwCkVORC1vZi0vaG9tZS9saXV0b25n L2pib3NzNS9maWxlcy9wa2ctZGVpbnN0YWxsLmluCmVjaG8geCAtIC9ob21lL2xpdXRvbmcvamJv c3M1L2ZpbGVzL3BrZy1tZXNzYWdlLmluCnNlZCAncy9eWC8vJyA+L2hvbWUvbGl1dG9uZy9qYm9z czUvZmlsZXMvcGtnLW1lc3NhZ2UuaW4gPDwgJ0VORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9m aWxlcy9wa2ctbWVzc2FnZS5pbicKWCUlUEtHTkFNRSUlIGhhcyBiZWVuIGluc3RhbGxlZCBpbiAl JUFQUF9IT01FJSUuClgKWElmIGEgdXNlciBzaG91bGQgYmUgYWJsZSB0byB1c2UgJSVDT05UUk9M X1NDUklQVF9OQU1FJSUsIHB1dCBpdCBpbiB0aGUgZ3JvdXAgJyUlR1JPVVAlJScuClgKWFVzZSAn bWFuICUlQ09OVFJPTF9TQ1JJUFRfTkFNRSUlJyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgc3RhcnRp bmcgYW5kIHN0b3BwaW5nICUlQVBQX1RJVExFJSUuClgKWFRvIHJ1biB0aGUgJSVBUFBfVElUTEUl JSBzZXJ2ZXIgZnJvbSBzdGFydHVwLCBhZGQgJSVBUFBfU0hPUlROQU1FJSVfZW5hYmxlPSJZRVMi IGluIHlvdXIgL2V0Yy9yYy5jb25mLiBFeHRyYSBvcHRpb25zIGNhbiBiZSBmb3VuZCBpbiB0aGUg c3RhcnR1cCBzY3JpcHQuCkVORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9wa2ctbWVz c2FnZS5pbgplY2hvIHggLSAvaG9tZS9saXV0b25nL2pib3NzNS9maWxlcy9wYXRjaC1idWlsZG1h Z2ljLmVudApzZWQgJ3MvXlgvLycgPi9ob21lL2xpdXRvbmcvamJvc3M1L2ZpbGVzL3BhdGNoLWJ1 aWxkbWFnaWMuZW50IDw8ICdFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvcGF0Y2gt YnVpbGRtYWdpYy5lbnQnClgtLS0gLi90b29scy9ldGMvYnVpbGRtYWdpYy9idWlsZG1hZ2ljLmVu dC5vcmlnCU1vbiBOb3YgMjAgMDc6NDU6NTUgMjAwNgpYKysrIC4vdG9vbHMvZXRjL2J1aWxkbWFn aWMvYnVpbGRtYWdpYy5lbnQJU3VuIE1hciAyNSAyMToyODoxNCAyMDA3ClhAQCAtNywzNCArNyw2 IEBAClggPCEtLSBJbml0aWFsaXplIHRoZSBidWlsZCBzeXN0ZW0uIC0tPgpYIDx0YXJnZXQgbmFt ZT0iX2J1aWxkbWFnaWM6aW5pdCIgdW5sZXNzPSJpbml0LmRpc2FibGUiPgpYIApYLSAgPCEtLSBN YWtlIHN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgdmVyc2lvbiBvZiBBbnQgLS0+ClgtICA8cHJvcGVy dHkgbmFtZT0iYnVpbGRtYWdpYy5hbnQxNS5iYXNldmVyc2lvbiIgdmFsdWU9IjEuNSIvPgpYLSAg PHByb3BlcnR5IG5hbWU9ImJ1aWxkbWFnaWMuYW50MTYuYmFzZXZlcnNpb24iIHZhbHVlPSIxLjYi Lz4KWC0KWC0gIDwhLS0KWC0gICAgIHwgQWRkIG5ldyBjb25kaXRpb25zIGZvciBvdGhlciBzdXBw b3J0ZWQgQW50IHZlcnNpb25zIHdoZW4gdGhleQpYLSAgICAgfCBiZWNvbWUgYXZhaWFsYmxlLgpY LSAgIC0tPgpYLQpYLSAgPGNvbmRpdGlvbiBwcm9wZXJ0eT0iYnVpbGRtYWdpYy5hbnQuY29tcGF0 aWJsZSI+ClgtICAgIDxvcj4KWC0gICAgICA8Y29udGFpbnMgc3RyaW5nPSIke2FudC52ZXJzaW9u fSIKWC0gICAgICAgIHN1YnN0cmluZz0iQW50IHZlcnNpb24gJHtidWlsZG1hZ2ljLmFudDE1LmJh c2V2ZXJzaW9ufSIvPgpYLSAgICAgIDxjb250YWlucyBzdHJpbmc9IiR7YW50LnZlcnNpb259IgpY LSAgICAgICAgc3Vic3RyaW5nPSJBbnQgdmVyc2lvbiAke2J1aWxkbWFnaWMuYW50MTYuYmFzZXZl cnNpb259Ii8+ClgtICAgIDwvb3I+ClgtICA8L2NvbmRpdGlvbj4KWC0KWC0gIDxmYWlsIHVubGVz cz0iYnVpbGRtYWdpYy5hbnQuY29tcGF0aWJsZSI+ClgtClgtICBVbnN1cHBvcnRlZCBBbnQgdmVy c2lvbjoKWC0KWC0gICAgJHthbnQudmVyc2lvbn0KWC0KWC0gIFBsZWFzZSBpbnN0YWxsIGEgdmVy c2lvbiB3aGljaCBpcyBjb21wYXRpYmxlIHdpdGggQW50ICR7YnVpbGRtYWdpYy5hbnQxNS5iYXNl dmVyc2lvbn0gb3IgJHtidWlsZG1hZ2ljLmFudDE2LmJhc2V2ZXJzaW9ufS4KWC0KWC0gIDwvZmFp bD4KWC0KWCAgIDwhLS0gSkRLIERldGVjdGlvbiAtLT4KWCAgIDxhdmFpbGFibGUgY2xhc3NuYW1l PSJqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnQiIHByb3BlcnR5PSJIQVZFX0pES18xLjQiLz4K WCAgIDxhdmFpbGFibGUgY2xhc3NuYW1lPSJqYXZhLmxhbmcuRW51bSIgcHJvcGVydHk9IkhBVkVf SkRLXzEuNSIvPgpFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvZmlsZXMvcGF0Y2gtYnVpbGRt YWdpYy5lbnQKZWNobyB4IC0gL2hvbWUvbGl1dG9uZy9qYm9zczUvTWFrZWZpbGUKc2VkICdzL15Y Ly8nID4vaG9tZS9saXV0b25nL2pib3NzNS9NYWtlZmlsZSA8PCAnRU5ELW9mLS9ob21lL2xpdXRv bmcvamJvc3M1L01ha2VmaWxlJwpYIyBwb3J0cyBjb2xsZWN0aW9uIG1ha2VmaWxlIGZvcjogamJv c3M1ClgjIERhdGUgY3JlYXRlZDogICAgICAgICAgICAgICAgICA3IE1heSAyMDA3ClgjIFdob206 ICAgICAgICAgICAgICAgICAgICAgICAgICBuZW1vbGl1QGdtYWlsLmNvbSA8bmVtb2xpdUBnbWFp bC5jb20+ClgjClgjICRGcmVlQlNEJApYIwpYClhQT1JUTkFNRT0JJHtBUFBfVElUTEU6TH0KWFBP UlRWRVJTSU9OPQk1LjAuMC5iMQpYUE9SVEVQT0NIPQkxClhDQVRFR09SSUVTPQlqYXZhIGRldmVs ClhNQVNURVJfU0lURVM9CSR7TUFTVEVSX1NJVEVfU09VUkNFRk9SR0V9ClhNQVNURVJfU0lURV9T VUJESVI9CSR7UE9SVE5BTUV9ClhESVNUTkFNRT0JJHtQT1JUTkFNRX0tJHtQT1JUVkVSU0lPTjpS fS5CZXRhMS1zcmMKWApYTUFJTlRBSU5FUj0JbmVtb2xpdUBnbWFpbC5jb20KWENPTU1FTlQ9CU9w ZW4tc291cmNlIEoyRUUgYXBwbGljYXRpb24gc2VydmVyICg1LnggZmFtaWx5KQpYClhCVUlMRF9E RVBFTkRTPQlhbnQ6JHtQT1JUU0RJUn0vZGV2ZWwvYXBhY2hlLWFudApYClhMQVRFU1RfTElOSz0J amJvc3M1ClhVU0VfSkFWQT0JeWVzClhKQVZBX1ZFUlNJT049CTEuNSsKWFVTRV9BTlQ9CXllcwpY ClhNQUtFX0FSR1M9CS1idWlsZGZpbGUgYnVpbGQvYnVpbGQueG1sClgKWFVTRV9SQ19TVUJSPQlq Ym9zczUuc2gKWFNVQl9GSUxFUz0JcGtnLWluc3RhbGwgcGtnLWRlaW5zdGFsbCBwa2ctbWVzc2Fn ZSBkYWVtb25jdGwuMSBkYWVtb25jdGwuYwpYClguaWYgIWRlZmluZWQoTk9QT1JURE9DUykKWFBP UlRET0NTPQkqClguZW5kaWYKWApYQVBQX0hPTUU/PQkke1BSRUZJWH0vJHtBUFBfU0hPUlROQU1F fQpYRE9DU0RJUj0JJHtQUkVGSVh9L3NoYXJlL2RvYy8ke1BLR0JBU0V9JHtQT1JUVkVSU0lPTjpS fQpYTE9HX0RJUj0JJHtBUFBfSE9NRX0vbG9nClhBUFBfVElUTEU9CUpCb3NzClhBUFBfU0hPUlRO QU1FPQkke1VOSVFVRU5BTUV9ClhDT05UUk9MX1NDUklQVF9OQU1FPQkke0FQUF9TSE9SVE5BTUV9 Y3RsClhDT05UUk9MX1NDUklQVD0JJHtQUkVGSVh9L2Jpbi8ke0NPTlRST0xfU0NSSVBUX05BTUV9 ClhDT05UUk9MX1NDUklQVF9NQU5QQUdFX1RJVExFPQkke0NPTlRST0xfU0NSSVBUX05BTUU6VX0K WFNUQVJUVVBfU0NSSVBUX05BTUU9CSR7QVBQX1NIT1JUTkFNRX0uc2gKWFNUQVJUVVBfU0NSSVBU PQkke1BSRUZJWH0vZXRjL3JjLmQvJHtTVEFSVFVQX1NDUklQVF9OQU1FfQpYVVNFUj0JCXd3dwpY R1JPVVA9CQl3d3cKWFNURE9VVF9MT0c9CSR7TE9HX0RJUn0vc3Rkb3V0LmxvZwpYU1RERVJSX0xP Rz0JJHtMT0dfRElSfS9zdGRlcnIubG9nClhBVVRPX1NUQVJUPz0JTk8KWFNUT1BfVElNRU9VVD89 CTUKWFBJRF9GSUxFPQkvdmFyL3J1bi8ke0FQUF9TSE9SVE5BTUV9LnBpZApYSkFWQV9PUFRTPQpY SkFWQV9DUD0JYmluL3J1bi5qYXI6JHtKQVZBX0hPTUV9L2xpYi90b29scy5qYXIKWEpBVkFfTUFJ Tj0Jb3JnLmpib3NzLk1haW4KWE1BTjE9CQkke0NPTlRST0xfU0NSSVBUX05BTUV9LjEKWApYSkJP U1NPVVRQVVQ9CSR7V1JLU1JDfS9idWlsZC9vdXRwdXQvJHtQT1JUTkFNRX0tJHtQT1JUVkVSU0lP TjpSfS5CZXRhMQpYQVBQX0hPTUVfRklMRVM9CWJpbiBjbGllbnQgbGliIHNlcnZlcgpYClhQS0dN RVNTQUdFPQkke1dSS0RJUn0vcGtnLW1lc3NhZ2UKWApYUExJU1RfRklMRVM9CSR7Q09OVFJPTF9T Q1JJUFQ6UyxeJHtQUkVGSVh9LywsfSBcClgJCSR7U1RET1VUX0xPRzpTLF4ke1BSRUZJWH0vLCx9 IFwKWAkJJHtTVERFUlJfTE9HOlMsXiR7UFJFRklYfS8sLH0KWApYU1VCX0xJU1Q9CUFQUF9IT01F PSR7QVBQX0hPTUV9IFwKWAkJQVBQX1NIT1JUTkFNRT0ke0FQUF9TSE9SVE5BTUV9IFwKWAkJQVBQ X1RJVExFPSR7QVBQX1RJVExFfSBcClgJCUNPTlRST0xfU0NSSVBUPSR7Q09OVFJPTF9TQ1JJUFR9 IFwKWAkJQ09OVFJPTF9TQ1JJUFRfTUFOUEFHRV9USVRMRT0ke0NPTlRST0xfU0NSSVBUX01BTlBB R0VfVElUTEV9IFwKWAkJQ09OVFJPTF9TQ1JJUFRfTkFNRT0ke0NPTlRST0xfU0NSSVBUX05BTUV9 IFwKWAkJR1JPVVA9JHtHUk9VUH0gXApYCQlKQVZBPSR7SkFWQX0gXApYCQlKQVZBX0NQPSR7SkFW QV9DUH0gXApYCQlKQVZBX0hPTUU9JHtKQVZBX0hPTUV9IFwKWAkJSkFWQV9NQUlOPSR7SkFWQV9N QUlOfSBcClgJCUpBVkFfT1BUUz0ke0pBVkFfT1BUU30gXApYCQlKQVZBX1BPUlRfVkVSU0lPTj0k e0pBVkFfUE9SVF9WRVJTSU9OfSBcClgJCUpBVkFfUE9SVF9PU19ERVNDUklQVElPTj0ke0pBVkFf UE9SVF9PU19ERVNDUklQVElPTn0gXApYCQlKQVJfRklMRT0ke0pBUl9GSUxFfSBcClgJCUxPR19E SVI9JHtMT0dfRElSfSBcClgJCVBJRF9GSUxFPSR7UElEX0ZJTEV9IFwKWAkJUEtHTkFNRT0ke1BL R05BTUV9IFwKWAkJUE9SVE5BTUU9JHtQT1JUTkFNRX0gXApYCQlQT1JUVkVSU0lPTj0ke1BPUlRW RVJTSU9OfSBcClgJCVBSRUZJWD0ke1BSRUZJWH0gXApYCQlTVEFSVFVQX1NDUklQVD0ke1NUQVJU VVBfU0NSSVBUfSBcClgJCVNUREVSUl9MT0c9JHtTVERFUlJfTE9HfSBcClgJCVNURE9VVF9MT0c9 JHtTVERPVVRfTE9HfSBcClgJCVNUT1BfVElNRU9VVD0ke1NUT1BfVElNRU9VVH0gXApYCQlVU0VS PSR7VVNFUn0KWApYLmluY2x1ZGUgPGJzZC5wb3J0LnByZS5taz4KWApYcHJlLXBhdGNoOgpYCUAk e0VDSE9fTVNHfSAiSW5zdGFsbGF0aW9uIHNldHRpbmdzOiIKWAlAJHtFQ0hPX01TR30gIiAgIERl c3RpbmF0aW9uIGRpcmVjdG9yeTogICAgJHtBUFBfSE9NRX0iClgJQCR7RUNIT19NU0d9ICIgICBD b250cm9sIHByb2dyYW0gbG9jYXRpb246ICR7Q09OVFJPTF9TQ1JJUFR9IgpYCUAke0VDSE9fTVNH fSAiICAgU3RhcnR1cCBzY3JpcHQgbG9jYXRpb246ICAke1NUQVJUVVBfU0NSSVBUfSIKWAlAJHtF Q0hPX01TR30gIiAgIExvY2F0aW9uIG9mIEpESzogICAgICAgICAgJHtKQVZBX0hPTUV9IgpYCUAk e0VDSE9fTVNHfSAiICAgTG9jYXRpb24gb2YgSmF2YSBwb3J0OiAgICAke0pBVkFfUE9SVH0iClgJ QCR7RUNIT19NU0d9ICIgICBTdGFydHVwIEphdmEgT3B0aW9uczogICAgICR7SkFWQV9PUFRTfSIK WAlAJHtFQ0hPX01TR30gIiAgIFJ1bm5pbmcgYXMgKHVzZXIvZ3JvdXApOiAgJHtVU0VSfS8ke0dS T1VQfSIKWAlAJHtFQ0hPX01TR30gIiAgIExvZ2ZpbGUgc3Rkb3V0OiAgICAgICAgICAgJHtTVERP VVRfTE9HfSIKWAlAJHtFQ0hPX01TR30gIiAgIExvZ2ZpbGUgc3RkZXJyOiAgICAgICAgICAgJHtT VERFUlJfTE9HfSIKWAlAJHtFQ0hPX01TR30gIiAgIFN0YXJ0aW5nIGFmdGVyIGluc3RhbGw6ICAg JHtBVVRPX1NUQVJUfSIKWAlAJHtFQ0hPX01TR30gIiAgIFN0b3AgdGltZS1vdXQ6ICAgICAgICAg ICAgJHtTVE9QX1RJTUVPVVR9IHNlYy4iClgKWHByZS1pbnN0YWxsOgpYCUAke1NFVEVOVn0gUEtH X1BSRUZJWD0ke1BSRUZJWH0gJHtTSH0gJHtQS0dJTlNUQUxMfSAke1BLR05BTUV9IFBSRS1JTlNU QUxMClgKWGRvLWluc3RhbGw6ClgJY2QgJHtXUktESVJ9ICYmICR7Q0N9ICR7Q0ZMQUdTfSAtbyAk e0NPTlRST0xfU0NSSVBUX05BTUV9IGRhZW1vbmN0bC5jClgJJHtNS0RJUn0gJHtBUFBfSE9NRX0g JiYgJHtDSE9XTn0gJHtVU0VSfToke0dST1VQfSAke0FQUF9IT01FfQpYCSR7TUtESVJ9ICR7TE9H X0RJUn0gJiYgJHtDSE9XTn0gJHtVU0VSfToke0dST1VQfSAke0xPR19ESVJ9ClgJKGNkICR7SkJP U1NPVVRQVVR9ICYmICR7RklORH0gJHtBUFBfSE9NRV9GSUxFU30gfFwKWAkJJHtDUElPfSAtcGRt dSAtUiAke1VTRVJ9OiR7R1JPVVB9ICR7QVBQX0hPTUV9KQpYCSR7SU5TVEFMTH0gLW8gJHtVU0VS fSAtZyAke0dST1VQfSAtbSAwNjc1NFwKWAkJJHtXUktESVJ9LyR7Q09OVFJPTF9TQ1JJUFRfTkFN RX0gJHtDT05UUk9MX1NDUklQVH0KWAkke0lOU1RBTEx9IC1vICR7VVNFUn0gLWcgJHtHUk9VUH0g LW0gMDY0MCAvZGV2L251bGwgJHtTVERPVVRfTE9HfQpYCSR7SU5TVEFMTH0gLW8gJHtVU0VSfSAt ZyAke0dST1VQfSAtbSAwNjQwIC9kZXYvbnVsbCAke1NUREVSUl9MT0d9ClgJJHtJTlNUQUxMfSAt byAke1VTRVJ9IC1nICR7R1JPVVB9IC1tIDA2NDAgL2Rldi9udWxsICR7UElEX0ZJTEV9ClgJJHtJ TlNUQUxMX01BTn0gJHtXUktESVJ9L2RhZW1vbmN0bC4xICR7TUFOUFJFRklYfS9tYW4vbWFuMS8k e0NPTlRST0xfU0NSSVBUX05BTUV9LjEKWC5pZiAhZGVmaW5lZChOT1BPUlRET0NTKQpYCWNkICR7 SkJPU1NPVVRQVVR9L2RvY3MgXApYCQkmJiAke0ZJTkR9IC4gLXR5cGUgZCAtZXhlYyAke01LRElS fSAke0RPQ1NESVJ9L3t9IFw7IFwKWAkJJiYgJHtGSU5EfSAuIC10eXBlIGYgLWV4ZWMgJHtJTlNU QUxMX0RBVEF9IHt9ICR7RE9DU0RJUn0ve30gXDsKWC5lbmRpZgpYClhwb3N0LWluc3RhbGw6ClgJ QCR7RklORH0gLXMgJHtBUFBfSE9NRV9GSUxFUzpTLF4sJHtKQk9TU09VVFBVVH0vLH0gLW5vdCAt dHlwZSBkIHwgXApYCQkke1NFRH0gLW5lICdzLF4ke0pCT1NTT1VUUFVUfSwke0FQUF9IT01FOlMs JHtQUkVGSVh9LywsfSxwJyA+PiAke1RNUFBMSVNUfQpYCUAke0ZJTkR9IC1zIC1kICR7QVBQX0hP TUVfRklMRVM6UyxeLCR7SkJPU1NPVVRQVVR9Lyx9IC10eXBlIGQgfCBcClgJCSR7U0VEfSAtbmUg J3MsXiR7SkJPU1NPVVRQVVR9LEBkaXJybSAke0FQUF9IT01FOlMsJHtQUkVGSVh9LywsfSxwJyA+ PiAke1RNUFBMSVNUfQpYCUAke0VDSE9fQ01EfSAiQGRpcnJtICR7QVBQX0hPTUU6UyxeJHtQUkVG SVh9LywsfS9sb2ciID4+ICR7VE1QUExJU1R9ClgJQCR7RUNIT19DTUR9ICJAZGlycm0gJHtBUFBf SE9NRTpTLF4ke1BSRUZJWH0vLCx9IiA+PiAke1RNUFBMSVNUfQpYLmlmICR7QVVUT19TVEFSVH0g PT0gIllFUyIKWAlAJHtDT05UUk9MX1NDUklQVH0gc3RhcnQgfHwgdHJ1ZQpYLmVuZGlmClguaWYg IWRlZmluZWQoQkFUQ0gpClgJQCR7Q0FUfSAke1BLR01FU1NBR0V9ClguZW5kaWYKWApYLmluY2x1 ZGUgPGJzZC5wb3J0LnBvc3QubWs+CkVORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9NYWtlZmls ZQplY2hvIHggLSAvaG9tZS9saXV0b25nL2pib3NzNS9kaXN0aW5mbwpzZWQgJ3MvXlgvLycgPi9o b21lL2xpdXRvbmcvamJvc3M1L2Rpc3RpbmZvIDw8ICdFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9z czUvZGlzdGluZm8nClhNRDUgKGpib3NzLTUuMC4wLkJldGExLXNyYy50YXIuZ3opID0gOTIzNjVl ZDliYWZhZTkyNWMwNzFlMjNlNzIzMjE2YmUKWFNIQTI1NiAoamJvc3MtNS4wLjAuQmV0YTEtc3Jj LnRhci5neikgPSBmMDkxNmVkY2UzMDUzYTNjYzVlNjg5NTU5ODIyYjU1OWUwZDRiMDg1ODJlZWI2 MDZmMDIwOGNhNzYzNGVmMWU1ClhTSVpFIChqYm9zcy01LjAuMC5CZXRhMS1zcmMudGFyLmd6KSA9 IDExNDM0NzIzNQpFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvZGlzdGluZm8KZWNobyB4IC0g L2hvbWUvbGl1dG9uZy9qYm9zczUvcGtnLWRlc2NyCnNlZCAncy9eWC8vJyA+L2hvbWUvbGl1dG9u Zy9qYm9zczUvcGtnLWRlc2NyIDw8ICdFTkQtb2YtL2hvbWUvbGl1dG9uZy9qYm9zczUvcGtnLWRl c2NyJwpYSkJvc3MgQVMgNSBHQSB3aWxsIGJlIEphdmEgRUUgNSBjZXJ0aWZpZWQgYW5kIHdpbGwg aW5jbHVkZSB0aGUgZm9sbG93aW5nIGNvcmUKWHRlY2hub2xvZ2llcy4KWApYICAgICogSkJvc3Mg TWljcm9jb250YWluZXIgLSBQT0pPIGJhc2VkIG1pY3JvY29udGFpbmVyIHJlbW92aW5nIHRoZSBk ZXBlbmRlbmN5ClggICAgICBvbiBKTVgKWCAgICAqIEVKQiAzLjAgLSBGdWxseSBjZXJ0aWZpZWQg YXMgcGFydCBvZiB0aGUgSmF2YSBFRSA1IGNvbXBsaWFudCBKQm9zcyBBUyA1ClggICAgKiBIaWJl cm5hdGUgMy4yIC0gSlBBIGNlcnRpZmllZApYICAgICogSkJvc3MgTWVzc2FnaW5nIDEuMiAtIHRo ZSBuZXh0IGdlbmVyYXRpb24gbWVzc2FnaW5nIHBsYXRmb3JtIGZyb20gSkJvc3MKWCAgICAgIHdp dGggSEEgZmVhdHVyZXMuClggICAgKiBKQm9zcyBXZWJTZXJ2aWNlcyAyLjAgLSBuZXcgY3VzdG9t IGJ1aWx0IEpBWC1XUyBjb21wbGlhbnQgV2ViU2VydmljZXMKWCAgICAgIHN0YWNrLgpYICAgICog SkJvc3MgU2VhbSAxLjEgLSBhIHBvd2VyZnVsIG5ldyBhcHBsaWNhdGlvbiBmcmFtZXdvcmsgdG8g YnVpbGQgbmV4dApYICAgICAgZ2VuZXJhdGlvbiBXZWIgMi4wIGFwcGxpY2F0aW9ucyBieSB1bmlm eWluZyBhbmQgaW50ZWdyYXRpbmcgcG9wdWxhcgpYICAgICAgc2VydmljZSBvcmllbnRlZCBhcmNo aXRlY3R1cmUgKFNPQSkgdGVjaG5vbG9naWVzClgKWFdXVzogaHR0cDovL3d3dy5qYm9zcy5vcmcv CkVORC1vZi0vaG9tZS9saXV0b25nL2pib3NzNS9wa2ctZGVzY3IKZXhpdAoK ------=_Part_225228_27186714.1174832547365-- State-Changed-From-To: open->repocopy State-Changed-By: delphij State-Changed-When: Sun Mar 25 14:38:34 UTC 2007 State-Changed-Why: This is a newer version of previous jboss, while there is difference, it is worthy for a repocopy. Responsible-Changed-From-To: freebsd-java->portmgr Responsible-Changed-By: delphij Responsible-Changed-When: Sun Mar 25 14:38:34 UTC 2007 Responsible-Changed-Why: Please do repocopy: java/jboss4 -> java/jboss5, thanks! Note: this is essentially a complete rewrite of jboss port, so if repocopy is unnecessary, please let me know and bump the state back to open. http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 State-Changed-From-To: repocopy->open State-Changed-By: marcus State-Changed-When: Wed Mar 28 05:09:08 UTC 2007 State-Changed-Why: A repocopy should be performed if there is a need to preserve the history of the source port in the destination port. If nothing is inherited from jboss4 but the name "jboss" then a repocopy is not needed. When in doubt, a repocopy is always best. Responsible-Changed-From-To: portmgr->delphij Responsible-Changed-By: marcus Responsible-Changed-When: Wed Mar 28 05:09:08 UTC 2007 Responsible-Changed-Why: A repocopy should be performed if there is a need to preserve the history of the source port in the destination port. If nothing is inherited from jboss4 but the name "jboss" then a repocopy is not needed. When in doubt, a repocopy is always best. http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 State-Changed-From-To: open->repocopy State-Changed-By: delphij State-Changed-When: Wed Mar 28 05:17:23 UTC 2007 State-Changed-Why: Repocopy: the start script was inherited from jboss4. Please do repocopy: java/jboss4 -> java/jboss5 Responsible-Changed-From-To: delphij->portmgr Responsible-Changed-By: delphij Responsible-Changed-When: Wed Mar 28 05:17:23 UTC 2007 Responsible-Changed-Why: Repocopy: the start script was inherited from jboss4. Please do repocopy: java/jboss4 -> java/jboss5 http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 State-Changed-From-To: repocopy->open State-Changed-By: marcus State-Changed-When: Wed Mar 28 05:20:31 UTC 2007 State-Changed-Why: Repocopy completed. Responsible-Changed-From-To: portmgr->delphij Responsible-Changed-By: marcus Responsible-Changed-When: Wed Mar 28 05:20:31 UTC 2007 Responsible-Changed-Why: Repocopy completed. http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/110163: commit references a PR Date: Wed, 28 Mar 2007 05:47:22 +0000 (UTC) delphij 2007-03-28 05:47:17 UTC FreeBSD ports repository Modified files: java/jboss5 Makefile distinfo pkg-descr Added files: java/jboss5/files daemonctl.1.in daemonctl.c.in jboss5.sh.in patch-build-common.xml patch-build.xml patch-buildmagic.ent pkg-deinstall.in pkg-install.in pkg-message.in Removed files: java/jboss5 pkg-deinstall pkg-install java/jboss5/files daemonctl.1 daemonctl.c patch-serial-autoinc pkg-message startup.sh Log: New port: jboss5 JBoss AS 5 GA will be Java EE 5 certified and will include the following core technologies. * JBoss Microcontainer - POJO based microcontainer removing the dependency on JMX * EJB 3.0 - Fully certified as part of the Java EE 5 compliant JBoss AS 5 * Hibernate 3.2 - JPA certified * JBoss Messaging 1.2 - the next generation messaging platform from JBoss with HA features. * JBoss WebServices 2.0 - new custom built JAX-WS compliant WebServices stack. * JBoss Seam 1.1 - a powerful new application framework to build next generation Web 2.0 applications by unifying and integrating popular service oriented architecture (SOA) technologies Submitted by: Nemo Liu PR: ports/110163 Repocopy by: marcus Revision Changes Path 1.39 +45 -53 ports/java/jboss5/Makefile 1.18 +3 -3 ports/java/jboss5/distinfo 1.2 +0 -78 ports/java/jboss5/files/daemonctl.1 (dead) 1.1 +78 -0 ports/java/jboss5/files/daemonctl.1.in (new) 1.4 +0 -557 ports/java/jboss5/files/daemonctl.c (dead) 1.1 +557 -0 ports/java/jboss5/files/daemonctl.c.in (new) 1.1 +61 -0 ports/java/jboss5/files/jboss5.sh.in (new) 1.1 +29 -0 ports/java/jboss5/files/patch-build-common.xml (new) 1.1 +39 -0 ports/java/jboss5/files/patch-build.xml (new) 1.1 +37 -0 ports/java/jboss5/files/patch-buildmagic.ent (new) 1.3 +0 -86 ports/java/jboss5/files/patch-serial-autoinc (dead) 1.1 +35 -0 ports/java/jboss5/files/pkg-deinstall.in (new) 1.1 +46 -0 ports/java/jboss5/files/pkg-install.in (new) 1.2 +0 -7 ports/java/jboss5/files/pkg-message (dead) 1.1 +7 -0 ports/java/jboss5/files/pkg-message.in (new) 1.5 +0 -61 ports/java/jboss5/files/startup.sh (dead) 1.3 +0 -35 ports/java/jboss5/pkg-deinstall (dead) 1.3 +13 -21 ports/java/jboss5/pkg-descr 1.2 +0 -46 ports/java/jboss5/pkg-install (dead) _______________________________________________ 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" State-Changed-From-To: open->closed State-Changed-By: delphij State-Changed-When: Wed Mar 28 05:50:16 UTC 2007 State-Changed-Why: New port added, thanks! http://www.freebsd.org/cgi/query-pr.cgi?pr=110163 >Unformatted: