Commits

J.A. Roberts Tunney committed 4a2212d

initial import

Comments (0)

Files changed (10)

+syntax: glob
+*_local.py
+uploads
+blib
+
+syntax: regexp
+(.*/)?\#[^/]*\#$
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+MANIFEST
+Makefile.PL
+install.sh
+rapidcall.pl
+t/Manager.t
+lib/Manager.pm
+# This Makefile is for the manager extension to perl.
+#
+# It was generated automatically by MakeMaker version
+# 6.30_01 (Revision: Revision: 4535 ) from the contents of
+# Makefile.PL. Don't edit this file, edit Makefile.PL instead.
+#
+#       ANY CHANGES MADE HERE WILL BE LOST!
+#
+#   MakeMaker ARGV: ()
+#
+#   MakeMaker Parameters:
+
+#     ABSTRACT => q[Perl Asterisk manager interface library]
+#     AUTHOR => q[J.A. Roberts Tunney <jtunney@lobstertech.com>]
+#     NAME => q[manager]
+#     PMLIBDIRS => [q[lib]]
+#     VERSION_FROM => q[lib/Manager.pm]
+#     dist => { DIST_DEFAULT=>q[tardist], COMPRESS=>q[gzip -9f], SUFFIX=>q[gz] }
+
+# --- MakeMaker post_initialize section:
+
+
+# --- MakeMaker const_config section:
+
+# These definitions are from config.sh (via /usr/lib/perl/5.8/Config.pm)
+
+# They may have been overridden via Makefile.PL or on the command line
+AR = ar
+CC = cc
+CCCDLFLAGS = -fPIC
+CCDLFLAGS = -Wl,-E
+DLEXT = so
+DLSRC = dl_dlopen.xs
+LD = cc
+LDDLFLAGS = -shared -L/usr/local/lib
+LDFLAGS =  -L/usr/local/lib
+LIBC = /lib/libc-2.5.so
+LIB_EXT = .a
+OBJ_EXT = .o
+OSNAME = linux
+OSVERS = 2.6.15.7
+RANLIB = :
+SITELIBEXP = /usr/local/share/perl/5.8.8
+SITEARCHEXP = /usr/local/lib/perl/5.8.8
+SO = so
+EXE_EXT = 
+FULL_AR = /usr/bin/ar
+VENDORARCHEXP = /usr/lib/perl5
+VENDORLIBEXP = /usr/share/perl5
+
+
+# --- MakeMaker constants section:
+AR_STATIC_ARGS = cr
+DIRFILESEP = /
+DFSEP = $(DIRFILESEP)
+NAME = manager
+NAME_SYM = manager
+VERSION = 1
+VERSION_MACRO = VERSION
+VERSION_SYM = 1
+DEFINE_VERSION = -D$(VERSION_MACRO)=\"$(VERSION)\"
+XS_VERSION = 1
+XS_VERSION_MACRO = XS_VERSION
+XS_DEFINE_VERSION = -D$(XS_VERSION_MACRO)=\"$(XS_VERSION)\"
+INST_ARCHLIB = blib/arch
+INST_SCRIPT = blib/script
+INST_BIN = blib/bin
+INST_LIB = blib/lib
+INST_MAN1DIR = blib/man1
+INST_MAN3DIR = blib/man3
+MAN1EXT = 1p
+MAN3EXT = 3pm
+INSTALLDIRS = site
+DESTDIR = 
+PREFIX = /usr
+PERLPREFIX = $(PREFIX)
+SITEPREFIX = $(PREFIX)/local
+VENDORPREFIX = $(PREFIX)
+INSTALLPRIVLIB = $(PERLPREFIX)/share/perl/5.8
+DESTINSTALLPRIVLIB = $(DESTDIR)$(INSTALLPRIVLIB)
+INSTALLSITELIB = $(SITEPREFIX)/share/perl/5.8.8
+DESTINSTALLSITELIB = $(DESTDIR)$(INSTALLSITELIB)
+INSTALLVENDORLIB = $(VENDORPREFIX)/share/perl5
+DESTINSTALLVENDORLIB = $(DESTDIR)$(INSTALLVENDORLIB)
+INSTALLARCHLIB = $(PERLPREFIX)/lib/perl/5.8
+DESTINSTALLARCHLIB = $(DESTDIR)$(INSTALLARCHLIB)
+INSTALLSITEARCH = $(SITEPREFIX)/lib/perl/5.8.8
+DESTINSTALLSITEARCH = $(DESTDIR)$(INSTALLSITEARCH)
+INSTALLVENDORARCH = $(VENDORPREFIX)/lib/perl5
+DESTINSTALLVENDORARCH = $(DESTDIR)$(INSTALLVENDORARCH)
+INSTALLBIN = $(PERLPREFIX)/bin
+DESTINSTALLBIN = $(DESTDIR)$(INSTALLBIN)
+INSTALLSITEBIN = $(SITEPREFIX)/bin
+DESTINSTALLSITEBIN = $(DESTDIR)$(INSTALLSITEBIN)
+INSTALLVENDORBIN = $(VENDORPREFIX)/bin
+DESTINSTALLVENDORBIN = $(DESTDIR)$(INSTALLVENDORBIN)
+INSTALLSCRIPT = $(PERLPREFIX)/bin
+DESTINSTALLSCRIPT = $(DESTDIR)$(INSTALLSCRIPT)
+INSTALLSITESCRIPT = $(SITEPREFIX)/bin
+DESTINSTALLSITESCRIPT = $(DESTDIR)$(INSTALLSITESCRIPT)
+INSTALLVENDORSCRIPT = $(VENDORPREFIX)/bin
+DESTINSTALLVENDORSCRIPT = $(DESTDIR)$(INSTALLVENDORSCRIPT)
+INSTALLMAN1DIR = $(PERLPREFIX)/share/man/man1
+DESTINSTALLMAN1DIR = $(DESTDIR)$(INSTALLMAN1DIR)
+INSTALLSITEMAN1DIR = $(SITEPREFIX)/man/man1
+DESTINSTALLSITEMAN1DIR = $(DESTDIR)$(INSTALLSITEMAN1DIR)
+INSTALLVENDORMAN1DIR = $(VENDORPREFIX)/share/man/man1
+DESTINSTALLVENDORMAN1DIR = $(DESTDIR)$(INSTALLVENDORMAN1DIR)
+INSTALLMAN3DIR = $(PERLPREFIX)/share/man/man3
+DESTINSTALLMAN3DIR = $(DESTDIR)$(INSTALLMAN3DIR)
+INSTALLSITEMAN3DIR = $(SITEPREFIX)/man/man3
+DESTINSTALLSITEMAN3DIR = $(DESTDIR)$(INSTALLSITEMAN3DIR)
+INSTALLVENDORMAN3DIR = $(VENDORPREFIX)/share/man/man3
+DESTINSTALLVENDORMAN3DIR = $(DESTDIR)$(INSTALLVENDORMAN3DIR)
+PERL_LIB = /usr/share/perl/5.8
+PERL_ARCHLIB = /usr/lib/perl/5.8
+LIBPERL_A = libperl.a
+FIRST_MAKEFILE = Makefile
+MAKEFILE_OLD = Makefile.old
+MAKE_APERL_FILE = Makefile.aperl
+PERLMAINCC = $(CC)
+PERL_INC = /usr/lib/perl/5.8/CORE
+PERL = /usr/bin/perl
+FULLPERL = /usr/bin/perl
+ABSPERL = $(PERL)
+PERLRUN = $(PERL)
+FULLPERLRUN = $(FULLPERL)
+ABSPERLRUN = $(ABSPERL)
+PERLRUNINST = $(PERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+FULLPERLRUNINST = $(FULLPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+ABSPERLRUNINST = $(ABSPERLRUN) "-I$(INST_ARCHLIB)" "-I$(INST_LIB)"
+PERL_CORE = 0
+PERM_RW = 644
+PERM_RWX = 755
+
+MAKEMAKER   = /usr/share/perl/5.8/ExtUtils/MakeMaker.pm
+MM_VERSION  = 6.30_01
+MM_REVISION = Revision: 4535 
+
+# FULLEXT = Pathname for extension directory (eg Foo/Bar/Oracle).
+# BASEEXT = Basename part of FULLEXT. May be just equal FULLEXT. (eg Oracle)
+# PARENT_NAME = NAME without BASEEXT and no trailing :: (eg Foo::Bar)
+# DLBASE  = Basename part of dynamic library. May be just equal BASEEXT.
+FULLEXT = manager
+BASEEXT = manager
+PARENT_NAME = 
+DLBASE = $(BASEEXT)
+VERSION_FROM = lib/Manager.pm
+OBJECT = 
+LDFROM = $(OBJECT)
+LINKTYPE = dynamic
+BOOTDEP = 
+
+# Handy lists of source code files:
+XS_FILES = 
+C_FILES  = 
+O_FILES  = 
+H_FILES  = 
+MAN1PODS = 
+MAN3PODS = rapidcall.pl
+
+# Where is the Config information that we are using/depend on
+CONFIGDEP = $(PERL_ARCHLIB)$(DFSEP)Config.pm $(PERL_INC)$(DFSEP)config.h
+
+# Where to build things
+INST_LIBDIR      = $(INST_LIB)
+INST_ARCHLIBDIR  = $(INST_ARCHLIB)
+
+INST_AUTODIR     = $(INST_LIB)/auto/$(FULLEXT)
+INST_ARCHAUTODIR = $(INST_ARCHLIB)/auto/$(FULLEXT)
+
+INST_STATIC      = 
+INST_DYNAMIC     = 
+INST_BOOT        = 
+
+# Extra linker info
+EXPORT_LIST        = 
+PERL_ARCHIVE       = 
+PERL_ARCHIVE_AFTER = 
+
+
+TO_INST_PM = lib/Manager.pm \
+	rapidcall.pl
+
+PM_TO_BLIB = rapidcall.pl \
+	$(INST_LIB)/rapidcall.pl \
+	lib/Manager.pm \
+	blib/lib/Manager.pm
+
+
+# --- MakeMaker platform_constants section:
+MM_Unix_VERSION = 1.50_01
+PERL_MALLOC_DEF = -DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc -Dfree=Perl_mfree -Drealloc=Perl_realloc -Dcalloc=Perl_calloc
+
+
+# --- MakeMaker tool_autosplit section:
+# Usage: $(AUTOSPLITFILE) FileToSplit AutoDirToSplitInto
+AUTOSPLITFILE = $(ABSPERLRUN)  -e 'use AutoSplit;  autosplit($$ARGV[0], $$ARGV[1], 0, 1, 1)'
+
+
+
+# --- MakeMaker tool_xsubpp section:
+
+
+# --- MakeMaker tools_other section:
+SHELL = /bin/sh
+CHMOD = chmod
+CP = cp
+MV = mv
+NOOP = $(SHELL) -c true
+NOECHO = @
+RM_F = rm -f
+RM_RF = rm -rf
+TEST_F = test -f
+TOUCH = touch
+UMASK_NULL = umask 0
+DEV_NULL = > /dev/null 2>&1
+MKPATH = $(ABSPERLRUN) "-MExtUtils::Command" -e mkpath
+EQUALIZE_TIMESTAMP = $(ABSPERLRUN) "-MExtUtils::Command" -e eqtime
+ECHO = echo
+ECHO_N = echo -n
+UNINST = 0
+VERBINST = 0
+MOD_INSTALL = $(ABSPERLRUN) -MExtUtils::Install -e 'install({@ARGV}, '\''$(VERBINST)'\'', 0, '\''$(UNINST)'\'');'
+DOC_INSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e perllocal_install
+UNINSTALL = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e uninstall
+WARN_IF_OLD_PACKLIST = $(ABSPERLRUN) "-MExtUtils::Command::MM" -e warn_if_old_packlist
+MACROSTART = 
+MACROEND = 
+USEMAKEFILE = -f
+FIXIN = $(PERLRUN) "-MExtUtils::MY" -e "MY->fixin(shift)"
+
+
+# --- MakeMaker makemakerdflt section:
+makemakerdflt: all
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dist section:
+TAR = tar
+TARFLAGS = cvf
+ZIP = zip
+ZIPFLAGS = -r
+COMPRESS = gzip -9f
+SUFFIX = gz
+SHAR = shar
+PREOP = $(NOECHO) $(NOOP)
+POSTOP = $(NOECHO) $(NOOP)
+TO_UNIX = $(NOECHO) $(NOOP)
+CI = ci -u
+RCS_LABEL = rcs -Nv$(VERSION_SYM): -q
+DIST_CP = best
+DIST_DEFAULT = tardist
+DISTNAME = manager
+DISTVNAME = manager-1
+
+
+# --- MakeMaker macro section:
+
+
+# --- MakeMaker depend section:
+
+
+# --- MakeMaker cflags section:
+
+
+# --- MakeMaker const_loadlibs section:
+
+
+# --- MakeMaker const_cccmd section:
+
+
+# --- MakeMaker post_constants section:
+
+
+# --- MakeMaker pasthru section:
+
+PASTHRU = LIBPERL_A="$(LIBPERL_A)"\
+	LINKTYPE="$(LINKTYPE)"\
+	PREFIX="$(PREFIX)"
+
+
+# --- MakeMaker special_targets section:
+.SUFFIXES : .xs .c .C .cpp .i .s .cxx .cc $(OBJ_EXT)
+
+.PHONY: all config static dynamic test linkext manifest blibdirs clean realclean disttest distdir
+
+
+
+# --- MakeMaker c_o section:
+
+
+# --- MakeMaker xs_c section:
+
+
+# --- MakeMaker xs_o section:
+
+
+# --- MakeMaker top_targets section:
+all :: pure_all manifypods
+	$(NOECHO) $(NOOP)
+
+
+pure_all :: config pm_to_blib subdirs linkext
+	$(NOECHO) $(NOOP)
+
+subdirs :: $(MYEXTLIB)
+	$(NOECHO) $(NOOP)
+
+config :: $(FIRST_MAKEFILE) blibdirs
+	$(NOECHO) $(NOOP)
+
+help :
+	perldoc ExtUtils::MakeMaker
+
+
+# --- MakeMaker blibdirs section:
+blibdirs : $(INST_LIBDIR)$(DFSEP).exists $(INST_ARCHLIB)$(DFSEP).exists $(INST_AUTODIR)$(DFSEP).exists $(INST_ARCHAUTODIR)$(DFSEP).exists $(INST_BIN)$(DFSEP).exists $(INST_SCRIPT)$(DFSEP).exists $(INST_MAN1DIR)$(DFSEP).exists $(INST_MAN3DIR)$(DFSEP).exists
+	$(NOECHO) $(NOOP)
+
+# Backwards compat with 6.18 through 6.25
+blibdirs.ts : blibdirs
+	$(NOECHO) $(NOOP)
+
+$(INST_LIBDIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_LIBDIR)
+	$(NOECHO) $(CHMOD) 755 $(INST_LIBDIR)
+	$(NOECHO) $(TOUCH) $(INST_LIBDIR)$(DFSEP).exists
+
+$(INST_ARCHLIB)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_ARCHLIB)
+	$(NOECHO) $(CHMOD) 755 $(INST_ARCHLIB)
+	$(NOECHO) $(TOUCH) $(INST_ARCHLIB)$(DFSEP).exists
+
+$(INST_AUTODIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_AUTODIR)
+	$(NOECHO) $(CHMOD) 755 $(INST_AUTODIR)
+	$(NOECHO) $(TOUCH) $(INST_AUTODIR)$(DFSEP).exists
+
+$(INST_ARCHAUTODIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_ARCHAUTODIR)
+	$(NOECHO) $(CHMOD) 755 $(INST_ARCHAUTODIR)
+	$(NOECHO) $(TOUCH) $(INST_ARCHAUTODIR)$(DFSEP).exists
+
+$(INST_BIN)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_BIN)
+	$(NOECHO) $(CHMOD) 755 $(INST_BIN)
+	$(NOECHO) $(TOUCH) $(INST_BIN)$(DFSEP).exists
+
+$(INST_SCRIPT)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_SCRIPT)
+	$(NOECHO) $(CHMOD) 755 $(INST_SCRIPT)
+	$(NOECHO) $(TOUCH) $(INST_SCRIPT)$(DFSEP).exists
+
+$(INST_MAN1DIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_MAN1DIR)
+	$(NOECHO) $(CHMOD) 755 $(INST_MAN1DIR)
+	$(NOECHO) $(TOUCH) $(INST_MAN1DIR)$(DFSEP).exists
+
+$(INST_MAN3DIR)$(DFSEP).exists :: Makefile.PL
+	$(NOECHO) $(MKPATH) $(INST_MAN3DIR)
+	$(NOECHO) $(CHMOD) 755 $(INST_MAN3DIR)
+	$(NOECHO) $(TOUCH) $(INST_MAN3DIR)$(DFSEP).exists
+
+
+
+# --- MakeMaker linkext section:
+
+linkext :: $(LINKTYPE)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dlsyms section:
+
+
+# --- MakeMaker dynamic section:
+
+dynamic :: $(FIRST_MAKEFILE) $(INST_DYNAMIC) $(INST_BOOT)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker dynamic_bs section:
+
+BOOTSTRAP =
+
+
+# --- MakeMaker dynamic_lib section:
+
+
+# --- MakeMaker static section:
+
+## $(INST_PM) has been moved to the all: target.
+## It remains here for awhile to allow for old usage: "make static"
+static :: $(FIRST_MAKEFILE) $(INST_STATIC)
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker static_lib section:
+
+
+# --- MakeMaker manifypods section:
+
+POD2MAN_EXE = $(PERLRUN) "-MExtUtils::Command::MM" -e pod2man "--"
+POD2MAN = $(POD2MAN_EXE)
+
+
+manifypods : pure_all  \
+	rapidcall.pl \
+	rapidcall.pl
+	$(NOECHO) $(POD2MAN) --section=$(MAN3EXT) --perm_rw=$(PERM_RW) \
+	  rapidcall.pl $(INST_MAN3DIR)/rapidcall.$(MAN3EXT) 
+
+
+
+
+# --- MakeMaker processPL section:
+
+
+# --- MakeMaker installbin section:
+
+
+# --- MakeMaker subdirs section:
+
+# none
+
+# --- MakeMaker clean_subdirs section:
+clean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker clean section:
+
+# Delete temporary files but do not touch installed files. We don't delete
+# the Makefile here so a later make realclean still has a makefile to use.
+
+clean :: clean_subdirs
+	- $(RM_F) \
+	  *$(LIB_EXT) core \
+	  core.[0-9] $(INST_ARCHAUTODIR)/extralibs.all \
+	  core.[0-9][0-9] $(BASEEXT).bso \
+	  pm_to_blib.ts core.[0-9][0-9][0-9][0-9] \
+	  $(BASEEXT).x $(BOOTSTRAP) \
+	  perl$(EXE_EXT) tmon.out \
+	  *$(OBJ_EXT) pm_to_blib \
+	  $(INST_ARCHAUTODIR)/extralibs.ld blibdirs.ts \
+	  core.[0-9][0-9][0-9][0-9][0-9] *perl.core \
+	  core.*perl.*.? $(MAKE_APERL_FILE) \
+	  perl $(BASEEXT).def \
+	  core.[0-9][0-9][0-9] mon.out \
+	  lib$(BASEEXT).def perlmain.c \
+	  perl.exe so_locations \
+	  $(BASEEXT).exp 
+	- $(RM_RF) \
+	  blib 
+	- $(MV) $(FIRST_MAKEFILE) $(MAKEFILE_OLD) $(DEV_NULL)
+
+
+# --- MakeMaker realclean_subdirs section:
+realclean_subdirs :
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker realclean section:
+# Delete temporary files (via clean) and also delete dist files
+realclean purge ::  clean realclean_subdirs
+	- $(RM_F) \
+	  $(MAKEFILE_OLD) $(FIRST_MAKEFILE) 
+	- $(RM_RF) \
+	  $(DISTVNAME) 
+
+
+# --- MakeMaker metafile section:
+metafile : create_distdir
+	$(NOECHO) $(ECHO) Generating META.yml
+	$(NOECHO) $(ECHO) '# http://module-build.sourceforge.net/META-spec.html' > META_new.yml
+	$(NOECHO) $(ECHO) '#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#' >> META_new.yml
+	$(NOECHO) $(ECHO) 'name:         manager' >> META_new.yml
+	$(NOECHO) $(ECHO) 'version:      1' >> META_new.yml
+	$(NOECHO) $(ECHO) 'version_from: lib/Manager.pm' >> META_new.yml
+	$(NOECHO) $(ECHO) 'installdirs:  site' >> META_new.yml
+	$(NOECHO) $(ECHO) 'requires:' >> META_new.yml
+	$(NOECHO) $(ECHO) '' >> META_new.yml
+	$(NOECHO) $(ECHO) 'distribution_type: module' >> META_new.yml
+	$(NOECHO) $(ECHO) 'generated_by: ExtUtils::MakeMaker version 6.30_01' >> META_new.yml
+	-$(NOECHO) $(MV) META_new.yml $(DISTVNAME)/META.yml
+
+
+# --- MakeMaker signature section:
+signature :
+	cpansign -s
+
+
+# --- MakeMaker dist_basics section:
+distclean :: realclean distcheck
+	$(NOECHO) $(NOOP)
+
+distcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=fullcheck" -e fullcheck
+
+skipcheck :
+	$(PERLRUN) "-MExtUtils::Manifest=skipcheck" -e skipcheck
+
+manifest :
+	$(PERLRUN) "-MExtUtils::Manifest=mkmanifest" -e mkmanifest
+
+veryclean : realclean
+	$(RM_F) *~ *.orig */*~ */*.orig
+
+
+
+# --- MakeMaker dist_core section:
+
+dist : $(DIST_DEFAULT) $(FIRST_MAKEFILE)
+	$(NOECHO) $(ABSPERLRUN) -l -e 'print '\''Warning: Makefile possibly out of date with $(VERSION_FROM)'\''' \
+	  -e '    if -e '\''$(VERSION_FROM)'\'' and -M '\''$(VERSION_FROM)'\'' < -M '\''$(FIRST_MAKEFILE)'\'';'
+
+tardist : $(DISTVNAME).tar$(SUFFIX)
+	$(NOECHO) $(NOOP)
+
+uutardist : $(DISTVNAME).tar$(SUFFIX)
+	uuencode $(DISTVNAME).tar$(SUFFIX) $(DISTVNAME).tar$(SUFFIX) > $(DISTVNAME).tar$(SUFFIX)_uu
+
+$(DISTVNAME).tar$(SUFFIX) : distdir
+	$(PREOP)
+	$(TO_UNIX)
+	$(TAR) $(TARFLAGS) $(DISTVNAME).tar $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(COMPRESS) $(DISTVNAME).tar
+	$(POSTOP)
+
+zipdist : $(DISTVNAME).zip
+	$(NOECHO) $(NOOP)
+
+$(DISTVNAME).zip : distdir
+	$(PREOP)
+	$(ZIP) $(ZIPFLAGS) $(DISTVNAME).zip $(DISTVNAME)
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+shdist : distdir
+	$(PREOP)
+	$(SHAR) $(DISTVNAME) > $(DISTVNAME).shar
+	$(RM_RF) $(DISTVNAME)
+	$(POSTOP)
+
+
+# --- MakeMaker distdir section:
+create_distdir :
+	$(RM_RF) $(DISTVNAME)
+	$(PERLRUN) "-MExtUtils::Manifest=manicopy,maniread" \
+		-e "manicopy(maniread(),'$(DISTVNAME)', '$(DIST_CP)');"
+
+distdir : create_distdir distmeta 
+	$(NOECHO) $(NOOP)
+
+
+
+# --- MakeMaker dist_test section:
+disttest : distdir
+	cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL 
+	cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
+	cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
+
+
+
+# --- MakeMaker dist_ci section:
+
+ci :
+	$(PERLRUN) "-MExtUtils::Manifest=maniread" \
+	  -e "@all = keys %{ maniread() };" \
+	  -e "print(qq{Executing $(CI) @all\n}); system(qq{$(CI) @all});" \
+	  -e "print(qq{Executing $(RCS_LABEL) ...\n}); system(qq{$(RCS_LABEL) @all});"
+
+
+# --- MakeMaker distmeta section:
+distmeta : create_distdir metafile
+	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{META.yml} => q{Module meta-data (added by MakeMaker)}}) } ' \
+	  -e '    or print "Could not add META.yml to MANIFEST: $${'\''@'\''}\n"'
+
+
+
+# --- MakeMaker distsignature section:
+distsignature : create_distdir
+	$(NOECHO) cd $(DISTVNAME) && $(ABSPERLRUN) -MExtUtils::Manifest=maniadd -e 'eval { maniadd({q{SIGNATURE} => q{Public-key signature (added by MakeMaker)}}) } ' \
+	  -e '    or print "Could not add SIGNATURE to MANIFEST: $${'\''@'\''}\n"'
+	$(NOECHO) cd $(DISTVNAME) && $(TOUCH) SIGNATURE
+	cd $(DISTVNAME) && cpansign -s
+
+
+
+# --- MakeMaker install section:
+
+install :: all pure_install doc_install
+	$(NOECHO) $(NOOP)
+
+install_perl :: all pure_perl_install doc_perl_install
+	$(NOECHO) $(NOOP)
+
+install_site :: all pure_site_install doc_site_install
+	$(NOECHO) $(NOOP)
+
+install_vendor :: all pure_vendor_install doc_vendor_install
+	$(NOECHO) $(NOOP)
+
+pure_install :: pure_$(INSTALLDIRS)_install
+	$(NOECHO) $(NOOP)
+
+doc_install :: doc_$(INSTALLDIRS)_install
+	$(NOECHO) $(NOOP)
+
+pure__install : pure_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+doc__install : doc_site_install
+	$(NOECHO) $(ECHO) INSTALLDIRS not defined, defaulting to INSTALLDIRS=site
+
+pure_perl_install ::
+	$(NOECHO) umask 022; $(MOD_INSTALL) \
+		$(INST_LIB) $(DESTINSTALLPRIVLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLARCHLIB) \
+		$(INST_BIN) $(DESTINSTALLBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(SITEARCHEXP)/auto/$(FULLEXT)
+
+
+pure_site_install ::
+	$(NOECHO) umask 02; $(MOD_INSTALL) \
+		read $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist \
+		write $(DESTINSTALLSITEARCH)/auto/$(FULLEXT)/.packlist \
+		$(INST_LIB) $(DESTINSTALLSITELIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLSITEARCH) \
+		$(INST_BIN) $(DESTINSTALLSITEBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLSITESCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLSITEMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLSITEMAN3DIR)
+	$(NOECHO) $(WARN_IF_OLD_PACKLIST) \
+		$(PERL_ARCHLIB)/auto/$(FULLEXT)
+
+pure_vendor_install ::
+	$(NOECHO) umask 022; $(MOD_INSTALL) \
+		$(INST_LIB) $(DESTINSTALLVENDORLIB) \
+		$(INST_ARCHLIB) $(DESTINSTALLVENDORARCH) \
+		$(INST_BIN) $(DESTINSTALLVENDORBIN) \
+		$(INST_SCRIPT) $(DESTINSTALLVENDORSCRIPT) \
+		$(INST_MAN1DIR) $(DESTINSTALLVENDORMAN1DIR) \
+		$(INST_MAN3DIR) $(DESTINSTALLVENDORMAN3DIR)
+
+doc_perl_install ::
+
+doc_site_install ::
+	$(NOECHO) $(ECHO) Appending installation info to $(DESTINSTALLSITEARCH)/perllocal.pod
+	-$(NOECHO) umask 02; $(MKPATH) $(DESTINSTALLSITEARCH)
+	-$(NOECHO) umask 02; $(DOC_INSTALL) \
+		"Module" "$(NAME)" \
+		"installed into" "$(INSTALLSITELIB)" \
+		LINKTYPE "$(LINKTYPE)" \
+		VERSION "$(VERSION)" \
+		EXE_FILES "$(EXE_FILES)" \
+		>> $(DESTINSTALLSITEARCH)/perllocal.pod
+
+doc_vendor_install ::
+
+
+uninstall :: uninstall_from_$(INSTALLDIRS)dirs
+	$(NOECHO) $(NOOP)
+
+uninstall_from_perldirs ::
+
+uninstall_from_sitedirs ::
+	$(NOECHO) $(UNINSTALL) $(SITEARCHEXP)/auto/$(FULLEXT)/.packlist
+
+uninstall_from_vendordirs ::
+
+
+
+# --- MakeMaker force section:
+# Phony target to force checking subdirectories.
+FORCE:
+	$(NOECHO) $(NOOP)
+
+
+# --- MakeMaker perldepend section:
+
+
+# --- MakeMaker makefile section:
+# We take a very conservative approach here, but it's worth it.
+# We move Makefile to Makefile.old here to avoid gnu make looping.
+$(FIRST_MAKEFILE) : Makefile.PL $(CONFIGDEP)
+	$(NOECHO) $(ECHO) "Makefile out-of-date with respect to $?"
+	$(NOECHO) $(ECHO) "Cleaning current config before rebuilding Makefile..."
+	-$(NOECHO) $(RM_F) $(MAKEFILE_OLD)
+	-$(NOECHO) $(MV)   $(FIRST_MAKEFILE) $(MAKEFILE_OLD)
+	- $(MAKE) $(USEMAKEFILE) $(MAKEFILE_OLD) clean $(DEV_NULL)
+	$(PERLRUN) Makefile.PL 
+	$(NOECHO) $(ECHO) "==> Your Makefile has been rebuilt. <=="
+	$(NOECHO) $(ECHO) "==> Please rerun the $(MAKE) command.  <=="
+	false
+
+
+
+# --- MakeMaker staticmake section:
+
+# --- MakeMaker makeaperl section ---
+MAP_TARGET    = perl
+FULLPERL      = /usr/bin/perl
+
+$(MAP_TARGET) :: static $(MAKE_APERL_FILE)
+	$(MAKE) $(USEMAKEFILE) $(MAKE_APERL_FILE) $@
+
+$(MAKE_APERL_FILE) : $(FIRST_MAKEFILE) pm_to_blib
+	$(NOECHO) $(ECHO) Writing \"$(MAKE_APERL_FILE)\" for this $(MAP_TARGET)
+	$(NOECHO) $(PERLRUNINST) \
+		Makefile.PL DIR= \
+		MAKEFILE=$(MAKE_APERL_FILE) LINKTYPE=static \
+		MAKEAPERL=1 NORECURS=1 CCCDLFLAGS=
+
+
+# --- MakeMaker test section:
+
+TEST_VERBOSE=0
+TEST_TYPE=test_$(LINKTYPE)
+TEST_FILE = test.pl
+TEST_FILES = t/*.t
+TESTDB_SW = -d
+
+testdb :: testdb_$(LINKTYPE)
+
+test :: $(TEST_TYPE)
+
+test_dynamic :: pure_all
+	PERL_DL_NONLAZY=1 $(FULLPERLRUN) "-MExtUtils::Command::MM" "-e" "test_harness($(TEST_VERBOSE), '$(INST_LIB)', '$(INST_ARCHLIB)')" $(TEST_FILES)
+
+testdb_dynamic :: pure_all
+	PERL_DL_NONLAZY=1 $(FULLPERLRUN) $(TESTDB_SW) "-I$(INST_LIB)" "-I$(INST_ARCHLIB)" $(TEST_FILE)
+
+test_ : test_dynamic
+
+test_static :: test_dynamic
+testdb_static :: testdb_dynamic
+
+
+# --- MakeMaker ppd section:
+# Creates a PPD (Perl Package Description) for a binary distribution.
+ppd:
+	$(NOECHO) $(ECHO) '<SOFTPKG NAME="$(DISTNAME)" VERSION="1,0,0,0">' > $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <TITLE>$(DISTNAME)</TITLE>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <ABSTRACT>Perl Asterisk manager interface library</ABSTRACT>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <AUTHOR>J.A. Roberts Tunney &lt;jtunney@lobstertech.com&gt;</AUTHOR>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    <IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <OS NAME="$(OSNAME)" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <ARCHITECTURE NAME="i486-linux-gnu-thread-multi" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '        <CODEBASE HREF="" />' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '    </IMPLEMENTATION>' >> $(DISTNAME).ppd
+	$(NOECHO) $(ECHO) '</SOFTPKG>' >> $(DISTNAME).ppd
+
+
+# --- MakeMaker pm_to_blib section:
+
+pm_to_blib : $(TO_INST_PM)
+	$(NOECHO) $(ABSPERLRUN) -MExtUtils::Install -e 'pm_to_blib({@ARGV}, '\''$(INST_LIB)/auto'\'', '\''$(PM_FILTER)'\'')' \
+	  rapidcall.pl $(INST_LIB)/rapidcall.pl \
+	  lib/Manager.pm blib/lib/Manager.pm 
+	$(NOECHO) $(TOUCH) pm_to_blib
+
+
+# --- MakeMaker selfdocument section:
+
+
+# --- MakeMaker postamble section:
+
+
+# End.
+#
+# See lib/ExtUtils/MakeMaker.pm for details of how to influence
+# the contents of the Makefile that is written.
+#
+
+use ExtUtils::MakeMaker;
+
+WriteMakefile(
+    NAME            => 'manager',
+    VERSION_FROM    => 'lib/Manager.pm',
+    AUTHOR          => 'J.A. Roberts Tunney <jtunney@lobstertech.com>',
+    ABSTRACT        => 'Perl Asterisk manager interface library',
+    PMLIBDIRS       => [ 'lib' ],
+    'dist'          => {
+        COMPRESS        => 'gzip -9f',
+        SUFFIX          => 'gz',
+        DIST_DEFAULT    => 'tardist',
+    },
+);
+
+rapidcall - Call people on the command line like a balla
+Version o.1
+Copyright (c) 2007 J.A. Roberts Tunney
+J.A. Roberts Tunney <jtunney@lobstertech.com>
+
+SYNOPSIS
+----------------------------------------------------------------------
+
+If you have an Asterisk server and a SIP phone, this program lets you
+place phone calls from the command line by reading your
+``~/.contacts`` phone book and hooking into Asterisk's manager API to
+bridge a call from your SIP phone to the person you're calling.
+
+See the man page for info on how to get started.  You have to setup
+your .bashrc and stuff.
+
+INSTALLATION
+----------------------------------------------------------------------
+
+Installation is easy!  Just type:
+
+    $ sudo ./install.sh
+
+DOCUMENTATION
+----------------------------------------------------------------------
+
+    $ man rapidcall
+#!/bin/sh
+
+if [ -e Makefile ]; then
+    echo make clean
+    make clean || exit $?
+fi
+
+echo perl Makefile.PL
+perl Makefile.PL || exit $?
+
+echo make
+make || exit $?
+
+echo make test
+make test || exit $?
+
+echo make install
+make install || exit $?
+
+echo install -c -m 755 call.pl /usr/local/bin
+install -c -m 755 rapidcall.pl /usr/local/bin/rapidcall || exit $?
+#
+# Manager.pm - Perl Asterisk Manager Interface
+#
+# Copyright (c) 2007 J.A. Roberts Tunney
+# J.A. Roberts Tunney <jtunney@lobstertech.com>
+#
+# You may distribute this library under the same terms and conditions as Perl.
+#
+
+package Manager;
+
+use strict;
+use warnings;
+use Carp;
+use IO::Select;
+use IO::Socket::INET;
+
+our $VERSION = 1.00;
+
+sub new
+{
+    my $proto = shift;
+    my $class = ref($proto) || $proto;
+    my $self = { Host         => '127.0.0.1',
+		 Port         => 5038,
+                 Handlers     => { },
+                 Debug        => 0,
+                 SystemEvents => 1,
+                 CallEvents   => 1,
+                 LogEvents    => 1,
+		 @_ };
+    bless $self, $class;
+    return $self;
+}
+
+sub delegate
+{
+    my ($self, $frame) = @_;
+    unless (exists $self->{Handlers}->{$frame->{Event}}) {
+        print STDERR "Discarding event: " . $frame->{Event} . "\n" if $self->{Debug};
+        return 0;
+    }
+    &{$self->{Handlers}->{$frame->{Event}}}($frame);
+}
+
+sub grab
+{
+    my $self = shift;
+    my $sock = $self->{Socket} or croak "not connected";
+
+    my %frame;
+    for (;;) {
+	my $line = readline($sock);
+        if (!$line) {
+	    croak "read error: $!" if $!;
+	    croak "disconnect";
+	}
+	$line =~ s/\r\n$//;
+        print STDERR " - Rx: $line\n" if $self->{Debug};
+	last if $line eq '';
+	$line =~ /^(.+?): ?(.*?)$/ or warn "corrupt line: $line" and next;
+	$frame{$1} = $2;
+
+        # Command actions return CLI output in special syntax.  Example:
+        #
+        # Response: Follows
+        # Privilege: Command
+        # Name/username              Host            Dyn Nat ACL Port     Status
+        # 102/102                    10.30.1.102      D          5060     OK (15 ms)
+        # 407/407                    10.30.4.107      D          5060     OK (64 ms)
+        # 5 sip peers [2 online , 3 offline]
+        # --END COMMAND--
+        #
+        if ($1 eq 'Privilege' && defined $frame{Response} &&
+            $frame{Response} eq 'Follows') {
+            $frame{Data} = '';
+            for (;;) {
+                my $d = readline($sock);
+                $d =~ s/\r?\n$//;
+                last if $d eq '--END COMMAND--';
+                $frame{Data} .= $d . v10;
+            }
+        }
+    }
+    \%frame;
+}
+
+sub fill
+{
+    my ($self, $timeout) = shift;
+    my $sock = $self->{Socket} or croak "not connected";
+    my @res = ();
+
+    $timeout = 0 unless defined $timeout;
+
+  SELECT: {
+      my @ready = $self->{Select}->can_read($timeout) or last SELECT;
+      $timeout = 0;
+      foreach (@ready) {
+          if ($_ == $self->{Socket}) {
+              push @res, $self->grab;
+              next SELECT;
+          }
+      }
+  }
+
+    return \@res;
+}
+
+sub process
+{
+    my ($self, $timeout) = shift;
+    my $sock = $self->{Socket} or croak "not connected";
+
+    $timeout = 0 unless defined $timeout;
+
+  SELECT: {
+      my @ready = $self->{Select}->can_read($timeout) or last SELECT;
+      $timeout = 0;
+      foreach (@ready) {
+          if ($_ == $self->{Socket}) {
+              $self->delegate($self->grab);
+              next SELECT;
+          }
+      }
+  }
+}
+
+sub send_frame
+{
+    my $self = shift;
+    my $sock = $self->{Socket} or croak "not connected";
+
+    while (@_) {
+	my $name = shift;
+	my $value = shift;
+	print $sock "$name: $value\r\n";
+        print STDERR " - Tx: $name: $value\n" if $self->{Debug};
+    }
+    print $sock "\r\n";
+    print STDERR " - Tx: \n" if $self->{Debug};
+
+  GRAB: {
+      my $frame = $self->grab;
+      $self->delegate($frame) and next GRAB unless exists $frame->{Response};
+      return $frame;
+  }
+}
+
+sub logoff
+{
+    my $self = shift;
+    my $sock = $self->{Socket} or croak "not connected";
+
+    my $r = $self->send_frame(Action => 'Logoff');
+    $r->{Response} eq 'Goodbye' || $r->{Response} eq 'Success' or croak "invalid repsonse";
+
+    $self->{Socket} = undef;
+    $self->{Select} = undef;
+}
+
+sub connect
+{
+    my $self = shift;
+
+    $self->{Socket} = IO::Socket::INET->new(
+        PeerAddr => $self->{Host},
+        PeerPort => $self->{Port},
+        Proto    => 'tcp',
+        Type     => SOCK_STREAM) or croak "connect failed";
+    $self->{Select} = new IO::Select($self->{Socket});
+
+    my $line = readline($self->{Socket});
+    chomp $line;
+    $line =~ m'^Asterisk Call Manager/(\S+)' or croak "invalid header";
+    $self->{ManagerVersion} = $1;
+}
+
+sub login
+{
+    my $self = shift;
+    my $sock = $self->{Socket} or croak "not connected" and return;
+    my $r;
+
+    $r = $self->send_frame(Action   => 'Login',
+                           Username => $self->{Username},
+                           Secret   => $self->{Secret});
+    $r->{Response} eq 'Success' or croak "login failed";
+
+    unless ($self->{SystemEvents} && $self->{CallEvents} && $self->{LogEvents}) {
+        my @ops = ();
+        push @ops, 'system' if $self->{SystemEvents};
+        push @ops, 'call' if $self->{CallEvents};
+        push @ops, 'log' if $self->{LogEvents};
+        push @ops, 'off' unless scalar @ops;
+        my $mask = join(',' => @ops);
+        $r = $self->send_frame(Action    => 'Events',
+                               EventMask => $mask);
+        $r->{Response} =~ /^Events O[nf]f?$/ or croak 'event failed';
+    }
+}
+
+1;
+#!/usr/bin/env perl
+#
+# rapidcall - Call people on the command line like a balla
+#
+# Copyright (c) 2007 J.A. Roberts Tunney
+# J.A. Roberts Tunney <jtunney@lobstertech.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+
+use strict;
+use warnings;
+use File::Copy;
+use Manager;
+
+my $VERBOSE = 0;
+my $ASTLOC = (defined $ENV{CALL_ASTLOC}) ?
+    $ENV{CALL_ASTLOC} : 'local:///var/spool/asterisk/outgoing';
+my $CONTEXT = (defined $ENV{CALL_CONTEXT}) ?
+    $ENV{CALL_CONTEXT} : 'default';
+my $PHONE = (defined $ENV{CALL_PHONE}) ?
+    $ENV{CALL_PHONE} : 'Zap/1';
+my $CONTACTS = (defined $ENV{CALL_CONTACTS}) ?
+    $ENV{CALL_CONTACTS} : $ENV{HOME} .'/.contacts';
+
+while (@ARGV && $ARGV[0] =~ /^-/) {
+    my $arg = shift @ARGV;
+    $arg =~ /^--help$/           and usage();
+    $arg =~ /^-h$/               and usage();
+    $arg =~ /^--version$/        and version();
+    $arg =~ /^-v$/               and $VERBOSE  = 1;
+    $arg =~ /^-L(.*)$/           and $ASTLOC   = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^--location=?(.*)$/ and $ASTLOC   = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^-P(.*)$/           and $PHONE    = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^--phone=?(.*)$/    and $PHONE    = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^-C(.*)$/           and $CONTEXT  = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^--context=?(.*)$/  and $CONTEXT  = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^-F(.*)$/           and $CONTACTS = ($1) ? $1 : shift @ARGV;
+    $arg =~ /^--contacts=?(.*)$/ and $CONTACTS = ($1) ? $1 : shift @ARGV;
+}
+@ARGV >= 1                       or  usage();
+$ASTLOC =~ m!^local://(.+)$!i    and local_call($1, @ARGV);
+$ASTLOC =~ m!^ami://(.+)$!i      and ami_call($1, @ARGV);
+die "Asterisk location contains an unrecognized protocol\n";
+
+sub usage
+{
+    my $error = shift;
+    print STDERR "Error: $error\n" if defined $error;
+    print "Type 'man rapidcall' for help\n";
+    exit 1;
+}
+
+sub version
+{
+    print "rapidcall 0.1\n";
+    exit 0;
+}
+
+sub load_contacts
+{
+    my %res = ();
+    my $file = $CONTACTS;
+    defined $file or usage("CALL_CONTACTS not defined");
+    -f $file      or usage("contacts file does not exist");
+    open F, "<$file" or die "Failed to open: $file ($!)\n";
+    my $line = 0;
+    foreach (<F>) {
+        $line++;
+        /^\s*$/ and next;
+        /^\s*([^\s]+)\s*(.+?)\s*$/
+            or print STDERR "Syntax error: $file:$line\n" and next;
+        not defined $res{$1}
+            or print STDERR "Ignoring duplicate: $file:$line\n" and next;
+        $res{$1} = $2;
+    }
+    close F;
+    return \%res;
+}
+
+# http://glennf.com/writing/hexadecimal.url.encoding.html
+sub url_decode
+{
+    my $theURL = $_[0];
+    $theURL =~ tr/+/ /;
+    $theURL =~ s/%([a-fA-F0-9]{2,2})/chr(hex($1))/eg;
+    $theURL =~ s/<!--(.|\n)*-->//g;
+    return $theURL;
+}
+
+# we thank the pope for granting us this wish
+# when friday comes, we'll all call rats fish
+sub get_dest
+{
+    my $arg = shift;
+    my $context;
+    my $exten;
+
+    if ($arg =~ /^(.+?)@(.+?)$/) {
+        $context = $2;
+        $arg = $1;
+    } else {
+        $context = $CONTEXT;
+        defined $context or usage("CALL_CONTEXT not defined");
+    }
+
+    my $contacts = load_contacts();
+    if (defined $contacts->{$arg}) {
+        $exten = $contacts->{$arg};
+    } else {
+        $exten = $arg;
+    }
+
+    $context =~ /^[-\w]+$/i or usage("Invalid call context");
+    $exten =~ s/[-()\s]//g;
+    return ($context, $exten);
+}
+
+sub place_local_call
+{
+    my $spooldir = shift;
+    my $context  = shift;
+    my $exten    = shift;
+    my $file     = "astcall_". rand(99999) .".call";
+    my $temp     = "/tmp/". $file;
+    my $spool    = $spooldir .'/'. $file;
+
+    my $data =
+        "Channel: $PHONE\n".
+        "CallerID: $exten\n".
+        "WaitTime: 15\n".
+        "Context: $context\n".
+        "Extension: $exten\n".
+        "Priority: 1\n".
+        "Set: CALLGEN=yes";
+    foreach (@_) {
+        /^[a-z][-_\w]+\s*=[^|\r\n]+$/i or die "Invalid variable definition\n";
+        $data .= "Set: $_\n";
+    }
+
+    print "CALL FILE:\n$data\n" if $VERBOSE;
+    open F, ">$temp" or die "Failed to open $temp ($!)\n";
+    print F $data;
+    close F;
+    copy($temp, $spool) or die "Failed to move $temp to $spool ($!)\n";
+}
+
+sub local_call
+{
+    my $loc = shift;
+    my $arg = shift;
+
+    my $spooldir = url_decode($loc);
+    $spooldir =~ s/\/$//;
+
+    foreach my $dest (split m@,@, $arg) {
+        my ($context, $exten) = get_dest($dest);
+        place_local_call($spooldir, $context, $exten, @_);
+    }
+
+    exit 0;
+}
+
+sub manager_connect
+{
+    my ($host, $port, $user, $pass) = @_;
+
+    my $man = Manager->new(
+        Host         => $host,
+        Port         => $port,
+        Username     => $user,
+        Secret       => $pass,
+        Debug        => $VERBOSE,
+        SystemEvents => 1,
+        CallEvents   => 1,
+        LogEvents    => 1);
+    $man->connect;
+    $man->login;
+
+    return $man;
+}
+
+sub place_ami_call
+{
+    my $man     = shift;
+    my $context = shift;
+    my $exten   = shift;
+
+    my $vars = 'CALLGEN=yes';
+    foreach (@_) {
+        /^[a-z][-_\w]+\s*=[^|\r\n]+$/i or die "Invalid variable definition\n";
+        $vars .= "|$_";
+    }
+
+    my $res = $man->send_frame(Action   => "Originate",
+                               Channel  => $PHONE,
+                               Callerid => $exten,
+                               Timeout  => 15000,
+                               Context  => $context,
+                               Exten    => $exten,
+                               Priority => 1,
+                               Variable => $vars);
+    unless (defined $res->{Response} && $res->{Response} eq 'Success') {
+        die "Failed to originate call via AMI\n";
+    }
+}
+
+sub ami_call
+{
+    my $loc = shift;
+    my $arg = shift;
+
+    $loc =~ m/^(.+?):(.+?)\@([^:]+):?(\d*)$/i
+        or die "Invalid ami location\n";
+    my $user = url_decode($1);
+    my $pass = url_decode($2);
+    my $host = url_decode($3);
+    my $port = ($4 eq "") ? 5038 : url_decode($4);
+    my $man = manager_connect($host, $port, $user, $pass);
+
+    foreach my $dest (split m@,@, $arg) {
+        my ($context, $exten) = get_dest($dest);
+        place_ami_call($man, $context, $exten, @_);
+    }
+
+    exit 0;
+}
+
+__END__
+
+=head1 NAME
+
+rapidcall - Call people on the command line like a balla
+
+=head1 SYNOPSIS
+
+rapidcall [OPTION]... <CONTACT>[@CONTEXT][,MULTIPLE]... [VAR1=x]...
+
+=head1 DESCRIPTION
+
+Do you loathe the agony of dialing numbers every time you want to make a call?
+Does your SIP phone have a disasterous number directory?  Do you need a method
+of generating calls more becoming of an elite creature of an the night such as
+yourself?  Then look no further than the abyss of your black terminal...  This
+program will allow you to easily generate calls to your fellow vampyres and
+ghouls on the command line through your favorite Asterisk server.
+
+Imagine how delectable the pleasure would be, of needing to call a fellow
+mortal, for instance one possessing the admirable appellation of Lucretia.
+What if you could call her by to Alt-Tab to a terminal window and typing
+'rapidcall Luc', hitting tab to complete the name, and pressing enter.  Your
+phone rings, and you are instantly connected to her.  Wouldn't that be
+splendid?
+
+This program offers a great deal of flexability in controlling Asterisk and
+different methods of invokation.  The typical user will want to create a
+.contacts file containing a list of names and phone numbers, configure their
+.bashrc to set environment shortcut variables and enable bash completion.  The
+user may then place calls to their friends by typing 'rapidcall
+<contact_name>' on the command line.
+
+In order for most setups to work, you need to have a functioning Asterisk PBX
+configured either locally or remotely, and a phone that is connected to your
+Asterisk server.  When calls are placed, Asterisk will be told to call your
+phone.  Once you answer the phone, you will be connected with the called
+party.
+
+=head1 OPTIONS
+
+=over 4
+
+=item -C or --context
+
+The Asterisk context that controls will accept phone number extensions.  Set
+this to the same context your sip phones are programmed to use.  You may
+override this by manually specifying a context with an @ symbol.  The default
+value is 'default'.  Alternatively may be set with the environment variable
+CALL_CONTEXT.
+
+=item -F or --contacts
+
+The location of the file containing your contact list.  You should set this to
+'~/.contacts'.  In the contacts file, each line must contain a name with no
+spaces, whitespace, and the extension that will be dialed in the CALL_CONTEXT
+extension.  The default value is set to '~/.contacts'.  Alternatively may be
+set with the environment variable CALL_CONTACTS.
+
+=item -h or --help
+
+Shows this information.
+
+=item -L or --location
+
+The 'location' or how to send calls to Asterisk.  The default value of
+'local:///var/spool/asterisk/outgoing' generates calls by moving Asterisk call
+files to the specified Asterisk spool directory on the local machine.  If you
+want to generate calls on a remote machine, you can use the manager interface
+by specifying connection parameters in the following format:
+'ami://user:pass@host[:port]'.  If you do not wish to set this each time on
+the command line, you may set the environment variable CALL_ASTLOC.
+
+=item -P or --phone
+
+The Asterisk context that controls will accept phone number extensions.  Set
+this to the same context your sip phones are programmed to use.  You may
+override this by manually specifying a context with an @ symbol.  The default
+value is 'default'.  Alternatively may be set with the environment variable
+CALL_PHONE.
+
+=item -v
+
+Verbose mode.  This will show raw data coming to and from the Asterisk
+manager interface as well as the contents of generated call files.
+
+=item --version
+
+Show version.
+
+=back
+
+=head1 NOTES
+
+=over 4
+
+=item - sudo is needed if CALL_ASTLOC is set to local://
+
+=item - You can put hyphens in your phone numbers
+
+=back
+
+=head1 EXAMPLES
+
+=over 4
+
+=item Example .bashrc Configuration with Shell Completion:
+
+ # put this in your .bashrc.  Your may reload your .bashrc by
+ # entering ". ~/.bashrc".
+ export CALL_ASTLOC='local:///var/spool/asterisk/outgoing'
+ export CALL_CONTEXT='internal'
+ export CALL_PHONE='SIP/300'
+ export CALL_CONTACTS=~/.contacts
+ _rapidcall() {
+     local contacts
+     local cur
+     contacts=$( awk '{print $1}' <$CALL_CONTACTS )
+     cur=${COMP_WORDS[COMP_CWORD]}
+     COMPREPLY=( $( compgen -W '$contacts' -- $cur) )
+ }
+ complete -F _rapidcall rapidcall
+
+=item Example .contacts File:
+
+ satan             1-203-666-0420
+ lord_voldemort    1-666-148-3023
+ king_solomon      1-893-750-9395
+ peter_murphy      1-394-295-0034
+ 1800_suicide      1-800-784-2433
+
+=item Example Invocations:
+
+ # Call suicide hotline and set the channel variable 'CID' to
+ # let my dialplan know to set a spoofed caller id
+ rapidcall 1800_suicide CID=12036660420
+
+ # Call Satan, but originate the call through the dialplan
+ # context 'hell' instead of what we chose in our .bashrc
+ rapidcall satan@hell
+
+ # no .bashrc configuration required for this if you have
+ # asterisk running on the local system
+ rapidcall -P SIP/300 666-0420@internal
+
+ # But hey!  If you thought all that was cool check this
+ # out... If you have a MeetMe conference setup at conf|s|1 you
+ # can invite yourself and two friends in with the following
+ # command:
+ rapidcall -P Local/s@conf 300,203-666-0420,203-999-1111
+
+=item Example manager.conf File:
+
+ [general]
+ enabled = yes
+ displaysystemname = yes
+ port = 5038
+ bindaddr = 0.0.0.0
+ ;webenabled = yes
+ ;httptimeout = 60
+
+ ; ami://rapidcall:shamu@localhost
+ [rapidcall]
+ secret = shamu
+ deny   = 0.0.0.0/0.0.0.0
+ permit = 127.0.0.1/255.255.255.255
+ read   = call
+ write  = call
+
+=back
+
+=head1 AUTHOR
+
+Written by J.A. Roberts Tunney <themador@lobsetrtech.com>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2007 J.A. Roberts Tunney
+
+This program is free software: you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation, either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT
+ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+details.
+
+=cut
+
+use strict;
+use warnings;
+use Test::More tests => 2;
+
+BEGIN { use_ok('Manager') };
+
+my $obj = Manager->new();
+isa_ok($obj, "Manager");