;ELC   
;;; compiled by amu@mit.edu on Fri May 16 19:35:36 1997
;;; from file /afs/sipb.mit.edu/contrib/emacs/packages/bbdb-1.50/bbdb.el
;;; emacs version 19.30.1.
;;; bytecomp version FSF 2.10
;;; optimization is on.
;;; this file uses opcodes which do not exist in Emacs 18.

(if (and (boundp 'emacs-version)
	 (or (and (boundp 'epoch::version) epoch::version)
	     (string-lessp emacs-version "19.29")))
    (error "`bbdb.el' was compiled for Emacs 19.29 or later"))


(byte-code "\nB\nB!ʏ!" ["1.50; 18-feb-94." bbdb-version current-load-list 2 bbdb-file-format require provide t nil (byte-code "! !ć" [fboundp defsubst t require byte-optimize] 2) ((error (quote defsubst)))] 4)
#@55 *The name of the Insidious Big Brother Database file.
(defvar bbdb-file "~/.bbdb" (#$ . -715))
#@107 *The default area code to use when prompting for a new phone number.
This must be a number, not a string.
(defvar bbdb-default-area-code 415 (#$ . -817))
#@555 *Set this to nil if you want to enter phone numbers that aren't the same
syntax as those in North America (that is, [[1] nnn] nnn nnnn ['x' n*]).
If this is true, then some error checking is done so that you can't enter
incorrect phone numbers, and all phone numbers are pretty-printed the same
way.  European phone numbers don't have as strict a syntax, however, so
this is a harder problem for them (on which I am punting).

You can have both styles of phone number in your database by providing a
prefix argument to the bbdb-insert-new-field command.
(defvar bbdb-north-american-phone-numbers-p t (#$ . -978))
#@68 *Whether bbdb mode should be `electric' like electric-buffer-list.
(defvar bbdb-electric-p t (#$ . -1597))
#@168 *This is the value of case-fold-search used by Meta-X bbdb and related
commands.  This variable lets the case-sensitivity of ^S and of the bbdb
commands be different.
(defvar bbdb-case-fold-search (default-value (quote case-fold-search)) (#$ . -1711))
#@455 *If this is t, then VM, MH, and RMAIL will automatically create new bbdb
records for people you receive mail from.  If this is a function name
or lambda, then it is called with no arguments to decide whether an
entry should be automatically created.  You can use this to, for example,
not create records for messages which have reached you through a 
particular mailing list, or to only create records automatically if
the mail has a particular subject.
(defvar bbdb/mail-auto-create-p t (#$ . -1970))
#@510 *If this is t, then GNUS will automatically create new bbdb 
records for people you receive mail from.  If this is a function name
or lambda, then it is called with no arguments to decide whether an
entry should be automatically created.  You can use this to, for example,
create or not create messages which have a particular subject.  If you
want to autocreate messages based on the current newsgroup, it's 
probably a better idea to set this variable to t or nil from your 
gnus-Select-group-hook instead.
(defvar bbdb/news-auto-create-p nil (#$ . -2479))
#@339 *If this is true, then BBDB will not prompt you when it notices a
name change, that is, when the "real name" in a message doesn't correspond
to a record already in the database with the same network address.  As in,
"John Smith <jqs@frob.com>" versus "John Q. Smith <jqs@frob.com>".  
Normally you will be asked if you want to change it.
(defvar bbdb-quiet-about-name-mismatches nil (#$ . -3045))
#@123 *If this is true, then when bbdb notices a name change, it will ask you
if you want both names to map to the same record.
(defvar bbdb-use-alternate-names t (#$ . -3449))
#@272 *If this is true, then nothing will attempt to change the bbdb database
implicitly, and you will be prevented from doing it explicitly.  If you have 
more than one emacs running at the same time, you might want to arrange for 
this to be set to t in all but one of them.
(defvar bbdb-readonly-p nil (#$ . -3627))
#@276 *If this variable is true and the BBDB file is noticed to have changed on 
disk, it will be automatically reverted without prompting you first.  Otherwise
you will be asked. (But if the file has changed and you hae made changes in 
memory as well, you will always be asked.)
(defvar bbdb-auto-revert-p nil (#$ . -3947))
#@136 *If this is true, then the BBDB will notice when its auto-save file is
newer than the file is was read from, and will offer to revert.
(defvar bbdb-notice-auto-save-file nil (#$ . -4274))
#@147 If true, display a continuously-updating bbdb window while in VM, MH,
RMAIL, or GNUS.  If 'horiz, stack the window horizontally if there is room.
(defvar bbdb-use-pop-up t (#$ . 4469))
#@68 *Desired number of lines in a VM/MH/RMAIL/GNUS pop-up bbdb window.
(defvar bbdb-pop-up-target-lines 5 (#$ . -4660))
#@506 *Controls the behaviour of 'bbdb-complete-name'.  If nil, completion is 
done across the set of all full-names and user-ids in the bbdb-database;
if the symbol 'name, completion is done on names only; if the symbol 'net, 
completion is done on network addresses only; if it is 'primary, then 
completion is done only across the set of primary network addresses (the
first address in the list of addresses for a given user).  If it is 
'primary-or-name, completion is done across primaries and real names.
(defvar bbdb-completion-type nil (#$ . -4783))
#@178 *Whether bbdb-complete-name (\<mail-mode-map>\[bbdb-complete-name] in mail-mode) will update the *BBDB* buffer
to display the record whose email address has just been inserted.
(defvar bbdb-completion-display-record t (#$ . -5342))
#@275 *A regular expression identifying the addresses that belong to you.
If a message from an address matching this is seen, the BBDB record for
the To: line will be shown instead of the one for the From: line.  If
this is nil, it will default to the value of (user-login-name).
(defvar bbdb-user-mail-names nil (#$ . -5581))
#@480 *If this is true, then when the Insidious Big Brother Database notices
a new email address for a person, it will automatically add it to the list
of addresses.  If it is nil, you will be asked whether to add it.  If it is
the symbol 'never (really, if it is any non-t, non-nil value) then new 
network addresses will never be automatically added.

See also the variable `bbdb-new-nets-always-primary' for control of whether
the addresses go at the front of the list or the back.
(defvar bbdb-always-add-addresses nil (#$ . -5909))
#@369 *If this is true, then when the Insidious Big Brother Database adds a new 
address to a record, it will always add it to the front of the list of 
addresses, making it the primary address.  If this is nil, you will be asked.
If it is the symbol 'never (really, if it is any non-t, non-nil value) then
new network addresses will always be added at the end of the list.
(defvar bbdb-new-nets-always-primary nil (#$ . -6447))
#@106 *Specifies which package should be used to send mail.
Should be 'vm, 'mh, 'mail (or nil, meaning guess.)
(defvar bbdb-send-mail-style nil (#$ . -6877))
#@243 *If t, then certain actions will cause the BBDB to ask you whether
you wish to save the database.  If nil, then the offer to save will never
be made.  If not t and not nil, then any time it would ask you, it will
just save it without asking.
(defvar bbdb-offer-save t (#$ . -7036))
#@506 *Whether caching of the message->bbdb-record association should be used
for the interfaces which support it (VM, MH, and RMAIL).  This can speed
things up a lot.  One implication of this variable being true is that the
bbdb-notice-hook will not be called each time a message is selected, but
only the first time.  Likewise, if selecting a message would generate a
question (whether to add an address, change the name, etc) you will only
be asked that question the very first time the message is selected.
(defvar bbdb-message-caching-enabled t (#$ . -7325))
#@59 *Hook or hooks invoked when the *BBDB* buffer is created.
(defvar bbdb-mode-hook nil (#$ . -7889))
#@93 *Hook or hooks invoked after the bbdb-list-buffer is filled in.  Invoked
with no arguments.
(defvar bbdb-list-hook nil (#$ . -7994))
#@223 *Hook or hooks invoked each time a new bbdb-record is created.  Invoked
with one argument, the new record.  This is called *before* the record is 
added to the database.  Note that bbdb-change-hook will be called as well.
(defvar bbdb-create-hook nil (#$ . -8134))
#@259 *Hook or hooks invoked each time a bbdb-record is altered.  Invoked with
one argument, the record.  This is called *before* the bbdb-database buffer
is modified.  Note that if a new bbdb record is created, both this hook and
bbdb-create-hook will be called.
(defvar bbdb-change-hook nil (#$ . -8406))
#@367 *Hook or hooks invoked each time a bbdb-record is altered.  Invoked with
one argument, the record.  This is called *after* the bbdb-database buffer
is modified, so if you want to modify the record each time it is changed,
you should use the `bbdb-change-hook' instead.  Note that if a new bbdb 
record is created, both this hook and bbdb-create-hook will be called.
(defvar bbdb-after-change-hook nil (#$ . -8714))
#@1286 *If this is non-nil, it should be a function of one arg: a network address
string.  Whenever the Insidious Big Brother Database "notices" a message,
the corresponding network address will be passed to this function first, as
a kind of "filter" to do whatever transformations upon it you like before
it is compared against or added to the database.  For example: it is the case
that CS.CMU.EDU is a valid return address for all mail originating at a 
machine in the .CS.CMU.EDU domain.  So, if you wanted all such addresses to
be canonically hashed as user@CS.CMU.EDU, instead of as user@host.CS.CMU.EDU,
you might set this variable to a function like this:

 (setq bbdb-canonicalize-net-hook
       '(lambda (addr)
          (cond ((string-match "\\`\\([^@]+@\\).*\\.\\(CS\\.CMU\\.EDU\\)\\'"
                               addr)
                 (concat (substring addr (match-beginning 1) (match-end 1))
                         (substring addr (match-beginning 2) (match-end 2))))
                (t addr))))

You could also use this function to rewrite UUCP-style addresses into domain-
style addresses, or any number of things.

This function will be called repeatedly until it returns a value EQ to the
value passed in.  So multiple rewrite rules might apply to a single address.
(defvar bbdb-canonicalize-net-hook nil (#$ . -9137))
#@679 *If this is non-nil, redundant network addresses will be ignored.
If a record has an address of the form foo@baz.com, setting this to t
will cause subsequently-noticed addresses like foo@bar.baz.com to be
ignored (since we already have a more general form of that address.)
This is similar in function to one of the possible uses of the variable
`bbdb-canonicalize-net-hook' but is somewhat more automatic.  (This 
can't quite be implemented in terms of the canonicalize-net-hook because
it needs access to the database to determine whether an address is 
redundant, and the canonicalize-net-hook is purely a textual manipulation
which is performed before any database access.)
(defvar bbdb-canonicalize-redundant-nets-p t (#$ . -10482))
#@955 *Hook or hooks invoked each time a bbdb-record is "noticed", that is,
each time it is displayed by the news or mail interfaces.  Invoked with
one argument, the new record.  The record need not have been modified for 
this to be called - use bbdb-change-hook for that.  You can use this to, 
for example, add something to the notes field based on the subject of the 
current message.  It is up to your hook to determine whether it is running
in GNUS, VM, MH, or RMAIL, and to act appropriately.

Also note that bbdb-change-hook will NOT be called as a result of any
modifications you may make to the record inside this hook.

Beware that if the variable `bbdb-message-caching-enabled' is true (a good
idea) then when you are using VM, MH, or RMAIL, this hook will be called only 
the first time that message is selected.  (The GNUS interface does not use
caching.)  When debugging the value of this hook, it is a good idea to set 
caching-enabled to nil.
(defvar bbdb-notice-hook nil (#$ . -11227))
#@174 *Hook or hooks invoked (with no arguments) just after the Insidious Big 
Brother Database is read in.  Note that this can be called more than once if 
the BBDB is reverted.
(defvar bbdb-after-read-db-hook nil (#$ . -12232))
#@107 *Hook or hooks invoked (with no arguments) when the Insidious Big Brother 
Database code is first loaded.
(defvar bbdb-load-hook nil (#$ . -12463))
#@53 Keymap for Insidious Big Brother Database listings.
(defvar bbdb-mode-map nil (#$ . 12617))
(byte-code "! B! B!  B!- B!: B!G B!T 	B!a \nB!n B!{ \fB" [boundp bbdb-records nil current-load-list bbdb-changed-records bbdb-end-marker bbdb-hashtable bbdb-propnames bbdb-message-cache bbdb-showing-changed-ones bbdb-modified-p bbdb-elided-display bbdb-debug t] 2)
(defalias 'bbdb-debug '(macro . #[(&rest body) "BEE" [and bbdb-debug let ((debug-on-error t)) progn body] 6]))
(defalias 'bbdb-y-or-n-p '(macro . #[(&rest args) "\nBE" [prog1 y-or-n-p args (message " ")] 3]))
#@66 Like invoke-hooks, but invokes the given hook with one argument.
(defalias 'bbdb-invoke-hook #[(hook arg) "	!, 	J, 	:) 	@=) 	, 	@!	A 	!" [boundp hook lambda arg] 3 (#$ . 13288)])
#@130 If HOOK is nil, return nil.  If it is t, return t.  Otherwise,
return the value of funcalling it with the rest of the arguments.
(defalias 'bbdb-invoke-hook-for-value #[(hook &rest args) "= = \f\"" [hook nil t apply args] 3 (#$ . 13491)])
(defalias 'bbdb-defstruct '(macro . #[(conc-name &rest slots) "	!\fG\fP 	\f@!P!	\f@!Q!\nFF\nӯF*D\fAT 	P!EC+B" [symbol-name conc-name nil 0 slots L i body intern "set-" name2 name1 defmacro (vector) list (quote aref) vector (vector value) (quote aset) value defconst "length" progn] 10]))
(defalias 'bbdb-record-firstname '(macro . #[(vector) "	E" [aref vector 0] 3]))
(defalias 'bbdb-record-set-firstname '(macro . #[(vector value) "	F" [aset vector 0 value] 4]))
(defalias 'bbdb-record-lastname '(macro . #[(vector) "	E" [aref vector 1] 3]))
(defalias 'bbdb-record-set-lastname '(macro . #[(vector value) "	F" [aset vector 1 value] 4]))
(defalias 'bbdb-record-aka '(macro . #[(vector) "	E" [aref vector 2] 3]))
(defalias 'bbdb-record-set-aka '(macro . #[(vector value) "	F" [aset vector 2 value] 4]))
(defalias 'bbdb-record-company '(macro . #[(vector) "	E" [aref vector 3] 3]))
(defalias 'bbdb-record-set-company '(macro . #[(vector value) "	F" [aset vector 3 value] 4]))
(defalias 'bbdb-record-phones '(macro . #[(vector) "	E" [aref vector 4] 3]))
(defalias 'bbdb-record-set-phones '(macro . #[(vector value) "	F" [aset vector 4 value] 4]))
(defalias 'bbdb-record-addresses '(macro . #[(vector) "	E" [aref vector 5] 3]))
(defalias 'bbdb-record-set-addresses '(macro . #[(vector value) "	F" [aset vector 5 value] 4]))
(defalias 'bbdb-record-net '(macro . #[(vector) "	E" [aref vector 6] 3]))
(defalias 'bbdb-record-set-net '(macro . #[(vector value) "	F" [aset vector 6 value] 4]))
(defalias 'bbdb-record-raw-notes '(macro . #[(vector) "	E" [aref vector 7] 3]))
(defalias 'bbdb-record-set-raw-notes '(macro . #[(vector value) "	F" [aset vector 7 value] 4]))
(defalias 'bbdb-record-cache '(macro . #[(vector) "	E" [aref vector 8] 3]))
(defalias 'bbdb-record-set-cache '(macro . #[(vector value) "	F" [aset vector 8 value] 4]))
(byte-code "\nB" [9 bbdb-record-length current-load-list] 2)
(defalias 'bbdb-phone-location '(macro . #[(vector) "	E" [aref vector 0] 3]))
(defalias 'bbdb-phone-set-location '(macro . #[(vector value) "	F" [aset vector 0 value] 4]))
(defalias 'bbdb-phone-area '(macro . #[(vector) "	E" [aref vector 1] 3]))
(defalias 'bbdb-phone-set-area '(macro . #[(vector value) "	F" [aset vector 1 value] 4]))
(defalias 'bbdb-phone-exchange '(macro . #[(vector) "	E" [aref vector 2] 3]))
(defalias 'bbdb-phone-set-exchange '(macro . #[(vector value) "	F" [aset vector 2 value] 4]))
(defalias 'bbdb-phone-suffix '(macro . #[(vector) "	E" [aref vector 3] 3]))
(defalias 'bbdb-phone-set-suffix '(macro . #[(vector value) "	F" [aset vector 3 value] 4]))
(defalias 'bbdb-phone-extension '(macro . #[(vector) "	E" [aref vector 4] 3]))
(defalias 'bbdb-phone-set-extension '(macro . #[(vector value) "	F" [aset vector 4 value] 4]))
(byte-code "\nB" [5 bbdb-phone-length current-load-list] 2)
(defalias 'bbdb-address-location '(macro . #[(vector) "	E" [aref vector 0] 3]))
(defalias 'bbdb-address-set-location '(macro . #[(vector value) "	F" [aset vector 0 value] 4]))
(defalias 'bbdb-address-street1 '(macro . #[(vector) "	E" [aref vector 1] 3]))
(defalias 'bbdb-address-set-street1 '(macro . #[(vector value) "	F" [aset vector 1 value] 4]))
(defalias 'bbdb-address-street2 '(macro . #[(vector) "	E" [aref vector 2] 3]))
(defalias 'bbdb-address-set-street2 '(macro . #[(vector value) "	F" [aset vector 2 value] 4]))
(defalias 'bbdb-address-street3 '(macro . #[(vector) "	E" [aref vector 3] 3]))
(defalias 'bbdb-address-set-street3 '(macro . #[(vector value) "	F" [aset vector 3 value] 4]))
(defalias 'bbdb-address-city '(macro . #[(vector) "	E" [aref vector 4] 3]))
(defalias 'bbdb-address-set-city '(macro . #[(vector value) "	F" [aset vector 4 value] 4]))
(defalias 'bbdb-address-state '(macro . #[(vector) "	E" [aref vector 5] 3]))
(defalias 'bbdb-address-set-state '(macro . #[(vector value) "	F" [aset vector 5 value] 4]))
(defalias 'bbdb-address-zip '(macro . #[(vector) "	E" [aref vector 6] 3]))
(defalias 'bbdb-address-set-zip '(macro . #[(vector value) "	F" [aset vector 6 value] 4]))
(byte-code "\nB" [7 bbdb-address-length current-load-list] 2)
(defalias 'bbdb-cache-namecache '(macro . #[(vector) "	E" [aref vector 0] 3]))
(defalias 'bbdb-cache-set-namecache '(macro . #[(vector value) "	F" [aset vector 0 value] 4]))
(defalias 'bbdb-cache-sortkey '(macro . #[(vector) "	E" [aref vector 1] 3]))
(defalias 'bbdb-cache-set-sortkey '(macro . #[(vector value) "	F" [aset vector 1 value] 4]))
(defalias 'bbdb-cache-marker '(macro . #[(vector) "	E" [aref vector 2] 3]))
(defalias 'bbdb-cache-set-marker '(macro . #[(vector value) "	F" [aset vector 2 value] 4]))
(defalias 'bbdb-cache-deleted-p '(macro . #[(vector) "	E" [aref vector 3] 3]))
(defalias 'bbdb-cache-set-deleted-p '(macro . #[(vector value) "	F" [aset vector 3 value] 4]))
(byte-code "\nB" [4 bbdb-cache-length current-load-list] 2)
(defalias 'bbdb-record-name-1 #[(record) "HHHGV% \fGV! \fQ& & \f*I" [record 8 0 1 lname fname " "] 6])
(put (quote bbdb-record-name-1) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'bbdb-record-name #[(record) "HH3 HHHGV/ \fGV+ \fQ0 0 \f*I)" [record 8 0 1 lname fname " "] 7])
(defalias 'bbdb-record-sortkey #[(record) "HH HHHHQI" [record 8 1 0 3] 6])
(defalias 'bbdb-record-marker '(macro . #[(record) "\nDD" [bbdb-cache-marker bbdb-record-cache record] 3]))
(defalias 'bbdb-record-deleted-p '(macro . #[(record) "\nDD" [bbdb-cache-deleted-p bbdb-record-cache record] 3]))
(defalias 'bbdb-record-set-deleted-p '(macro . #[(record val) "\nDE" [bbdb-cache-set-deleted-p bbdb-record-cache record val] 3]))
(defalias 'bbdb-record-set-namecache '(macro . #[(record newval) "\nDE" [bbdb-cache-set-namecache bbdb-record-cache record newval] 3]))
(defalias 'bbdb-record-set-sortkey '(macro . #[(record newval) "\nDE" [bbdb-cache-set-sortkey bbdb-record-cache record newval] 3]))
(defalias 'bbdb-record-set-marker '(macro . #[(record newval) "\nDE" [bbdb-cache-set-marker bbdb-record-cache record newval] 3]))
(defalias 'bbdb-record-notes #[(record) "H: HAH" [record 7 notes] 3])
(defalias 'bbdb-record-getprop #[(record property) "> \"= HH:# HA=3 H;3 H" [property (name address addresses phone phones net aka AKA) error "bbdb: cannot access the %s field this way" company record 3 7 notes] 3])
(defalias 'bbdb-record-putprop #[(record property newval) "> \"= II =3 H:3 I H<D HBCIH\nk ] \n~ \nH\"I~ ~ HBC\"I)H: HA H@@= H@AI=\"" [property (name address addresses phone phones net aka AKA) error "bbdb: cannot annotate the %s field this way" company record 3 newval notes 7 old delq append bbdb-change-record] 7])
(defalias 'bbdb-record-set-notes #[(record newval) "H: \f#\fI\"" [record 7 bbdb-record-putprop notes newval bbdb-change-record nil] 4])
(defalias 'bbdb-phone-string #[(phone) "GU HH; !HU' H\"( HU< HH#= HT HUT H\"U Q" [phone 2 1 error "doubleplus ungood: euronumbers unwork" 0 format "(%03d) " "" "%03d-%04d" 3 4 " x%d"] 6])
(defalias 'bbdb-address-zip-string #[(addr) "H:( H@; H@HA@QH@HA@#H=6 H8 ƇH\"" [addr 6 " " format "%05d-%04d" 0 "" "%05d"] 5])
(defalias 'bbdb-record-lessp '(macro . #[(record1 record2) "\nDDE" [string< bbdb-record-sortkey record1 record2] 4]))
(defalias 'bbdb-subint '(macro . #[(string match-number) "\n\fD\fDFD" [string-to-int substring string match-beginning match-number match-end] 6]))
(defalias 'bbdb-error-retry '(macro . #[(form) "EFEE" [catch (quote --bbdb-error-retry--) while (quote t) condition-case --c-- throw (quote --bbdb-error-retry--) form (error (ding) (let ((cursor-in-echo-area t)) (if (fboundp (quote display-error)) (display-error --c-- nil) (message "Error: %s" (nth 1 --c--))) (sit-for 2)))] 9]))
(defalias 'bbdb-save-buffer-excursion '(macro . #[(&rest body) "BEED" [save-excursion let ((--bbdb-obuf-- (current-buffer))) unwind-protect progn body (set-buffer --bbdb-obuf--)] 6]))
(byte-code "! B" [boundp bbdb-buffer nil current-load-list] 2)
(defalias 'bbdb-buffer '(macro . #[nil "" [(if (and bbdb-buffer (buffer-name bbdb-buffer)) bbdb-buffer (setq bbdb-buffer (find-file-noselect bbdb-file (quote nowarn))))] 1]))
(defalias 'bbdb-with-db-buffer '(macro . #[(&rest body) "!  	BBDEC 	BB" [bbdb-save-buffer-excursion (set-buffer (bbdb-buffer)) boundp bbdb-debug let ((w (and bbdb-debug (get-buffer-window (buffer-name (get-buffer bbdb-file)))))) save-excursion save-window-excursion (and w (select-window w)) body] 8]))
#@38 lose leading and trailing whitespace
(defalias 'bbdb-string-trim #[(string) "\n\" \nÕO\n\" \nÉO\n" [string-match "\\`[ 	\n]+" string 0 nil "[ 	\n]+\\'"] 3 (#$ . 22712)])
(put (quote bbdb-string-trim) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@135 Reads a string, trimming trailing whitespace.  If DEFAULT is multiple
lines, then the minibuffer is enlarged to fit it while editing.
(defalias 'bbdb-read-string #[(prompt &optional default) "	G\nW 	# \nT\fT ǋ," [0 default L start n string-match "\n" ((byte-code "!\n 	%   ! Z]!!!)\f\"\"= ǕO\"N ǉOP )" [boundp epoch::version selected-window w select-window minibuffer-window enlarge-window 0 n window-height sit-for read-string prompt default string string-match "\\`[ 	\n]+" nil "[ 	\n]+\\'"] 4))] 4 (#$ . 22993)])
(defalias 'bbdb-field-shown-p #[(field) "? 	= = 	>?" [bbdb-elided-display field name t] 2])
(put (quote bbdb-field-shown-p) (quote byte-optimizer) (quote byte-compile-inline-expand))
(defalias 'bbdb-format-record #[(record &optional brief) " HH !)!H	\n1 	1 \n	J \n; 	G \nB 	cJ c= `y`ZXg bz `\\b``|c)H@H@H   j ۂ c !cjcHcc  c+cc\"H$%\"? %= \"= %\">?)H&%\"?$%=$\"=#%\">?)+H)&T&@H\"c!&A&5҉,-.))@..H\"c.H,GUj,.H,GUj,.H,GUj,j.H-c.H,-GV,GVc,ܱ.!)A)b+H#%\"?%=\"=%\">?)#H##c$U%\"?E%=E\"=D%\">?)U$##cH;fBC@@%\"?%=\"=%\">?)@@\"c`@Ac`S}Tb#\"c*c)Ak.c*" [bbdb-debug t debug-on-error record 8 3 error "plus ungood: formatting deleted record" bbdb-record-name comp name " - " "???" brief p 0 47 44 nil "..." 4 6 7 notes net phone 48 ". " "  " bbdb-phone-string 70 " (" ")" "\n" bbdb-elided-display 2 aka field phones address 5 addrs format " %14s: " s c addr 1 17 ", " bbdb-address-zip-string " %14s: %s\n" "net" mapconcat identity "AKA" search-forward make-string 32] 8])
#@54 Bind this to t to quiet things down - do not set it!
(defconst bbdb-gag-messages nil (#$ . 25006))
(byte-code "\nB" ["*BBDB*" bbdb-buffer-name current-load-list] 2)
#@580 *Set this to t if to make the bbdb-display commands default to displaying
one line per record instead of a full listing.  Set this to a list of some
of the symbols '(address phone net notes) to select those fields to be left 
out of the listing (you can't leave out the name field).

This is the default state for Meta-x bbdb and friends.  You can have a
different default for when the BBDB buffer is automatically updated by the
mail and news interfaces by setting the variable `bbdb-pop-up-elided-display'.
If that variable is unbound, this variable will be consulted instead.
(defvar bbdb-elided-display nil (#$ . -25184))
(byte-code "	B#" [bbdb-pop-up-elided-display current-load-list put variable-documentation "*Set this to t if to make the pop-up BBDB buffer default to displaying\none line per record instead of a full listing.  Set this to a list of some\nof the symbols '(address phone net notes) to select those fields to be left\nout of the listing (you can't leave out the name field).\n\nThe default state for Meta-x bbdb and friends is controlled by the variable\n`bbdb-elided-display'; this variable (`bbdb-pop-up-elided-display') is the\ndefault for when the BBDB buffer is automatically updated by the mail and\nnews interfaces.  If bbdb-pop-up-elided-display is unbound, then \nbbdb-elided-display will be consulted instead by mail and news."] 4)
(defalias 'bbdb-pop-up-elided-display '(macro . #[nil "" [(if (boundp (quote bbdb-pop-up-elided-display)) bbdb-pop-up-elided-display bbdb-elided-display)] 1]))
(defalias 'bbdb-frob-mode-line #[(n) "V  G#DF \nˉ\f" [n 0 24 "BBDB: " 10 format "%d/%d" bbdb-records (bbdb-showing-changed-ones " !!" "   ") ("- Insidious Big Brother Database " mode-line-modified "-") mode-line-buffer-identification (bbdb-readonly-p "--%%%%-" (bbdb-modified-p "--**-" "-----")) mode-line-modified] 7])
(defalias 'bbdb-display-records-1 #[(records &optional append) " @: \"p@@qL @ @@7 @\"A& \"\")!!!L   @@>Ai +G! ! !LЉ  )  @@> !)@8`Г@@@A@\"A *? !qp!%&%%&8\"!+ !\fq*" [records mapcar #[(x) "	 E" [x bbdb-elided-display make-marker] 3] first b bbdb-buffer-name append rest bbdb-records delq sort #[(x y) "	@!\n@!" [bbdb-record-sortkey x y] 3] make-local-variable mode-line-buffer-identification mode-line-modified bbdb-showing-changed-ones nil bbdb-changed-records changed done bbdb-frob-mode-line bbdb-gag-messages message "Formatting..." bbdb-mode prs buffer-read-only bbdb-debug t debug-on-error truncate-lines error "record doubleplus unpresent!" 2 bbdb-format-record "Formatting...done." get-buffer-window window cons set-window-start run-hooks bbdb-list-hook bbdbq set-buffer-modified-p] 5])
(defalias 'bbdb-undisplay-records #[nil "q!)" [bbdb-buffer-name nil bbdb-showing-changed-ones mode-line-modified bbdb-records t buffer-read-only set-buffer-modified-p] 2])
(byte-code "\nB\nB\nB" [nil bbdb-inside-electric-display current-load-list bbdb-electric-execute-me bbdb-electric-completed-normally] 2)
(defalias 'electric-bbdb-display-records #[(records) "!ȋ,! !)" [require electric nil bbdb-electric-execute-me t bbdb-electric-completed-normally buffer bbdb-inside-electric-display ((byte-code "!!q !ɍ\f!" [((bbdb-display-records-1 records)) window-buffer Electric-pop-up-window bbdb-buffer-name buffer bbdb-gag-messages message "<<< Press Space to bury the Insidious Big Brother Database list >>>" Done (byte-code "  " [Blow-off-the-error (byte-code "č)" [nil bbdb-electric-completed-normally ((byte-code "\f \"  !\"" [bbdb-electric-completed-normally throw Done t ding message "BBDB-Quit" Blow-off-the-error] 3)) electric-bbdb-list-select (byte-code "#" [Electric-command-loop electric-bbdb-list-select "-> " t] 4) t] 2)] 2) bury-buffer] 4)) message " " eval] 3])
#@77 Exit the electric-command-loop, and evaluate the given form once we're out.
(defalias 'bbdb-electric-throw-to-execute #[(form-to-execute) "!\n !\f\"" [boundp bbdb-electric-execute-me error "plusungood: electrical short" form-to-execute t bbdb-electric-completed-normally throw electric-bbdb-list-select] 3 (#$ . 29256)])
(defalias 'bbdb-done-command #[nil "\"" [throw electric-bbdb-list-select t] 3 nil nil])
(defalias 'bbdb-bury-buffer #[nil "   " [bbdb-inside-electric-display bbdb-done-command bury-buffer] 1 nil nil])
(defalias 'bbdb-display-records #[(records) "	! \n #	!R 	!!)/ #?R \n?R !O K ՂP ւP !!)" [get-buffer-window bbdb-buffer-name bbdb-window bbdb-electric-p define-key bbdb-mode-map " " bbdb-done-command electric-bbdb-display-records records bbdb-display-records-1 run-hooks bbdb-list-hook bbdb-inside-electric-display undefined bbdb-gag-messages message substitute-command-keys one-window-p t pop-up-windows "Type \\[delete-other-windows] to unshow the bbdb-list window." "Type \\[switch-to-buffer] RET to unshow the bbdb-list window." "Type \\[switch-to-buffer-other-window] RET to restore old contents of the bbdb-list window."] 4])
(defalias 'bbdbq #[nil " \"U  \"GH!!)" [logand random 31 0 ["Don't suspect your neighbor: report him!" "fnord" "Consume -- Be Silent -- Die" "Love Big Brother" "Lee Harvey Oswald acted alone"] v message 255 " "] 5])
(defalias 'bbdb-hashtable '(macro . #[nil "" [(bbdb-with-db-buffer (bbdb-records nil t) bbdb-hashtable)] 1]))
(defalias 'bbdb-changed-records #[nil "p\n \n! \n \"q\"\n+" [--bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-records nil t bbdb-changed-records] 3])
(defalias 'bbdb-gethash '(macro . #[(name &optional ht) "\n ED" [symbol-value intern-soft name ht (bbdb-hashtable)] 4]))
(defalias 'bbdb-puthash '(macro . #[(name record &optional ht) "\n EE" [set intern name ht (bbdb-hashtable) record] 4]))
(defalias 'bbdb-remhash '(macro . #[(name &optional ht) "\f	 EDCE" [let s intern-soft name ht (bbdb-hashtable) (and s (set s nil))] 5]))
#@55 name is a string; net is a string or list of strings.
(defalias 'bbdb-search-simple #[(name net) "G=	 G= !K pȎ	4 	!4 	< \f\"	q\"+\"J  ; pώ	n 	!n 	v \f\"	q\"+\"J  @pю	 	! 	 \f\"	q\"+\"JA )" [name 0 nil net bbdb-records t intern-soft --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-hashtable ((set-buffer --bbdb-obuf--)) answer ((set-buffer --bbdb-obuf--))] 6 (#$ . 31466)])
(put (quote bbdb-search-simple) (quote byte-optimizer) (quote byte-compile-inline-expand))
#@147 Given a record whose net field is a comma-separated string, convert it to
a list of strings (the new way of doing things.)  Returns the new list.
(defalias 'bbdb-net-convert #[(record) "H\"I" [record 6 bbdb-split ","] 5 (#$ . 32123)])
(defalias 'bbdb-split #[(string separators) "\nP!q ceb\nwwmB `\nw`\nx`{\fB\nb*  )\f*" [nil "^" separators not-separators result get-buffer-create " *split*" erase-buffer string " 	\n" p begin] 3])
#@108 Insert the record in the appropriate hashtables.  This must be called 
while the .bbdb buffer is selected.
(defalias 'bbdb-hash-record #[(record) "HHHGV' \fGV# \fQ( ( \f*I)HHH\n\fGUM \"LGUg \fGUg \f\"L @\"LAl \n \n@\"L\nA\n ," [record 8 0 1 lname fname " " 3 2 6 net aka company name intern bbdb-hashtable nil] 7 (#$ . 32612)])
(byte-code "#! BƇ" [put bbdb-hash-record byte-optimizer byte-compile-inline-expand boundp inside-bbdb-records nil current-load-list] 4)
#@222 Return a list of all bbdb records; read in and parse the db if necessary.
This also notices if the disk file has changed out from under us, unless
optional arg DONT-CHECK-DISK is non-nil (which is faster, but hazardous.)
(defalias 'bbdb-records #[(&optional dont-check-disk already-in-db-buffer) " !)pȎ	  : \n1 \n!1 \n9 \"\nq ! c !c !\" !o ؂p ! ! \"\" ! \"  !L!L!L!L!L!L!&\"&\"\" ,-.TedU 1\"c  !łT ! 5H 8\"H!78!p!! !!@ A !@ŁB C  )TD \"\"E  ." [inside-bbdb-records t debug-on-error error "catastrophic: bbdb-records recursed" nil shut-up --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) already-in-db-buffer bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn buf dont-check-disk verify-visited-file-modtime bbdb-auto-revert-p buffer-modified-p message "BBDB has changed on disk, reverting..." revert-buffer yes-or-no-p "BBDB has changed on disk; flush your changes and revert? " "BBDB has changed on disk; revert? " file-exists-p "bbdb: file %s no longer exists!!" bbdb-save-db bbdb-records buffer-local-variables make-local-variable bbdb-changed-records bbdb-end-marker bbdb-hashtable bbdb-propnames revert-buffer-function bbdb-revert-buffer write-file-hooks append (bbdb-write-file-hook-fn) make-vector 1021 0 bbdb-modified-p bbdb-readonly-p buffer-read-only format ";;; file-version: %d\n" bbdb-file-format bbdb-flush-all-caches point-marker "Parsing BBDB..." bbdb-notice-auto-save-file file-newer-than-file-p make-auto-save-file-name buffer-file-name "BBDB auto-save file is newer; recover it? " recover-file bury-buffer auto-save-mode 1 delete-file "Auto-save mode is ON in BBDB buffer.  Suggest you save it soon." sleep-for 2 (byte-code " !" [delete-file make-auto-save-file-name] 2) ((file-error)) fillarray parse-bbdb-internal] 3 (#$ . 33193)])
(defalias 'bbdb-revert-buffer #[(arg noconfirm) " \n!\f  \")" [kill-all-local-variables get-buffer bbdb-buffer-name bbdb-undisplay-records nil revert-buffer-function revert-buffer arg noconfirm] 3])
(defalias 'parse-bbdb-internal #[nil " !)~ebg=! #! u#8 ɕSb !\")#O ՔՕ{!@)  d !)#v yy b!)!)W ! V \"#) m ! !~#+ !) !" [bbdb-debug t debug-on-error message "Parsing BBDB... (reading...)" 91 search-forward "\n[" nil 0 -1 re-search-backward "^;+[ 	]*user-fields:[ 	]*(" mapcar #[(x) "	!C" [symbol-name x] 2] read point-marker bbdb-propnames v "^;+[ 	]*file-version:[ 	]*\\([0-9]+\\)[ 	]*$" read-from-string 1 buffer-modified-p modp error "bbdb corrupted: no file-version line" 2 "^;" insert-before-markers ";;; file-version: 2\n" set-buffer-modified-p bbdb-file-format "bbdb: how can the file format version possibly be less than 2?" "BBDB version %s doesn't understand file format version %s." bbdb-version looking-at "[[]" "no following bracket: bbdb corrupted" search-backward "bbdb corrupted: records before point" parse-bbdb-frobnicate parse-bbdb-read] 4])
(defalias 'parse-bbdb-read #[nil "`d} ebcdbcebp!eb!db!!+	)" [nil records buffer-modified-p t inhibit-quit modp buffer-read-only "(\n" "\n)" read delete-char 2 -2 set-buffer-modified-p] 3])
(defalias 'parse-bbdb-frobnicate #[(records) "eb! y ~ !)\n=@\n\"I Ii \n!h \"Jh \nE\"+\n\n\nH\nH\nHGV GV Q  *I)\nH\nH\nH !GU \"\nLGU !GU !\"\nL   @\"\nL A  @\"\nLA,)yA# 9!9`\")# *% &!U!)" [looking-at "[ 	\n\f]*;" 1 bbdb-debug t debug-on-error message "Parsing BBDB... (frobnicating...)" records nil record rest 8 make-vector bbdb-cache-length 2 point-marker bbdb-record-name tmp name intern-soft bbdb-hashtable signal error "duplicate bbdb entries" 0 lname fname " " 3 6 net aka company intern "[[]" "bbdb corrupted: junk between records at %s" bbdb-records bbdb-end-marker run-hooks bbdb-after-read-db-hook "Parsing BBDB... (frobnicating...done)"] 8])
#@61 Returns a regexp matching the address of the logged-in user
(defalias 'bbdb-user-mail-names '(macro . #[nil "" [(or bbdb-user-mail-names (setq bbdb-user-mail-names (concat "\\b" (regexp-quote (user-login-name)) "\\b")))] 1 (#$ . 37479)]))
#@60 Added to write-file-hooks locally to the bbdb-file buffer.
(defalias 'bbdb-write-file-hook-fn #[nil "\f! pǎq!+)" [nil bbdb-modified-p bbdb-changed-records get-buffer bbdb-buffer-name b --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-showing-changed-ones set-buffer-modified-p] 3 (#$ . 37726)])
(defalias 'bbdb-delete-record-internal #[(record) "HH\f !pƎ\" !\" * \n\"q\f>9 \fB\f>H \"\"HHAe A@HHg |! !\" L*H @\" L)A )H @\" L)A )HI܉," [record 8 2 error "bbdb: marker unpresent" --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-changed-records bbdb-records tail "bbdb: unfound %s" delq bbdb-end-marker bbdb-record-name name intern-soft bbdb-hashtable s nil 6 nets aka 1 t bbdb-modified-p] 4])
#@117 Inserts the RECORD into the list of RECORDS, in order (assuming the list is
already sorted.)  Returns the new head.
(defalias 'bbdb-insert-sorted #[(record records) " \f> \")\fB	A6 A@!!6 A AB	A*" [bbdb-debug t debug-on-error record records error "doubleplus ununique: - %s" nil rest top bbdb-record-sortkey] 4 (#$ . 38656)])
(defalias 'bbdb-insert-record-internal #[(record) "HH H IpŎ& !& . 	\"q>= BHI\">A@c HHe bH` eU \"U ! \")I!\"HϓIHHH!\"GV !GV \"!Q \" !*I)HHH&'()GU\n)+\"L)GU$(GU$(+\"L'='@+\"L'A')&W&@+\"L&A&B,-̉,+" [record 8 2 make-marker --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-changed-records t print-escape-newlines 1 nil bbdb-insert-sorted bbdb-records next bbdb-end-marker point cache bbdb-debug debug-on-error error "doubleplus ungood: inserting at point-min (%s)" looking-at "[[]" "doubleplus ungood: not inserting before a record (%s)" insert-before-markers prin1-to-string "\n" 0 lname fname " " 3 6 net aka company name intern bbdb-hashtable bbdb-modified-p] 8])
(defalias 'bbdb-overwrite-record-internal #[(record) "p\n \n! \n \"q>* B\n\fH @=H A6 S \"H HeXr H\"Hb`U ! `\")HbI!۱`A A@HH |I A A@HH HHX !)." [--bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn record bbdb-changed-records t bbdb-records tail print-escape-newlines error "bbdb: unfound %s" 8 cache bbdb-debug debug-on-error 2 "doubleplus ungood: cache marker is %s" bbdb-end-marker looking-at "[[]" "doubleplus ungood: not inserting before a record (%s)" nil prin1-to-string "\n" "doubleplus ungood: overwrite unworks" bbdb-modified-p] 5])
#@11 hands off
(defvar inside-bbdb-change-record nil (#$ . 40726))
#@178 Update the database after a change to the given record.  Second arg 
NEED-TO-SORT is whether the name has changed.  You still need to worry 
about updating the name hash-table.
(defalias 'bbdb-change-record #[(record need-to-sort) " 		\"! 	HH  !)	 >x \fG 	! 	 >C !) 	!^ 	 >] !)	! 	 >t !) 	! 	 > !)	\"	)" [inside-bbdb-change-record record t bbdb-invoke-hook bbdb-change-hook bbdb-debug debug-on-error 8 3 error "bbdb: changing deleted record" bbdb-records need-to-sort bbdb-overwrite-record-internal "doubleplus ungood: overwrite unworks" bbdb-delete-record-internal "doubleplus ungood: delete unworks" bbdb-insert-record-internal "insert unworks" "doubleplus ungood: insert unworks" bbdb-modified-p bbdb-after-change-hook] 3 (#$ . 40795)])
(defalias 'bbdb-propnames '(macro . #[nil "" [(bbdb-with-db-buffer bbdb-propnames)] 1]))
(defalias 'bbdb-set-propnames #[(newval) "p\n \n! \n \"q~ebg=0 ##G ͕Sb``|Z #S ͕b!u\"p\"+" [--bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn newval bbdb-propnames 91 search-forward "\n[" nil 0 re-search-backward "^[ 	]*;+[ 	]*user-fields:[ 	]*(" t "^[ 	]*;.*\n" insert-before-markers ";;; user-fields: \n" -1 prin1 mapcar #[(x) "	@!" [intern x] 2]] 4])
(defalias 'bbdb-modified-p #[nil "	 	! 	 \f\"!" [buffer-modified-p bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-modified-p] 4])
#@2485 Major mode for viewing and editing the Insidious Big Brother Database.
Letters no longer insert themselves.  Numbers are prefix arguments.
You can move around using the usual cursor motion commands.
\<bbdb-mode-map>
\[bbdb-edit-current-field]	 edit the field on the current line.
\[bbdb-record-edit-notes]	 shortcut for editing the 'notes' field.
\[advertized-bbdb-delete-current-field-or-record]	 delete the field on the current line.  If the current line is the
	 first line of a record, then this deletes the entire record from
	 the database.
\[bbdb-insert-new-field]	 inserts a new field into the current record, as opposed to editing
	 an existing one.  Note that this will let you add new fields of your
	 own as well.
\[bbdb-next-record], \[bbdb-prev-record]	 move to the next and previous displayed record, respectively.
\[bbdb-elide-record]	 toggles whether the current record is displayed in a one-line
	 listing, or a full multi-line listing.
\[bbdb-apply-next-command-to-all-records]\[bbdb-elide-record]	 does that for all records.
\[bbdb-send-mail]	 lets you compose mail to the person represented by the current record.
\[bbdb-apply-next-command-to-all-records]\[bbdb-send-mail]	 sends a mail message to everyone listed in the BBDB buffer.
\[bbdb-save-db]	 saves the BBDB file to disk.
\[bbdb-refile-record]	 merges the contents of this record with some other, and then deletes
	 this one.  See this command's documentation.
\[bbdb-finger]	 fingers the network address of the current record.
\[bbdb-apply-next-command-to-all-records]\[bbdb-finger]	 fingers the network address of all displayed records.
\[bbdb-omit-record]	 removes the current record from the display without deleting it
	 from the database.  This is often a useful thing to do before using
	 one of the `*' commands.
\[bbdb-info]	 enters the Info node (online documentation) for BBDB.
\[bbdb-help]	 displays a one-line command-summary in the echo-area.

In send-mail mode, \<mail-mode-map>\[bbdb-complete-name] does completion across the set of names and network 
addresses in the database.

Variables of note:
	bbdb-file
	bbdb-electric-p
	bbdb-use-pop-up
	bbdb-pop-up-target-lines
	bbdb-readonly-p
	bbdb-notice-auto-save-file
	bbdb/mail-auto-create-p
	bbdb/news-auto-create-p
	bbdb-quiet-about-name-mismatches
	bbdb-completion-type
	bbdb-default-area-code
	bbdb-north-american-phone-numbers-p

There are numerous hooks.  M-x apropos ^bbdb.*hook RET

The keybindings, more precisely:
\{bbdb-mode-map}
(defalias 'bbdb-mode #[nil "!!" [bbdb-mode major-mode "BBDB" mode-name use-local-map bbdb-mode-map run-hooks bbdb-mode-hook] 2 (#$ . 42356)])
#@60 Move the cursor to the first line of the next bbdb-record.
(defalias 'bbdb-next-record #[(p) "W [!uV* ## y!S yÇ" [p 0 bbdb-prev-record nil re-search-forward "^[^ 	\n]" t error "no next record"] 5 (#$ . 44998) "p"])
#@64 Move the cursor to the first line of the previous bbdb-record.
(defalias 'bbdb-prev-record #[(p) "W [!V$ # !S\f " [p 0 bbdb-next-record re-search-backward "^[^ 	\n]" nil t error "no previous record"] 5 (#$ . 45249) "p"])
(defalias 'bbdb-maybe-update-display #[(bbdb-record) ")" [((byte-code "	!p Ď	q  **" [get-buffer-window bbdb-buffer-name b w ((set-buffer b)) bbdb-record bbdb-records bbdb-redisplay-records] 3))] 1])
(defalias 'bbdb-annotate-notes #[(bbdb-record annotation &optional fieldname) " !\f\" \fǕO\f\"& \fǉO' \f)\n>6 \n\"\n> \n\n> \n!pҎa !a i \"q+\" ڊpێ !  \"q+\n!CC\"!ܘ? \n\" \f\" \fǕO\f\" \fǉO \f)\nܘ  \n=  \nN Q#!)" [bbdb-record error "unperson" annotation string string-match "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" fieldname (name address addresses phone phones net aka AKA) "bbdb: cannot annotate the %s field this way" notes (notes company) assoc symbol-name --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-propnames bbdb-set-propnames append ((set-buffer --bbdb-obuf--)) "" bbdb-record-getprop bbdb-record-putprop company "; " field-separator "\n" bbdb-maybe-update-display] 6])
#@69 Offer to save the Insidious Big Brother Database if it is modified.
(defalias 'bbdb-offer-save #[nil "	 =!" [bbdb-offer-save bbdb-save-db t] 3 (#$ . 46607)])
#@215 *If non-nil, then when bbdb-save-db is asking you whether to save the db,
it will time out to `yes' after this many seconds.  This only works if the
function y-or-n-p-with-timeout is defined (meaning Lucid Emacs.)
(defvar bbdb-save-db-timeout nil (#$ . -46778))
#@32 save the db if it is modified.
(defalias 'bbdb-save-db #[(&optional prompt-first mention-if-not-saved) "p\n \n! \n \"q W R 	4 !!O H !H #O !!W  _ _ !+" [--bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn buffer-modified-p prompt-first bbdb-readonly-p y-or-n-p "Save the BBDB, even though it's supposedly read-only? " message " " bbdb-save-db-timeout fboundp y-or-n-p-with-timeout "Save the BBDB now? " t save-buffer mention-if-not-saved "BBDB unsaved"] 4 (#$ . 47046) (list nil t)])
#@435 Add to the value of HOOK the function FUNCTION.
FUNCTION is not added if already present.
FUNCTION is added (if necessary) at the beginning of the hook list
unless the optional argument APPEND is non-nil, in which case
FUNCTION is added at the end.

HOOK should be a symbol, and FUNCTION may be any valid function.  If
HOOK is void, it is first set to nil.  If HOOK's value is a single
function, it is changed to a list of functions.
(defalias 'bbdb-add-hook #[(hook function &optional append) "	!\n 	L	J< @= C?5 	1 C\"4 BL)" [boundp hook nil old lambda function append] 5 (#$ . 47643)])
#@48 Strips garbage from the user full name string.
(defalias 'bbdb-clean-username #[(string) "\n\"( \n\n\" \nĕO\n\"% \nĉO& \n)\n\"8 \nĕO\n\"H \nĉO8 \n\"i \n̔X ͔O\n̕b ͕OQH \n\" \n͔O\n\" \nĉOv \n)" [string-match "[@%!]" string "\\`[ 	\n]+" 0 nil "[ 	\n]+\\'" t case-fold-search "\\`[^a-z]+" "\\(\\W+\\([Xx]\\|[Ee]xt\\.?\\)\\W*[-0-9]+\\|[^a-z]+\\)\\'" "\\(	\\|  +\\|\\(\\.\\)[^ 	_]\\|_+\\)" 2 1 " " "[^ 	]\\([ 	]*\\((\\| -\\| #\\)\\)"] 5 (#$ . 48265)])
#@161 A list of all the buffers which have stuff on their bbdb-message-cache 
local variable.  When we re-parse the .bbdb file, we need to flush all of
these caches.
(defvar bbdb-buffers-with-message-caches nil (#$ . 48782))
(defalias 'notice-buffer-with-cache #[(buffer) "	>& 	  \n@! \n@	\"\nA\f )	B" [buffer bbdb-buffers-with-message-caches rest buffer-name delq] 4])
(make-variable-buffer-local (quote bbdb-message-cache))
(defalias 'bbdb-message-cache-lookup '(macro . #[(message-key &optional message-sequence-buffer) "EDCE\n! D\nE# \n)EE" [progn (bbdb-records) and bbdb-message-caching-enabled let --cons-- assq message-key bbdb-message-cache (if (and --cons-- (bbdb-record-deleted-p (cdr --cons--))) (progn (setq bbdb-message-cache (delq --cons-- bbdb-message-cache)) nil) (cdr --cons--)) bod message-sequence-buffer save-excursion set-buffer] 9]))
#@72 Don't call this multiple times with the same args, it doesn't replace.
(defalias 'bbdb-encache-message '(macro . #[(message-key bbdb-record &optional message-sequence-buffer) "\nDC̉EEEDDEEFE2 DDB4 )" [let --rec-- bbdb-record if bbdb-message-caching-enabled and progn (notice-buffer-with-cache (current-buffer)) cdr car setq bbdb-message-cache cons message-key bod message-sequence-buffer save-excursion set-buffer] 16 (#$ . 49678)]))
(defalias 'bbdb-flush-all-caches #[nil "  !)* @!\" @qA )" [bbdb-debug t debug-on-error bbdb-buffers-with-message-caches message "Flushing BBDB caches" buffer-name nil bbdb-message-cache] 3])
(byte-code "RBć" ["[-,. 	/\\]+\\(" "[JjSs]r\\.?" "\\|V?\\(I\\.?\\)+V?" "\\)\\W*\\'" bbdb-name-gubbish current-load-list] 4)
#@64 divide the string into a first name and a last name, cleverly.
(defalias 'bbdb-divide-name #[(string) "\n\" \nÉO\n\n\", O\nÉO\"K ÉOʔOF PDN \nD+" [string-match "\\W+\\([Xx]\\|[Ee]xt\\.?\\)\\W*[-0-9]+\\'" string 0 nil case-fold-search str bbdb-name-gubbish gubbish " +\\(\\([^ ]+ *- *\\)?[^ ]+\\)\\'" 1 ""] 5 (#$ . 50504)])
(defalias 'bbdb-check-alternate-name #[(possible-name record) "\nH/ \f	- 	@& 	@ 	A *)" [nil aka record 2 possible-name match down-name] 3])
(defalias 'bbdb-canonicalize-address #[(net) "	!=  " [net bbdb-canonicalize-net-hook] 3])
#@271 Returns non-nil if NET represents a sub-domain of one of the OLD-NETS.
The returned value is the address which makes this one redundant.
For example, "foo@bar.baz.com" is redundant w.r.t. "foo@baz.com", 
and "foo@quux.bar.baz.com" is redundant w.r.t. "foo@bar.baz.com".
(defalias 'bbdb-net-redundant-p #[(net old-nets) "	_ \n_ \n@\" O) TO	B 	B !	!ͰX X \"X -\nA 	)" [nil redundant-addr old-nets old string-match "@" host-index 0 name host "\\`" regexp-quote "@.*\\." "\\'" host-regexp net] 6 (#$ . 51148)])
#@463 Fills the record corresponding to the sender with as much info as possible.
A record may be created by this; a record or nil is returned.
If bbdb-readonly-p is true, then a record will never be created.
If CREATE-P is true, then a record may be created, otherwise it won't.
If PROMPT-TO-CREATE-P is true, then the user will be asked for confirmation
before the record is created, otherwise it is created without confirmation 
(assuming that CREATE-P is true).  
(defalias 'bbdb-annotate-message-sender #[(from &optional loudly create-p prompt-to-create-p) "	!@\nA@\f 0 ɚ% !\fɚ/ !)\f= = \f!\fG=K \fG=T ! pӎv !v ~ \"q\"+\"J\f\f; \fpڎ !  \"q\"+\"J\f\f@p܎ !  \"q\"+\"J\fA )*ŉ !\"#\"-\"!ŉ%&\"&I\"H%%&%@w%\f$!S%A%X*\",-\f.\"!!4\"\"??!\"\"6\"I!\"\"\"??\"HH!)	;\"\"!>?@ ?A@ \"H><>S\"@ H>R>*,AzzB \"!#@ !!C \"H@#!!D #!!E #;F \"!!\"\"HBIpG !\"q\"+\"HHL)\"HI\" I\"@ ID CCʁI !)J \"!pK e!em\"q\"+\"\"L;L #!!E #\"\"HBIJ pM !\"q\"+\"\"LNO \f\"H\"\f\f_,_\"HI\"\fCIJ \fpP '!'/\"q\"+\"\"L#_#_\"H\fQRSqQqRS@QSASZQ+_T=T_\fU _V \f\"W X \"HY #Z [  !\\]^G]G\\_ \\\\V]ω\\^GZ` Z]Oa P]^]b Q!!+_cd \f\"!!c=ǂe\"e\f\"HB\"H\fCIJ \fpf ?!?G\"q\"+\"\"L#^#)x#w,wʁg !)h##E =i \"!\"\"!j \"!\f#k \f\"#l \"#E =\"m \"\"\".\n" [mail-extract-address-components from data name net nil bbdb-debug t debug-on-error "" error "mail-extr returned \"\" as name" "mail-extr returned \"\" as net" bbdb-canonicalize-net-hook bbdb-canonicalize-address 0 bbdb-records intern-soft --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn bbdb-hashtable ((set-buffer --bbdb-obuf--)) answer ((set-buffer --bbdb-obuf--)) bogon-mode old-name lname fname created-p record change-p bbdb-record-name old-net down-name 6 message "Ignoring bogon %s's name \"%s\" to avoid name-clash with \"%s\"" sit-for 2 bbdb-readonly-p create-p prompt-to-create-p y-or-n-p format "%s is not in the db; rectify? " " " make-vector bbdb-record-length 8 bbdb-cache-length bbdb-invoke-hook bbdb-create-hook 3 "nasty nasty deleted record nasty." bbdb-use-alternate-names bbdb-check-alternate-name bbdb-divide-name tmp fullname 1 bbdb-quiet-about-name-mismatches "name mismatch: \"%s\" changed to \"%s\"" "Assign name \"%s\" to address \"%s\"? " "Change name \"%s\" to \"%s\"? " sort "Keep name \"%s\" as an AKA? " ((set-buffer --bbdb-obuf--)) s "bbdb: should have a name by now" intern ((set-buffer --bbdb-obuf--)) "Make \"%s\" an alternate for \"%s\"? " ((set-buffer --bbdb-obuf--)) bbdb-canonicalize-redundant-nets-p bbdb-net-redundant-p ((set-buffer --bbdb-obuf--)) match new rest-net bbdb-always-add-addresses "???" "add address \"%s\" to \"" mapconcat identity ", " window-width minibuffer-window w the-next-bit the-first-bit 15 20 "..." "\"? " bbdb-new-nets-always-primary "Make \"%s\" the primary address? " front-p ((set-buffer --bbdb-obuf--)) "doubleplus ungood: how did we change anything in readonly mode?" loudly "noticed \"%s\"" "noticed %s's address \"%s\"" "noticed naked address \"%s\"" bbdb-change-record bbdb-notice-hook] 8 (#$ . 51721)])
#@398 Find the largest window on the screen, and split it, displaying the
*BBDB* buffer in the bottom 'bbdb-pop-up-target-lines' lines (unless
the *BBDB* buffer is already visible, in which case do nothing.)

If 'bbdb-use-pop-up' is the symbol 'horiz, and the first window 
matching HORIZ-PREDICATE is sufficiently wide (> 100 columns) then
the window will be split vertically rather than horizontally.
(defalias 'bbdb-pop-up-bbdb-buffer #[(&optional horiz-predicate) "p\n!? =  !  	\n\n!\n=D \n!	!V$ \n	$ 	!	!ZZ	!T]Z^	Vo q \")>~ eb !\n!!)!+q)" [b get-buffer-window bbdb-buffer-name bbdb-use-pop-up horiz horiz-predicate bbdb-pop-up-bbdb-buffer-horizontally selected-window first-window tallest-window window previous-window window-height select-window window-min-height 1 bbdb-pop-up-target-lines size split-window 0 major-mode (gnus-Group-mode gnus-Subject-mode gnus-Article-mode) next-window nil pop-up-windows switch-to-buffer get-buffer-create] 5 (#$ . 55726)])
(defalias 'bbdb-pop-up-bbdb-buffer-horizontally #[(predicate) " X?^  !& != ?1 !X?] p\n!!!!!!)!\nq)+" [screen-width 112 selected-window first-window nil got-it window predicate next-window window-width b select-window split-window-horizontally 80 pop-up-windows switch-to-buffer get-buffer-create bbdb-buffer-name t] 3])
(defalias 'bbdb-version #[nil "\n\"" [message "BBDB version %s" bbdb-version] 3 nil nil])
(defalias 'bbdb-record-lessp-fn #[(record1 record2) "	!\n!" [bbdb-record-sortkey record1 record2] 3])
(defalias 'bbdb-resort-database #[nil " !pĎ !  \"q	\"\n	? !ebg=E #E u`|pщ	 \n@HI\n@!Ic\nA_ - !," [copy-sequence bbdb-records records --bbdb-obuf-- ((set-buffer --bbdb-obuf--)) bbdb-buffer buffer-name find-file-noselect bbdb-file nowarn sort bbdb-record-lessp-fn message "DANGER!  BBDB was mis-sorted; it's being fixed..." 91 search-forward "\n[" nil 0 -1 bbdb-end-marker t cache record inhibit-quit standard-output print-escape-newlines 8 prin1 10 kill-all-local-variables error "the BBDB was mis-sorted: it has been repaired."] 6])
(byte-code "M\n  \n!\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#\n#! ,.B.,$,$,$,$,$,$,$,$,$,$,$" [advertized-bbdb-delete-current-field-or-record bbdb-delete-current-field-or-record bbdb-mode-map make-keymap suppress-keymap define-key "*" bbdb-apply-next-command-to-all-records "e" bbdb-edit-current-field "n" bbdb-next-record "p" bbdb-prev-record "d" "" "" bbdb-insert-new-field "s" bbdb-save-db "" "r" bbdb-refile-record "t" bbdb-elide-record "o" bbdb-omit-record ";" bbdb-record-edit-notes "m" bbdb-send-mail "" bbdb-dial "f" bbdb-finger "i" bbdb-info "?" bbdb-help "q" bbdb-bury-buffer "" bbdb-transpose-fields boundp bbdbid "Insidious Big Brother Database autoload" current-load-list autoload bbdb "bbdb-com" t bbdb-name bbdb-company bbdb-net bbdb-notes bbdb-changed bbdb-create] 5)
#@19 Hook BBDB into VM
(autoload (quote bbdb-insinuate-vm) "bbdb-vm" '(#$ . 58955))
#@22 Hook BBDB into RMAIL
(autoload (quote bbdb-insinuate-rmail) "bbdb-rmail" '(#$ . 59040))
#@21 Hook BBDB into MH-E
(autoload (quote bbdb-insinuate-mh) "bbdb-mhe" '(#$ . 59134))
#@21 Hook BBDB into GNUS
(autoload (quote bbdb-insinuate-gnus) "bbdb-gnus" '(#$ . 59222))
(byte-code "$$$$$$$$$$$$$#####$$$$$$$$$$$$$$$$$$$$$$$!\"\"\"" [autoload bbdb-apply-next-command-to-all-records "bbdb-com" bbdbid t bbdb-insert-new-field bbdb-edit-current-field bbdb-transpose-fields bbdb-record-edit-notes bbdb-delete-current-field-or-record bbdb-delete-current-record bbdb-refile-record bbdb-elide-record bbdb-omit-record bbdb-send-mail bbdb-complete-name bbdb-yank bbdb-completion-predicate bbdb-dwim-net-address bbdb-redisplay-records bbdb-define-all-aliases bbdb-read-addresses-with-completion bbdb-record-edit-property bbdb/vm-show-sender "bbdb-vm" bbdb/vm-annotate-sender bbdb/vm-update-record bbdb/rmail-show-sender "bbdb-rmail" bbdb/rmail-annotate-sender bbdb/rmail-update-record bbdb/mh-show-sender "bbdb-mhe" bbdb/mh-annotate-sender bbdb/mh-update-record bbdb/gnus-show-sender "bbdb-gnus" bbdb/gnus-annotate-sender bbdb/gnus-update-record bbdb/gnus-lines-and-from nil bbdb-extract-field-value "bbdb-hooks" bbdb-timestamp-hook bbdb-ignore-most-messages-hook bbdb-ignore-some-messages-hook bbdb-auto-notes-hook sample-bbdb-canonicalize-net-hook bbdb-creation-date-hook bbdb-fontify-buffer "bbdb-lucid" bbdb-menu makunbound mail-strip-quoted-names "mail-utils" mail-fetch-field mail-extract-address-components "mail-extr"] 5)
#@68 Call this function to hook BBDB into sendmail (that is, M-x mail).
(defalias 'bbdb-insinuate-sendmail #[nil "	#" [define-key mail-mode-map "" bbdb-complete-name] 4 (#$ . 60818)])
(provide (quote bbdb))
(defalias 'safe-require '(macro . #[(thing) "DF" [condition-case nil require thing (file-error nil)] 4]))
(byte-code "! ď! Ǐ!! ʏ!, ͏\"@ \"#!" [featurep rmail nil (byte-code "!" [require bbdb-rmail] 2) ((file-error)) gnus (byte-code "!" [require bbdb-gnus] 2) ((file-error)) vm (byte-code "!" [require bbdb-vm] 2) ((file-error)) mh-e (byte-code "!" [require bbdb-mhe] 2) ((file-error)) string-match "Lucid" emacs-version bbdb-add-hook bbdb-list-hook bbdb-fontify-buffer define-key bbdb-mode-map button3 bbdb-menu run-hooks bbdb-load-hook] 4)
