Addresses-0.5.0/0000755000175000000240000000000014746005611012635 5ustar multixstaffAddresses-0.5.0/Test/0000755000175000000240000000000012312144402013541 5ustar multixstaffAddresses-0.5.0/Test/ADSingleTest.gorm/0000755000175000000240000000000012312144402016772 5ustar multixstaffAddresses-0.5.0/Test/ADSingleTest.gorm/data.classes0000644000175000000240000000733212312144402021267 0ustar multixstaff{ ADSinglePropertyView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "selectProperty:", "printSelected:", "setAutoselect:", "setPreferred:" ); Outlets = ( propSelector, propView, autoselPopup ); Super = NSObject; }; FirstResponder = { Actions = ( "activateContextHelpMode:", "alignCenter:", "alignJustified:", "alignLeft:", "alignRight:", "arrangeInFront:", "cancel:", "capitalizeWord:", "changeColor:", "changeFont:", "checkSpelling:", "close:", "complete:", "copy:", "copyFont:", "copyRuler:", "cut:", "delete:", "deleteBackward:", "deleteForward:", "deleteToBeginningOfLine:", "deleteToBeginningOfParagraph:", "deleteToEndOfLine:", "deleteToEndOfParagraph:", "deleteToMark:", "deleteWordBackward:", "deleteWordForward:", "deminiaturize:", "deselectAll:", "fax:", "hide:", "hideOtherApplications:", "indent:", "loosenKerning:", "lowerBaseline:", "lowercaseWord:", "makeKeyAndOrderFront:", "miniaturize:", "miniaturizeAll:", "moveBackward:", "moveBackwardAndModifySelection:", "moveDown:", "moveDownAndModifySelection:", "moveForward:", "moveForwardAndModifySelection:", "moveLeft:", "moveRight:", "moveToBeginningOfDocument:", "moveToBeginningOfLine:", "moveToBeginningOfParagraph:", "moveToEndOfDocument:", "moveToEndOfLine:", "moveToEndOfParagraph:", "moveUp:", "moveUpAndModifySelection:", "moveWordBackward:", "moveWordBackwardAndModifySelection:", "moveWordForward:", "moveWordForwardAndModifySelection:", "newDocument:", "ok:", "openDocument:", "orderBack:", "orderFront:", "orderFrontColorPanel:", "orderFrontDataLinkPanel:", "orderFrontFontPanel:", "orderFrontHelpPanel:", "orderFrontStandardAboutPanel:", "orderFrontStandardInfoPanel:", "orderOut:", "pageDown:", "pageUp:", "paste:", "pasteAsPlainText:", "pasteAsRichText:", "pasteFont:", "pasteRuler:", "performClose:", "performMiniaturize:", "performZoom:", "print:", "raiseBaseline:", "revertDocumentToSaved:", "runPageLayout:", "runToolbarCustomizationPalette:", "saveAllDocuments:", "saveDocument:", "saveDocumentAs:", "saveDocumentTo:", "scrollLineDown:", "scrollLineUp:", "scrollPageDown:", "scrollPageUp:", "scrollViaScroller:", "selectAll:", "selectLine:", "selectNextKeyView:", "selectParagraph:", "selectPreviousKeyView:", "selectText:", "selectText:", "selectToMark:", "selectWord:", "showContextHelp:", "showGuessPanel:", "showHelp:", "showWindow:", "stop:", "subscript:", "superscript:", "swapWithMark:", "takeDoubleValueFrom:", "takeFloatValueFrom:", "takeIntValueFrom:", "takeObjectValueFrom:", "takeStringValueFrom:", "terminate:", "tightenKerning:", "toggle:", "toggleContinuousSpellChecking:", "toggleRuler:", "toggleToolbarShown:", "toggleTraditionalCharacterShape:", "transpose:", "transposeWords:", "turnOffKerning:", "turnOffLigatures:", "underline:", "unhide:", "unhideAllApplications:", "unscript:", "uppercaseWord:", "useAllLigatures:", "useStandardKerning:", "useStandardLigatures:", "yank:", "zoom:", "selectProperty:", "printSelected:", "setAutoselect:", "setPreferred:" ); Super = NSObject; }; }Addresses-0.5.0/Test/ADSingleTest.gorm/objects.gorm0000644000175000000240000001203212312144402021307 0ustar multixstaffGNUstep archive000029cf:0000001e:0000009d:00000002:01GSNibContainer1NSObject01NSMutableDictionary1 NSDictionary&01NSString&%NSOwner0& % NSApplication0& % Controller01 GSNibItem  &0& %  MenuItem101 NSMenuItem0 &%Quit0 &%q&&%0 1NSImage0 &%common_2DCheckMark0 0& % common_2DDash2 terminate:v12@0:4@8%0& % TextField01 NSTextField1 NSControl1 NSView1 NSResponder% A A  Bl A  Bl A&01 NSMutableArray1NSArray&%01NSTextFieldCell1 NSActionCell1NSCell0& % Property:01NSFont%0& % Helvetica A@A@&&&&&&&&%01NSColor0&%NSNamedColorSpace0&%System0&%textBackgroundColor00& % textColor0& %  MenuItem200&%Hide0&%h&&% 2 hide:v12@0:4@8%0 & %  MenuItem30!&%Button0"1NSButton% D A  B A  B A&0# &%0$1 NSButtonCell0%&%Print Selected0&%&&&&&&&&%"0'&0(&&&&0)& %  MenuItem40*& % NSVisible0+ &0,1NSWindow%  D+ C&% D@ DO0- %  D+ C  D+ C&0. &0/1 GSCustomView00&%ADSinglePropertyView A B D& C&"011 NSPopUpButton% B A  C A  C A&02 &%031NSPopUpButtonCell1NSMenuItemCell04&&&&&&&&&&051NSMenu06&07 &0809&%Item 10:&&&%0;0<& % common_Nibble%0=0>&%Item 2:&&%%0?0@&%Item 3:&&%%%10A&0B&&&&85%%%%%0C % C A  C A  C A&0D &%0E0F&&&&&&&&&&%C0G0H&%System0I&%textBackgroundColor0JH0K& % textColor0L % C A  B A  B A&0M &%0N0O&%Preferred Label:&&&&&&&&%L0P0Q&%System0R&%textBackgroundColor0SQ0T& % textColor0U% CW A  B A  B A&0V &%0W0X&&&&&&&&&&0Y0Z&0[ &0\0]& % AutoselNone0^&&&%;%0_0`& % AutoselAll^&&%%0a0b& % AutoselFirst^&&%%%U0c&0d&&&&\Y%%%%%0e0f&%System0g&%windowBackgroundColor0h&%Window0i&%SinglePropertyView Testi ? B F@ F@%0j0k&%NSApplicationIcon0l& %  MenuItem50m& %  MenuItem6\0n&%NSMenu0o0p& % Main Menu0q &0r& %  MenuItem7_0s&%GormCustomView/0t& %  MenuItem8a0u&%MenuItem0v&%GSCustomClassMap0w&0x&% GormNSPopUpButton1U0y& %  TextField1C0z& %  TextField2L0{& % My Window,0|&%GormNSPopUpButton10} &0~1NSNibConnector{0&%NSOwner0n0un0ln0s0!0|0001NSNibControlConnector!0&% printSelected:0|0&% selectProperty:01NSNibOutletConnector|0& % propSelector0s0&%propView00&%delegate0y0z0y0& %  setPreferred:0x0m0r0t0x0&%setAutoselect:0x0& % autoselPopupAddresses-0.5.0/Test/main.m0000644000175000000240000000053712312144402014650 0ustar multixstaff// main.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // // // $Author: rmottola $ // $Locker: $ // $Revision: 1.1 $ // $Date: 2007/03/29 22:37:41 $ /* system includes */ #include /* my includes */ /* (none) */ int main(int argc, const char **argv) { return NSApplicationMain(argc, argv); } Addresses-0.5.0/Test/GNUmakefile0000644000175000000240000000113012312144402015606 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make APP_NAME=ADSingleTest ADSingleTest_OBJC_FILES=Controller.m main.m ADSingleTest_HEADER_FILES=Controller.h ADSingleTest_MAIN_MODEL_FILE=ADSingleTest.gorm ADSingleTest_RESOURCE_FILES=ADSingleTest.gorm ADSingleTest_OBJCFLAGS=-I../Frameworks -Wall ADSingleTest_LDFLAGS=\ -L../Frameworks/AddressView/AddressView.framework/Versions/A \ -L../Frameworks/Addresses/Addresses.framework/Versions/A \ -lAddressView -lAddresses -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble Addresses-0.5.0/Test/Controller.h0000644000175000000240000000045112312144402016035 0ustar multixstaff/* All Rights reserved */ #include @interface Controller : NSObject { id propSelector; id propView; id autoselPopup; } - (void) selectProperty: (id)sender; - (void) printSelected: (id)sender; - (void) setAutoselect: (id) sender; - (void) setPreferred: (id) sender; @end Addresses-0.5.0/Test/Controller.m0000644000175000000240000000314312312144402016043 0ustar multixstaff/* All Rights reserved */ #import #import #import #include "Controller.h" @implementation Controller - (void) awakeFromNib { [propSelector removeAllItems]; NSArray *contents = [[[ADPerson class] properties] sortedArrayUsingSelector: @selector(compare:)]; [propSelector addItemsWithTitles: contents]; [propSelector selectItemWithTitle: [propView displayedProperty]]; [propView setDelegate: self]; NSUInteger index = [autoselPopup indexOfItemWithTag: [propView autoselectMode]]; if(index != NSNotFound) [autoselPopup selectItemAtIndex: index]; else NSLog(@"Item with tag %d not found!\n", [propView autoselectMode]); } - (void) selectProperty: (id)sender { NSLog(@"Selecting %@\n", [sender stringValue]); [propView setDisplayedProperty: [sender stringValue]]; } - (void) printSelected: (id)sender { NSEnumerator *e = [[propView selectedNamesAndValues] objectEnumerator]; NSArray *a; NSLog(@"*** Selected:\n"); while((a = [e nextObject])) { NSLog(@"%@\t%@\n", [a objectAtIndex: 0], [a objectAtIndex: 1]); } } - (void) setAutoselect: (id) sender { [propView setAutoselectMode: [[sender selectedItem] tag]]; } - (void) setPreferred: (id) sender { if([[sender stringValue] isEqualToString: @""]) [propView setPreferredLabel: nil]; else [propView setPreferredLabel: [sender stringValue]]; } - (void) doubleClickOnName: (NSString*) name value: (NSString*) value inView: (ADSinglePropertyView*) aView { NSLog(@"Clicked on name: '%@' value: '%@'\n", name, value); } @end Addresses-0.5.0/AddressManager/0000755000175000000240000000000014752766037015532 5ustar multixstaffAddresses-0.5.0/AddressManager/French.lproj/0000755000175000000240000000000012312144402020034 5ustar multixstaffAddresses-0.5.0/AddressManager/French.lproj/AddressManager.gorm/0000755000175000000240000000000012312144402023657 5ustar multixstaffAddresses-0.5.0/AddressManager/French.lproj/AddressManager.gorm/Add.tiff0000644000175000000240000000174612312144402025231 0ustar multixstaffII*&&&JYYYxxx鄄xxxYYY&&&JNNNNNNNNNNNN&&&J&&&JYYYYYYxxx鄄xxx鄄xxx鄄xxxYYYYYY&&&J&&&JNNNNNNNNNNNN&&&JYYYxxx鄄xxxYYY&&&J   -@(R/home/giesler/Source/GNUstep/Contax/Add.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/French.lproj/AddressManager.gorm/data.classes0000644000175000000240000000323312312144402026150 0ustar multixstaff{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ContactView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "doEditPerson:", "doTogglePersonEditable:", "doCreatePerson:", "doImportPerson:", "doExportPerson:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doToggleShared:", "doDuplicatePerson:", "doMergePersons:", "doCreateGroup:", "doDeleteGroup:", "doSaveDatabase:", "doShowPrefsPanel:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:" ); Outlets = ( personView, scrollView, clipView, groupsBrowser, servicesMenu, editButton, editItem, shareItem, mergePersonsItem, duplicatePersonItem, thisIsMeItem, prefsPanel, prefsAutosaveButton, prefsAddressLayoutPopup, prefsScreenNameLayoutMatrix, lastCell ); Super = NSObject; }; FirstResponder = { Actions = ( "doBrowserClick:", "doChangeAddressLayout:", "doCreateGroup:", "doCreatePerson:", "doDeleteGroup:", "doDeletePerson:", "doDuplicatePerson:", "doEditPerson:", "doExportPerson:", "doImportPerson:", "doMergePersons:", "doRenameGroup:", "doSaveDatabase:", "doSelectAllPersons:", "doSetMe:", "doShowMe:", "doShowPrefsPanel:", "doToggleAutosave:", "doTogglePersonEditable:", "doToggleShared:", "orderFrontFontPanel:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:", "prefsToggleAutosave:" ); Super = NSObject; }; }Addresses-0.5.0/AddressManager/French.lproj/AddressManager.gorm/objects.gorm0000644000175000000240000005324412312144402026206 0ustar multixstaffGNUstep archive0000300d:00000038:00000253:00000005:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSPanel1NSPanel1 NSWindow1 NSResponder% ? A C C& % C| D-01 NSView% ? A C C  C C&01 NSMutableArray1 NSArray&01 NSTabView% A A  C C  C C&0 &0 % ? ? C Co  C Co&0 &0 1NSButton1 NSControl% A A  C A  C A&0 &%0 1 NSButtonCell1 NSActionCell1NSCell0&)%)Appliquer immdiatement les modifications01NSImage01NSMutableString&%common_SwitchOff01NSFont%&&&&&&&&&&&&&&%0&0&00&%common_SwitchOn&&& &&01NSBox% A B C B  C B&0 &0 % @ @ C B  C B&0 &01 NSPopUpButton% C> @ B A  B A&0 &%01NSPopUpButtonCell1NSMenuItemCell0&&&&&&&&&01NSMenu0&0 &0!1 NSMenuItem0"&%Item 10#&&&%0$0%& %  common_Nibble%0&0'&%Item 2#&&%%0(0)&%Item 3#&&%%&&&&&&%0*&0+&&&& &&!%%%%%0,1 NSTextField% @ C0 A  C0 A&0- &%0.1NSTextFieldCell0/&%Structure de l'Adresse&&&&&&&& &&&&&&%001NSColor01&% NSNamedColorSpace02&%System03&%textBackgroundColor041205& % textColor06% B, C B  C B&07 &%0809&%Affichage du nom&&&&&&&& &&&&&&%040:1 NSMatrix% C> B, C B  C B&0; &%0<0=&&&&&&&&&&&&&&&%% C A 0>10?&% System0@&% controlBackgroundColor>0A& % NSButtonCell0B0C&%Radio0D0E&%common_RadioOff&&&&&&&&&&&&&&%0F&0G&0H0I&%common_RadioOn&&& &&%%0J &0K0L&%Duprs, PierreD&&&&&&&&&&&&&&%FGH&&& &&0M0N& % Pierre DuprsD&&&&&&&&&&&&&&%FGH&&& &&K0O0P& % Affichage&&&&&&&& &&&&&&%0Q1?0R&% windowBackgroundColor4 @ @%%0S &0T1! NSTabViewItem0U&%general0V&%Gnral %0W!0X& % addressbooks0Y&%Carnets d'Adresses0Z % ? ? C Co  C Co&0[ &0\% A B C A  C A&0] &%0^0_& % a viendra...0`% A@&&&&&&&& &&&&&&%04%%%Q0a&%Window0b& % Preferencesb ? A F@ F@%0c0d&% NSApplicationIcon&   D D@0e0f& % Addresses0g &0h0i& % Informations0j&&&%0k0l&%common_2DCheckMark0m0n& % common_2DDash%0oi0p &0q0r&%Panneau d'Informations...0s&&&%km%0t0u&%Prfrences...0v&%,&&%km%0w0x&%Aide...0y&%?&&%km%0z0{&%Base de Donne0|&&&%km%0}{0~ &00& % Sauver...0&%s&&%km%00& % Importer...0&%I&&%km%00& % Exporter...0&%E&&%km%00&%Personne0&&&%km%00 &00&%Nouvelle Personne0&%n&&%km%00&%diter0&%e&&%km%00&%Effacer0&%d&&%km%00&%Tout slectionner0&%a&&%km%00&%Dfinir comme "moi"0&&&%km%00& % Me Montrer0&%M&&%km%00&%Partager cette Personne0&%S&&%km%00&%Groupe0&&&%km%00 &00&%Nouveau0&%N&&%km%00&%Effacer0&%D&&%km%00&%Services0&&&%km%00 &00&%Cacher0&%h&&%km%00&%Quit0&%q&&%km%00&% NSWindow % ? A D6 C& % C D.0 % ? A D6 C  D6 C&0 &01" NSBrowser% A B$ C C  C C&0 &01# NSScrollView% @ C+ C  C+ C&0 &01$ NSClipView% A @ C C  C C&0 &0± %  C B  C B&0ñ &%0ı0ű&&&&&&&&&&&&&&&%% C B 0Ʊ1?0DZ& %  controlColor0ȱ& % NSBrowserCell01% NSBrowserCell0ʱ&0˱% A@&&&&&&&&&&&&&&%%0̱ &2doClick:2doDoubleClick:01& NSScroller% @ @ A C  A C&0α &%0ϱʐ`&&&&&&&&&&&&&&&2 _doScroll:v12@0:4@8% A A A A 0б#% C/ @ C, C  C, C&0ѱ &0ұ$% A @ C C  C C&0ӱ &0Ա&% @ @ A C  A C&0ձ &%0ֱ0ױ&&&&&&&&&&&&&&&&в% A A A A %0ر%ʐː&&&&&&&&&&&&&&0ٱ&%NSMatrix0ڱ&%/% B0۱&% @ ? C̀ A  C̀ A&0ܱ &%0ݱʐ`&&&&&&&&&&&&&&&2 scrollViaScroller:v12@0:4@8   C+ C0ޱ &01'NSBrowserColumn%0'А%%%0% A A A A  A A&$0 &%00&%+0%&&&&&&&&&&&&&&%0&0&&&& &&0% C9 A A A  A A&$0 &%00&%+&&&&&&&&&&&&&&%0&0&&&& &&0% C A B| A  B| A&$0 &%00&%diter&&&&&&&&&&&&&&%0&0&&&& &&01( GSCustomView1) GSNibItem0& % NSScrollView C B$ C C&Q0&%Window0& % Addresses D/ C F@ F@%c&  D D@0)0& % Controller  &0 &0 &01*NSMutableDictionary1+ NSDictionary&a0& % GormNSMenu1o0& % GormNSMenu20& % GormNSMenu3PP&%ServicesP &P& % GormNSMenu4P& % MenuItem(14)P& % GormNSMenu5}P&%TextViewP1, NSTextView1-NSText% A  B   B &P &0  K K4 B KP &%TabViewP & % MenuItem(3)hP &%BoxP & % TextFieldP % Ap Cp B, A  B, A&P &%PP&%Name:&&&&&&&& &&&&&&%04P& % MenuItem(17)P& % MenuItem(21)P&%NSMenueP& % MenuItem(6)wP& % MenuItem10tP& % MenuItem11wP& % MenuItem12P& % MenuItem13P& % MenuItem(24)P& % MenuItem14P&%GormNSOutlineViewP1. NSOutlineView1/ NSTableView%  B A  B A&P &%PP&`&&&&&&&&&&&&&&P &P!10 NSTableColumnP"&%classes BP A GPP#11NSTableHeaderCellP$&% P%% A@&&&&&&&& &&&&&&%P&1?P'&% controlShadowColorP(1?P)&% windowFrameTextColorP*P+&%NSObject`+&&&&&&&& &&&&&&%04P,0P-&%outlets BT A GPP.1P/&% %&&&&&&&& &&&&&&%&(P0P1&%1`1&&&&&&&& &&&&&&%04P21?P3& %  gridColor>P412NSTableHeaderView%  B A  B A&P5 &P613GSTableCornerView%  A A  A A&P7 &%% A @ @@P8 & A !P9& % MenuItem15P:& % MenuItem(12)P;& % MenuItem16P<& % MenuItem(9)P=& % MenuItem17P>& % MenuItem18P?& % MenuItem(1)P@& % MenuItem19PAPB&&&%km2 submenuAction:v12@0:4@8%PC& % GormNSBrowserPD& % MenuItem(15)PE&%GormNSTableViewPF/%  B C!  B C!&PG &%PHPI&`&&&&&&&&&&&&&&PJ &PK0PL&%column1 BP A GPPM1PN&% %&&&&&&&& &&&&&&%&(POPP&%trois`P&&&&&&&& &&&&&&%04PQ0PR&%column2 BT A GPPS1PT&% %&&&&&&&& &&&&&&%&(PUPV&%three`V&&&&&&&& &&&&&&%042>PW2%  B A  B A&PX &PY3%  A A  A A&PZ &%% A @ @@P[ &P\& % My WindowP]& % MenuItem(4)qP^&%Menu(0)P_& % GormNSPanelP`&%MenuItemPa&%GormCustomViewPb& % MenuItem(18)Pc& % MenuItem(22)Pd& % MenuItem(10)Pe& % MenuItem(7)zPf& % MenuItem20Pg& % MenuItem21zPh& % GormNSMenuPi&%GormNSPopUpButtonPj& % MenuItem22Pk& % MenuItem23Pl& % MenuItem24Pm& % MenuItem(13)Pn& % MenuItem25Po&%ButtonPp& % MenuItem26Pq& % MenuItem27Pr& % MenuItem(2)Ps& % MenuItem1Pt&% NSOwnerPu& % NSApplicationPv& % MenuItem2Pw& % ImageViewPx14 NSImageView% CR CP B BH  B BH&Py &%Pz15 NSImageCell&&&&&&&&&&&&&&%%% ? ?P{& % MenuItem3P|& % MenuItem4P}& % TableColumn1QP~& % MenuItem5P& % TableColumn2!P& % MenuItem6P& % MenuItem(16)P& % TableColumn3,P& % MenuItem7P& % MenuItem(20)P& % MenuItem8hP& % MenuItem9qP&%NSServicesMenuP& % MenuItem(5)tP&%Button1P&%Button2P&%Button3 P& % TextField1P% CY Bh A  Bh A&P &%PP&%Address:&&&&&&&& &&&&&&%04P& % TextField2P% B| Cp C A  C A&P &%PP&%[Name]`&&&&&&&& &&&&&&%04P& % TableColumnKP& % TextField3P% B| CY C A  C A&P &%PP&%[Road]`&&&&&&&& &&&&&&%04P& % MenuItem(19)P& % TextField4P% B| CG C A  C A&P &%PP&%[City]&&&&&&&& &&&&&&%04P& % MenuItem(23)P& % TextField5P% B| C5 C A  C A&P &%PP& % [Postal Code]&&&&&&&& &&&&&&%04P& % TextField6P% B| C# B A  B A&P &%PP&%[State]&&&&&&&& &&&&&&%04P& % MenuItem(11)P& % TextView1P,% A  C   C &P &0  K K4 C KP& % TextField7\P& % MenuItem(8)P&%Matrix:P& % TextView2P,% A  B   B &P &0  K K4 B KP& % TextField8,P& % TextView3P,% A  B   B &P &0  K K4 B KP& % TextField96P& % MenuItem(0)P &ffP16NSNibConnector\P&% NSOwnerP6P6|P±6~Pñ6Pı6CPű6PƱ6PDZ6Pȱ6P17NSNibOutletConnectorCPʱ& % groupsBrowserP˱7P̱&%userViewP18NSNibControlConnectorPα&%doCreateGroup:Pϱ6Pб6hPѱ6hPұ6Pӱ6PԱ6Pձ6Pֱ6Pױ6Pر6Pٱ6Pڱ6rP۱6hPܱ6?hPݱ8Pޱ&%doCreateGroup:P߱8rP&%doDeleteGroup:P7CP& % groupsBrowserP8oP&%doCreateGroup:P6 P6P6P6P6P6P6P6wP6P6P6P6EP6P6}P6P6P6P6aP7aP& % scrollViewP6fP6fP7P&%delegateP7P& % editButtonP7P&%editItemP8P&%doTogglePersonEditable:P8P&%doCreatePerson:P6gP6gP6lP8lP &%doSaveDatabase:P 8P & % doEditPerson:P 8P &%doCreatePerson:P6jhP8jP&%doSetMe:P6khP8kP& % doShowMe:P6nhP8nP&%doSelectAllPersons:P6qhP8qP&%doToggleShared:P7qP& % shareItemP6_P6 P6P6P 6iP!6P"8P#&%prefsToggleAutosave:P$8iP%&%prefsChangeAddressLayout:P&7iP'&%prefsAddressLayoutPopupP(7_P)& % prefsPanelP*8P+&%doShowPrefsPanel:P,7P-&%prefsAutosaveButtonP.6P/6pP08P1&%doImportPerson:P28pP3&%doExportPerson:P46P56P66 P78P8&%prefsChangeScreenNameLayout:P97P:&%prefsScreenNameLayoutMatrixP;8P<&% NSFirstP=&%orderFrontStandardInfoPanel:P>8P?&%submenuAction:P@8l (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // // // $Author: rmottola $ // $Locker: $ // $Revision: 1.1 $ // $Date: 2007/03/29 22:37:41 $ #include int main(int argc, const char** argv) { return NSApplicationMain(argc, argv); } Addresses-0.5.0/AddressManager/DragDropMatrix.m0000644000175000000240000001715614746005571020601 0ustar multixstaff// NSMatrix+DragDrop.m (this is -*- ObjC -*-) // // Aauthor: Bjrn Giesler // // // #import #import #import "Controller.h" #import "DragDropMatrix.h" static NSMutableArray *contactRows; @implementation NSBrowserCell (DragAndDrop) - (NSImage *) getImageOfContents: (NSSize) a_frame { NSImage *image = nil; NSRect textFrame; textFrame.size = a_frame; textFrame.origin = NSZeroPoint; image = [[NSImage alloc] initWithSize: textFrame.size]; [image setBackgroundColor:[NSColor clearColor]]; [image lockFocus]; [self drawInteriorWithFrame: textFrame inView: [NSView focusView]]; [image unlockFocus]; return [image autorelease]; } @end @implementation DragDropMatrix - initWithFrame: (NSRect) frameRect mode: (NSMatrixMode) aMode prototype: (NSCell*) aCell numberOfRows: (NSInteger) numRows numberOfColumns: (NSInteger) numColumns { [super initWithFrame: frameRect mode: aMode prototype: aCell numberOfRows: numRows numberOfColumns: numColumns]; [self registerForDraggedTypes: [NSArray arrayWithObjects: ADPeoplePboardType, @"NSVCardPboardType", nil]]; _shouldSel = @selector(dragDropMatrix:shouldAcceptDropFromSender:onCell:); _didSel = @selector(dragDropMatrix:didAcceptDropFromSender:onCell:); return self; } - (BOOL) acceptsFirstMouse: (NSEvent *) theEvent { return YES; } - (void) copyToPasteboard: (NSPasteboard *) pb { NSMutableArray *arr; NSEnumerator *e; NSCell *c; arr = [NSMutableArray arrayWithCapacity: [[self selectedCells] count]]; e = [[self selectedCells] objectEnumerator]; while((c = [e nextObject])) { NSMutableDictionary *d; ADPerson *p; if(![c representedObject] || ![[c representedObject] isKindOfClass: [ADPerson class]]) continue; p = [c representedObject]; d = [NSMutableDictionary dictionaryWithCapacity: 3]; [d setObject: [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]] forKey: @"PID"]; if([p uniqueId]) [d setObject: [p uniqueId] forKey: @"UID"]; if([p addressBook]) [d setObject: [[p addressBook] addressBookDescription] forKey: @"AB"]; [arr addObject: d]; } if(![arr count]) return; [pb declareTypes: [NSArray arrayWithObject: ADPeoplePboardType] owner: self]; [pb setPropertyList: [NSArray arrayWithArray: arr] forType: ADPeoplePboardType]; } - (void) mouseDown: (NSEvent *) event { NSInteger row = -1, column = -1; if([self getRow: &row column: &column forPoint: [self convertPoint:[event locationInWindow] fromView: nil]] && [[self cellAtRow:row column: column] isEnabled] && [event modifierFlags] == 0) { NSArray *sel = [self selectedCells]; if([sel count] == 1 || ![sel containsObject: [self cellAtRow: row column: column]]) [self deselectAllCells]; if([sel containsObject: [self cellAtRow: row column: column]]) _didDrag = NO; [self selectCellAtRow: row column: column]; [self sendAction]; } else { if(![[self cellAtRow: row column: column] isLeaf]) [self deselectAllCells]; [super mouseDown: event]; } } - (void) mouseUp: (NSEvent*) event { NSInteger row, column; if(!_didDrag && [event modifierFlags] == 0 && [[self selectedCell] isLeaf]) { [self getRow: &row column: &column forPoint: [self convertPoint:[event locationInWindow] fromView: nil]]; [self deselectAllCells]; [self selectCellAtRow: row column: column]; [self sendAction]; } [super mouseUp: event]; } - (void) mouseDragged: (NSEvent*) event { NSPasteboard *pboard; NSImage *image = nil; NSPoint dragPoint = NSZeroPoint; NSArray *cells; NSUInteger i; cells = [self selectedCells]; for(i=0; i<[cells count]; i++) if(![[cells objectAtIndex: i] isLeaf]) // can only drag leaf cells return; _didDrag = YES; pboard = [NSPasteboard pasteboardWithName: NSDragPboard]; [self copyToPasteboard: pboard]; dragPoint = [self convertPoint: [event locationInWindow] fromView: nil]; [contactRows release]; contactRows = [[NSMutableArray alloc] initWithCapacity: [cells count]]; for (i=0; i<[cells count]; i++) { NSInteger row, column; [self getRow: &row column: &column ofCell: [cells objectAtIndex: i]]; [contactRows addObject: [NSNumber numberWithInteger: row]]; } image = [self draggingImage]; [self dragImage: image at: dragPoint offset: NSMakeSize(0,0) event: event pasteboard: pboard source: self slideBack: YES]; } - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) local { return NSDragOperationLink; } - (NSDragOperation) draggingEntered: (id) sender { return NSDragOperationLink; } - (void) draggingExited: (id) sender { if(oldCell) { [self lockFocus]; [oldCell drawWithFrame: oldFrame inView: self]; [oldCell release]; oldCell = nil; [_window flushWindow]; [self unlockFocus]; } } - (NSDragOperation) draggingUpdated: (id) sender { NSInteger row, column; NSRect frame; NSPoint p; NSPasteboard *pb; id delegate; NSDragOperation op; curCell = nil; delegate = [(NSBrowser*)[[[self superview] superview] superview] delegate]; pb = [sender draggingPasteboard]; if(![[pb types] containsObject: ADPeoplePboardType]) return NSDragOperationNone; if(!delegate || ![delegate respondsToSelector: _shouldSel]) return NSDragOperationNone; p = [self convertPoint: [sender draggingLocation] fromView: nil]; if(![self getRow: &row column: &column forPoint: p] || self == [sender draggingSource]) { if(oldCell) { [self lockFocus]; [oldCell drawWithFrame: oldFrame inView: self]; [oldCell release]; oldCell = nil; [_window flushWindow]; [self unlockFocus]; } groupRow = -1; return NSDragOperationNone; } groupRow = row; curCell = [self cellAtRow: row column: column]; frame = [self cellFrameAtRow: row column: column]; [self lockFocus]; if(curCell != oldCell) { if(oldCell) { [self display]; [oldCell release]; } oldCell = [curCell retain]; oldFrame = frame; } op = [delegate dragDropMatrix: self shouldAcceptDropFromSender: sender onCell: curCell]; if(op == NSDragOperationNone) return NSDragOperationNone; [[NSColor blackColor] set]; NSFrameRect(frame); [_window flushWindow]; [self unlockFocus]; return op; } - (BOOL) prepareForDragOperation: (id) sender { id delegate; delegate = [(NSBrowser*)[[[self superview] superview] superview] delegate]; if(!delegate || !curCell || ![delegate respondsToSelector: _shouldSel] || ([delegate dragDropMatrix: self shouldAcceptDropFromSender: sender onCell: oldCell] == NSDragOperationNone)) return NO; return YES; } - (BOOL) performDragOperation: (id) sender { id delegate; delegate = [(NSBrowser*)[[[self superview] superview] superview] delegate]; if(oldCell) { [self lockFocus]; [oldCell drawWithFrame: oldFrame inView: self]; [oldCell release]; oldCell = nil; [_window flushWindow]; [self unlockFocus]; } if(!delegate || !curCell || ![delegate respondsToSelector: _didSel]) return NO; return [delegate dragDropMatrix: self didAcceptDropFromSender: sender onCell: curCell]; } - (NSImage*) draggingImage { if([[self selectedCells] count] > 1) return [NSImage imageNamed: @"VCFImageMulti"]; else return [NSImage imageNamed: @"VCFImage"]; } @end Addresses-0.5.0/AddressManager/VCFImageMulti.tiff0000644000175000000240000001053612312144402020755 0ustar multixstaffII*sBQs~yyyyyyyyyyyyyyyyyyyz(w $$$d///---~=  &Z%'8...]]]`````````^^^JJJJD~]"""---...555FFFWWW___`````````___MMMJ%y000555666666666666@@@SSS___`````````___JJJ y{222666666666666666666666@@@WWW___`````````^^^8yy555666666666666666666666666666III]]]````````````...{yy`666666666666666666666666666666@@@[[[````````````///~yy~666666666666666666666666666666<<"); Copyright = "Copyright (C) 2003-2025 The GNUstep Application Project\n Distributed under the terms of the LGPL."; NSTypes = ( { NSUnixExtensions = ( "vcf", "vcard" ); NSIcon = "VCFFile.tiff"; } ); } Addresses-0.5.0/AddressManager/ChangeLog0000644000175000000240000000030412312144402017251 0ustar multixstaff2007-05-02 Nicola Pero * GNUmakefile (AddressManager_LDFLAGS): Updated link flags to find the non-installated framework cross-platform with gnustep-make v2. Addresses-0.5.0/AddressManager/GNUmakefile0000644000175000000240000000207212312144402017555 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make APP_NAME=AddressManager AddressManager_APPLICATION_ICON=AddressManager.tiff AddressManager_OBJC_FILES=\ Controller.m \ DragDropMatrix.m \ main.m AddressManager_HEADER_FILES=\ Controller.h \ DragDropMatrix.h AddressManager_MAIN_MODEL_FILE=AddressManager.gorm AddressManager_RESOURCE_FILES= \ AddressManager.tiff \ VCFImage.tiff VCFImageMulti.tiff \ VCFFile.tiff \ AddressManagerInfo.plist AddressManager_LOCALIZED_RESOURCE_FILES=\ AddressManager.gorm \ Localizable.strings \ ISOCountryCodes.dict AddressManager_LANGUAGES=Dutch English French German Spanish AddressManager_OBJCFLAGS=-I../Frameworks -Wall #AddressManager_LDFLAGS=\ -L../Frameworks/AddressView/AddressView.framework/$(GNUSTEP_TARGET_LDIR) \ -L../Frameworks/Addresses/Addresses.framework/$(GNUSTEP_TARGET_LDIR) \ -lAddressView -lAddresses -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/application.make -include GNUmakefile.postamble Addresses-0.5.0/AddressManager/Spanish.lproj/0000755000175000000240000000000012312144403020235 5ustar multixstaffAddresses-0.5.0/AddressManager/Spanish.lproj/AddressManager.gorm/0000755000175000000240000000000012312144403024060 5ustar multixstaffAddresses-0.5.0/AddressManager/Spanish.lproj/AddressManager.gorm/Add.tiff0000644000175000000240000000174612312144403025432 0ustar multixstaffII*&&&JYYYxxx鄄xxxYYY&&&JNNNNNNNNNNNN&&&J&&&JYYYYYYxxx鄄xxx鄄xxx鄄xxxYYYYYY&&&J&&&JNNNNNNNNNNNN&&&JYYYxxx鄄xxxYYY&&&J   -@(R/home/giesler/Source/GNUstep/Contax/Add.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/Spanish.lproj/AddressManager.gorm/data.classes0000644000175000000240000000323312312144403026351 0ustar multixstaff{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ContactView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "doEditPerson:", "doTogglePersonEditable:", "doCreatePerson:", "doImportPerson:", "doExportPerson:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doToggleShared:", "doDuplicatePerson:", "doMergePersons:", "doCreateGroup:", "doDeleteGroup:", "doSaveDatabase:", "doShowPrefsPanel:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:" ); Outlets = ( personView, scrollView, clipView, groupsBrowser, servicesMenu, editButton, editItem, shareItem, mergePersonsItem, duplicatePersonItem, thisIsMeItem, prefsPanel, prefsAutosaveButton, prefsAddressLayoutPopup, prefsScreenNameLayoutMatrix, lastCell ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "doCreateGroup:", "doCreatePerson:", "doRenameGroup:", "doDeleteGroup:", "doBrowserClick:", "doImportPerson:", "doDeletePerson:", "doTogglePersonEditable:", "doEditPerson:", "doSaveDatabase:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doExportPerson:", "doToggleShared:", "doToggleAutosave:", "doChangeAddressLayout:", "prefsChangeAddressLayout:", "prefsToggleAutosave:", "doShowPrefsPanel:", "prefsChangeScreenNameLayout:", "doDuplicatePerson:", "doMergePersons:" ); Super = NSObject; }; }Addresses-0.5.0/AddressManager/Spanish.lproj/AddressManager.gorm/objects.gorm0000644000175000000240000005504512312144403026410 0ustar multixstaffGNUstep archive00002e7f:00000039:0000027b:00000008:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&%NSWindow1 NSWindow1 NSResponder% ? A D6 C& % C D 01 NSView% ? A D6 C  D6 C&01 NSMutableArray1 NSArray&01 NSBrowser1 NSControl% A B( C C  C C&0 &0 1 NSScrollView% @ C+ C  C+ C&0 &0 1 NSClipView% A @ C C  C C&0 &0 1NSMatrix%  C B  C B&0 &%01 NSActionCell1NSCell0&01NSFont%&&&&&&&&&&&&&&%% C B 01NSColor0&%NSNamedColorSpace0&%System0&%controlBackgroundColor0& % NSBrowserCell01 NSBrowserCell0&0% A@&&&&&&&&&&&&&&%%0 &2doClick:2doDoubleClick:01 NSScroller% @ @ A C  A C&0 &%00% A@&&&&&&&&&&&&&&& 2 _doScroll:v12@0:4@8 % A A A A 0% C/ @ C, C  C, C&0 &0!% A @ C C  C C&0" &0#0$& % controlColor0%% @ @ A C  A C&0& &%0'0(&&&&&&&&&&&&&&&&!% A A A A %%0)&&&&&&&&&&&&&&0*&%NSMatrix0+&%/% B0,% @ ? C̀ A  C̀ A&0- &%0.&&&&&&&&&&&&&&&2 scrollViaScroller:v12@0:4@8   C+ C0/ &001NSBrowserColumn %+01%%%021NSButton% A A  A A  A A&$03 &%041 NSButtonCell05&%+06%&&&&&&&&&&&&&&%07&08&&&& &&09% C9 A  A A  A A&$0: &%0;0<&%+6&&&&&&&&&&&&&&%0=&0>&&&& &&0?% C A  BD A  BD A&$0@ &%0A0B&%Editar&&&&&&&&&&&&&&%0C&0D&&&& &&0E1 GSCustomView1 GSNibItem0F& % NSScrollView C B( C C&0G0H&%windowBackgroundColor0I&%Window0J& % AddressesJ D/ C F@ F@%0K1NSImage0L&%NSApplicationIcon&  D D@0M0N&%NSPanel1NSPanel% ? A C C& % D D:@0O % ? A C C  C C&0P &0Q1 NSTabView% A A  C C  C C&0R &0S % ? ? C Co  C Co&0T &0U% A A  Ch A  Ch A&0V &%0W0X&%Guardar cambios inmediatamente0Y0Z1!NSMutableString&%common_SwitchOff&&&&&&&&&&&&&&%0[&0\&0]0^!&%common_SwitchOn&&& &&0_1"NSBox% A B C B  C B&0` &0a % @ @ C B  C B&0b &0c1# NSPopUpButton% C7 @ B A  B A&0d &%0e1$NSPopUpButtonCell1%NSMenuItemCell0f&&&&&&&&&0g1&NSMenu0h&0i &0j1' NSMenuItem0k&%Item 10l&&&%0m0n& % common_Nibble%0o'0p&%Item 2l&&%%0q'0r&%Item 3l&&%%&&&&&&%0s&0t&&&& &&jg%%%%%0u1( NSTextField% B @ C A  C A&0v &%0w1)NSTextFieldCell0x&%Formato direccin&&&&&&&& &&&&&&%0y0z&%System0{&%textBackgroundColor0|z0}& % textColor0~(% B, C2 B  C2 B&0 &%0)0&%Formato nombre persona&&&&&&&& &&&&&&%y|0% C7 B, C B  C B&0 &%00&&&&&&&&&&&&&&&%% C A 0& % NSButtonCell00&%Radio00!&%common_RadioOff&&&&&&&&&&&&&&%0&0&00!&%common_RadioOn&&& &&%%0 &00& % Doe, John&&&&&&&&&&&&&&%&&& &&00& % Juan Perez&&&&&&&&&&&&&&%&&& &&0)0&%Layout&&&&&&&& &&&&&&%G| @ @%%0 &01* NSTabViewItem0&%general0&%GeneralS%Q0*0& % addressbooks0&%Libreta de direcciones0 % ? ? C Co  C Co&0 &0(% A B C A  C A&0 &%0)0&%Proximamente...&&&&&&&& &&&&&&%y|%Q%%G0&%Window0& % Preferences ? A F@ F@%K&   D D@00& % Controller  &0&0& % Addresses0 &0'0&%Info0&&&%00!&%common_2DCheckMark00!& % common_2DDash2submenuAction:%0&0 &0'0&%Panel de informacin...0&&&%%0'0&%Preferencias...0&%,&&%%0'0&%Ayuda...0&%?&&%%0'0&%Editar0&&&%%0&0 &0'0±&%Cortar0ñ&%x&&%%0ı'0ű&%Copiar0Ʊ&%c&&%2 copy:@12@0:4@8%0DZ'0ȱ&%Pegar0ɱ&%v&&%2 paste:@12@0:4@8%0ʱ'0˱& % Base de datos0̱&&&%%0ͱ&0α &0ϱ'0б&%Save...0ѱ&%s&&%%0ұ'0ӱ& % Importar...0Ա&%I&&%%0ձ'0ֱ& % Exportar...0ױ&%E&&%%0ر'0ٱ&%Persona0ڱ&&&%%0۱&0ܱ &  0ݱ'0ޱ&%Nueva0߱&%n&&%%0'0&%Editar0&%e&&%%0'0&%Borrar0&%d&&%%0'0& % Select all0&%a&&%%0'0&%Duplicar0&&&%%0'0&%Juntar0&&&%%0'0& % Este soy yo0&&&%%0'0& % Mostrarme0&%M&&%%0'0&%Compartir esta persona0&%S&&%%0'0&%Grupo0&&&%%0&0 &0'0&%Nuevo0&%N&&%%P'P&%BorrarP&%D&&%%P'P& % ServiciosP&&&%%P&P &P'P &%HideP &%h&&%%P 'P &%QuitP &%q&&%%P &P &P1+NSMutableDictionary1, NSDictionary&nP& % GormNSMenu1P& % MenuItem32P& % GormNSMenu2P& % MenuItem33P& % GormNSMenu3P&P&%ServicesP &P& % MenuItem34P& % GormNSMenu4P& % MenuItem(14)P& % MenuItem35P& % GormNSMenu5P& % MenuItem36P&%TextViewP 1- NSTextView1.NSText% A  B   B &P! &y  K K| B KP"& % GormNSMenu6P#& % MenuItem37P$&%TabViewQP%& % MenuItem38P&& % MenuItem(3)P'&%Box_P(& % MenuItem39P)& % TextFieldP*(% Ap Cp B, A  B, A&P+ &%P,)P-&%Name:6&&&&&&&& &&&&&&%y|P.& % MenuItem(17)P/&%NSMenuP0& % MenuItem(6)P1& % MenuItem10P2& % MenuItem11P3& % MenuItem12P4& % MenuItem13P5& % MenuItem14P6&%GormNSOutlineViewP71/ NSOutlineView10 NSTableView%  B A  B A&P8 &%P9P:&&&&&&&&&&&&&&&P; &P<11 NSTableColumnP=&%classes BP A GPP>12NSTableHeaderCellP?&% P@% A@&&&&&&&& &&&&&&%PAPB&%controlShadowColorPCPD&%windowFrameTextColorPE)PF&%NSObjectF&&&&&&&& &&&&&&%y|PG1PH&%outlets BT A GPPI2PJ&% @&&&&&&&& &&&&&&%ACPK)PL&%1L&&&&&&&& &&&&&&%y|PMPN& % gridColorPO13NSTableHeaderView%  B A  B A&PP &PQ14GSTableCornerView%  A A  A A&PR &%% A @ @@ A 9P?&%prefsToggleAutosave:P@9PA&%prefsChangeAddressLayout:PB8PC&%prefsAddressLayoutPopupPD8~PE& % prefsPanelPF91PG&%doShowPrefsPanel:PH8PI&%prefsAutosaveButtonPJ74PK7PL94PM&%doImportPerson:PN9PO&%doExportPerson:PP7ސPQ7АPR7'PS9аPT&%prefsChangeScreenNameLayout:PU8PV&%prefsScreenNameLayoutMatrixPW7PX7PY7/PZ7"ڐP[7"P\7"P]7"P^7P_9P`&%doSelectAllPersons:Pa9Pb&%doDuplicatePerson:Pc9Pd&%doMergePersons:Pe8Pf&%duplicatePersonItemPg8Ph&%mergePersonsItemPi8Pj& % thisIsMeItemPk9/Pl&%hide:Pm9/Pn& % terminate:Po9Pp&%NSFirstPq&%orderFrontStandardInfoPanel:Pr9pPs&%cut:Pt9pPu& % saveDocument:Pv+&Addresses-0.5.0/AddressManager/Spanish.lproj/Localizable.strings0000644000175000000240000001612012312144403024071 0ustar multixstaff/*** Spanish.lproj/Localizable.strings updated by make_strings 2004-03-13 21:11:17 -0500 add comments above this one ***/ /*** Strings from Controller.m ***/ /* File: Controller.m:1000 */ " (Me)" = " (Yo)"; /* File: Controller.m:369 */ "'%@' cannot be edited because\nthe record is marked as read-only." = "'%@' no puede editarse ya que el\nregistro esta marcado como solo lectura."; /* File: Controller.m:753 */ /* File: Controller.m:464 */ "A new person could not be created." = "No se pudo crear la nueva persona."; /* File: Controller.m:1094 */ /* File: Controller.m:1083 */ /* File: Controller.m:846 */ "Addresses" = "Direcciones"; /* File: Controller.m:1088 */ "Addresses*" = "Direcciones*"; /* File: Controller.m:987 */ /* File: Controller.m:959 */ /* File: Controller.m:957 */ /* File: Controller.m:958 */ /* File: Controller.m:933 */ "All" = "Todos"; /* File: Controller.m:654 */ "Can only store a single person\nin files of type %@" = "Solo puede almacenarse una sola persona\nen archivos del tipo %@"; /* File: Controller.m:645 */ "Cannot export files of type %@" = "No se pudo exportar los archivos de tipo %@"; /* File: Controller.m:788 */ "Could not create group!" = "No se pudo crear el grupo!"; /* File: Controller.m:669 */ "Could not write file %@.\nPermissions error?" = "No se pudo grabar el archivo %@.\nProblemas de permisos?"; /* File: Controller.m:762 */ /* File: Controller.m:474 */ "Couldn't add person" = "No se pudo agregar la persona"; /* File: Controller.m:752 */ /* File: Controller.m:463 */ "Couldn't create person" = "No se pudo crear la persona"; /* File: Controller.m:842 */ /* File: Controller.m:1234 */ "Couldn't save" = "No se pudo grabar"; /* File: Controller.m:812 */ "Delete Group?" = "Borrar grupo?"; /* File: Controller.m:508 */ "Delete Person?" = "Borrar persona?"; /* File: Controller.m:516 */ "Delete Persons?" = "Borrar personas?"; /* File: Controller.m:944 */ /* File: Controller.m:936 */ "Disallowed" = "No permitido"; /* File: Controller.m:392 */ "Discard Person?" = "Descartar persona?"; /* File: Controller.m:1059 */ /* File: Controller.m:722 */ "Do not share these people" = "No compartir estas personas"; /* File: Controller.m:1061 */ /* File: Controller.m:724 */ "Do not share this person" = "No compartir esta persona"; /* File: Controller.m:506 */ "Do you really want to delete %@ from \"All\" and all groups?" = "Realmente desea borrar %@ de \"Todos\" y todos los grupos?"; /* File: Controller.m:514 */ "Do you really want to delete the %d selected persons from \"All\" and all groups?" = "Realmente desea borrar las %d personas seleccionadas de \"Todos\" y todos los grupos?"; /* File: Controller.m:810 */ "Do you really want to delete the group '%@'?" = "Realmente desea borrar el grupo '%@'?"; /* File: Controller.m:1504 */ /* File: Controller.m:1310 */ /* File: Controller.m:583 */ "Don't insert" = "No insertar"; /* File: Controller.m:1228 */ "Don't quit" = "No salir"; /* File: Controller.m:399 */ "Edit Person" = "Editar Persona"; /* File: Controller.m:372 */ "Edit person" = "Editar persona"; /* File: Controller.m:377 */ "End editing" = "Finalizar edici\u00f3n"; /* File: Controller.m:821 */ /* File: Controller.m:788 */ "Error" = "Error"; /* File: Controller.m:876 */ /* File: Controller.m:161 */ /* File: Controller.m:162 */ "Everything" = "Todo"; /* File: Controller.m:581 */ /* File: Controller.m:1502 */ /* File: Controller.m:1308 */ "Existing person?" = "Persona existente?"; /* File: Controller.m:624 */ "Export %d records to..." = "Exportar %d registros a..."; /* File: Controller.m:628 */ "Export '%@' to..." = "Exportar '%@' a..."; /* File: Controller.m:104 */ "Group" = "Grupo"; /* File: Controller.m:550 */ "Import..." = "Importar..."; /* File: Controller.m:1309 */ /* File: Controller.m:582 */ /* File: Controller.m:1503 */ "Insert anyway" = "Insertar de cualquier manera"; /* File: Controller.m:647 */ /* File: Controller.m:656 */ "Invalid File Type" = "Tipo de archivo inv\u00e1lido"; /* File: Controller.m:105 */ "Name" = "Nombre"; /* File: Controller.m:786 */ "New Group" = "Nuevo Grupo"; /* File: Controller.m:1152 */ "New Person" = "Nueva persona"; /* File: Controller.m:395 */ /* File: Controller.m:813 */ /* File: Controller.m:519 */ "No" = "No"; /* File: Controller.m:88 */ "No Address Book" = "No hay Agenda"; /* File: Controller.m:671 */ /* File: Controller.m:950 */ /* File: Controller.m:656 */ /* File: Controller.m:91 */ /* File: Controller.m:754 */ /* File: Controller.m:939 */ /* File: Controller.m:1236 */ /* File: Controller.m:821 */ /* File: Controller.m:465 */ /* File: Controller.m:370 */ /* File: Controller.m:477 */ /* File: Controller.m:789 */ /* File: Controller.m:647 */ /* File: Controller.m:844 */ /* File: Controller.m:765 */ "OK" = "OK"; /* File: Controller.m:1227 */ "Quit without saving" = "Salir sin guardar"; /* File: Controller.m:366 */ "Read-Only Person" = "Persona de solo lectura"; /* File: Controller.m:1503 */ /* File: Controller.m:1309 */ /* File: Controller.m:582 */ "Replace" = "Reemplazar"; /* File: Controller.m:1224 */ "Save Changes?" = "Guardar cambios?"; /* File: Controller.m:1227 */ "Save and Quit" = "Guardar y salir"; /* File: Controller.m:1066 */ /* File: Controller.m:729 */ "Share these people" = "Compartir estas personas"; /* File: Controller.m:731 */ /* File: Controller.m:1068 */ "Share this person" = "Compartir esta persona"; /* File: Controller.m:843 */ /* File: Controller.m:1235 */ "The database could not be saved!" = "La base de datos no pudo ser grabada!"; /* File: Controller.m:819 */ "The group '%@` could not be deleted." = "El grupo '%@` no pudo ser borrado."; /* File: Controller.m:764 */ /* File: Controller.m:476 */ "The newly created person could not be\nadded to this group." = "La persona recientemente creada\nno pudo ser agregada a este grupo."; /* File: Controller.m:394 */ "The person you have edited has no first or last\nnames. Would you like to discard this person?" = "La persona que ha editado no tiene nombre ni apellido.\nDesea descartar esta persona?"; /* File: Controller.m:1500 */ /* File: Controller.m:1306 */ /* File: Controller.m:579 */ "Trying to import person named '%@',\nwhich already exists in the database." = "La persona llamada '%@' que se trata de importar\nya existe en la base de datos."; /* File: Controller.m:671 */ "Write Failed" = "Fallo la grabaci\u00f3n"; /* File: Controller.m:813 */ /* File: Controller.m:519 */ /* File: Controller.m:395 */ "Yes" = "Si"; /* File: Controller.m:938 */ "You cannot rename a group to \"All\",\nsince that name is reserved by the system." = "No es posible renombrar un grupo como \"Todos\",\nya que ese nombre esta reservado al sistema."; /* File: Controller.m:949 */ "You cannot rename this group to \"%@\",\nsince a group of that name already exists." = "No es posible renombrar el grupo como \"%@\",\nya que un grupo con ese nombre ya existe."; /* File: Controller.m:1226 */ "You have made changes to the database.\nShould these changes be saved?" = "Ha hecho cambios a la base de datos.\nDesea grabar los cambios?"; /* File: Controller.m:90 */ "[ADAddressBook sharedAddressBook] returned nil.\nConfiguration broken?" = "[ADAddressBook sharedAddressBook] ha devuelto nil.\nEstar\u00e1 la configuraci\u00f3n da\u00f1ada?"; Addresses-0.5.0/AddressManager/Spanish.lproj/ISOCountryCodes.dict0000644000175000000240000000015512312144403024077 0ustar multixstaff{ de = Alemania; nl = Holanda; sk = "Rep\U00fablica Eslovaca"; us = "Estados Unidos"; ar = Argentina; } Addresses-0.5.0/AddressManager/Dutch.lproj/0000755000175000000240000000000012312144403017677 5ustar multixstaffAddresses-0.5.0/AddressManager/Dutch.lproj/AddressManager.gorm/0000755000175000000240000000000012312144403023522 5ustar multixstaffAddresses-0.5.0/AddressManager/Dutch.lproj/AddressManager.gorm/Add.tiff0000755000175000000240000000174612312144403025077 0ustar multixstaffII*&&&JYYYxxx鄄xxxYYY&&&JNNNNNNNNNNNN&&&J&&&JYYYYYYxxx鄄xxx鄄xxx鄄xxxYYYYYY&&&J&&&JNNNNNNNNNNNN&&&JYYYxxx鄄xxxYYY&&&J   -@(R/home/giesler/Source/GNUstep/Contax/Add.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/Dutch.lproj/AddressManager.gorm/data.classes0000755000175000000240000000323312312144403026016 0ustar multixstaff{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ContactView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "doEditPerson:", "doTogglePersonEditable:", "doCreatePerson:", "doImportPerson:", "doExportPerson:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doToggleShared:", "doDuplicatePerson:", "doMergePersons:", "doCreateGroup:", "doDeleteGroup:", "doSaveDatabase:", "doShowPrefsPanel:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:" ); Outlets = ( personView, scrollView, clipView, groupsBrowser, servicesMenu, editButton, editItem, shareItem, mergePersonsItem, duplicatePersonItem, thisIsMeItem, prefsPanel, prefsAutosaveButton, prefsAddressLayoutPopup, prefsScreenNameLayoutMatrix, lastCell ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "doCreateGroup:", "doCreatePerson:", "doRenameGroup:", "doDeleteGroup:", "doBrowserClick:", "doImportPerson:", "doDeletePerson:", "doTogglePersonEditable:", "doEditPerson:", "doSaveDatabase:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doExportPerson:", "doToggleShared:", "doToggleAutosave:", "doChangeAddressLayout:", "prefsChangeAddressLayout:", "prefsToggleAutosave:", "doShowPrefsPanel:", "prefsChangeScreenNameLayout:", "doDuplicatePerson:", "doMergePersons:" ); Super = NSObject; }; }Addresses-0.5.0/AddressManager/Dutch.lproj/AddressManager.gorm/objects.gorm0000755000175000000240000005653612312144403026063 0ustar multixstaffGNUstep archive0000300d:00000038:0000028f:00000008:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01GSWindowTemplate1GSClassSwapper01NSString&% NSWindow1NSWindow1 NSResponder% ? A D6 C& % C] D01 NSView% ? A D6 C  D6 C&01 NSMutableArray1 NSArray&01 NSBrowser1 NSControl% A B( C C  C C&0 &0 1 NSScrollView% @ C+ C  C+ C&0 &0 1 NSClipView% A @ C C  C C&0 &0 1NSMatrix%  C B  C B&0 &%01 NSActionCell1NSCell0&01NSFont%&&&&&&&&&&&&&&%% C B 01NSColor0&% NSNamedColorSpace0&% System0& %  controlColor0& % NSBrowserCell01 NSBrowserCell0&0% A@&&&&&&&&&&&&&&%%0 &2doClick:2doDoubleClick:01 NSScroller% @ @ A C  A C&0 &%00% A@&&&&&&&&&&&&&&& 2 _doScroll:v12@0:4@8 % A A A A 0% C/ @ C, C  C, C&0 &0!% A @ C C  C C&0" &0#% @ @ A C  A C&0$ &%0%0&&&&&&&&&&&&&&&&&!% A A A A #%0'&&&&&&&&&&&&&&0(&%NSMatrix0)&%/% B0*% @ ? C̀ A  C̀ A&0+ &%0,&&&&&&&&&&&&&&&2 scrollViaScroller:v12@0:4@8   C+ C0- &0.1NSBrowserColumn %)0/%%%001NSButton% A A  A A  A A&$01 &%021 NSButtonCell03&%+04%&&&&&&&&&&&&&&%05&06&&&& &&07% C9 A  A A  A A&$08 &%090:&%+4&&&&&&&&&&&&&&%0;&0<&&&& &&0=% C A  B A  B A&$0> &%0?0@&%Edit&&&&&&&&&&&&&&%0A&0B&&&& &&0C1 GSCustomView1 GSNibItem0D& % NSScrollView C B( C C&0E0F&% windowBackgroundColor0G&%Window0H& % AddressesH D/ C F@ F@%0I1NSImage0J&% NSApplicationIcon&  D D@0K0L& % Controller  &0M0N&% NSPanel1NSPanel% ? A C C& % C D=0O % ? A C C  C C&0P &0Q1 NSTabView% A A  C C  C C&0R &0S % ? ? C Co  C Co&0T &0U% A A  C` A  C` A&0V &%0W0X&!%! Bewaar alle wijzigingen meteen 0Y0Z1 NSMutableString&%common_SwitchOff&&&&&&&&&&&&&&%0[&0\&0]0^ &%common_SwitchOn&&& &&0_1!NSBox% A B C B  C B&0` &0a % @ @ C B  C B&0b &0c1" NSPopUpButton% C3 @ B A  B A&0d &%0e1#NSPopUpButtonCell1$NSMenuItemCell0f&&&&&&&&&0g1%NSMenu0h&0i &0j1& NSMenuItem0k&%Item 10l&&&%0m0n& %  common_Nibble%0o&0p&%Item 2l&&%%0q&0r&%Item 3l&&%%&&&&&&%0s&0t&&&& &&jg%%%%%0u1' NSTextField% @ C& A  C& A&0v &%0w1(NSTextFieldCell0x&%Algemene adres opmaak&&&&&&&& &&&&&&%0y0z&%System0{&%textBackgroundColor0|z0}& % textColor0~'% B, C& B  C& B&0 &%0(0&%Persoonsnaam opmaak&&&&&&&& &&&&&&%y|0% C3 B, C B  C B&0 &%00&&&&&&&&&&&&&&&%% C A 00&% controlBackgroundColor0& % NSButtonCell00&%Radio00 &%common_RadioOff&&&&&&&&&&&&&&%0&0&00 &%common_RadioOn&&& &&%%0 &00& % Doe, John&&&&&&&&&&&&&&%&&& &&00&%John Doe&&&&&&&&&&&&&&%&&& &&0(0&%Opmaak&&&&&&&& &&&&&&%E| @ @%%0 &01) NSTabViewItem0&%general0&%AlgemeenS%Q0)0& % addressbooks0& % Adres Boeken0 % ? ? C Co  C Co&0 &0'% A B C A  C A&0 &%0(0& % Binnenkort0% A`&&&&&&&& &&&&&&%y|%Q%%E0&%Window0& % Voorkeuren ? A F@ F@%I&   D D@0%0& % Addresses0 &0&0&%Info0&&&%00 &%common_2DCheckMark00 & % common_2DDash2submenuAction:%0%0 &0&0&%Info Paneel...0&&&%%0&0& % Voorkeuren...0&%,&&%%0&0&%Help...0&%?&&%%0&0& % Aanpassen0&&&%%0%0 &0±&0ñ&%Knip0ı&%x&&%%0ű&0Ʊ&%Kopieer0DZ&%c&&%2 copy:@12@0:4@8%0ȱ&0ɱ&%Plak0ʱ&%v&&%2 paste:@12@0:4@8%0˱&0̱&%Database0ͱ&&&%%0α%0ϱ &0б&0ѱ& % Bewaar...0ұ&%s&&%%0ӱ&0Ա& % Importeer...0ձ&%I&&%%0ֱ&0ױ& % Exporteer...0ر&%E&&%%0ٱ&0ڱ&%Persoon0۱&&&%%0ܱ%0ݱ &  0ޱ&0߱&%Nieuw0&%n&&%%0&0&%Wijzigen0&%e&&%%0&0& % Verwijder0&%d&&%%0&0&%Selecteer alles0&%a&&%%0&0& % Dupliceer0&&&%%0&0& % Samenvoegen0&&&%%0&0& % Dit ben ik0&&&%%0&0&%Toon mij0&%M&&%%0&0&%Deel deze persoon0&%S&&%%0&0&%Groep0&&&%%0%0 &0&0&%NieuwP&%N&&%%P&P& % VerwijderP&%D&&%%P&P&%ServicesP&&&%%P%P &P &P &%VerbergP &%h&&%%P &P & % AfsluitenP&%q&&%%P &P &P1*NSMutableDictionary1+ NSDictionary&P&%Menu(0)P& % MenuItem33P& % MenuItem34P& % MenuItem(9)P& % MenuItem35P& % MenuItem36P& % MenuItem37P& % MenuItem38P& % MenuItem39P& % MenuItem(26)P&%TextViewP1, NSTextView1-NSText% A  B   B &P &y  K K| B KP&%NSMenuP & % MenuItem(14)P!& % MenuItem(34)P"& % MenuItem(5)P#& % GormNSMenuP$& % MenuItem1 P%& % MenuItem(22)P&& % MenuItem2 P'& % MenuItem3 P(& % MenuItem4 P)& % MenuItem5 P*&% NSOwnerP+& % NSApplicationP,& % My WindowP-& % MenuItem6P.& % MenuItem(10)P/& % MenuItem7P0& % MenuItem8P1& % MenuItem9P2& % MenuItem(30)P3& % MenuItem(1)P4& % MenuItem40 P5& % MenuItem(19) P6& % MenuItem41 P7& % MenuItem42 P8&%Menu(1)P9& % MenuItem43 P:& % MenuItem(27)P;& % TableColumn1P<1. NSTableColumnP=&%column2 BT A GPP>1/NSTableHeaderCellP?&% P@% A@&&&&&&&& &&&&&&%PAPB&% controlShadowColorPCPD&% windowFrameTextColorPE(PF&%threeF&&&&&&&& &&&&&&%y|PG& % MenuItem(15)PH& % TableColumn2PI.PJ&%classes BP A GPPK/PL&% @&&&&&&&& &&&&&&%ACPM(PN&%NSObjectN&&&&&&&& &&&&&&%y|PO& % TableColumn3PP.PQ&%outlets BT A GPPR/PS&% @&&&&&&&& &&&&&&%ACPT(PU&%1U&&&&&&&& &&&&&&%y|PV& % MenuItem(35) PW& % MenuItem(6)PX&%GormCustomViewCPY& % MenuItem(23)PZ& % MenuItem(11)P[& % TableColumnP\.P]&%column1 BP A GPP^/P_&% @&&&&&&&& &&&&&&%ACP`(Pa&%troisa&&&&&&&& &&&&&&%y|Pb& % ImageViewPc10 NSImageView% CR CP B BH  B BH&Pd &%Pe11 NSImageCell&&&&&&&&&&&&&&%%% ? ?Pf& % MenuItem(31)Pg& % MenuItem(2)Ph& % TextFieldPi'% Ap Cp B, A  B, A&Pj &%Pk(Pl&%Name:4&&&&&&&& &&&&&&%y|Pm& % MenuItem(28)Pn& % MenuItem10Po& % MenuItem(16)Pp& % MenuItem11Pq&%GormNSPopUpButtoncPr& % MenuItem12Ps& % MenuItem13Pt& % GormNSPanelMPu& % MenuItem14Pv& % MenuItem(36) Pw&%Button17Px& % MenuItem(7)Py& % MenuItem15Pz&%Button2=P{& % MenuItem16P|&%Button3UP}& % MenuItem17P~& % MenuItem18P& % MenuItem19P&P&%ServicesP&&&%2 submenuAction:v12@0:4@8%P%P &P& % MenuItem(24)P&%Button0P& % MenuItem(12)P& % MenuItem(32)P& % MenuItem(3)P&%GormNSOutlineViewP12 NSOutlineView13 NSTableView%  B A  B A&P &%PP&&&&&&&&&&&&&&&P &IPPP& %  gridColorP14NSTableHeaderView%  B A  B A&P &P15GSTableCornerView%  A A  A A&P &%% A @ @@P & A IP& % MenuItem(20)P&%GormNSTableViewP3%  B C!  B C!&P &%PP&&&&&&&&&&&&&&&P &\<P4%  B A  B A&P &P5%  A A  A A&P &%% A @ @@P &P& % GormNSBrowserP& % TextField1P'% CY Bh A  Bh A&P &%P(P&%Address:4&&&&&&&& &&&&&&%y|P& % TextField2P'% B| Cp C A  C A&P &%P(P&%[Name]&&&&&&&& &&&&&&%y|P& % TextField3P'% B| CY C A  C A&P &%P(P&%[Road]&&&&&&&& &&&&&&%y|P& % TextField4P'% B| CG C A  C A&P &%P(P&%[City]&&&&&&&& &&&&&&%y|P&%MenuItem P& % MenuItem(29)P& % TextField5P'% B| C5 C A  C A&P &%P(P& % [Postal Code]&&&&&&&& &&&&&&%y|P& % TextField6P'% B| C# B A  B A&P &%P±(Pñ&%[State]&&&&&&&& &&&&&&%y|Pı& % TextField7Pű& % TextField8uPƱ& % MenuItem20PDZ& % TextField9~Pȱ& % MenuItem21Pɱ& % MenuItem(17)Pʱ& % MenuItem22P˱&%TabViewQP̱& % MenuItem23Pͱ&%Box_Pα& % MenuItem24Pϱ& % MenuItem(8)Pб& % MenuItem25Pѱ& % MenuItem26Pұ& % MenuItem27Pӱ& % MenuItem28PԱ& % MenuItem29Pձ& % MenuItem(25)Pֱ&%NSServicesMenuLKPױ& % MenuItem(13)Pر& % GormNSMenu1Pٱ&%MatrixPڱ& % GormNSMenu2P۱& % TextView1Pܱ,% A  C   C &Pݱ &y  K K| C KPޱ& % MenuItem(33)P߱& % GormNSMenu3P& % TextView2P,% A  B   B &P &y  K K| B KP& % MenuItem(4)P& % GormNSMenu4P& % GormNSMenu5P& % TextView3P,% A  B   B &P &y  K K| B KP& % GormNSMenu6P& % MenuItem(21)P& % MenuItem(0)P& % MenuItem30P& % MenuItem(18) P& % MenuItem31P& % MenuItem32P &nnP16NSNibConnector,P&% NSOwnerP6P6(P65P6P6P6ېP6P6wP6P17NSNibOutletConnectorP& % groupsBrowserP7P&%userViewP18NSNibControlConnectorP&%doCreateGroup:P6-P6#-P6/#P60P60P6ؐP63ؐP 6gؐP 6rP 6rP 6oڐP 6yڐP6#P6}#P8oLP&%doCreateGroup:P8yLP&%doDeleteGroup:P7LP& % groupsBrowserP8LP&%doCreateGroup:P6hP6P6P6P6P6P6P6bP 6zP!6P"6搐P#6P$6[P%6;P&6P'6HP(6OP)6XP*7LXP+& % scrollViewP,6P-6ƐP.7LP/&%delegateP07LzP1& % editButtonP27LP3&%editItemP48zLP5&%doTogglePersonEditable:P68/LP7&%doCreatePerson:P86P96ȐP:6P;8ΰLP<&%doSaveDatabase:P=8ϰLP>& % doEditPerson:P?8wLP@&%doCreatePerson:PA6#PB8װLPC&%doSetMe:PD6#PE8̰LPF& % doShowMe:PG6#PH8ҰLPI&%doToggleShared:PJ7LPK& % shareItemPL6tPM6ːPN6ĐPO6|PP6qPQ6ŐPR8|LPS&%prefsToggleAutosave:PT8qLPU&%prefsChangeAddressLayout:PV7LqPW&%prefsAddressLayoutPopupPX7LtPY& % prefsPanelPZ83LP[&%doShowPrefsPanel:P\7L|P]&%prefsAutosaveButtonP^6"P_6P`8"LPa&%doImportPerson:Pb8ѰLPc&%doExportPerson:Pd6Pe6ِPf6͐Pg8ٰLPh&%prefsChangeScreenNameLayout:Pi7LPj&%prefsScreenNameLayoutMatrixPk6Z#Pl6#Pm6Pn6Po6Pp6Pq6Pr6#Ps8аLPt&%doSelectAllPersons:Pu8ZLPv&%doDuplicatePerson:Pw8԰LPx&%doMergePersons:Py7LZPz&%duplicatePersonItemP{7LP|&%mergePersonsItemP}7LP~& % thisIsMeItemP8P&% NSFirstP&%orderFrontStandardInfoPanel:P8P&%cut:P8P& % saveDocument:P8(P&%hide:P85P& % terminate:P*&Addresses-0.5.0/AddressManager/Dutch.lproj/Localizable.strings0000755000175000000240000001321112312144403023534 0ustar multixstaff/*** English.lproj/Localizable.strings updated by make_strings 2003-10-21 14:39:23 +0200 add comments above this one ***/ /*** Strings from Controller.m ***/ /* File: Controller.m:765 */ " (Me)" = " (Ik)"; /* File: Controller.m:887 */ "'%@' could not be added to '%@'" = "'%@' kon niet worden toegevoegd aan '%@'"; /* File: Controller.m:857 */ /* File: Controller.m:846 */ /* File: Controller.m:556 */ "Addresses" = "Adressen"; /* File: Controller.m:851 */ "Addresses*" = "Adressen*"; /* File: Controller.m:728 */ /* File: Controller.m:702 */ /* File: Controller.m:727 */ /* File: Controller.m:726 */ /* File: Controller.m:753 */ "All" = "Iedereen"; /* File: Controller.m:476 */ "Can only store a single person\nin files of type %@" = "Alleen een enkelvoudige persoon\nkan worden opgeslagen in bestanden van type %@"; /* File: Controller.m:467 */ "Cannot export files of type %@" = "Kan geen bestanden exporteren van type %@"; /* File: Controller.m:889 */ "Could not add member!" = "Kon persoon niet toevoegen!"; /* File: Controller.m:502 */ "Could not create group!" = "Kon de groep niet aanmaken!"; /* File: Controller.m:491 */ "Could not write file %@.\nPermissions error?" = "Kon de file %@ niet bewaren.\nPermissie probleem?"; /* File: Controller.m:913 */ /* File: Controller.m:552 */ "Couldn't save" = "Kon niet opslaan"; /* File: Controller.m:524 */ "Delete Group?" = "Groep verwijderen?"; /* File: Controller.m:329 */ "Delete Person?" = "Persoon verwijderen?"; /* File: Controller.m:337 */ "Delete Persons?" = "Personen verwijderen?"; /* File: Controller.m:713 */ /* File: Controller.m:705 */ "Disallowed" = "Niet toegestaan"; /* File: Controller.m:236 */ "Discard Person?" = "Persoon niet bewaren?"; /* File: Controller.m:607 */ /* File: Controller.m:824 */ "Do not share these people" = "Deze personen niet delen?"; /* File: Controller.m:826 */ /* File: Controller.m:609 */ "Do not share this person" = "Deze persoon niet delen"; /* File: Controller.m:327 */ "Do you really want to delete %@ from \"All\" and all groups?" = "Wilt u echt %@ verwijderen van \"Iedereen\" en alle groepen?"; /* File: Controller.m:335 */ "Do you really want to delete the %d selected persons from \"All\" and all groups?" = "Wilt u echt de %d geselecteerde personen van \"Iedereen\" en alle groepen verwijderen?"; /* File: Controller.m:522 */ "Do you really want to delete the group '%@'?" = "Wilt u echt de groep '%@' verwijderen?"; /* File: Controller.m:404 */ "Don't insert" = "Niet toevoegen"; /* File: Controller.m:907 */ "Don't quit" = "Niet stoppen"; /* File: Controller.m:243 */ "Edit Person" = "Wijzig persoon"; /* File: Controller.m:221 */ "End editing" = "Beeindig wijzigen"; /* File: Controller.m:533 */ /* File: Controller.m:502 */ "Error" = "Probleem"; /* File: Controller.m:646 */ /* File: Controller.m:108 */ /* File: Controller.m:107 */ "Everything" = "Alles"; /* File: Controller.m:402 */ "Existing person?" = "Bestaande persoon?"; /* File: Controller.m:446 */ "Export %d records to..." = "Exporteer %d records naar..."; /* File: Controller.m:450 */ "Export '%@' to..." = "Exporteer '%@' naar..."; /* File: Controller.m:54 */ "Group" = "Groep"; /* File: Controller.m:371 */ "Import..." = "Importeer..."; /* File: Controller.m:403 */ "Insert anyway" = "Toch toevoegen"; /* File: Controller.m:478 */ /* File: Controller.m:469 */ "Invalid File Type" = "Onbekend bestands type"; /* File: Controller.m:55 */ "Name" = "Naam"; /* File: Controller.m:500 */ "New Group" = "Nieuwe Groep"; /* File: Controller.m:525 */ /* File: Controller.m:340 */ /* File: Controller.m:239 */ "No" = "Nee"; /* File: Controller.m:493 */ /* File: Controller.m:478 */ /* File: Controller.m:469 */ /* File: Controller.m:503 */ /* File: Controller.m:554 */ /* File: Controller.m:533 */ /* File: Controller.m:719 */ /* File: Controller.m:708 */ /* File: Controller.m:915 */ /* File: Controller.m:890 */ "OK" = "OK"; /* File: Controller.m:906 */ "Quit without saving" = "Afsluiten zonder opslaan"; /* File: Controller.m:403 */ "Replace" = "Vervangen"; /* File: Controller.m:903 */ "Save Changes?" = "Wijzigingen opslaan?"; /* File: Controller.m:906 */ "Save and Quit" = "Opslaan en afsluiten"; /* File: Controller.m:831 */ /* File: Controller.m:614 */ "Share these people" = "Deze personen delen"; /* File: Controller.m:833 */ /* File: Controller.m:616 */ "Share this person" = "Deze persoon delen"; /* File: Controller.m:914 */ /* File: Controller.m:553 */ "The database could not be saved!" = "De database kon niet worden opgeslagen!"; /* File: Controller.m:531 */ "The group '%@` could not be deleted." = "De groep '%@` kon niet worden verwijderd."; /* File: Controller.m:238 */ "The person you have edited has no first or last\nnames. Would you like to discard this person?" = "The persoon die u heeft gewijzigd heeft geen voor- of achternaam.\nWilt u deze persoon niet bewaren?"; /* File: Controller.m:400 */ "Trying to import person named '%@',\nwhich already exists in the database." = "Persoon met de naam '%@',\nbestaat al in de database."; /* File: Controller.m:493 */ "Write Failed" = "Opslaan mislukt"; /* File: Controller.m:525 */ /* File: Controller.m:340 */ /* File: Controller.m:239 */ "Yes" = "Ja"; /* File: Controller.m:707 */ "You cannot rename a group to \"All\",\nsince that name is reserved by the system." = "U kunt een groep niet hernoemen als \"Iedereen\",\nomdat het een systeem groep is."; /* File: Controller.m:718 */ "You cannot rename this group to \"%@\",\nsince a group of that name already exists." = "U kunt een groep niet hernoemen als \"%@\",\nomdat de groep al bestaat."; /* File: Controller.m:905 */ "You have made changes to the database.\nShould these changes be saved?" = "U heeft veranderingen gemaakt in de database.\nMoeten deze worden opgeslagen?"; Addresses-0.5.0/AddressManager/Dutch.lproj/ISOCountryCodes.dict0000755000175000000240000000012012312144403023534 0ustar multixstaff{ de = Duitsland; nl = Nederland; sk = Slovakije; us = "Verenigde Staten"; }Addresses-0.5.0/AddressManager/German.lproj/0000755000175000000240000000000012312144403020041 5ustar multixstaffAddresses-0.5.0/AddressManager/German.lproj/AddressManager.gorm/0000755000175000000240000000000012312144403023664 5ustar multixstaffAddresses-0.5.0/AddressManager/German.lproj/AddressManager.gorm/Add.tiff0000755000175000000240000000174612312144403025241 0ustar multixstaffII*&&&JYYYxxx鄄xxxYYY&&&JNNNNNNNNNNNN&&&J&&&JYYYYYYxxx鄄xxx鄄xxx鄄xxxYYYYYY&&&J&&&JNNNNNNNNNNNN&&&JYYYxxx鄄xxxYYY&&&J   -@(R/home/giesler/Source/GNUstep/Contax/Add.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/German.lproj/AddressManager.gorm/data.classes0000755000175000000240000000323312312144403026160 0ustar multixstaff{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ContactView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "doEditPerson:", "doTogglePersonEditable:", "doCreatePerson:", "doImportPerson:", "doExportPerson:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doToggleShared:", "doDuplicatePerson:", "doMergePersons:", "doCreateGroup:", "doDeleteGroup:", "doSaveDatabase:", "doShowPrefsPanel:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:" ); Outlets = ( personView, scrollView, clipView, groupsBrowser, servicesMenu, editButton, editItem, shareItem, mergePersonsItem, duplicatePersonItem, thisIsMeItem, prefsPanel, prefsAutosaveButton, prefsAddressLayoutPopup, prefsScreenNameLayoutMatrix, lastCell ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "doCreateGroup:", "doCreatePerson:", "doRenameGroup:", "doDeleteGroup:", "doBrowserClick:", "doImportPerson:", "doDeletePerson:", "doTogglePersonEditable:", "doEditPerson:", "doSaveDatabase:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doExportPerson:", "doToggleShared:", "doChangeAddressLayout:", "doToggleAutosave:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "doShowPrefsPanel:", "prefsChangeScreenNameLayout:", "doDuplicatePerson:", "doMergePersons:" ); Super = NSObject; }; }Addresses-0.5.0/AddressManager/German.lproj/AddressManager.gorm/objects.gorm0000755000175000000240000005555212312144403026222 0ustar multixstaffGNUstep archive00002e7f:00000039:00000288:00000008:01GSNibContainer1NSObject01 GSMutableSet1 NSMutableSet1NSSet&01 GSNibItem01NSString& % Controller  &01GSWindowTemplate1 GSClassSwapper0&%NSWindow1 NSWindow1 NSResponder% ? A D6 C& % D( D@01 NSView% ? A D6 C  D6 C&01 NSMutableArray1NSArray&0 1 NSBrowser1 NSControl% A B( C C  C C&0 &0 1 NSScrollView% @ C+ C  C+ C&0 &0 1 NSClipView% A @ C C  C C&0 &01NSMatrix%  C B  C B&0 &%01 NSActionCell1NSCell0&01NSFont%&&&&&&&&&&&&&&%% C B 01NSColor0&%NSNamedColorSpace0&%System0&%controlBackgroundColor0& % NSBrowserCell01 NSBrowserCell0&0% A@&&&&&&&&&&&&&&%%0 & 2doClick:2doDoubleClick:01 NSScroller% @ @ A C  A C&0 &%00 % A@&&&&&&&&&&&&&&& 2 _doScroll:v12@0:4@8 % A A A A 0!% C/ @ C, C  C, C&0" &0#% A @ C C  C C&0$ &0%0&& % controlColor0'% @ @ A C  A C&0( &%0)0*&&&&&&&&&&&&&&&&!#% A A A A '%0+&&&&&&&&&&&&&&0,&%NSMatrix0-&%/% B0.% @ ? C̀ A  C̀ A&0/ &%00 &&&&&&&&&&&&&&& 2 scrollViaScroller:v12@0:4@8   C+ C01 &021NSBrowserColumn %-03!%%%041NSButton% A A  A A  A A&$05 &%061 NSButtonCell07&%+08%&&&&&&&&&&&&&&%09&0:&&&& &&0;% C9 A  A A  A A&$0< &%0=0>&%+8&&&&&&&&&&&&&&%0?&0@&&&& &&0A% C A  B A  B A&$0B &%0C0D& % Bearbeiten&&&&&&&&&&&&&&%0E&0F&&&& &&0G1 GSCustomView0H& % NSScrollView C B( C C&0I0J&%windowBackgroundColor0K&%Window0L& % AddressenL D/ C F@ F@%0M1NSImage0N&%NSApplicationIcon&  D D@0O1NSMenu0P& % Addressen0Q &0R1 NSMenuItem0S&%Info0T&&&%0U0V1!NSMutableString&%common_2DCheckMark0W0X!& % common_2DDash2submenuAction:%0YS0Z &0[ 0\&%Information...0]&&&%UW%0^ 0_&%Einstellungen...0`&%,&&%UW%0a 0b&%Hilfe...0c&%?&&%UW%O0d 0e& % Bearbeiten0f&&&%UW%0ge0h &0i 0j& % Ausschneiden0k&%x&&%UW%0l 0m&%Kopieren0n&%c&&%UW%0o 0p&%Einfgen0q&%v&&%UW%0r 0s& % Datenbank0t&&&%UW%0us0v &0w 0x& % Speichern...0y&%s&&%UW%0z 0{&%Importieren...0|&%I&&%UW%0} 0~&%Exportieren...0&%E&&%UW%O0 0&%Person0&&&%UW%00 &  0 0&%Neu0&%n&&%UW%0 0& % Bearbeiten0&%e&&%UW%0 0&%Lschen0&%d&&%UW%0 0&%Alle auswhlen0&%a&&%UW%0 0& % Duplizieren0&&&%UW%0 0&%Zusammenfhren0&&&%UW%0 0& % Das bin ich0&&&%UW%0 0& % Zeige mich0&%M&&%UW%0 0& % Freigeben0&%S&&%UW%O0 0&%Gruppe0&&&%UW%00 &0 0&%Neu0&%N&&%UW%0 0&%Lschen0&%D&&%UW%0 0&%Dienste0&&&%UW%00 &O0 0& % Ausblenden0&%h&&%UW2 hide:v12@0:4@8%0 0& % Verlassen0&%q&&%UW2 terminate:v12@0:4@8%00&%NSPanel1"NSPanel% ? A C C& % D D@0 % ? A C C  C C&0 &01# NSTabView% A A  C C  C C&0 &0 % ? ? C Co  C Co&0 &0% A A  CK A  CK A&0 &%00&%nderungen sofort speichern0±0ñ!&%common_SwitchOff&&&&&&&&&&&&&&%0ı&0ű&0Ʊ0DZ!&%common_SwitchOn&&& &&01$NSBox% A B C B  C B&0ɱ &0ʱ % @ @ C B  C B&0˱ &01% NSPopUpButton% C:  B A  B A&0ͱ &%01&NSPopUpButtonCell1'NSMenuItemCell0ϱ&&&&&&&&&0б0ѱ&0ұ &0ӱ 0Ա&%Item 10ձ&&&%0ֱ0ױ& % common_Nibble%0ر 0ٱ&%Item 2&&%%0ڱ 0۱&%Item 3&&%%&&&&&&%0ܱ&0ݱ&&&& &&ӰА%%%%%01( NSTextField%  C5 A  C5 A&0߱ &%01)NSTextFieldCell0&%Standardlayout fr Adressen&&&&&&&& &&&&&&%00&%System0&%textBackgroundColor00& % textColor0% C: B8 B B  B B&0 &%00&&&&&&&&&&&&&&&%% B A 0& % NSButtonCell00&%Radio00!&%common_RadioOff&&&&&&&&&&&&&&%0&0&00!&%common_RadioOn&&& &&%%0 &00& % Mller, Fritz&&&&&&&&&&&&&&%&&& &&00& % Fritz Mller&&&&&&&&&&&&&&%&&& &&0(% @ B8 C0 B  C0 B&0 &%0)0&%Layout fr Personennamen&&&&&&&& &&&&&&%0)0&%Layout&&&&&&&& &&&&&&%I @ @%%0 &P1* NSTabViewItemP&%generalP& % Allgemein%P*P& % addressbooksP& % AdrebcherP % ? ? C Co  C Co&P &P(% A B C A  C A&P &%P )P & % In Krze...P % A`&&&&&&&& &&&&&&%%%%IP &%WindowP& % Einstellungen ? A F@ F@%M&   D D@P &P &P1+NSMutableDictionary1, NSDictionary&qP& % GormNSMenu1YP& % MenuItem32P& % GormNSMenu2P& % MenuItem33P& % GormNSMenu3PP&%ServicesP &P& % MenuItem34P& % GormNSMenu4P& % MenuItem(14)P& % MenuItem35P& % GormNSMenu5uP& % MenuItem36P &%TextViewP!1- NSTextView1.NSText% A  B   B &P" &  K K B KP#& % GormNSMenu6gP$& % MenuItem37RP%&%TabViewP&& % MenuItem38rP'& % MenuItem(3)dP(&%BoxP)& % MenuItem39P*& % TextFieldP+(% Ap Cp B, A  B, A&P, &%P-)P.&%Name:8&&&&&&&& &&&&&&%P/& % MenuItem(17)P0&%NSMenuOP1& % MenuItem(6)oP2&%ViewP3& % MenuItem10^P4& % MenuItem11aP5& % MenuItem12P6& % MenuItem13zP7& % MenuItem14P8&%GormNSOutlineViewP91/ NSOutlineView10 NSTableView%  B A  B A&P: &%P;P<& &&&&&&&&&&&&&&P= &P>11 NSTableColumnP?&%classes BP A GPP@12NSTableHeaderCellPA&% PB% A@&&&&&&&& &&&&&&%PCPD&%controlShadowColorPEPF&%windowFrameTextColorPG)PH&%NSObject H&&&&&&&& &&&&&&%PI1PJ&%outlets BT A GPPK2PL&% B&&&&&&&& &&&&&&%CEPM)PN&%1 N&&&&&&&& &&&&&&%POPP& % gridColorPQ13NSTableHeaderView%  B A  B A&PR &PS14GSTableCornerView%  A A  A A&PT &%% A @ @@ A >PU& % MenuItem15PV& % MenuItem(12)PW& % MenuItem16PX& % MenuItem(9)}PY& % MenuItem17PZ& % MenuItem18P[& % MenuItem(1)^P\& % MenuItem19P] P^&&&%UW2 submenuAction:v12@0:4@8%P_& % MenuItem40P`& % MenuItem41Pa& % MenuItem42dPb& % GormNSBrowser Pc& % MenuItem43iPd& % MenuItem44lPe& % MenuItem(15)Pf& % MenuItem45oPg& % MenuItem46dPh& % MenuItem47Pi&%GormNSTableViewPj0%  B C!  B C!&Pk &%PlPm& &&&&&&&&&&&&&&Pn &Po1Pp&%column1 BP A GPPq2Pr&% B&&&&&&&& &&&&&&%CEPs)Pt&%trois t&&&&&&&& &&&&&&%Pu1Pv&%column2 BT A GPPw2Px&% B&&&&&&&& &&&&&&%CEPy)Pz&%three z&&&&&&&& &&&&&&%OP{3%  B A  B A&P| &P}4%  A A  A A&P~ &%% A @ @@P& % My WindowP& % MenuItem(4)iP&%Menu(0)P& % GormNSPanelP&%MenuItemP&%GormCustomViewGP& % MenuItem(18)P& % MenuItem(10)P& % MenuItem(7)wP& % MenuItem20P P&%DiensteP&&&%UW%PP &P& % MenuItem21rP& % GormNSMenuP&%GormNSPopUpButtonP& % MenuItem22P& % MenuItem23P& % MenuItem24wP& % MenuItem(13)P& % MenuItem25P&%Button4P& % MenuItem26}P& % MenuItem27P& % MenuItem28RP& % MenuItem1P& % MenuItem29rP& % MenuItem(2)aP& % MenuItem2P&%NSOwnerP& % NSApplicationP& % MenuItem3P& % ImageViewP15 NSImageView% CR CP B BH  B BH&P &%P16 NSImageCell&&&&&&&&&&&&&&%%% ? ?P& % MenuItem4P& % MenuItem5P& % TableColumn1uP& % MenuItem6P& % TableColumn2>P& % MenuItem7P& % TableColumn3IP& % MenuItem(16)P& % MenuItem8RP& % MenuItem9[P&%NSServicesMenuP& % MenuItem(5)lP&%Button1;P&%Button2AP&%Button3P& % TextField1P(% CY Bh A  Bh A&P &%P)P&%Address:8&&&&&&&& &&&&&&%P& % TextField2P(% B| Cp C A  C A&P &%P)P&%[Name] &&&&&&&& &&&&&&%P& % TableColumnoP& % TextField3P(% B| CY C A  C A&P &%P±)Pñ&%[Road] &&&&&&&& &&&&&&%Pı& % MenuItem(19)Pű& % TextField4PƱ(% B| CG C A  C A&PDZ &%Pȱ)Pɱ&%[City]&&&&&&&& &&&&&&%Pʱ& % TextField5P˱(% B| C5 C A  C A&P̱ &%Pͱ)Pα& % [Postal Code]&&&&&&&& &&&&&&%Pϱ& % TextField6Pб(% B| C# B A  B A&Pѱ &%Pұ)Pӱ&%[State]&&&&&&&& &&&&&&%PԱ& % MenuItem(11)Pձ& % TextView1Pֱ-% A  C   C &Pױ &  K K C KPر& % TextField7Pٱ& % MenuItem(8)zPڱ&%MatrixP۱& % TextView2Pܱ-% A  B   B &Pݱ &  K K B KPޱ& % TextField8P߱& % TextView3P-% A  B   B &P &  K K B KP& % MenuItem(0)[P& % MenuItem30P& % MenuItem31P &ppP17NSNibConnectorP&%NSOwnerP70P70P70P7 P7bP7ՐP7P7P7P18NSNibOutletConnectorbP& % groupsBrowserP8P&%userViewP19NSNibControlConnectorP&%doCreateGroup:P70P7P7P70P7P7P73P74P70P7P77P7UP7WP7YP97P&%doCreateGroup:P9UP&%doDeleteGroup:P 8bP & % groupsBrowserP 9P &%doCreateGroup:P 7*P7P7P7P7P7P7P7P7P7ېP7ߐP7iP7P7P78P7P7P7P8P & % scrollViewP!8P"&%delegateP#8P$& % editButtonP%8WP&&%editItemP'9P(&%doTogglePersonEditable:P)9P*&%doCreatePerson:P+70P,7P-7P.9P/&%doSaveDatabase:P09WP1& % doEditPerson:P29P3&%doCreatePerson:P47P59P6&%doSetMe:P77P89P9& % doShowMe:P:7P;9P<&%doSelectAllPersons:P=7P>9P?&%doToggleShared:P@8PA& % shareItemPB7PC7%PD72PE7PF7PG7PH9PI&%prefsToggleAutosave:PJ9PK&%prefsChangeAddressLayout:PL8PM&%prefsAutosaveButtonPN8PO&%prefsAddressLayoutPopupPP8PQ& % prefsPanelPR93PS&%doShowPrefsPanel:PT76PU7PV96PW&%doImportPerson:PX9PY&%doExportPerson:PZ7ڐP[7P\7(2P]9ڰP^&%prefsChangeScreenNameLayout:P_8P`&%prefsScreenNameLayoutMatrixPa7Z0Pb7ZPc7Pd7Pe9Pf&%doDuplicatePerson:Pg9Ph&%doMergePersons:Pi8Pj&%duplicatePersonItemPk8Pl&%mergePersonsItemPm8Pn& % thisIsMeItemPo7g0Pp7#gPq7c#Pr7d#Ps7f#Pt9Pu&%NSFirstPv&%orderFrontStandardInfoPanel:Pw9cuPx&%cut:Py9duPz&%copy:P{9fuP|&%paste:P}9g0P~&%submenuAction:P9uP& % saveDocument:P90P&%submenuAction:P+&Addresses-0.5.0/AddressManager/German.lproj/Localizable.strings0000644000175000000240000001570512312144403023705 0ustar multixstaff/*** German.lproj/Localizable.strings updated by make_strings 2003-10-24 09:54:57 +0200 add comments above this one ***/ /*** Strings from Controller.m ***/ /* File: Controller.m:867 */ " (Me)" = " (Ich)"; /* File: Controller.m:251 */ "'%@' cannot be edited because\nthe record is marked as read-only." = "'%@' kann nicht ver\U00e4ndert werden, weil\nder Eintrag als schreibgesch\U00fctzt markiert ist."; /* File: Controller.m:1031 */ "'%@' could not be added to '%@'" = "'%@' konnte nicht der Gruppe '%@' hinzugef\U00fcgt werden"; /* File: Controller.m:632 */ /* File: Controller.m:345 */ "A new person could not be created." = "Die neue Person konnte nicht erstellt werden."; /* File: Controller.m:948 */ /* File: Controller.m:719 */ /* File: Controller.m:959 */ "Addresses" = "Addressen"; /* File: Controller.m:953 */ "Addresses*" = "Addressen*"; /* File: Controller.m:830 */ /* File: Controller.m:829 */ /* File: Controller.m:804 */ /* File: Controller.m:828 */ /* File: Controller.m:855 */ "All" = "Alle"; /* File: Controller.m:533 */ "Can only store a single person\nin files of type %@" = "Kann nur eine einzelne Person\nin Dateien vom Typ %@ speichern."; /* File: Controller.m:524 */ "Cannot export files of type %@" = "Kann Dateien vom Typ %@ nicht exportieren"; /* File: Controller.m:1033 */ "Could not add member!" = "Konnte nicht hinzuf\U00fcgen!"; /* File: Controller.m:665 */ "Could not create group!" = "Gruppe konnte nicht erstellt werden!"; /* File: Controller.m:548 */ "Could not write file %@.\nPermissions error?" = "Konnte Datei %@ nicht speichern.\nUnzureichende Berechtigung?"; /* File: Controller.m:641 */ /* File: Controller.m:354 */ "Couldn't add person" = "Konnte Person nicht hinzuf\U00fcgen"; /* File: Controller.m:631 */ /* File: Controller.m:344 */ "Couldn't create person" = "Konnte Person nicht erstellen"; /* File: Controller.m:1060 */ /* File: Controller.m:715 */ "Couldn't save" = "Speichern nicht m\U00f6glich"; /* File: Controller.m:687 */ "Delete Group?" = "Gruppe l\U00f6schen?"; /* File: Controller.m:386 */ "Delete Person?" = "Person l\U00f6schen?"; /* File: Controller.m:394 */ "Delete Persons?" = "Personen l\U00f6schen?"; /* File: Controller.m:807 */ /* File: Controller.m:815 */ "Disallowed" = "Nicht erlaubt"; /* File: Controller.m:274 */ "Discard Person?" = "Person verwerfen?"; /* File: Controller.m:926 */ /* File: Controller.m:601 */ "Do not share these people" = "Nicht freigeben"; /* File: Controller.m:928 */ /* File: Controller.m:603 */ "Do not share this person" = "Nicht freigeben"; /* File: Controller.m:384 */ "Do you really want to delete %@ from \"All\" and all groups?" = "M\U00f6chten Sie %@ wirklich aus \"Alle\" und allen Gruppen l\U00f6schen?"; /* File: Controller.m:392 */ "Do you really want to delete the %d selected persons from \"All\" and all groups?" = "M\U00f6chten Sie wirklich die %d ausgew\U00e4hlten Personen aus \"Alle\" und allen Gruppen l\U00f6schen?"; /* File: Controller.m:685 */ "Do you really want to delete the group '%@'?" = "M\U00f6chten Sie die Gruppe '%@' wirklich l\U00f6schen?"; /* File: Controller.m:461 */ "Don't insert" = "Nicht importieren"; /* File: Controller.m:1054 */ "Don't quit" = "Nicht beenden"; /* File: Controller.m:281 */ "Edit Person" = "Person bearbeiten"; /* File: Controller.m:254 */ "Edit person" = "Person bearbeiten"; /* File: Controller.m:259 */ "End editing" = "Bearbeitung beenden"; /* File: Controller.m:665 */ /* File: Controller.m:696 */ "Error" = "Fehler"; /* File: Controller.m:113 */ /* File: Controller.m:112 */ /* File: Controller.m:747 */ "Everything" = "Komplett"; /* File: Controller.m:459 */ "Existing person?" = "Existierende Person?"; /* File: Controller.m:503 */ "Export %d records to..." = "%d Datens\U00e4tze exportieren..."; /* File: Controller.m:507 */ "Export '%@' to..." = "'%@' exportieren..."; /* File: Controller.m:59 */ "Group" = "Gruppe"; /* File: Controller.m:428 */ "Import..." = "Importieren..."; /* File: Controller.m:460 */ "Insert anyway" = "Trotzdem importieren"; /* File: Controller.m:535 */ /* File: Controller.m:526 */ "Invalid File Type" = "Ung\U00fcltiger Dateityp"; /* File: Controller.m:60 */ "Name" = "Name"; /* File: Controller.m:663 */ "New Group" = "Neue Gruppe"; /* File: Controller.m:994 */ "New Person" = "Neue Person"; /* File: Controller.m:277 */ /* File: Controller.m:688 */ /* File: Controller.m:397 */ "No" = "Nein"; /* File: Controller.m:666 */ /* File: Controller.m:717 */ /* File: Controller.m:1062 */ /* File: Controller.m:526 */ /* File: Controller.m:357 */ /* File: Controller.m:346 */ /* File: Controller.m:696 */ /* File: Controller.m:644 */ /* File: Controller.m:633 */ /* File: Controller.m:550 */ /* File: Controller.m:1034 */ /* File: Controller.m:810 */ /* File: Controller.m:252 */ /* File: Controller.m:535 */ /* File: Controller.m:821 */ "OK" = "OK"; /* File: Controller.m:1053 */ "Quit without saving" = "Beenden ohne Speichern"; /* File: Controller.m:248 */ "Read-Only Person" = "Nur-Lesbarer Datensatz"; /* File: Controller.m:460 */ "Replace" = "Ersetzen"; /* File: Controller.m:1050 */ "Save Changes?" = "\U00c4nderungen speichern?"; /* File: Controller.m:1053 */ "Save and Quit" = "Speichern und beenden"; /* File: Controller.m:933 */ /* File: Controller.m:608 */ "Share these people" = "Freigeben"; /* File: Controller.m:935 */ /* File: Controller.m:610 */ "Share this person" = "Freigeben"; /* File: Controller.m:1061 */ /* File: Controller.m:716 */ "The database could not be saved!" = "Die Datenbank konnte nicht gespeichert werden!"; /* File: Controller.m:694 */ "The group '%@` could not be deleted." = "Die Gruppe '%@` konnte nicht gel\U00f6scht werden."; /* File: Controller.m:643 */ /* File: Controller.m:356 */ "The newly created person could not be\nadded to this group." = "Die neue Person konnte dieser Gruppe\nnicht hinzugef\U00fcgt werden."; /* File: Controller.m:276 */ "The person you have edited has no first or last\nnames. Would you like to discard this person?" = "Die Person, die Sie bearbeitet haben, hat keinen\nVor- oder Nachnamen. M\U00f6chten Sie sie verwerfen?"; /* File: Controller.m:457 */ "Trying to import person named '%@',\nwhich already exists in the database." = "Eine Person namens '%@' soll importiert werden.\nDieser Name existiert bereits in der Datenbank."; /* File: Controller.m:550 */ "Write Failed" = "Speichern fehlgeschlagen"; /* File: Controller.m:688 */ /* File: Controller.m:397 */ /* File: Controller.m:277 */ "Yes" = "Ja"; /* File: Controller.m:809 */ "You cannot rename a group to \"All\",\nsince that name is reserved by the system." = "Sie k\U00f6nnen keine Gruppe in \"Alle\" umbenennen,\nweil dieser Name vom System reserviert ist."; /* File: Controller.m:820 */ "You cannot rename this group to \"%@\",\nsince a group of that name already exists." = "Sie k\U00f6nnen diese Gruppe nicht in \"%@\" umbenennen,\nweil eine Gruppe mit diesem Namen bereits existiert."; /* File: Controller.m:1052 */ "You have made changes to the database.\nShould these changes be saved?" = "Sie haben die Datenbank ver\U00e4ndert.\nSollen die \U00c4nderungen gespeichert werden?"; Addresses-0.5.0/AddressManager/German.lproj/ISOCountryCodes.dict0000644000175000000240000000010412312144403023675 0ustar multixstaff{ de = Deutschland; nl = Niederlande; sk = Slovakei; us = USA; }Addresses-0.5.0/AddressManager/shared_obj/0000755000175000000240000000000012312144404017604 5ustar multixstaffAddresses-0.5.0/AddressManager/shared_obj/Controller.d0000644000175000000240000006224612312144404022106 0ustar multixstaffshared_obj/Controller.o: Controller.m \ /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h \ /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h \ /usr/GNUstep/System/Library/Headers/GSConfig.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSException.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSData.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSError.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h \ /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSText.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h \ /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h \ ../Frameworks/AddressView/ADPersonView.h \ ../Frameworks/Addresses/Addresses.h \ ../Frameworks/Addresses/ADAddressBook.h \ ../Frameworks/Addresses/ADTypedefs.h \ ../Frameworks/Addresses/ADGlobals.h \ ../Frameworks/Addresses/ADConverter.h \ ../Frameworks/Addresses/ADRecord.h \ ../Frameworks/Addresses/ADEnvelopeAddressBook.h \ ../Frameworks/Addresses/ADGroup.h ../Frameworks/Addresses/ADPerson.h \ ../Frameworks/Addresses/ADSearchElement.h \ ../Frameworks/Addresses/ADImageLoading.h \ ../Frameworks/Addresses/ADLocalAddressBook.h \ ../Frameworks/Addresses/ADMultiValue.h \ ../Frameworks/Addresses/ADPListConverter.h \ ../Frameworks/Addresses/ADPlugin.h \ ../Frameworks/Addresses/ADPublicAddressBook.h \ ../Frameworks/Addresses/ADVCFConverter.h \ ../Frameworks/AddressView/ADPersonPropertyView.h Controller.h \ DragDropMatrix.h /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h: /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h: /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h: /usr/GNUstep/System/Library/Headers/GSConfig.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h: /usr/GNUstep/System/Library/Headers/Foundation/NSString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h: /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h: /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h: /usr/GNUstep/System/Library/Headers/Foundation/NSException.h: /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSData.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h: /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h: /usr/GNUstep/System/Library/Headers/Foundation/NSError.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h: /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h: /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h: /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h: /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h: /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSText.h: /usr/GNUstep/System/Library/Headers/AppKit/NSView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h: /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h: /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h: /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h: /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h: /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h: /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h: ../Frameworks/AddressView/ADPersonView.h: ../Frameworks/Addresses/Addresses.h: ../Frameworks/Addresses/ADAddressBook.h: ../Frameworks/Addresses/ADTypedefs.h: ../Frameworks/Addresses/ADGlobals.h: ../Frameworks/Addresses/ADConverter.h: ../Frameworks/Addresses/ADRecord.h: ../Frameworks/Addresses/ADEnvelopeAddressBook.h: ../Frameworks/Addresses/ADGroup.h: ../Frameworks/Addresses/ADPerson.h: ../Frameworks/Addresses/ADSearchElement.h: ../Frameworks/Addresses/ADImageLoading.h: ../Frameworks/Addresses/ADLocalAddressBook.h: ../Frameworks/Addresses/ADMultiValue.h: ../Frameworks/Addresses/ADPListConverter.h: ../Frameworks/Addresses/ADPlugin.h: ../Frameworks/Addresses/ADPublicAddressBook.h: ../Frameworks/Addresses/ADVCFConverter.h: ../Frameworks/AddressView/ADPersonPropertyView.h: Controller.h: DragDropMatrix.h: Addresses-0.5.0/AddressManager/shared_obj/main.d0000644000175000000240000005676612312144404020721 0ustar multixstaffshared_obj/main.o: main.m \ /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h \ /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h \ /usr/GNUstep/System/Library/Headers/GSConfig.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSException.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSData.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSError.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h \ /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSText.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h \ /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h: /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h: /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h: /usr/GNUstep/System/Library/Headers/GSConfig.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h: /usr/GNUstep/System/Library/Headers/Foundation/NSString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h: /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h: /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h: /usr/GNUstep/System/Library/Headers/Foundation/NSException.h: /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSData.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h: /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h: /usr/GNUstep/System/Library/Headers/Foundation/NSError.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h: /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h: /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h: /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h: /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h: /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSText.h: /usr/GNUstep/System/Library/Headers/AppKit/NSView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h: /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h: /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h: /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h: /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h: /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h: /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h: Addresses-0.5.0/AddressManager/shared_obj/DragDropMatrix.d0000644000175000000240000006255412312144404022654 0ustar multixstaffshared_obj/DragDropMatrix.o: DragDropMatrix.m \ /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h \ /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h \ /usr/GNUstep/System/Library/Headers/GSConfig.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h \ /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSException.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSData.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSError.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h \ /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h \ /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSText.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h \ /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h \ /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h \ /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h \ /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h \ ../Frameworks/AddressView/AddressView.h \ ../Frameworks/Addresses/Addresses.h \ ../Frameworks/Addresses/ADAddressBook.h \ ../Frameworks/Addresses/ADTypedefs.h \ ../Frameworks/Addresses/ADGlobals.h \ ../Frameworks/Addresses/ADConverter.h \ ../Frameworks/Addresses/ADRecord.h \ ../Frameworks/Addresses/ADEnvelopeAddressBook.h \ ../Frameworks/Addresses/ADGroup.h ../Frameworks/Addresses/ADPerson.h \ ../Frameworks/Addresses/ADSearchElement.h \ ../Frameworks/Addresses/ADImageLoading.h \ ../Frameworks/Addresses/ADLocalAddressBook.h \ ../Frameworks/Addresses/ADMultiValue.h \ ../Frameworks/Addresses/ADPListConverter.h \ ../Frameworks/Addresses/ADPlugin.h \ ../Frameworks/Addresses/ADPublicAddressBook.h \ ../Frameworks/Addresses/ADVCFConverter.h \ ../Frameworks/AddressView/ADPersonView.h \ ../Frameworks/AddressView/ADPersonPropertyView.h \ ../Frameworks/AddressView/ADSinglePropertyView.h Controller.h \ DragDropMatrix.h /usr/GNUstep/System/Library/Headers/AppKit/AppKit.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSVersion.h: /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/GSObjCRuntime.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/objc-gnu2next.h: /usr/GNUstep/System/Library/Headers/Foundation/NSZone.h: /usr/GNUstep/System/Library/Headers/GSConfig.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDebug.h: /usr/GNUstep/System/Library/Headers/Foundation/NSObject.h: /usr/GNUstep/System/Library/Headers/GNUstepBase/preface.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProcessInfo.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSGeometry.h: /usr/GNUstep/System/Library/Headers/Foundation/NSString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRange.h: /usr/GNUstep/System/Library/Headers/Foundation/NSArray.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDictionary.h: /usr/GNUstep/System/Library/Headers/Foundation/NSEnumerator.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/Foundation/NSAutoreleasePool.h: /usr/GNUstep/System/Library/Headers/Foundation/NSBundle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSByteOrder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCalendarDate.h: /usr/GNUstep/System/Library/Headers/Foundation/NSCharacterSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSClassDescription.h: /usr/GNUstep/System/Library/Headers/Foundation/NSException.h: /usr/GNUstep/System/Library/Headers/Foundation/NSConnection.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSRunLoop.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMapTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDateFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSData.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSerialization.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimalNumber.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDecimal.h: /usr/GNUstep/System/Library/Headers/Foundation/NSValue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistantObject.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProxy.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSDistributedNotificationCenter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSLock.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotification.h: /usr/GNUstep/System/Library/Headers/Foundation/NSError.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSFileManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHashTable.h: /usr/GNUstep/System/Library/Headers/Foundation/NSHost.h: /usr/GNUstep/System/Library/Headers/Foundation/NSIndexSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSInvocation.h: /usr/GNUstep/System/Library/Headers/Foundation/NSMethodSignature.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyValueCoding.h: /usr/GNUstep/System/Library/Headers/Foundation/NSKeyedArchiver.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPropertyList.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNotificationQueue.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNull.h: /usr/GNUstep/System/Library/Headers/Foundation/NSNumberFormatter.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPathUtilities.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortCoder.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortMessage.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPort.h: /usr/GNUstep/System/Library/Headers/Foundation/NSPortNameServer.h: /usr/GNUstep/System/Library/Headers/Foundation/NSProtocolChecker.h: /usr/GNUstep/System/Library/Headers/Foundation/NSScanner.h: /usr/GNUstep/System/Library/Headers/Foundation/NSSet.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTask.h: /usr/GNUstep/System/Library/Headers/Foundation/NSThread.h: /usr/GNUstep/System/Library/Headers/Foundation/NSTimeZone.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURL.h: /usr/GNUstep/System/Library/Headers/Foundation/NSURLHandle.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUndoManager.h: /usr/GNUstep/System/Library/Headers/Foundation/NSUserDefaults.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphics.h: /usr/GNUstep/System/Library/Headers/AppKit/NSGraphicsContext.h: /usr/GNUstep/System/Library/Headers/AppKit/AppKitDefines.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSMethodTable.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFont.h: /usr/GNUstep/System/Library/Headers/AppKit/NSActionCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSText.h: /usr/GNUstep/System/Library/Headers/AppKit/NSView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSResponder.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInterfaceStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellProtocol.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStringDrawing.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAttributedString.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSAffineTransform.h: /usr/GNUstep/System/Library/Headers/AppKit/NSApplication.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBezierPath.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBitmapImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowser.h: /usr/GNUstep/System/Library/Headers/AppKit/NSControl.h: /usr/GNUstep/System/Library/Headers/AppKit/NSBrowserCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCachedImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSClipView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorList.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicking.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorWell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMatrix.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibDeclarations.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEvent.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSlider.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSliderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSplitView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSColorPicker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBox.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSComboBoxCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextFieldCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCursor.h: /usr/GNUstep/System/Library/Headers/AppKit/NSCustomImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLink.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDataLinkPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocument.h: /usr/GNUstep/System/Library/Headers/AppKit/NSUserInterfaceValidation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDocumentController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDragging.h: /usr/GNUstep/System/Library/Headers/AppKit/NSEPSImageRep.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFontPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSForm.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFormCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSHelpPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSImageView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenu.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuItemCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSMenuView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScreen.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNibLoading.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOpenPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSavePanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSOutlineView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPageLayout.h: /usr/GNUstep/System/Library/Headers/AppKit/NSParagraphStyle.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPasteboard.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButton.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPopUpButtonCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrinter.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintInfo.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintOperation.h: /usr/GNUstep/System/Library/Headers/AppKit/NSPrintPanel.h: /usr/GNUstep/System/Library/Headers/AppKit/NSProgressIndicator.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScroller.h: /usr/GNUstep/System/Library/Headers/AppKit/NSScrollView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSecureTextField.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSelection.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSound.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellChecker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSSpellServer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSStepperCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableColumn.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderCell.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTableHeaderView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTabViewItem.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSInputManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextAttachment.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWorkspace.h: /usr/GNUstep/System/Library/Headers/AppKit/NSDrawer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSFileWrapper.h: /usr/GNUstep/System/Library/Headers/AppKit/NSLayoutManager.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSLayoutManager.h: /usr/GNUstep/System/Library/Headers/AppKit/NSNib.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerMarker.h: /usr/GNUstep/System/Library/Headers/AppKit/NSRulerView.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextContainer.h: /usr/GNUstep/System/Library/Headers/AppKit/NSTextStorage.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindowController.h: /usr/GNUstep/System/Library/Headers/AppKit/NSWindow+Toolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbar.h: /usr/GNUstep/System/Library/Headers/GNUstepGUI/GSToolbar.h: /usr/GNUstep/System/Library/Headers/AppKit/NSToolbarItem.h: /usr/GNUstep/System/Library/Headers/AppKit/PSOperators.h: /usr/GNUstep/System/Library/Headers/AppKit/DPSOperators.h: ../Frameworks/AddressView/AddressView.h: ../Frameworks/Addresses/Addresses.h: ../Frameworks/Addresses/ADAddressBook.h: ../Frameworks/Addresses/ADTypedefs.h: ../Frameworks/Addresses/ADGlobals.h: ../Frameworks/Addresses/ADConverter.h: ../Frameworks/Addresses/ADRecord.h: ../Frameworks/Addresses/ADEnvelopeAddressBook.h: ../Frameworks/Addresses/ADGroup.h: ../Frameworks/Addresses/ADPerson.h: ../Frameworks/Addresses/ADSearchElement.h: ../Frameworks/Addresses/ADImageLoading.h: ../Frameworks/Addresses/ADLocalAddressBook.h: ../Frameworks/Addresses/ADMultiValue.h: ../Frameworks/Addresses/ADPListConverter.h: ../Frameworks/Addresses/ADPlugin.h: ../Frameworks/Addresses/ADPublicAddressBook.h: ../Frameworks/Addresses/ADVCFConverter.h: ../Frameworks/AddressView/ADPersonView.h: ../Frameworks/AddressView/ADPersonPropertyView.h: ../Frameworks/AddressView/ADSinglePropertyView.h: Controller.h: DragDropMatrix.h: Addresses-0.5.0/AddressManager/English.lproj/0000755000175000000240000000000012312144404020222 5ustar multixstaffAddresses-0.5.0/AddressManager/English.lproj/AddressManager.gorm/0000755000175000000240000000000012312144404024045 5ustar multixstaffAddresses-0.5.0/AddressManager/English.lproj/AddressManager.gorm/Add.tiff0000644000175000000240000000174612312144404025417 0ustar multixstaffII*&&&JYYYxxx鄄xxxYYY&&&JNNNNNNNNNNNN&&&J&&&JYYYYYYxxx鄄xxx鄄xxx鄄xxxYYYYYY&&&J&&&JNNNNNNNNNNNN&&&JYYYxxx鄄xxxYYY&&&J   -@(R/home/giesler/Source/GNUstep/Contax/Add.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/English.lproj/AddressManager.gorm/data.classes0000644000175000000240000000326312312144404026341 0ustar multixstaff{ "## Comment" = "Do NOT change this file, Gorm maintains it"; ContactView = { Actions = ( ); Outlets = ( ); Super = NSView; }; Controller = { Actions = ( "doEditPerson:", "doTogglePersonEditable:", "doCreatePerson:", "doDeletePerson:", "doImportPerson:", "doExportPerson:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doToggleShared:", "doDuplicatePerson:", "doMergePersons:", "doCreateGroup:", "doDeleteGroup:", "doSaveDatabase:", "doShowPrefsPanel:", "prefsToggleAutosave:", "prefsChangeAddressLayout:", "prefsChangeScreenNameLayout:" ); Outlets = ( personView, scrollView, clipView, groupsBrowser, servicesMenu, editButton, editItem, shareItem, mergePersonsItem, duplicatePersonItem, thisIsMeItem, prefsPanel, prefsAutosaveButton, prefsAddressLayoutPopup, prefsScreenNameLayoutMatrix, lastCell ); Super = NSObject; }; FirstResponder = { Actions = ( "orderFrontFontPanel:", "doCreateGroup:", "doCreatePerson:", "doRenameGroup:", "doDeleteGroup:", "doBrowserClick:", "doImportPerson:", "doDeletePerson:", "doTogglePersonEditable:", "doEditPerson:", "doSaveDatabase:", "doSetMe:", "doShowMe:", "doSelectAllPersons:", "doExportPerson:", "doToggleShared:", "doToggleAutosave:", "doChangeAddressLayout:", "prefsChangeAddressLayout:", "prefsToggleAutosave:", "doShowPrefsPanel:", "prefsChangeScreenNameLayout:", "doDuplicatePerson:", "doMergePersons:" ); Super = NSObject; }; }Addresses-0.5.0/AddressManager/English.lproj/AddressManager.gorm/objects.gorm0000644000175000000240000006165412312144404026400 0ustar multixstaffGNUstep archive0000300d:00000038:000002c9:00000005:01GSNibContainer1NSObject01 NSMutableSet1NSSet&01NSMenu01NSString& % Addresses01NSMutableArray1NSArray&01 NSMenuItem0&%Info0&&&%0 1 NSImage0 1 NSMutableString&%common_2DCheckMark0 0 & % common_2DDash2 submenuAction:v12@0:4@8%0 0&0 0& % Info Panel...0&&&% %0 0&%Preferences...0&%,&&% %0 0&%Help...0&%?&&% %0 0&%Person0&&&% %00&  0 0&%New0&%n&&% %0 0!&%Edit0"&%e&&% %0# 0$&%Delete0%&%d&&% %0& 0'& % Select all0(&%a&&% %0) 0*& % Duplicate0+&&&% %0, 0-&%Merge0.&&&% %0/ 00& % This is me01&&&% %02 03&%Show me04&%M&&% %05 06&%Share this Person07&%S&&% %08 09&%Edit0:&&&% %0;90<&0= 0>&%Cut0?&%x&&% %0@ 0A&%Copy0B&%c&&% %0C 0D&%Paste0E&%v&&% 2 paste:@12@0:4@8%0F 0G&%Database0H&&&% %0IG0J&0K 0L&%Save...0M&%s&&% %0N 0O& % Import...0P&%I&&% %0Q 0R& % Export...0S&%E&&% %0T 0U&%Group0V&&&% %0WU0X&0Y 0Z&%New0[&%N&&% %0\ 0]&%Delete0^&%D&&% %0_ 0`&%Services0a&&&% %0b`0c&0d 0e&%Hide0f&%h&&% %0g 0h&%Quit0i&%q&&% %0j1 GSNibItem0k& % Controller  &0l1 GSWindowTemplate1GSClassSwapper0m&% NSPanel1NSPanel1NSWindow1 NSResponder% ? A C C& % C D90n1NSView% ? A C C  C C&0o&0p1 NSTabView% A A  C C  C C&0q&0r% ? ? C Co  C Co&0s&0t1NSButton1 NSControl% A A  CK A  CK A&0u&%0v1 NSButtonCell1 NSActionCell1NSCell0w&%Save all changes immediately0x 0y &%common_SwitchOff0z1NSFont%&&&&&&&&&&&&&&%0{&0|&0} 0~ &%common_SwitchOn&&& &&01NSBox% A B C B  C B&0&0% @ @ C B  C B&0&01 NSPopUpButton% C @ B A  B A&0&%01NSPopUpButtonCell1NSMenuItemCell0&z&&&&&&&&00&0&0 0&%Item 10&&&%0 0& %  common_Nibble%0 0&%Item 2&&%%0 0&%Item 3&&%%&&&&&&%0&0&&&& &&%%%%%01 NSTextField% @ C A  C A&0&%01NSTextFieldCell0&%Default address layoutz&&&&&&&& &&&&&&%01 NSColor0&% NSNamedColorSpace0&%System0&%textBackgroundColor0 0& % textColor0% B, C B  C B&0&%00&%Person name layoutz&&&&&&&& &&&&&&%01!NSMatrix% C B C B  C B&0&%00&z&&&&&&&&&&&&&&%% C A 0 0&% System0&% controlBackgroundColor0& % NSButtonCell00&%Radio0 0 &%common_RadioOffz&&&&&&&&&&&&&&%0&0&0 0 &%common_RadioOn&&& &&%%0&00& % Doe, Johnz&&&&&&&&&&&&&&%&&& &&00&%John Doez&&&&&&&&&&&&&&%&&& &&00&%Layoutz&&&&&&&& &&&&&&%0 0&% windowBackgroundColor @ @%%0&01" NSTabViewItem0&%general0&%Generalr%p0"0& % addressbooks0±& % Address Books0ñ% ? ? C Co  C Co&0ı&0ű% A B C A  C A&0Ʊ&%0DZ0ȱ&%Coming soon...0ɱ% A@&&&&&&&& &&&&&&%%pz%%0ʱ&%Window0˱& % Preferences ? A F@ F@%0̱ 0ͱ&% NSApplicationIcon&   D D@0α 0ϱ&% NSWindow% ? A D6 C& % Cd D$0б% ? A D6 C  D6 C&0ѱ&01# NSBrowser% @ B, C C  C C&0ӱ&01$ NSScrollView% @ C+ C  C+ C&0ձ&01% NSClipView% A @ C C  C C&0ױ&0ر!%  C B  C B&0ٱ&%0ڱ0۱&z&&&&&&&&&&&&&&%% C B 0ܱ 0ݱ& %  controlColor0ޱ& % NSBrowserCell01& NSBrowserCell0&0% A@&&&&&&&&&&&&&&%%0&2doClick:2doDoubleClick:01' NSScroller% @ @ A C  A C&0&%0ɐ&&&&&&&&&&&&&&&% A A A A 0$% C/ @ C, C  C, C&0&0%% A @ C C  C C&0&0'% @ @ A C  A C&0&%00&z&&&&&&&&&&&&&&&% A A A A %0&&&&&&&&&&&&&&&0&%NSMatrix0&%/% B0'% @ ? C̀ A  C̀ A&0&%0ɐ&&&&&&&&&&&&&&&2 scrollViaScroller:v12@0:4@8   C+ C0&01(NSBrowserColumn԰%0(%%%0% A A  A A  A A&$0&%00&%+0%&&&&&&&&&&&&&&%0&0&&&& &&0% C9 A  A A  A A&$0&%PP&%+&&&&&&&&&&&&&&%P&P&&&& &&P% C A  B A  B A&$P&%PP&%Editz&&&&&&&&&&&&&&%P&P &&&& &&P 1) GSCustomViewP & % NSScrollView C B( C C&P &%WindowP & % Addresses  D/ C F@ F@%̐&  D D@P&P&P1*NSMutableDictionary1+ NSDictionary&P&%Menu(0)P& % MenuItem33CP& % MenuItem(38)P& % MenuItem34P& % MenuItem(9)#P& % MenuItem358P& % MenuItem36FP& % MenuItem(58)gP& % MenuItem37P& % MenuItem38TP& % MenuItem39_P& % MenuItem(26)P&%TextViewP1, NSTextView1-NSText% A  B   B &P&  K K B KP & % MenuItem(46)5P!&%NSMenuP"& % MenuItem(14)2P#& % MenuItem(34)YP$& % MenuItem(5)NP%& % GormNSMenuP&& % MenuItem(54)QP'& % MenuItem1gP(& % MenuItem(22)P)& % MenuItem2dP*&%Menu(5)WP+& % MenuItem3gP,& % MenuItem4dP-& % MenuItem(42))P.& % MenuItem5gP/&% NSOwnerP0& % NSApplicationP1& % ClipView(0)P2& % MenuItem6P3& % MenuItem(10)&P4& % MenuItem7P5& % ScrollView(1)P6& % MenuItem8P7& % MenuItem9P8& % MenuItem(30))P9& % MenuItem(1)P:& % MenuItem(50)=P;& % MenuItem40dP<& % MenuItem(19)gP=& % MenuItem41gP>&%Menu(1)P?& % MenuItem(39)P@& % MenuItem(27) PA& % MenuItem(47)PB& % TableColumn1PC1. NSTableColumnPD&%column2 BT A GPPE1/NSTableHeaderCellPF&% PG% A@&&&&&&&& &&&&&&%PH PI&% controlShadowColorPJ PK&% windowFrameTextColorPLPM&%threeM&&&&&&&& &&&&&&%PN& % MenuItem(15)5PO& % TableColumn2PP.PQ&%classes BP A GPPR/PS&% G&&&&&&&& &&&&&&%HJPTPU&%NSObjectU&&&&&&&& &&&&&&%PV& % TableColumn3PW.PX&%outlets BT A GPPY/PZ&% G&&&&&&&& &&&&&&%HJP[P\&%1\&&&&&&&& &&&&&&%P]& % MenuItem(35)dP^& % MenuItem(6)QP_& % ButtonCell(0)P`& % MenuItem(55)YPa&%GormCustomView Pb& % MenuItem(23)KPc&%Menu(6)bPd&%View(0)rPe& % MenuItem(43),Pf& % MenuItem(11))Pg& % TableColumnPh.Pi&%column1 BP A GPPj/Pk&% G&&&&&&&& &&&&&&%HJPlPm&%troism&&&&&&&& &&&&&&%Pn& % ClipView(1)Po& % ImageViewPp10 NSImageView% CR CP B BH  B BH&Pq&%Pr11 NSImageCellz&&&&&&&&&&&&&&%%% ? ?Ps& % MenuItem(31),Pt& % MenuItem(2)Pu& % MenuItem(51)@Pv&%Menu(2) Pw& % TextFieldPx% Ap Cp B, A  B, A&Py&%PzP{&%Name:&&&&&&&& &&&&&&%P|& % MenuItem(28)#P}& % MenuItem(48)P~& % MenuItem10P& % MenuItem(16)YP& % MenuItem11P&%GormNSPopUpButtonP& % MenuItem12TP& % MenuItem13NP& % GormNSPanellP& % MenuItem14YP& % MenuItem(36)gP&%Button1P& % MenuItem(7)P& % MenuItem15\P&%Button2P& % MenuItem16 P&%Button3tP& % MenuItem(56)\P& % MenuItem17#P& % ButtonCell(1)P& % MenuItem18_P& % MenuItem19P P&%ServicesP&&&% %PP&P& % MenuItem(24)NP&%View(1)P& % MenuItem(44)/P&%ButtonP& % MenuItem(12),P& % Matrix(0)P!%  C B  C B&P&%PP&z&&&&&&&&&&&&&&%% C B ܰP& % NSBrowserCell%%P&P& % MenuItem(32)/P& % MenuItem(3)=P& % MenuItem(52)KP&%GormNSOutlineViewP12 NSOutlineView13 NSTableView%  B A  B A&P&%PP&ɐ&&&&&&&&&&&&&&P&PWP P& %  gridColorP14NSTableHeaderView%  B A  B A&P&P15GSTableCornerView%  A A  A A&P&%% A @ @@P& A PP& % MenuItem(20)P&%Menu(3);P&%GormNSTableViewP3%  B C!  B C!&P&%PP&ɐ&&&&&&&&&&&&&&P&hCP4%  B A  B A&P&P5%  A A  A A&P&%% A @ @@P&P& % GormNSBrowserP& % MenuItem(40) P±& % TextField1Pñ% CY Bh A  Bh A&Pı&%PűPƱ&%Address:&&&&&&&& &&&&&&%PDZ& % TextField2Pȱ% B| Cp C A  C A&Pɱ&%PʱP˱&%[Name]ɐ&&&&&&&& &&&&&&%P̱& % TextField3Pͱ% B| CY C A  C A&Pα&%PϱPб&%[Road]ɐ&&&&&&&& &&&&&&%Pѱ& % Scroller(0)Pұ& % TextField4Pӱ% B| CG C A  C A&PԱ&%PձPֱ&%[City]z&&&&&&&& &&&&&&%Pױ&%MenuItemdPر& % MenuItem(29)&Pٱ& % TextField5Pڱ% B| C5 C A  C A&P۱&%PܱPݱ& % [Postal Code]z&&&&&&&& &&&&&&%Pޱ& % TextField6P߱% B| C# B A  B A&P&%PP&%[State]z&&&&&&&& &&&&&&%P& % TextField7P& % MenuItem(49)P& % TextField8P& % MenuItem20_P& % MenuItem(17)\P& % MenuItem21FP& % TextField9P&%WindowP&%TabViewpP& % MenuItem22/P&%BoxP& % MenuItem232P& % MenuItem(37)P& % MenuItem24KP& % MenuItem25&P& % MenuItem(8) P& % MenuItem26QP& % MenuItem275P& % MenuItem(57)dP& % MenuItem28)P& % MenuItem(25)QP& % MenuItem29,kjP&%NSServicesMenubP& % MenuItem(45)2P& % MenuItem(13)/P& % GormNSMenu1 P&%MatrixP& % GormNSMenu2WP& % MenuItem(33)5P& % TextView1P,% A  C   C &P&  K K C KP& % TextView2P,% A  B   B &P&  K K B KP& % MenuItem(4)KP& % GormNSMenu4bP& % TextView3P ,% A  B   B &P &  K K B KP & % GormNSMenu5IP & % GormNSMenu6;P & % MenuItem(53)NP& % MenuItem(21)P&%Menu(4)IP& % MenuItem(41)&P& % Scroller(1)P& % ScrollView(0)P& % MenuItem(0)P& % MenuItem308P& % MenuItem31=P& % MenuItem(18)dP& % MenuItem32@P&||P16NSNibConnectorP&% NSOwnerP6!P6!P6!P6P6P 6P!6P"62!P#6>2P$6>P%66!P&66P'6P(6P)6P*6!P+6P,6P-6P.6>P/6>P017NSNibControlConnectorkP1&%doCreateGroup:P27kP3&%doDeleteGroup:P418NSNibOutletConnectorkP5& % groupsBrowserP67kP7&%doCreateGroup:P86wP96P:6ǐP;6̐P<6P=6P>6P?6oP@6PA6PB6PC6PD6gPE6BPF6PG6OPH6VPI6aPJ8kaPK& % scrollViewPL6!PM6PN8kPO&%delegatePP8kPQ& % editButtonPR8kPS&%editItemPT7kPU&%doTogglePersonEditable:PV7kPW&%doCreatePerson:PX6!PY6 PZ6 P[7kP\&%doSaveDatabase:P]7kP^& % doEditPerson:P_7kP`&%doCreatePerson:Pa6>Pb7kPc&%doSetMe:Pd6>Pe7kPf& % doShowMe:Pg6>Ph7kPi&%doToggleShared:Pj8kPk& % shareItemPl6Pm6됐Pn6㐐Po6dPp6Pq6Pr7kPs&%prefsToggleAutosave:Pt7kPu&%prefsChangeAddressLayout:Pv8kPw&%prefsAddressLayoutPopupPx8kPy& % prefsPanelPz7kP{&%doShowPrefsPanel:P|8kP}&%prefsAutosaveButtonP~6 P6 P7kP&%doImportPerson:P7kP&%doExportPerson:P6P6P6dP7kP&%prefsChangeScreenNameLayout:P8kP&%prefsScreenNameLayoutMatrixP6>P6>P6!P6 P6 P6 P6 P6>P7kP&%doSelectAllPersons:P7kP&%doDuplicatePerson:P7kP&%doMergePersons:P8kP&%duplicatePersonItemP8kP&%mergePersonsItemP8kP& % thisIsMeItemP7P&% NSFirstP&%orderFrontStandardInfoPanel:P7P&%cut:P7P& % saveDocument:P7P&%hide:P7P& % terminate:P6P61P7P&%doClick:P61P6P7P& % _doScroll:P65P6n5P65P75P& % _doScroll:P6dP6P6P6P6?P6_P6P7kP&%doDeletePerson:P7P&%copy:P±*&Addresses-0.5.0/AddressManager/English.lproj/Localizable.strings0000644000175000000240000001501412312144404024057 0ustar multixstaff/*** English.lproj/Localizable.strings updated by make_strings 2003-10-24 09:54:57 +0200 add comments above this one ***/ /*** Strings from Controller.m ***/ /* File: Controller.m:867 */ " (Me)" = " (Me)"; /* File: Controller.m:251 */ "'%@' cannot be edited because\nthe record is marked as read-only." = "'%@' cannot be edited because\nthe record is marked as read-only."; /* File: Controller.m:1031 */ "'%@' could not be added to '%@'" = "'%@' could not be added to '%@'"; /* File: Controller.m:632 */ /* File: Controller.m:345 */ "A new person could not be created." = "A new person could not be created."; /* File: Controller.m:948 */ /* File: Controller.m:719 */ /* File: Controller.m:959 */ "Addresses" = "Addresses"; /* File: Controller.m:953 */ "Addresses*" = "Addresses*"; /* File: Controller.m:830 */ /* File: Controller.m:829 */ /* File: Controller.m:804 */ /* File: Controller.m:828 */ /* File: Controller.m:855 */ "All" = "All"; /* File: Controller.m:533 */ "Can only store a single person\nin files of type %@" = "Can only store a single person\nin files of type %@"; /* File: Controller.m:524 */ "Cannot export files of type %@" = "Cannot export files of type %@"; /* File: Controller.m:1033 */ "Could not add member!" = "Could not add member!"; /* File: Controller.m:665 */ "Could not create group!" = "Could not create group!"; /* File: Controller.m:548 */ "Could not write file %@.\nPermissions error?" = "Could not write file %@.\nPermissions error?"; /* File: Controller.m:641 */ /* File: Controller.m:354 */ "Couldn't add person" = "Couldn't add person"; /* File: Controller.m:631 */ /* File: Controller.m:344 */ "Couldn't create person" = "Couldn't create person"; /* File: Controller.m:1060 */ /* File: Controller.m:715 */ "Couldn't save" = "Couldn't save"; /* File: Controller.m:687 */ "Delete Group?" = "Delete Group?"; /* File: Controller.m:386 */ "Delete Person?" = "Delete Person?"; /* File: Controller.m:394 */ "Delete Persons?" = "Delete Persons?"; /* File: Controller.m:807 */ /* File: Controller.m:815 */ "Disallowed" = "Disallowed"; /* File: Controller.m:274 */ "Discard Person?" = "Discard Person?"; /* File: Controller.m:926 */ /* File: Controller.m:601 */ "Do not share these people" = "Do not share these people"; /* File: Controller.m:928 */ /* File: Controller.m:603 */ "Do not share this person" = "Do not share this person"; /* File: Controller.m:384 */ "Do you really want to delete %@ from \"All\" and all groups?" = "Do you really want to delete %@ from \"All\" and all groups?"; /* File: Controller.m:392 */ "Do you really want to delete the %d selected persons from \"All\" and all groups?" = "Do you really want to delete the %d selected persons from \"All\" and all groups?"; /* File: Controller.m:685 */ "Do you really want to delete the group '%@'?" = "Do you really want to delete the group '%@'?"; /* File: Controller.m:461 */ "Don't insert" = "Don't insert"; /* File: Controller.m:1054 */ "Don't quit" = "Don't quit"; /* File: Controller.m:281 */ "Edit Person" = "Edit Person"; /* File: Controller.m:254 */ "Edit person" = "Edit person"; /* File: Controller.m:259 */ "End editing" = "End editing"; /* File: Controller.m:665 */ /* File: Controller.m:696 */ "Error" = "Error"; /* File: Controller.m:113 */ /* File: Controller.m:112 */ /* File: Controller.m:747 */ "Everything" = "Everything"; /* File: Controller.m:459 */ "Existing person?" = "Existing person?"; /* File: Controller.m:503 */ "Export %d records to..." = "Export %d records to..."; /* File: Controller.m:507 */ "Export '%@' to..." = "Export '%@' to..."; /* File: Controller.m:59 */ "Group" = "Group"; /* File: Controller.m:428 */ "Import..." = "Import..."; /* File: Controller.m:460 */ "Insert anyway" = "Insert anyway"; /* File: Controller.m:535 */ /* File: Controller.m:526 */ "Invalid File Type" = "Invalid File Type"; /* File: Controller.m:60 */ "Name" = "Name"; /* File: Controller.m:663 */ "New Group" = "New Group"; /* File: Controller.m:994 */ "New Person" = "New Person"; /* File: Controller.m:277 */ /* File: Controller.m:688 */ /* File: Controller.m:397 */ "No" = "No"; /* File: Controller.m:666 */ /* File: Controller.m:717 */ /* File: Controller.m:1062 */ /* File: Controller.m:526 */ /* File: Controller.m:357 */ /* File: Controller.m:346 */ /* File: Controller.m:696 */ /* File: Controller.m:644 */ /* File: Controller.m:633 */ /* File: Controller.m:550 */ /* File: Controller.m:1034 */ /* File: Controller.m:810 */ /* File: Controller.m:252 */ /* File: Controller.m:535 */ /* File: Controller.m:821 */ "OK" = "OK"; /* File: Controller.m:1053 */ "Quit without saving" = "Quit without saving"; /* File: Controller.m:248 */ "Read-Only Person" = "Read-Only Person"; /* File: Controller.m:460 */ "Replace" = "Replace"; /* File: Controller.m:1050 */ "Save Changes?" = "Save Changes?"; /* File: Controller.m:1053 */ "Save and Quit" = "Save and Quit"; /* File: Controller.m:933 */ /* File: Controller.m:608 */ "Share these people" = "Share these people"; /* File: Controller.m:935 */ /* File: Controller.m:610 */ "Share this person" = "Share this person"; /* File: Controller.m:1061 */ /* File: Controller.m:716 */ "The database could not be saved!" = "The database could not be saved!"; /* File: Controller.m:694 */ "The group '%@` could not be deleted." = "The group '%@` could not be deleted."; /* File: Controller.m:643 */ /* File: Controller.m:356 */ "The newly created person could not be\nadded to this group." = "The newly created person could not be\nadded to this group."; /* File: Controller.m:276 */ "The person you have edited has no first or last\nnames. Would you like to discard this person?" = "The person you have edited has no first or last\nnames. Would you like to discard this person?"; /* File: Controller.m:457 */ "Trying to import person named '%@',\nwhich already exists in the database." = "Trying to import person named '%@',\nwhich already exists in the database."; /* File: Controller.m:550 */ "Write Failed" = "Write Failed"; /* File: Controller.m:688 */ /* File: Controller.m:397 */ /* File: Controller.m:277 */ "Yes" = "Yes"; /* File: Controller.m:809 */ "You cannot rename a group to \"All\",\nsince that name is reserved by the system." = "You cannot rename a group to \"All\",\nsince that name is reserved by the system."; /* File: Controller.m:820 */ "You cannot rename this group to \"%@\",\nsince a group of that name already exists." = "You cannot rename this group to \"%@\",\nsince a group of that name already exists."; /* File: Controller.m:1052 */ "You have made changes to the database.\nShould these changes be saved?" = "You have made changes to the database.\nShould these changes be saved?"; Addresses-0.5.0/AddressManager/English.lproj/ISOCountryCodes.dict0000644000175000000240000000015112312144404024060 0ustar multixstaff{ de = Germany; nl = Netherlands; sk = "Slovak Republic"; us = "United States"; ar = "Argentine"; } Addresses-0.5.0/AddressManager/VCFImage.xcf0000644000175000000240000000613212312144404017571 0ustar multixstaffgimp xcf file@@BB!/ gimp-commentCreated with The GIMPF ? {@@ New Layer#3     R@@f@@v ߆FF  FF   FF FF"$$S@@ New Layer#4      @@@@666@@3PP0 . ,*PP)(@@''''('''@@()PP*, . 0PP3@@ yy   yy###################S@@ New Layer#5     =@@Q@@a```@@3PP0 . ,*PP)(@@''''('''@@()PP*, . 0PP3@@ yy   yy######################H@@ New Layer#2     @@@@>>>Հ30 . ,*)(''''('''()*, . 03Հ2222###################N@@ New Layer      @@ @@ &+ǂ&3579&}8'8}&8-88/8}1}8181 4 45 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5E@@ Background      *@@ >@@ NAddresses-0.5.0/AddressManager/VCFFile.tiff0000644000175000000240000001753012312144404017602 0ustar multixstaffII*___g777Nooo| uutlll}~z __^SIG'"! V(%Иb`SIGSIG. \Ëq]ZA984 "xtҙE=<Y07-,׫ҙɼF><zFQJH篞žҶɼE><V YKIП㵲辺ouuejjdgg_cbltrxջljۨXMK.)(b'YKIП㵲轺nsr`efZ^^abanon^`_eom\d`vtrºǾ¹ݿljۨ/)'p1 YKHП㵲轺_cbUXXUWW^^\fgeXYWahgV\Zhlj}ӛ/)'~=YKHП㵲轺bgd[]Z^_\VWUQSRLNLUVVRVUdhg}}č.)(GYKHП㵲轺fjiorosyvnsskpo`fdSWVGHHRSPhheĿ|}yɊč/)(MYKHП㵲轺uywzyqyzglmdfd~surſ̑kiRHFTXKHП㵲轺~u~krrnpmlll$$$iQPI@?b& XKHП㵲轺}t}honnpmlll<<$ uz̚ݫݫެsssDDD666666666666666666666666666@@@ZZZ``````sss.%$'"!F$vz̚ݫݫެsssBBB666666666666666666666666666<<=Y08.-׫ҙɼG?=zFRKI篞žҶɼF?=V ZLJП㵲辺ouuejjdgg_cbltrxջljۨXMK/*)b'ZLJП㵲轺nsr`efZ^^abanon^`_eom\d`vtrºǾ¹ݿljۨ0*(p1 ZLIП㵲轺_cbUXXUWW^^\fgeXYWahgV\Zhlj}ӛ0*(~=ZLIП㵲轺bgd[]Z^_\VWUQSRLNLUVVRVUdhg}}č/*)GZLIП㵲轺fjiorosyvnsskpo`fdSWVGHHRSPhheĿ|}yɊč0*)MZLIП㵲轺uywzyqyzglmdfdtvsΓljSIGTYLIП㵲轺~u~krrnpmwxv~zzwttpɞljSIG`% YLIП㵲轺}t}honnpmyzxkliec`ľˢljͣvpon. 810П㵲轺}s|}hmkabbyywffdojeڿwtͣvpoy771/П㵲轺sz{hmmab`½~~{]^\vwtڿwt™};810П㵲轺vyys{yþ||yWXVwxt|z™}<810Пݫݬzsttlon}½lliÁ{y<810ݫݫݬ\``JJIJJILLJGHFJLJ{þvwtĿ»urws<810ݫݫݬTVTJJIIIHJJIGHFHJGr|{þz{xĊurws?810ݫݫެ~MMLJJIIIHJJIGHFQSO~~|ȿĿüҭvsha_ D810ݫݫެywtzxuzwtxxvstq~|||}xӭvsha_ O710ݫݫެ⼸nlqjh ]' % ta_ʖݫݫެomxqn i0 %! uz̚ݫݫެom~{}ebKA?t9% vz̚ݫݫެpn~{}ebJB@D%! wz̚ݫݫݬభ٧ɘɘکݸǒ~{RJIQ% xz̚ݫѠurljljljljljljKIECECECECECECECECZXŎ׽zwIGECECECECECECKIljfdUSRJIZ$% xa_lj^\ECECECECECECECECECFDSIGSIGSIGSIG~FDECECECECECxGESIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGKA?]&% xSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGSIGS"3mzd? %Qr}zlZOJJJJJJJJJJJJJJG9$.AHJJJJJJJJJJJJJJJJJJJIE9+#   0( @(RContacts.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/VCFImage.tiff0000644000175000000240000001053012312144404017736 0ustar multixstaffII*sBQs~yyyyyyyyyyyyyyyyyyyz(w &Z! &%D~H###111444333+++k%yJ444===>>>>>>>>>>>>999((( y 9111>>>>>>>>>>>>>>>>>>>>><<<~ yy%%%<<<>>>>>>>>>>>>>>>>>>>>>>>>666Cyy ,///===>>>>>>>>>>>>>>>>>>>>>>>>;;;xyy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy***===>>>>>>>>>>>>>>>>>>>>>>>>888^yyj999>>>>>>>>>>>>>>>>>>>>>>>>,,,!yy###===>>>>>>>>>>>>>>>===777Ayy''';;;>>>>>>>>>===333Xyy -r Syy#mxyyyyyyyyyyyyuTyy###;;;===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>===777:yy#222>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tyy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &y} *222<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<222* }}yy yy}   D2@HP(R/home/giesler/Source/GNUstep/Addresses/AddressManager/VCFImage.tiffCreated with The GIMPHHAddresses-0.5.0/AddressManager/Controller.h0000644000175000000240000000347612312144404020012 0ustar multixstaff/* This is -*- ObjC -*- */ #include #include @interface Controller : NSObject { NSFileManager *_fm; NSArray *_peopleCache; ADGroup *_currentGroup; ADAddressBook *_book; id personView, scrollView, clipView; id groupsBrowser; id servicesMenu; id editButton, editItem, shareItem; id mergePersonsItem; id duplicatePersonItem; id thisIsMeItem; id prefsPanel; id prefsAutosaveButton; id prefsAddressLayoutPopup; id prefsScreenNameLayoutMatrix; id lastCell; BOOL _changed, _selfChanging; BOOL _selectedByDrop; NSDictionary *_countryCodeDict; } - (void) createCache; - (NSArray *) groupNames; - (void) selectGroup: (ADGroup*) group; - (void) selectPerson: (ADPerson*) person; - (void) deletePersonAndSelectNext: (ADPerson*) person; - (void) beginEditingPerson: (ADPerson*) person; - (void) finishEditingPerson; - (void) doEditPerson: (id) sender; - (void) doTogglePersonEditable: (id) sender; - (void) doCreatePerson: (id) sender; - (IBAction) doDeletePerson: (id) sender; - (void) doImportPerson: (id) sender; - (void) doExportPerson: (id) sender; - (void) doSetMe: (id) sender; - (void) doShowMe: (id) sender; - (void) doSelectAllPersons: (id) sender; - (void) doToggleShared: (id) sender; - (void) doDuplicatePerson: (id) sender; - (void) doMergePersons: (id) sender; - (void) doCreateGroup: (id) sender; - (void) doDeleteGroup: (id) sender; - (void) doSaveDatabase: (id) sender; - (void) initPrefsPanel; - (void) doShowPrefsPanel: (id) sender; - (void) prefsToggleAutosave: (id) sender; - (void) prefsChangeAddressLayout: (id) sender; - (void) prefsChangeScreenNameLayout: (id) sender; - (void) handleDatabaseChanged: (NSNotification*) note; - (void) handleDatabaseChangedExternally: (NSNotification*) note; - (void) handleNameChanged: (NSNotification*) note; @end Addresses-0.5.0/AddressManager/GNUmakefile.preamble0000644000175000000240000000165612312144404021354 0ustar multixstaff# Additional flags to pass to the preprocessor ADDITIONAL_CPPFLAGS += # Additional flags to pass to the Objective-C compiler ADDITIONAL_OBJCFLAGS += -Wall # Additional flags to pass to the C compiler ADDITIONAL_CFLAGS += -Wall # Additional include directories the compiler should search ADDITIONAL_INCLUDE_DIRS += # Additional LDFLAGS to pass to the linker ADDITIONAL_LDFLAGS += # Additional library directories the linker should search ADDITIONAL_LIB_DIRS += -L../Frameworks/Addresses/Addresses.framework \ -L../Frameworks/AddressView/AddressView.framework # Additional libraries # GNUstepWeb ADDITIONAL_GSW_LIBS += # GUI apps ADDITIONAL_GUI_LIBS += -lAddresses -lAddressView # Libraries ADDITIONAL_LIBRARY_LIBS += # ObjC stuff ADDITIONAL_OBJC_LIBS += # Tools ADDITIONAL_TOOL_LIBS += # WebObjects ADDITIONAL_WO_LIBS += # Additional directories to be created during installation ADDITIONAL_INSTALL_DIRS += Addresses-0.5.0/AddressManager/DragDropMatrix.h0000644000175000000240000000261512312144404020550 0ustar multixstaff/* This is -*- ObjC -*-) DragDropMatrix.h \author: Bjrn Giesler A Matrix that allows drag and drop between its cells $Author: buzzdee $ $Locker: $ $Revision: 1.2 $ $Date: 2013/02/11 10:08:40 $ */ #ifndef DRAGDROPMATRIX_H #define DRAGDROPMATRIX_H /* system includes */ /* (none) */ /* my includes */ /* (none) */ @interface DragDropMatrix: NSMatrix { NSBrowserCell *oldCell, *curCell; NSRect oldFrame; NSInteger groupRow; BOOL _didDrag; SEL _shouldSel, _didSel; } - (BOOL) acceptsFirstMouse: (NSEvent *) event; - (void) copyToPasteboard: (NSPasteboard *) pb; - (void) mouseDown: (NSEvent *) event; - (void) mouseDragged: (NSEvent *) event; - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) local; - (void) draggingExited: (id) sender; - (NSDragOperation) draggingUpdated: (id) sender; - (BOOL) prepareForDragOperation: (id) sender; - (BOOL) performDragOperation: (id) sender; - (NSImage*) draggingImage; @end @interface NSObject (DragDropMatrixDelegate) - (NSDragOperation) dragDropMatrix: (DragDropMatrix*) matrix shouldAcceptDropFromSender: (id) sender onCell: (NSCell*) cell; - (BOOL) dragDropMatrix: (DragDropMatrix*) matrix didAcceptDropFromSender: (id) sender onCell: (NSCell*) cell; @end #endif /* DRAGDROPMATRIX_H */ Addresses-0.5.0/AddressManager/Controller.m0000644000175000000240000011205514746005571020027 0ustar multixstaff#import #import "AddressView/ADPersonView.h" #import "Controller.h" #import "DragDropMatrix.h" @interface ADAddressBook (AddressManagerAdditions) - (ADPerson*) personWithFirstName: (NSString*) first lastName: (NSString*) last; @end @implementation ADAddressBook (AddressManagerAdditions) - (ADPerson*) personWithFirstName: (NSString*) first lastName: (NSString*) last { NSEnumerator *e; ADPerson *p; e = [[self people] objectEnumerator]; while((p = [e nextObject])) if([[p valueForProperty: ADFirstNameProperty] isEqualToString: first] && [[p valueForProperty: ADLastNameProperty] isEqualToString: last]) return p; return nil; } @end @interface Controller (Private) - (void) browserAction: (id) sender; @end @implementation Controller - (void) applicationDidFinishLaunching: (NSNotification*) note { NSUserDefaults *def; NSString *uid; [NSApp registerServicesMenuSendTypes: [NSArray arrayWithObjects: NSStringPboardType, nil] returnTypes: nil]; servicesMenu = [[[NSApp mainMenu] itemWithTitle: @"Services"] submenu]; [NSApp setServicesMenu: servicesMenu]; def = [NSUserDefaults standardUserDefaults]; uid = [def stringForKey: @"SelectedGroup"]; if(uid && ![uid isEqualToString: @"None"]) [self selectGroup: (ADGroup*) [_book recordForUniqueId: uid]]; else [self selectGroup: nil]; uid = [def stringForKey: @"SelectedPerson"]; if(uid && ![uid isEqualToString: @"None"]) [self selectPerson: (ADPerson*)[_book recordForUniqueId: uid]]; else [groupsBrowser selectRow: 0 inColumn: 1]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleDatabaseChanged:) name: ADDatabaseChangedNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleDatabaseChangedExternally:) name: ADDatabaseChangedExternallyNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector: @selector(handleNameChanged:) name: ADPersonNameChangedNotification object: nil]; } - (void) awakeFromNib { NSString *filename; _fm = [NSFileManager defaultManager]; _book = [ADAddressBook sharedAddressBook]; _selfChanging = NO; _selectedByDrop = NO; if(!_book) { NSRunAlertPanel(_(@"No Address Book"), _(@"[ADAddressBook sharedAddressBook] returned nil.\n" @"Configuration broken?"), _(@"OK"), nil, nil, nil); exit(-1); } [[groupsBrowser window] setFrameAutosaveName: @"Addresses"]; [[groupsBrowser window] setFrameUsingName: @"Addresses"]; [prefsPanel setFrameAutosaveName: @"Preferences"]; [prefsPanel setFrameUsingName: @"Preferences"]; [groupsBrowser setAllowsEmptySelection: NO]; [groupsBrowser setAllowsMultipleSelection: YES]; [groupsBrowser setMaxVisibleColumns: 2]; [groupsBrowser setDelegate: self]; [groupsBrowser setTitle: _(@"Group") ofColumn: 0]; [groupsBrowser setTitle: _(@"Name") ofColumn: 1]; [groupsBrowser setMatrixClass: [DragDropMatrix class]]; [groupsBrowser setTarget: self]; [groupsBrowser setAction: @selector(browserAction:)]; clipView = [[NSClipView alloc] initWithFrame: [scrollView frame]]; [clipView setAutoresizesSubviews: YES]; personView = [[ADPersonView alloc] initWithFrame: NSZeroRect]; [clipView setDocumentView: personView]; [personView release]; [personView setFillsSuperview: YES]; [personView setForceImage: YES]; [scrollView setContentView: clipView]; [clipView release]; [scrollView setHasVerticalScroller: YES]; [scrollView setHasHorizontalScroller: YES]; [scrollView setBorderType: NSBezelBorder]; [personView setDelegate: self]; filename = [[NSBundle mainBundle] pathForResource: @"ISOCountryCodes" ofType: @"dict"]; _countryCodeDict = [[[NSString stringWithContentsOfFile: filename] propertyList] retain]; NSAssert(_countryCodeDict, @"ISOCountryCodes.dict could not be loaded."); [self createCache]; if([_peopleCache count]) [self selectPerson: [_peopleCache objectAtIndex: 0]]; [self initPrefsPanel]; } - (void) initPrefsPanel { NSUserDefaults *ud; NSEnumerator *e; NSString *key; ud = [NSUserDefaults standardUserDefaults]; if(![ud objectForKey: @"Autosave"] || ![[ud objectForKey: @"Autosave"] boolValue]) [prefsAutosaveButton setState: NSOffState]; else [prefsAutosaveButton setState: NSOnState]; [prefsAddressLayoutPopup removeAllItems]; e = [[[_countryCodeDict allKeys] sortedArrayUsingSelector: @selector(compare:)] objectEnumerator]; while((key = [e nextObject])) { [prefsAddressLayoutPopup addItemWithTitle: [_countryCodeDict objectForKey: key]]; [[prefsAddressLayoutPopup itemWithTitle: [_countryCodeDict objectForKey: key]] setRepresentedObject: key]; } [prefsAddressLayoutPopup addItemWithTitle: _(@"Everything")]; [[prefsAddressLayoutPopup itemWithTitle: _(@"Everything")] setRepresentedObject: @"Default"]; [prefsAddressLayoutPopup sizeToFit]; if([ud objectForKey: @"DefaultISOCountryCode"]) { NSString *def; NSInteger index; def = [ud objectForKey: @"DefaultISOCountryCode"]; index = [prefsAddressLayoutPopup indexOfItemWithRepresentedObject: def]; if(index != NSNotFound) [prefsAddressLayoutPopup selectItemAtIndex: index]; [[personView class] setDefaultISOCountryCode: def]; } if([[ADPerson class] screenNameFormat] == ADScreenNameFirstNameFirst) [prefsScreenNameLayoutMatrix selectCellWithTag: 1]; else [prefsScreenNameLayoutMatrix selectCellWithTag: 0]; } - (void) createCache { [_peopleCache release]; if(_currentGroup) _peopleCache = [_currentGroup members]; else _peopleCache = [_book people]; _peopleCache = [[_peopleCache sortedArrayUsingSelector: @selector(compareByScreenName:)] retain]; } - (NSArray*) groupNames { NSArray *groups; NSMutableArray *retval; NSUInteger i; groups = [_book groups]; retval = [NSMutableArray arrayWithCapacity: [groups count]]; for(i=0; i<[groups count]; i++) { NSString *name; name = [[groups objectAtIndex: i] valueForProperty: ADGroupNameProperty]; if(!name) NSLog(@"Group at %ul has no name!\n", (unsigned int)i); else [retval addObject: name]; } return retval; } - (void) selectGroup: (ADGroup*) group { NSInteger num, i; if([personView isEditable]) [self finishEditingPerson]; if(!group) { [[groupsBrowser matrixInColumn: 0] deselectAllCells]; [groupsBrowser selectRow: 0 inColumn: 0]; [_currentGroup autorelease]; _currentGroup = nil; [self createCache]; [groupsBrowser reloadColumn: 1]; if([_peopleCache count]) [self selectPerson: [_peopleCache objectAtIndex: 0]]; else [self selectPerson: nil]; return; } num = [[groupsBrowser matrixInColumn: 0] numberOfRows]; for(i=0; i= [_peopleCache count]) [self selectPerson: [_peopleCache objectAtIndex: [_peopleCache count]-1]]; else [self selectPerson: [_peopleCache objectAtIndex: row]]; } - (void) beginEditingPerson: (ADPerson*) person { if([person readOnly]) { NSRunAlertPanel(_(@"Read-Only Person"), [NSString stringWithFormat: _(@"'%@' cannot be edited because\n" @"the record is marked as read-only."), [person screenName]], _(@"OK"), nil, nil, nil); [editButton setState: NSOffState]; [editItem setTitle: _(@"Edit person")]; return; } [self selectPerson: person]; [personView setEditable: YES]; [editItem setTitle: _(@"End editing")]; [editButton setState: NSOnState]; [clipView scrollToPoint: NSZeroPoint]; }; - (void) finishEditingPerson { ADPerson *p; p = [personView person]; if(!p || ![personView isEditable]) return; if(![p valueForProperty: ADLastNameProperty] || ![p valueForProperty: ADFirstNameProperty]) { if(NSRunAlertPanel(_(@"Discard Person?"), _(@"The person you have edited has no first or last\n" @"names. Would you like to discard this person?"), _(@"Yes"), _(@"No"), nil, nil)) { [personView setEditable: NO]; [self deletePersonAndSelectNext: p]; p = nil; } } [personView setEditable: NO]; [editItem setTitle: _(@"Edit Person")]; [editButton setState: NSOffState]; if(p) { [groupsBrowser reloadColumn: 1]; [self selectPerson: p]; } } - (NSArray*) selectedPersons { NSMutableArray *arr; NSEnumerator *e; NSCell *c; e = [[groupsBrowser selectedCells] objectEnumerator]; arr = [NSMutableArray arrayWithCapacity: [[groupsBrowser selectedCells] count]]; while((c = [e nextObject])) if([c representedObject]) [arr addObject: [c representedObject]]; return [NSArray arrayWithArray: arr]; } /* Actions */ - (void) doEditPerson: (id) sender { ADPerson *p; p = [personView person]; if(!p) return; // nothing to do if([personView isEditable]) [self finishEditingPerson]; else [self beginEditingPerson: p]; [clipView scrollToPoint: NSZeroPoint]; } - (void) doTogglePersonEditable: (id) sender { ADPerson *p; p = [personView person]; if(!p && [sender state] == NSOnState) [self doCreatePerson: sender]; else if([sender state] == NSOnState) [self beginEditingPerson: p]; else [self finishEditingPerson]; [clipView scrollToPoint: NSZeroPoint]; } - (void) doCreatePerson: (id) sender { BOOL ok; ADPerson *p; p = [[ADPerson alloc] init]; ok = [_book addRecord: p]; if(!ok) { NSRunAlertPanel(_(@"Couldn't create person"), _(@"A new person could not be created."), _(@"OK"), nil, nil, nil); return; } if(_currentGroup) { ok = [_currentGroup addMember: p]; if(!ok) { NSRunAlertPanel(_(@"Couldn't add person"), _(@"The newly created person could not be\n" @"added to this group."), _(@"OK"), nil, nil, nil); return; } } p = (ADPerson*)[_book recordForUniqueId: [p uniqueId]]; [self createCache]; [groupsBrowser reloadColumn: 1]; [self beginEditingPerson: p]; [personView beginEditingInFirstCell]; } - (IBAction) doDeletePerson: (id) sender { NSArray *a; NSEnumerator *e; ADPerson *p; a = [self selectedPersons]; if(![a count]) return; // nothing to do. // deleting from "All"? Ask. if(!_currentGroup) { NSString *msg, *cpt; if([a count] == 1) { msg = [NSString stringWithFormat: _(@"Do you really want to delete %@ " @"from \"All\" and all groups?"), [[a objectAtIndex: 0] screenName]]; cpt = _(@"Delete Person?"); } else { msg = [NSString stringWithFormat: _(@"Do you really want to delete " @"the %lu selected persons " @"from \"All\" and all groups?"), (unsigned long)[a count]]; cpt = _(@"Delete Persons?"); } if(!NSRunAlertPanel(cpt, msg, _(@"Yes"), _(@"No"), nil, nil)) { NSLog(@"Not deleting.\n"); return; } } e = [a objectEnumerator]; while((p = [e nextObject])) [self deletePersonAndSelectNext: p]; } - (void) doImportPerson: (id) sender { NSInteger retval; id obj; NSString *fname; id conv; ADConverterManager *man; NSOpenPanel *p; man = [ADConverterManager sharedManager]; p = [NSOpenPanel openPanel]; [p setDirectory: [[NSUserDefaults standardUserDefaults] objectForKey: @"ImportDirectory"]]; [p setCanChooseDirectories: NO]; [p setAllowsMultipleSelection: NO]; [p setTitle: _(@"Import...")]; retval = [p runModalForTypes: [man inputConvertableFileTypes]]; if(!retval) return; [[NSUserDefaults standardUserDefaults] setObject: [p directory] forKey: @"ImportDirectory"]; fname = [[p filenames] objectAtIndex: 0]; conv = [man inputConverterWithFile: fname]; NSAssert(conv, @"No converter for this file!"); while((obj = [conv nextRecord])) { NSEnumerator *e = [_peopleCache objectEnumerator]; id other; NSInteger retval; retval = 0; // insert anyway while((other = [e nextObject])) { if([[other screenName] isEqualToString: [obj screenName]]) { NSString *fmt; fmt = [NSString stringWithFormat: _(@"Trying to import person named '%@',\n" @"which already exists in the database."), [obj screenName]]; retval = NSRunAlertPanel(_(@"Existing person?"), fmt, _(@"Replace"), _(@"Insert anyway"), _(@"Don't insert"), nil); break; } } if(retval == 1) // replace { [_book removeRecord: other]; [_book addRecord: obj]; } else if(retval == 0) // insert anyway [_book addRecord: obj]; else if(retval == -1) // don't insert; continue reading continue; } [groupsBrowser reloadColumn: 1]; } - (void) doExportPerson: (id) sender { ADConverterManager *man; NSSavePanel *panel; NSString *fname; NSInteger retval; NSArray *a; NSEnumerator *e; ADPerson *person; id conv; if([personView isEditable]) [self finishEditingPerson]; a = [self selectedPersons]; if(![a count]) return; man = [ADConverterManager sharedManager]; panel = [NSSavePanel savePanel]; [panel setDirectory: [[NSUserDefaults standardUserDefaults] objectForKey: @"ExportDirectory"]]; [panel setRequiredFileType: @"vcf"]; if([a count] > 1) [panel setTitle: [NSString stringWithFormat: _(@"Export %lu records to..."), (unsigned long)[a count]]]; else [panel setTitle: [NSString stringWithFormat: _(@"Export '%@' to..."), [[a objectAtIndex: 0] screenName]]]; retval = [panel runModal]; if(!retval) return; [[NSUserDefaults standardUserDefaults] setObject: [panel directory] forKey: @"ExportDirectory"]; fname = [panel filename]; conv = [man outputConverterForType: [[fname pathExtension] lowercaseString]]; if(!conv) { NSString *msg = [NSString stringWithFormat: _(@"Cannot export files of type %@"), [fname pathExtension]]; NSRunAlertPanel(_(@"Invalid File Type"), msg, _(@"OK"), nil, nil, nil); return; } else if([a count]>1 && ![conv canStoreMultipleRecords]) { NSString *msg = [NSString stringWithFormat: _(@"Can only store a single person\n" @"in files of type %@"), [fname pathExtension]]; NSRunAlertPanel(_(@"Invalid File Type"), msg, _(@"OK"), nil, nil, nil); return; } e = [a objectEnumerator]; while((person = [e nextObject])) [conv storeRecord: person]; retval = [[conv string] writeToFile: fname atomically: NO]; if(!retval) { NSString *msg = [NSString stringWithFormat: _(@"Could not write file %@.\n" @"Permissions error?"), fname]; NSRunAlertPanel(_(@"Write Failed"), msg, _(@"OK"), nil, nil, nil); } } - (void) doSetMe: (id) sender { if(![personView person]) return; [_book setMe: [personView person]]; [personView setNeedsDisplay: YES]; [groupsBrowser reloadColumn: 1]; [self selectPerson: [personView person]]; } - (void) doShowMe: (id) sender { if(![_book me]) return; [self selectPerson: [_book me]]; } - (void) doSelectAllPersons: (id) sender { [groupsBrowser selectAll: self]; if([[groupsBrowser selectedCells] count] == 1) [personView setPerson: [[groupsBrowser selectedCellInColumn: 1] representedObject]]; else [personView setPerson: nil]; } - (void) doToggleShared: (id) sender { NSEnumerator *e; BOOL share; ADPerson *person; share = YES; // default yes, but if one selected person is shared, // set to no e = [[self selectedPersons] objectEnumerator]; while((person = [e nextObject])) if([person shared]) { share = NO; break; } e = [[self selectedPersons] objectEnumerator]; while((person = [e nextObject])) [person setShared: share]; if(share) { if([[self selectedPersons] count] > 1) [shareItem setTitle: _(@"Do not share these people")]; else [shareItem setTitle: _(@"Do not share this person")]; } else { if([[self selectedPersons] count] > 1) [shareItem setTitle: _(@"Share these people")]; else [shareItem setTitle: _(@"Share this person")]; } [personView setNeedsDisplay: YES]; } - (void) doDuplicatePerson: (id) sender { ADPerson *newPerson, *oldPerson; BOOL ok; oldPerson = [personView person]; if(!oldPerson) return; newPerson = [oldPerson copy]; [newPerson removeValueForProperty: ADFirstNameProperty]; [newPerson removeValueForProperty: ADLastNameProperty]; ok = [_book addRecord: newPerson]; if(!ok) { NSRunAlertPanel(_(@"Couldn't create person"), _(@"A new person could not be created."), _(@"OK"), nil, nil, nil); return; } if(_currentGroup) { ok = [_currentGroup addMember: newPerson]; if(!ok) { NSRunAlertPanel(_(@"Couldn't add person"), _(@"The newly created person could not be\n" @"added to this group."), _(@"OK"), nil, nil, nil); return; } } [self createCache]; [groupsBrowser reloadColumn: 1]; [self beginEditingPerson: newPerson]; [personView beginEditingInFirstCell]; } - (void) doMergePersons: (id) sender { // FIXME: Unimplemented! } - (void) doCreateGroup: (id)sender { ADGroup *group; group = [[[ADGroup alloc] init] autorelease]; [group setValue: _(@"New Group") forProperty: ADGroupNameProperty]; if(![_book addRecord: group]) NSRunAlertPanel(_(@"Error"), _(@"Could not create group!"), _(@"OK"), nil, nil, nil); [groupsBrowser reloadColumn: 0]; [self selectGroup: group]; } - (void) doDeleteGroup: (id) sender { ADGroup *group; NSString *name; NSString *msg; NSInteger retval; NSInteger row = [groupsBrowser selectedRowInColumn: 0]; if(row == 0) return; // Can't delete this group = [[_book groups] objectAtIndex: row-1]; name = [group valueForProperty: ADGroupNameProperty]; msg = [NSString stringWithFormat: _(@"Do you really want to delete " @"the group '%@'?"), name]; retval = NSRunAlertPanel(_(@"Delete Group?"), msg, _(@"Yes"), _(@"No"), nil, nil); if(!retval) return; if(![_book removeRecord: group]) { msg = [NSString stringWithFormat: _(@"The group '%@` could not be deleted."), name]; NSRunAlertPanel(_(@"Error"), msg, _(@"OK"), nil, nil, nil); } lastCell = nil; [groupsBrowser reloadColumn: 0]; [groupsBrowser selectRow: row-1 inColumn: 0]; // OK -- we caught 0 above [self browserAction: groupsBrowser]; [self createCache]; if([_peopleCache count]) [self selectPerson: [_peopleCache objectAtIndex: 0]]; } - (void) doSaveDatabase: (id) sender { if([personView isEditable]) [self finishEditingPerson]; if([_book hasUnsavedChanges]) { _selfChanging = YES; if(![_book save]) NSRunAlertPanel(_(@"Couldn't save"), _(@"The database could not be saved!"), _(@"OK"), nil, nil, nil); else [[personView window] setTitle: _(@"Addresses")]; _selfChanging = NO; } } - (void) doShowPrefsPanel: (id) sender { [prefsPanel makeKeyAndOrderFront: self]; } - (void) prefsToggleAutosave: (id) sender { if([sender state] == NSOnState) [[NSUserDefaults standardUserDefaults] setObject: @"YES" forKey: @"Autosave"]; else [[NSUserDefaults standardUserDefaults] setObject: @"NO" forKey: @"Autosave"]; } - (void) prefsChangeAddressLayout: (id) sender { NSString *code, *title; NSEnumerator *e; title = [[sender selectedItem] title]; e = [_countryCodeDict keyEnumerator]; while((code = [e nextObject])) if([[_countryCodeDict objectForKey: code] isEqualToString: title]) break; if(!code && [title isEqualToString: _(@"Everything")]) code = @"Default"; if(!code) return; [[NSUserDefaults standardUserDefaults] setObject: code forKey: @"DefaultISOCountryCode"]; [[personView class] setDefaultISOCountryCode: code]; [personView layout]; } - (void) prefsChangeScreenNameLayout: (id) sender { NSInteger tag; ADPerson *p; tag = [sender selectedTag]; [[ADPerson class] setScreenNameFormat: tag]; // FIXME: Doesn't change in remote address books p = [personView person]; [self createCache]; [groupsBrowser reloadColumn: 1]; if(p) [self selectPerson: p]; } /* * Browser delegate methods */ - (NSInteger) browser: (NSBrowser*) sender numberOfRowsInColumn: (NSInteger) column { NSArray *groupnames = [self groupNames]; if(column == 0) return [groupnames count]+1; else { NSCell *cell; NSString *oldName = @""; NSString *newName = @""; ADGroup *group = nil; cell = [sender selectedCellInColumn: 0]; if([sender selectedRowInColumn: 0] != 0) { group = [[_book groups] objectAtIndex: [sender selectedRowInColumn: 0]-1]; oldName = [group valueForProperty: ADGroupNameProperty]; newName = [cell stringValue]; } // stop editing; rename if necessary [lastCell setEditable: NO]; if(cell == lastCell && ![oldName isEqualToString: newName]) { if([newName isEqualToString: _(@"All")]) { [cell setStringValue: oldName]; NSRunAlertPanel(_(@"Disallowed"), _(@"You cannot rename a group to \"All\",\n" @"since that name is reserved by the system."), _(@"OK"), nil, nil, nil); } else if([groupnames containsObject: newName]) { [cell setStringValue: oldName]; NSRunAlertPanel(_(@"Disallowed"), [NSString stringWithFormat: _(@"You cannot rename this group " @"to \"%@\",\n" @"since a group of that name " @"already exists."), newName], _(@"OK"), nil, nil, nil); } else [group setValue: newName forProperty: ADGroupNameProperty]; [lastCell setEditable: NO]; } if(![newName isEqualToString: _(@"All")] && ![oldName isEqualToString: _(@"All")] && ![[cell stringValue] isEqualToString: _(@"All")]) { if([cell isEditable] || _selectedByDrop) [cell setEditable: NO]; else [cell setEditable: YES]; _selectedByDrop = NO; [lastCell release]; lastCell = [cell retain]; } return [_peopleCache count]; } return 0; } - (void) browser: (NSBrowser*) sender willDisplayCell: (id) cell atRow: (NSInteger) row column: (NSInteger) column { [cell setFont: [NSFont systemFontOfSize: [NSFont systemFontSize]]]; if(column == 0) { if(row == 0) [cell setStringValue: _(@"All")]; else { [cell setStringValue: [[self groupNames] objectAtIndex: row-1]]; [cell setRepresentedObject: [[_book groups] objectAtIndex: row-1]]; [cell setEditable: NO]; } } else { ADPerson *p = [_peopleCache objectAtIndex: row]; if(p == [_book me]) [cell setStringValue: [[p screenName] stringByAppendingString: _(@" (Me)")]]; else [cell setStringValue: [p screenName]]; [cell setRepresentedObject: p]; [cell setLeaf: YES]; } } - (void) browserAction: (id) sender { if([personView isEditable]) { [personView setPerson: nil]; [personView setEditable: NO]; [editButton setState: NSOffState]; } if([sender selectedColumn] == 0) { NSInteger row; ADGroup *group = nil; [_currentGroup release]; _currentGroup = nil; row = [sender selectedRowInColumn: 0]; if(row != 0) group = [[_book groups] objectAtIndex: row-1]; if(![[group uniqueId] isEqualToString: [_currentGroup uniqueId]]) { _currentGroup = [group retain]; [self createCache]; [sender reloadColumn: 1]; if([_peopleCache count]) [self selectPerson: [_peopleCache objectAtIndex: 0]]; else [self selectPerson: nil]; } } else { NSEnumerator *e; ADPerson *p; BOOL shared; if([[sender selectedCells] count] == 1) [personView setPerson: [[sender selectedCellInColumn: 1] representedObject]]; else [personView setPerson: nil]; shared = NO; e = [[self selectedPersons] objectEnumerator]; while((p = [e nextObject])) if([p shared]) { shared = YES; break; } if(shared) { if([[self selectedPersons] count] > 1) [shareItem setTitle: _(@"Do not share these people")]; else [shareItem setTitle: _(@"Do not share this person")]; } else { if([[self selectedPersons] count] > 1) [shareItem setTitle: _(@"Share these people")]; else [shareItem setTitle: _(@"Share this person")]; } } } - (void) handleDatabaseChanged: (NSNotification*) note { if([_book hasUnsavedChanges]) { if([prefsAutosaveButton state] == NSOnState) { _selfChanging = YES; [_book save]; _selfChanging = NO; [[personView window] setDocumentEdited: NO]; [[personView window] setTitle: _(@"Addresses")]; } else { [[personView window] setDocumentEdited: YES]; [[personView window] setTitle: _(@"Addresses*")]; } } else { [[personView window] setDocumentEdited: NO]; [[personView window] setTitle: _(@"Addresses")]; } [self createCache]; } - (void) handleDatabaseChangedExternally: (NSNotification*) note { NSString *guid = nil; NSString *uid = nil; if(_selfChanging) return; if(_currentGroup) guid = [[_currentGroup uniqueId] retain]; if([personView person]) uid = [[[personView person] uniqueId] retain]; [self createCache]; [groupsBrowser reloadColumn: 0]; [groupsBrowser reloadColumn: 1]; [self selectGroup: (ADGroup*)[_book recordForUniqueId: guid]]; if(uid) { ADPerson *p = (ADPerson*)[_book recordForUniqueId: uid]; if(p) [self selectPerson: p]; } } - (void) handleNameChanged: (NSNotification*) note { NSDictionary *userInfo; ADPerson *p; NSString *first, *last, *prop, *val, *scrName; ADScreenNameFormat fmt; if([note object] != [personView person]) return; userInfo = [note userInfo]; p = [note object]; prop = [userInfo objectForKey: @"Property"]; val = [userInfo objectForKey: @"Value"]; if([prop isEqualToString: ADFirstNameProperty]) { first = val; last = [p valueForProperty: ADLastNameProperty]; } else { first = [p valueForProperty: ADFirstNameProperty]; last = val; } if([first isEmptyString]) first = nil; if([last isEmptyString]) last = nil; fmt = [[p class] screenNameFormat]; if(!last && !first) scrName = _(@"New Person"); else if(!first) scrName = last; else if(!last) scrName = first; else if(fmt == ADScreenNameFirstNameFirst) scrName = [NSString stringWithFormat: @"%@ %@", first, last]; else scrName = [NSString stringWithFormat: @"%@, %@", last, first]; [[groupsBrowser selectedCellInColumn: 1] setStringValue: scrName]; [groupsBrowser setNeedsDisplay: YES]; } - (BOOL) application: (NSApplication*) app openFile: (NSString*) filename { id conv; ADRecord *r, *r1; conv = [[ADConverterManager sharedManager] inputConverterWithFile: filename]; if(!conv) return NO; r1 = nil; while((r = [conv nextRecord])) { if(!r1) r1 = r; [_book addRecord: r]; } if(!r1) return NO; [self createCache]; [groupsBrowser reloadColumn: 0]; [groupsBrowser reloadColumn: 1]; if([r1 isKindOfClass: [ADPerson class]]) { [self selectGroup: _currentGroup]; [self selectPerson: (ADPerson*)r1]; } else { [self selectGroup: (ADGroup*)r1]; if(![_peopleCache count]) [self selectPerson: nil]; else [self selectPerson: [_peopleCache objectAtIndex: 0]]; } return YES; } - (NSApplicationTerminateReply) applicationShouldTerminate: (NSApplication*) app { NSUserDefaults *def; if([personView isEditable]) [self finishEditingPerson]; // store current group and person in defaults def = [NSUserDefaults standardUserDefaults]; if(_currentGroup) [def setObject: [_currentGroup uniqueId] forKey: @"SelectedGroup"]; else [def setObject: @"None" forKey: @"SelectedGroup"]; if([personView person]) [def setObject: [[personView person] uniqueId] forKey: @"SelectedPerson"]; else [def setObject: @"None" forKey: @"SelectedPerson"]; if([_book hasUnsavedChanges]) { NSInteger retval = NSRunAlertPanel(_(@"Save Changes?"), _(@"You have made changes to the database.\n" @"Should these changes be saved?"), _(@"Save and Quit"), _(@"Quit without saving"), _(@"Don't quit"), nil); switch(retval) { case 1: if(![_book save]) { NSRunAlertPanel(_(@"Couldn't save"), _(@"The database could not be saved!"), _(@"OK"), nil, nil, nil); return NSTerminateCancel; } return NSTerminateNow; case 0: return NSTerminateNow; default: return NSTerminateCancel; } } else return NSTerminateNow; } - (BOOL) validateMenuItem: (NSMenuItem*) anItem { NSUInteger count; count = [[self selectedPersons] count]; if(anItem == editItem || anItem == duplicatePersonItem || anItem == thisIsMeItem) { if(count != 1) return NO; return YES; } if(anItem == shareItem) { if(count < 1) return NO; return YES; } if(anItem == mergePersonsItem) { if(count <= 1) return NO; return YES; } return YES; } - (BOOL) personView: (ADPersonView*) aView shouldAcceptDrop: (id) info { return YES; } - (BOOL) personView: (ADPersonView*) aView receivedDroppedPersons: (NSArray*) persons { NSUInteger i; if(![persons count]) return NO; for(i=0; i<[persons count]; i++) { ADPerson *p, *o; p = [persons objectAtIndex: i]; o = [_book personWithFirstName: [p valueForProperty: ADFirstNameProperty] lastName: [p valueForProperty: ADLastNameProperty]]; if(o) { NSString *fmt; int retval; fmt = [NSString stringWithFormat: _(@"Trying to import person named '%@',\n" @"which already exists in the database."), [p screenName]]; retval = NSRunAlertPanel(_(@"Existing person?"), fmt, _(@"Replace"), _(@"Insert anyway"), _(@"Don't insert"), nil); if(retval == 1) // replace { [_book removeRecord: o]; [_book addRecord: p]; } else if(retval == 0) // insert anyway [_book addRecord: p]; else if(retval == -1) // don't insert; continue reading return NO; } else if(![_book addRecord: p]) return NO; if(_currentGroup) [_currentGroup addMember: p]; } [groupsBrowser reloadColumn: 1]; [self selectPerson: [persons objectAtIndex: 0]]; return YES; } - (BOOL) personView: (ADPersonView*) aView willDragPerson: (ADPerson*) person { return YES; } - (BOOL) personView: (ADPersonView*) aView willDragProperty: (NSString*) property { return YES; } - (NSDragOperation) dragDropMatrix: (DragDropMatrix*) matrix shouldAcceptDropFromSender: (id) sender onCell: (NSCell*) cell { ADGroup *g; g = [cell representedObject]; if(g && ![g isKindOfClass: [ADGroup class]]) return NSDragOperationNone; if([[[sender draggingPasteboard] types] containsObject: ADPeoplePboardType]) { NSDictionary *d; NSEnumerator *e; BOOL _pureLocal, _didSomeWork; if(![cell representedObject] || ![[cell representedObject] isKindOfClass: [ADGroup class]] || [[[cell representedObject] uniqueId] isEqualToString: [_currentGroup uniqueId]]) goto useVCard; _pureLocal = YES; _didSomeWork = NO; e = [[[sender draggingPasteboard] propertyListForType: ADPeoplePboardType] objectEnumerator]; while((d = [e nextObject])) { int pid; NSString *uid; ADPerson *p; if(![d objectForKey: @"UID"] || ![d objectForKey: @"AB"] || ![d objectForKey: @"PID"]) continue; pid = [[d objectForKey: @"PID"] intValue]; uid = [d objectForKey: @"UID"]; p = (ADPerson*)[_book recordForUniqueId: uid]; if(pid != [[NSProcessInfo processInfo] processIdentifier]) _pureLocal = NO; else if(!p || ![p isKindOfClass: [ADPerson class]]) continue; if(g) { ADPerson *p2; NSEnumerator *e; BOOL isIn; isIn = NO; e = [[g members] objectEnumerator]; while((p2 = [e nextObject])) if([[p2 uniqueId] isEqualToString: [p uniqueId]]) { isIn = YES; break; } if(isIn) continue; } _didSomeWork = YES; } if(_didSomeWork) { if(_pureLocal) return NSDragOperationLink; return NSDragOperationCopy; } } useVCard: if([[[sender draggingPasteboard] types] containsObject: @"NSVCardPboardType"]) return NSDragOperationCopy; return NSDragOperationNone; } - (BOOL) dragDropMatrix: (DragDropMatrix*) matrix didAcceptDropFromSender: (id) sender onCell: (NSCell*) cell { NSPasteboard *pb; ADGroup *g; g = [cell representedObject]; if(g && ![g isKindOfClass: [ADGroup class]]) return NO; pb = [sender draggingPasteboard]; if([[pb types] containsObject: ADPeoplePboardType]) { NSDictionary *d; NSEnumerator *e; BOOL _didSomeWork; if(!g) goto useVCard; _didSomeWork = NO; e = [[pb propertyListForType: ADPeoplePboardType] objectEnumerator]; while((d = [e nextObject])) { int pid; NSString *uid; ADPerson *p; if(![d objectForKey: @"UID"] || ![d objectForKey: @"AB"] || ![d objectForKey: @"PID"]) continue; pid = [[d objectForKey: @"PID"] intValue]; uid = [d objectForKey: @"UID"]; if(pid != [[NSProcessInfo processInfo] processIdentifier]) continue; p = (ADPerson*)[_book recordForUniqueId: uid]; if(!p || ![p isKindOfClass: [ADPerson class]]) continue; if([g addMember: p]) _didSomeWork = YES; } if(_didSomeWork) return YES; } useVCard: if([[pb types] containsObject: @"NSVCardPboardType"]) { ADPerson *p, *o; NSData *vcard; vcard = [pb dataForType: @"NSVCardPboardType"]; p = [[[ADPerson alloc] initWithVCardRepresentation: vcard] autorelease]; if(!p) return NO; o = [_book personWithFirstName: [p valueForProperty: ADFirstNameProperty] lastName: [p valueForProperty: ADLastNameProperty]]; if(o) { NSString *fmt; NSInteger retval; fmt = [NSString stringWithFormat: _(@"Trying to import person named '%@',\n" @"which already exists in the database."), [p screenName]]; retval = NSRunAlertPanel(_(@"Existing person?"), fmt, _(@"Replace"), _(@"Insert anyway"), _(@"Don't insert"), nil); if(retval == 1) // replace { [_book removeRecord: o]; [_book addRecord: p]; } else if(retval == 0) // insert anyway [_book addRecord: p]; else if(retval == -1) // don't insert; continue reading return NO; } else if(![_book addRecord: p]) return NO; p = (ADPerson*)[_book recordForUniqueId: [p uniqueId]]; if(!p || ![p isKindOfClass: [ADPerson class]]) return NO; if(g) [g addMember: p]; [groupsBrowser reloadColumn: 1]; if(g) { [self selectGroup: g]; _selectedByDrop = YES; } [self selectPerson: p]; return YES; } return NO; } @end Addresses-0.5.0/Frameworks/0000755000175000000240000000000014734561460014763 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/0000755000175000000240000000000014752766037017212 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/French.lproj/0000755000175000000240000000000012312144404021516 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/French.lproj/Localizable.strings0000644000175000000240000000221712312144404025354 0ustar multixstaff/*** English.lproj/Localizable.strings updated by make_strings 2003-10-21 14:41:27 +0200 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:207 */ "Person Name" = "Nom de la Personne"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:451 */ "Groups" = "Groupes"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:464 */ "All" = "Tous"; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:510 */ "Error Loading Image" = "Erreur de chargement de l'Image"; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:512 */ "The image file %@ could not be loaded." = "Le fichier %@ contenant l'image ne peux pas \U00eatre lu."; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:406 */ /* File: ADPersonView.m:414 */ "Me" = "Moi"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:86 */ " (Me)" = " (Moi)"; /*** Strings from ADPersonView.m ***/ /* File: ADPersonView.m:263 */ "Notes:" = "Notes:"; /* File: ADPersonView.m:513 */ "OK" = "OK"; Addresses-0.5.0/Frameworks/AddressView/Add.tiff0000644000175000000240000000177612312144404020541 0ustar multixstaffII*111B齽遁111Brrrrrrrrrrrr111B222111B222鿿ppp222ppp齽222222222222222222222鿿ppp222ppp遁222111B222111Brrrrrrrrrrrr111B齽遁111B   E@(R/home/giesler/Source/GNUstep/Addresses/AddressViewFramework/Add.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/ISOCodeMapping.dict0000644000175000000240000001525112312144404022576 0ustar multixstaff{ ad = ("Andorra, Principality of", "Andorra"); ae = ("United Arab Emirates", "UAE", "Vereinigte Arabische Emirate"); af = ("Afghanistan"); ag = ("Antigua", "Barbuda"); ai = ("Anguilla"); al = ("Albania", "Albanien"); am = ("Armenia", "Armenien"); an = ("Antilles", "Antillen", "Antillas"); ao = ("Angola"); aq = ("Antarctica", "Antarktis", "Ant\U00e1rtida"); ar = ("Argentina", "Argentinien"); as = ("American Samoa", "Amerikanisch Samoa", "Samoa americana"); at = ("Austria", "\u00d6sterreich"); au = ("Australia", "Australien"); aw = ("Aruba"); az = ("Azerbaidjan", "Aserbaidschan"); ba = ("Bosnia-Herzegovina", "Bosnien-Herzegovina"); bb = ("Barbados"); bd = ("Bangladesh", "Bangladesch"); be = ("Belgium", "Belgien", "B\U00e9lgica"); bf = ("Burkina Faso"); bg = ("Bulgaria", "Bulgarien"); bh = ("Bahrain"); bi = ("Burundi"); bj = ("Benin"); bm = ("Bermuda"); bn = ("Brunei Darussalam"); bo = ("Bolivia", "Bolivien"); br = ("Brazil", "Brasilien", "Brasil"); bs = ("Bahamas"); bt = ("Bhutan"); bv = ("Bouvet Island"); bw = ("Botswana"); by = ("Belarus"); bz = ("Belize"); ca = ("Canada", "Kanada"); cc = ("Cocos Islands", "Keeling Islands"); cf = ("Central African Republic", "Rep\U00fablica Africana Central"); cd = ("Republic Congo", "Republik Kongo", "Rep\U00fablica del Congo"); cg = ("Congo", "Kongo"); ch = ("Switzerland", "Schweiz", "Suiza"); ci = ("Ivory Coast", "Elfenbeink\u00fcste"); ck = ("Cook Islands"); cl = ("Chile"); cm = ("Cameroon", "Kamerun", "Camer\U00fan"); cn = ("China"); co = ("Colombia", "Kolumbien"); cr = ("Costa Rica"); cs = ("Former Czechoslovakia", "Tschechoslovakei", "Checoslovaquia"); cu = ("Cuba"); cv = ("Cape Verde", "Cabo verde"); cx = ("Christmas Island"); cy = ("Cyprus"); cz = ("Czech Republic", "Tschechien", "Rep\U00fablica Checa"); de = ("Germany", "Deutschland", "Allemagne", "Alemania"); dj = ("Djibouti"); dk = ("Denmark", "D\u00e4nemark", "Dinamarca"); dm = ("Dominica"); do = ("Dominican Republic", "Rep\U00fablica Dominicana"); dz = ("Algeria"); ec = ("Ecuador"); ee = ("Estonia"); eg = ("Egypt", "Egipto"); eh = ("Western Sahara"); er = ("Eritrea"); es = ("Spain", "Spanien", "Espa\U00f1a"); et = ("Ethiopia", "\u00c4thiopien"); fi = ("Finland", "Finnland", "Finlandia"); fj = ("Fiji"); fk = ("Falkland Islands", "Islas Malvinas"); fm = ("Micronesia"); fo = ("Faroe Islands"); fr = ("France", "Frankreich", "Francias"); ga = ("Gabon"); gb = ("Great Britain", "Gro\u00dfbritannien", "England", "Gran Bretania"); gd = ("Grenada"); ge = ("Georgia"); gf = ("French Guyana", "Guyana Francesa"); gh = ("Ghana"); gi = ("Gibraltar"); gl = ("Greenland", "Gr\u00f6nland", "Groenlandia"); gm = ("Gambia"); gn = ("Guinea"); gp = ("Guadeloupe"); gq = ("Equatorial Guinea"); gr = ("Greece", "Grecia"); gs = ("Southern Georgia", "Southern Sandwich Islands", "Islas Sandwitch del Sur"); gt = ("Guatemala"); gu = ("Guam"); gw = ("Guinea Bissau"); gy = ("Guyana"); hk = ("Hong Kong"); hm = ("Heard and McDonald Islands"); hn = ("Honduras"); hr = ("Croatia", "Croacia"); ht = ("Haiti", "Hait\U00ed"); hu = ("Hungary", "Hungaria"); id = ("Indonesia"); ie = ("Ireland", "Irlanda"); il = ("Israel"); in = ("India"); io = ("British Indian Ocean Territory"); iq = ("Iraq"); ir = ("Iran"); is = ("Iceland"); it = ("Italy", "Italia"); jm = ("Jamaica"); jo = ("Jordan"); jp = ("Japan"); ke = ("Kenya"); kg = ("Kyrgyz Republic (Kyrgyzstan)"); kh = ("Cambodia, Kingdom of"); ki = ("Kiribati"); km = ("Comoros"); kn = ("Saint Kitts & Nevis Anguilla"); kp = ("North Korea", "Corea del Norte"); kr = ("South Korea", "Corea del Sur"); kw = ("Kuwait"); ky = ("Cayman Islands", "Islas Caim\U00e1n"); kz = ("Kazakhstan"); la = ("Laos"); lb = ("Lebanon", "L\U00edbano"); lc = ("Saint Lucia"); li = ("Liechtenstein"); lk = ("Sri Lanka"); lr = ("Liberia"); ls = ("Lesotho"); lt = ("Lithuania"); lu = ("Luxembourg", "Luxemburgo"); lv = ("Latvia"); ly = ("Libya", "Libia"); ma = ("Morocco"); mc = ("Monaco"); md = ("Moldavia"); mg = ("Madagascar"); mh = ("Marshall Islands"); mk = ("Macedonia"); ml = ("Mali"); mm = ("Myanmar"); mn = ("Mongolia"); mo = ("Macau"); mp = ("Northern Mariana Islands"); mq = ("Martinique"); mr = ("Mauritania"); ms = ("Montserrat"); mt = ("Malta"); mu = ("Mauritius"); mv = ("Maldives"); mw = ("Malawi"); mx = ("Mexico", "M\U00e9xico", "M\U00e9jico"); my = ("Malaysia"); mz = ("Mozambique"); na = ("Namibia"); nc = ("New Caledonia"); ne = ("Niger"); nf = ("Norfolk Island"); ng = ("Nigeria"); ni = ("Nicaragua"); nl = ("Netherlands", "Holanda"); no = ("Norway", "Noruega"); np = ("Nepal"); nr = ("Nauru"); nt = ("Neutral Zone"); nu = ("Niue"); nz = ("New Zealand", "Nueva Zelanda"); om = ("Oman"); pa = ("Panama", "Panam\U00e1"); pe = ("Peru", "Per\U00fa"); pf = ("Polynesia", "Polinesia"); pg = ("Papua New Guinea"); ph = ("Philippines", "Filipinas"); pk = ("Pakistan"); pl = ("Poland", "Polonia"); pm = ("Saint Pierre and Miquelon"); pn = ("Pitcairn Island"); pr = ("Puerto Rico"); pt = ("Portugal"); pw = ("Palau"); py = ("Paraguay"); qa = ("Qatar"); re = ("Reunion"); ro = ("Romania", "Rumania"); ru = ("Russian Federation", "Rusia"); rw = ("Rwanda"); sa = ("Saudi Arabia", "Arabia Saudita"); sb = ("Solomon Islands"); sc = ("Seychelles"); sd = ("Sudan"); se = ("Sweden", "Suecia"); sg = ("Singapore", "Singapur"); sh = ("Saint Helena"); si = ("Slovenia"); sj = ("Svalbard and Jan Mayen Islands"); sk = ("Slovak Republic"); sl = ("Sierra Leone", "Sierra Leona"); sm = ("San Marino"); sn = ("Senegal"); so = ("Somalia"); sr = ("Suriname"); st = ("Saint Tome", "Principe", "Sao Torme"); su = ("Former USSR"); sv = ("El Salvador"); sy = ("Syria"); sz = ("Swaziland"); tc = ("Turks and Caicos Islands"); td = ("Chad"); tf = ("French Southern Territories"); tg = ("Togo"); th = ("Thailand", "Tailandia"); tj = ("Tadjikistan"); tk = ("Tokelau"); tm = ("Turkmenistan"); tn = ("Tunisia"); to = ("Tonga"); tp = ("East Timor"); tr = ("Turkey"); tt = ("Trinidad and Tobago", "Trinidad y Tobago"); tv = ("Tuvalu"); tw = ("Taiwan"); tz = ("Tanzania"); ua = ("Ukraine", "Ucrania"); ug = ("Uganda"); uk = ("United Kingdom", "Reino Unido"); um = ("USA Minor Outlying Islands"); us = ("United States", "USA", "United States of America", "Estados Unidos"); uy = ("Uruguay"); uz = ("Uzbekistan"); va = ("Vatican", "Vaticano"); vc = ("Saint Vincent", "Grenadines"); ve = ("Venezuela"); vg = ("Virgin Islands"); vi = ("Virgin Islands"); vn = ("Vietnam"); vu = ("Vanuatu"); wf = ("Wallis and Futuna Islands"); ws = ("Samoa"); ye = ("Yemen"); yt = ("Mayotte"); yu = ("Yugoslavia"); za = ("South Africa"); zm = ("Zambia"); zr = ("Zaire"); zw = ("Zimbabwe"); } Addresses-0.5.0/Frameworks/AddressView/German.lproj/0000755000175000000240000000000012312144405021523 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/German.lproj/Localizable.strings0000644000175000000240000000203012312144405025352 0ustar multixstaff/*** German.lproj/Localizable.strings updated by make_strings 2003-10-24 09:55:11 +0200 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: :0 */ /* File: ADSinglePropertyView.m:207 */ "Person Name" = "Personenname"; /* File: :0 */ /* File: ADSinglePropertyView.m:451 */ "Groups" = "Gruppen"; /* File: :0 */ /* File: ADSinglePropertyView.m:464 */ "All" = "Alle"; /* File: :0 */ /* File: ADPersonView.m:512 */ "Error Loading Image" = "Fehler beim Laden des Bildes"; /* File: :0 */ /* File: ADPersonView.m:514 */ "The image file %@ could not be loaded." = "Die Bilddatei %@ konnte nicht geladen werden."; /* File: :0 */ /* File: ADPersonView.m:408 */ /* File: ADPersonView.m:416 */ "Me" = "Ich"; /* File: :0 */ /* File: ADSinglePropertyView.m:86 */ " (Me)" = " (Ich)"; /*** Strings from ADPersonView.m ***/ /* File: ADPersonView.m:265 */ "Notes:" = "Notizen:"; /* File: ADPersonView.m:515 */ "OK" = "OK"; "No Person Selected" = "Keine Person ausgew\U00e4hlt";Addresses-0.5.0/Frameworks/AddressView/ADPersonView.h0000644000175000000240000000551514747772330021674 0ustar multixstaff/* This is -*- ObjC -*-) ADPersonView.h Author: Bjrn Giesler */ #import #import #import /** * Posted whenever the ADFirstName or ADLastName fields are changed. */ extern NSString * const ADPersonNameChangedNotification; /** * Pasteboard identifier. Value for this is a NSArray: * ({ UID=; AB=; * PID= { BOOL _fillsSuperview; ADPerson *_person; BOOL _editable; int _headerLineY, _footerLineY, _iconY; int _editingViewIndex; id _imageView, _noteView; BOOL _displaysImage, _forceImage; NSImage *_lockImg, *_shareImg; id _delegate; BOOL _acceptsDrop; BOOL _noteTextChanged; CGFloat _fontSize; BOOL _mouseDownOnSelf; } - (instancetype) initWithFrame: (NSRect) aRect; - (void) layout; - (BOOL) fillsSuperview; - (void) setFillsSuperview: (BOOL) yesno; - (void) calcSize; - (void) setPerson: (ADPerson*) person; - (ADPerson*) person; // displays image if the person has one. - (void) setDisplaysImage: (BOOL) yesno; - (BOOL) displaysImage; // always display image, displaying a dummy if the person doesn't have one. - (void) setForceImage: (BOOL) yesno; - (BOOL) forceImage; - (void) drawRect: (NSRect) rect; - (BOOL) isEditable; - (void) setEditable: (BOOL) yn; - (void) beginEditingInFirstCell; - (void) superviewFrameChanged: (NSNotification*) note; - (void) imageClicked: (id) sender; - (void) cleanupEmptyProperty: (NSString*) prop; - (void) cleanupEmptyProperties; - (void) setDelegate: (id) delegate; - (id) delegate; - (void) setAcceptsDrop: (BOOL) yesno; - (BOOL) acceptsDrop; - (void) setFontSize: (CGFloat) fontSize; - (CGFloat) fontSize; @end @interface ADPersonView (PropertyMangling) + (NSString*) nextLabelAfter: (NSString*) previous forProperty: (NSString*) property; + (NSString*) defaultLabelForProperty: (NSString*) property; + (id) emptyValueForProperty: (NSString*) property; + (NSArray*) layoutRuleForProperty: (NSString*) property value: (NSDictionary*) dict; + (NSString*) isoCountryCodeForCountryName: (NSString*) name; + (NSString*) isoCountryCodeForCurrentLocale; + (void) setDefaultISOCountryCode: (NSString*) code; @end @interface NSObject (ADPersonViewDelegate) - (BOOL) personView: (ADPersonView*) aView shouldAcceptDrop: (id) info; - (BOOL) personView: (ADPersonView*) aView receivedDroppedPersons: (NSArray*) persons; - (BOOL) personView: (ADPersonView*) aView willDragProperty: (NSString*) aProperty; - (BOOL) personView: (ADPersonView*) aView willDragImage: (NSImage*) anImage; - (BOOL) personView: (ADPersonView*) aView willDragPerson: (ADPerson*) aPerson; @end Addresses-0.5.0/Frameworks/AddressView/English.lproj/0000755000175000000240000000000012312144405021703 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/English.lproj/Localizable.strings0000644000175000000240000000177012312144405025544 0ustar multixstaff/*** English.lproj/Localizable.strings updated by make_strings 2003-10-24 09:55:11 +0200 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: :0 */ /* File: ADSinglePropertyView.m:207 */ "Person Name" = "Person Name"; /* File: :0 */ /* File: ADSinglePropertyView.m:451 */ "Groups" = "Groups"; /* File: :0 */ /* File: ADSinglePropertyView.m:464 */ "All" = "All"; /* File: :0 */ /* File: ADPersonView.m:512 */ "Error Loading Image" = "Error Loading Image"; /* File: :0 */ /* File: ADPersonView.m:514 */ "The image file %@ could not be loaded." = "The image file %@ could not be loaded."; /* File: :0 */ /* File: ADPersonView.m:408 */ /* File: ADPersonView.m:416 */ "Me" = "Me"; /* File: :0 */ /* File: ADSinglePropertyView.m:86 */ " (Me)" = " (Me)"; /*** Strings from ADPersonView.m ***/ /* File: ADPersonView.m:265 */ "Notes:" = "Notes:"; /* File: ADPersonView.m:515 */ "OK" = "OK"; "No Person Selected" = "No Person Selected";Addresses-0.5.0/Frameworks/AddressView/ADPersonView.m0000644000175000000240000007733614747772363021721 0ustar multixstaff// ADPersonView.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // Riccardo Mottola // // Address View Framework for GNUstep // #import "ADPersonView.h" #import "ADPersonPropertyView.h" #import "ADImageView.h" NSString * const ADPersonNameChangedNotification = @"ADPersonNameChangedNotification"; NSString * const ADPeoplePboardType = @"ADPeoplePboardType"; // redefine _(@"...") so that it looks into our bundle, not the main bundle #undef _ #define _(x) [[NSBundle bundleForClass: [ADImageView class]] \ localizedStringForKey: x \ value: x \ table: nil] static NSDictionary *_labelDict, *_isoCodeDict, *_addressLayoutDict; static NSImage *_vcfImage; static NSString *__defaultCountryCode = nil; @implementation ADPersonView + (void) loadRessources { NSBundle *b; NSString *filename; b = [NSBundle bundleForClass: self]; filename = [b pathForResource: @"Labels" ofType: @"dict"]; _labelDict = [[NSString stringWithContentsOfFile: filename] propertyList]; NSAssert(_labelDict && [_labelDict isKindOfClass: [NSDictionary class]], @"Labels.dict could not be loaded!\n"); [_labelDict retain]; filename = [b pathForResource: @"ISOCodeMapping" ofType: @"dict"]; _isoCodeDict = [[NSString stringWithContentsOfFile: filename] propertyList]; NSAssert(_isoCodeDict && [_isoCodeDict isKindOfClass: [NSDictionary class]], @"ISOCodeMapping.dict could not be loaded!\n"); [_isoCodeDict retain]; filename = [b pathForResource: @"AddressLayouts" ofType: @"dict"]; _addressLayoutDict = [[NSString stringWithContentsOfFile: filename] propertyList]; NSAssert(_addressLayoutDict && [_addressLayoutDict isKindOfClass: [NSDictionary class]], @"AddressLayouts.dict could not be loaded!\n"); [_addressLayoutDict retain]; filename = [b pathForResource: @"VCFImage" ofType: @"tiff"]; _vcfImage = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_vcfImage && [_vcfImage isKindOfClass: [NSImage class]], @"VCFImage.tiff could not be loaded!\n"); } - (instancetype) initWithFrame: (NSRect) frameRect { NSBundle *b; NSString *filename; self = [super initWithFrame: frameRect]; if (self) { if(!_labelDict) [[self class] loadRessources]; _person = nil; _delegate = nil; _editable = NO; _acceptsDrop = NO; _fontSize = [NSFont systemFontSize]; _displaysImage = YES; _forceImage = NO; // load images b = [NSBundle bundleForClass: [self class]]; filename = [b pathForImageResource: @"Lock.tiff"]; _lockImg = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_lockImg, @"Image \"Lock.tiff\" could not be loaded!\n"); filename = [b pathForImageResource: @"Share.tiff"]; _shareImg = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_lockImg, @"Image \"Share.tiff\" could not be loaded!\n"); [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(superviewFrameChanged:) name: NSViewFrameDidChangeNotification object: nil]; [self registerForDraggedTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", NSTIFFPboardType, NSFilenamesPboardType, nil]]; } return self; } - (void) dealloc { [_person release]; [[NSNotificationCenter defaultCenter] removeObserver: self]; [super dealloc]; } - (BOOL) isFlipped { return YES; } - (int) layoutHeaderAndReturnNextY { ADPersonPropertyView *v; NSSize sizeNeeded; CGFloat IMGWIDTH = _fontSize*5; CGFloat IMGHEIGHT = IMGWIDTH*(3.0/4.0); int x = 5; int y = 5; if(_forceImage || (_displaysImage && [_person imageDataFile])) { // Image _imageView = [[ADImageView alloc] initWithFrame: NSMakeRect(x, y, IMGWIDTH, IMGHEIGHT)]; [self addSubview: _imageView]; [_imageView setTarget: self]; [_imageView setAction: @selector(imageClicked:)]; [_imageView setPerson: _person]; [_imageView setDelegate: self]; x += IMGWIDTH + 10; } else _imageView = nil; // First name v = [[ADPersonPropertyView alloc] initWithFrame: NSMakeRect(x, y, 0, 0)]; [v setEditable: _editable]; [v setDelegate: self]; [v setFontSize: _fontSize*1.5]; [v setFont: [v boldFont]]; [v setPerson: _person]; [v setProperty: ADFirstNameProperty]; [self addSubview: v]; sizeNeeded = [v frame].size; sizeNeeded.width += [[v font] widthOfString: @"f"]; sizeNeeded.height += 5; // Last name v = [[ADPersonPropertyView alloc] initWithFrame: NSMakeRect(x+sizeNeeded.width, y, 0, 0)]; [v setEditable: _editable]; [v setDelegate: self]; [v setFontSize: _fontSize*1.5]; [v setFont: [v boldFont]]; [v setPerson: _person]; [v setProperty: ADLastNameProperty]; [self addSubview: v]; sizeNeeded.width += [v frame].size.width; sizeNeeded.height = MAX(sizeNeeded.height, [v frame].size.height); y = sizeNeeded.height; v = [[ADPersonPropertyView alloc] initWithFrame: NSMakeRect(x, y, 0, 0)]; [v setEditable: _editable]; [v setDelegate: self]; [v setPerson: _person]; [v setProperty: ADOrganizationProperty]; [v setFontSize: _fontSize]; [self addSubview: v]; if([v frame].size.height) sizeNeeded.height += [v frame].size.height; // Job title y = sizeNeeded.height; v = [[ADPersonPropertyView alloc] initWithFrame: NSMakeRect(x, y, 0, 0)]; [v setEditable: _editable]; [v setDelegate: self]; [v setPerson: _person]; [v setProperty: ADJobTitleProperty]; [v setFontSize: _fontSize]; [self addSubview: v]; if([v frame].size.height) sizeNeeded.height += [v frame].size.height; if(_imageView) _iconY = ([_imageView frame].origin.y + [_imageView frame].size.height + 15); else _iconY = 0; return MAX(sizeNeeded.height, _iconY); } - (void) layout { NSEnumerator *e; NSString *property; NSArray *properties; int y; NSRect noteRect; id label; NSString *note; properties = [NSArray arrayWithObjects: ADBirthdayProperty, ADHomePageProperty, ADPhoneProperty, ADEmailProperty, ADAddressProperty, ADAIMInstantProperty, nil]; if(_person) [self cleanupEmptyProperties]; while([[self subviews] count]) [[[self subviews] objectAtIndex: 0] removeFromSuperview]; if(!_person) { [self calcSize]; return; } y = [self layoutHeaderAndReturnNextY]; _headerLineY = y + 7; y += 15; e = [properties objectEnumerator]; while((property = [e nextObject])) { ADPersonPropertyView *v; v = [[ADPersonPropertyView alloc] initWithFrame: NSMakeRect(5, y, 0, 0)]; [v setEditable: _editable]; [v setDelegate: self]; [v setDisplaysLabel: YES]; [v setPerson: _person]; [v setProperty: property]; [v setFontSize: _fontSize]; [self addSubview: v]; if([v frame].size.height) y += [v frame].size.height + 15; } _footerLineY = y - 8; label = [[[NSTextField alloc] initWithFrame: NSMakeRect(5, y, 100, 100)] autorelease]; [label setStringValue: _(@"Notes:")]; [label setEditable: NO]; [label setSelectable: NO]; [label setBordered: NO]; [label setBezeled: NO]; [label setDrawsBackground: NO]; [label setFont: [NSFont boldSystemFontOfSize: _fontSize]]; [label sizeToFit]; [self addSubview: label]; noteRect = NSMakeRect(NSMaxX([label frame]) + 5, y, 400, 400); _noteView = [[NSTextView alloc] initWithFrame: noteRect]; [_noteView setMinSize: NSMakeSize(50, 50)]; [_noteView setMaxSize: NSMakeSize(400, 400)]; [_noteView setVerticallyResizable: YES]; [_noteView setHorizontallyResizable: YES]; [_noteView setDelegate: self]; note = [_person valueForProperty: ADNoteProperty]; if (note != nil) [_noteView setString: note]; [_noteView setFont: [NSFont systemFontOfSize: _fontSize]]; _noteTextChanged = NO; if(_editable) { [_noteView setBackgroundColor: [NSColor colorWithDeviceRed: 1.0 green: 1.0 blue: .9 alpha: 1.0]]; [_noteView setEditable: YES]; } else [_noteView setEditable: NO]; [self addSubview: _noteView]; [self calcSize]; } - (BOOL) fillsSuperview { return _fillsSuperview; } - (void) setFillsSuperview: (BOOL) yesno { _fillsSuperview = yesno; [self calcSize]; } - (void) calcSize { NSEnumerator *e; NSView *view; NSSize sizeNeeded; NSSize nvSize, nvMaxSize, nvMinSize; if(_fillsSuperview && [self superview]) { sizeNeeded = [[self superview] frame].size; if (sizeNeeded.width > 10) sizeNeeded.width -= 10; if (sizeNeeded.height > 15) sizeNeeded.height -= 15; } else { sizeNeeded = NSMakeSize(0, 0); } e = [[self subviews] objectEnumerator]; while((view = [e nextObject])) { NSRect r; r = [view frame]; sizeNeeded.height = r.origin.y + r.size.height; if(view != _noteView) sizeNeeded.width = MAX(sizeNeeded.width, r.origin.x + r.size.width); } sizeNeeded.width += 10; sizeNeeded.height += 15; if(_fillsSuperview && [self superview]) { NSSize superSize = [[self superview] frame].size; if(sizeNeeded.height < superSize.height) sizeNeeded.height = superSize.height; if(sizeNeeded.width < superSize.width) sizeNeeded.width = superSize.width; } if(_noteView) { nvSize = NSMakeSize(sizeNeeded.width - [_noteView frame].origin.x - 5, [_noteView frame].size.height); nvMinSize = NSMakeSize(nvSize.width, [_noteView minSize].height); nvMaxSize = NSMakeSize(nvSize.width, [_noteView maxSize].height); [_noteView setFrameSize: nvSize]; [_noteView setMinSize: nvMinSize]; [_noteView setMaxSize: nvMaxSize]; } [self setFrameSize: sizeNeeded]; } - (void) setPerson: (ADPerson*) aPerson { if(aPerson == _person || aPerson == nil) return; [_person release]; _person = [aPerson retain]; [self setFrame: NSZeroRect]; [self layout]; } - (ADPerson*) person { return _person; } - (void) setDisplaysImage: (BOOL) yesno { if(yesno == _displaysImage) return; _displaysImage = yesno; if([_person imageData]) [self layout]; } - (BOOL) displaysImage { return _displaysImage; } - (void) setForceImage: (BOOL) yesno { if(yesno == _forceImage) return; _forceImage = yesno; [self layout]; } - (BOOL) forceImage { return _forceImage; } - (void) drawRect: (NSRect) rect { NSBezierPath *p; ADPersonPropertyView *v; NSEnumerator *e; NSRect r; CGFloat x; [self calcSize]; [self lockFocus]; if(![self isEditable]) [[NSColor whiteColor] set]; else [[NSColor colorWithDeviceRed: 1.0 green: 1.0 blue: 0.65 alpha: 1.0] set]; NSRectFill(rect); if(!_person) { NSPoint p; NSSize s1, s2; NSAttributedString *str = [[[NSAttributedString alloc] initWithString: _(@"No Person Selected")] autorelease]; [[NSColor blackColor] set]; s1 = [str size]; s2 = [self frame].size; p.x = (s2.width-s1.width)/2; p.y = (s2.height-s1.height)/2; [str drawAtPoint: p]; [self unlockFocus]; return; } x = 5; if([_person readOnly]) { [_lockImg compositeToPoint: NSMakePoint(x, _iconY) operation: NSCompositeCopy]; x += [_lockImg size].width + 2; } if([_person shared]) { [_shareImg compositeToPoint: NSMakePoint(x, _iconY) operation: NSCompositeCopy]; x += [_shareImg size].width + 2; } if([[_person uniqueId] isEqualToString: [[[_person addressBook] me] uniqueId]]) { NSFont *meFont; NSMutableAttributedString *str; CGFloat y; meFont = [NSFont boldSystemFontOfSize: 8]; str = [[[NSMutableAttributedString alloc] initWithString: _(@"Me")] autorelease]; [str addAttribute: NSFontAttributeName value: meFont range: NSMakeRange(0, [str length])]; y = _iconY - [meFont boundingRectForFont].size.height; r = NSMakeRect(x, y, [meFont widthOfString: _(@"Me")], [meFont boundingRectForFont].size.height); [str drawInRect: r]; x += r.size.width + 2; } [[NSColor blackColor] set]; p = [NSBezierPath bezierPath]; [p moveToPoint: NSMakePoint(5, _headerLineY)]; [p lineToPoint: NSMakePoint([self frame].size.width-5, _headerLineY)]; [p stroke]; // find last subview that actually displays anything and draw the // line directly underneath it e = [[self subviews] reverseObjectEnumerator]; while((v = [e nextObject])) { if([v respondsToSelector: @selector(hasCells)]) { if([v hasCells]) break; } else break; } r = [_noteView frame]; _footerLineY = r.origin.y - 7; if(_footerLineY > _headerLineY) { p = [NSBezierPath bezierPath]; [p moveToPoint: NSMakePoint(5, _footerLineY)]; [p lineToPoint: NSMakePoint([self frame].size.width-5, _footerLineY)]; [p stroke]; } [self unlockFocus]; } - (BOOL) isEditable { return _editable; } - (void) setEditable: (BOOL) yn { if(yn == _editable) return; _editable = yn; if(_noteTextChanged) { NSString *note = [_person valueForProperty: ADNoteProperty]; if(note) { if([[_noteView string] isEqualToString: @""]) [_person removeValueForProperty: ADNoteProperty]; else [_person setValue: [_noteView string] forProperty: ADNoteProperty]; } else if(![[_noteView string] isEqualToString: @""]) [_person setValue: [_noteView string] forProperty: ADNoteProperty]; } [self layout]; } - (void) beginEditingInFirstCell { NSArray *subs; if(!_editable) [self setEditable: YES]; subs = [self subviews]; _editingViewIndex = 0; while(![[subs objectAtIndex: _editingViewIndex] respondsToSelector: @selector(hasEditableCells)] || ![[subs objectAtIndex: _editingViewIndex] hasEditableCells]) _editingViewIndex++; [[subs objectAtIndex: _editingViewIndex] beginEditingInFirstCell]; } - (void) superviewFrameChanged: (NSNotification*) note { if([self isDescendantOf: [note object]] && self != [note object]) [self layout]; } - (void) imageClicked: (id) sender { NSOpenPanel *panel; NSArray *types; NSInteger retval; if(!_editable) return; panel = [NSOpenPanel openPanel]; types = [NSArray arrayWithObjects: @"jpg", @"JPG", @"jpeg", @"JPEG", @"tiff", @"TIFF", @"tif", @"TIF", @"png", @"PNG", nil]; [panel setCanChooseFiles: YES]; [panel setCanChooseDirectories: NO]; [panel setAllowsMultipleSelection: NO]; retval = [panel runModalForTypes: types]; if(retval == NSCancelButton) return; if([[panel filenames] count] != 1) { NSLog(@"Argh! %lu filenames; 1 expected\n", (unsigned long)[[panel filenames] count]); return; } if(![_person setImageDataWithFile: [[panel filenames] objectAtIndex: 0]]) NSRunAlertPanel(_(@"Error Loading Image"), [NSString stringWithFormat: _(@"The image file %@ could " @"not be loaded."),[[panel filenames] objectAtIndex: 0]], _(@"OK"), nil, nil, nil); else [self layout]; } - (void) cleanupEmptyProperty: (NSString*) property { ADPropertyType type; type = [ADPerson typeOfProperty: property]; if(type == ADStringProperty) { if([[_person valueForProperty: property] isEqualToString: @""] || [[_person valueForProperty: property] isEqualToString: [[self class] emptyValueForProperty: property]]) [_person removeValueForProperty: property]; return; } else if(type == ADMultiStringProperty) { ADMutableMultiValue *mv; NSUInteger i; BOOL didSomeWork, didSomethingAtAll; mv = [_person valueForProperty: property]; if(![mv count]) return; didSomeWork = YES; didSomethingAtAll = NO; while(didSomeWork) { didSomeWork = NO; for(i = 0; i < [mv count]; i++) if([[mv valueAtIndex: i] isEqualToString: [[self class] emptyValueForProperty: property]]) { [mv removeValueAndLabelAtIndex: i]; didSomeWork = YES; didSomethingAtAll = NO; i = 0; break; } } if(didSomethingAtAll) [_person setValue: mv forProperty: property]; } else if(type == ADMultiDictionaryProperty) { ADMutableMultiValue *mv; NSUInteger i; BOOL didSomeWork, didSomethingAtAll; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [_person valueForProperty: property]] autorelease]; if(![mv count]) return; didSomeWork = YES; didSomethingAtAll = NO; while(didSomeWork) { didSomeWork = NO; for(i=0; i<[mv count]; i++) if(![[mv valueAtIndex: i] count]) { [mv removeValueAndLabelAtIndex: i]; didSomeWork = YES; didSomethingAtAll = NO; i = 0; break; } } if(didSomethingAtAll) [_person setValue: mv forProperty: property]; } } - (void) cleanupEmptyProperties { NSEnumerator *e; NSString *prop; e = [[ADPerson properties] objectEnumerator]; while((prop = [e nextObject])) [self cleanupEmptyProperty: prop]; } - (void) setDelegate: (id) delegate { _delegate = delegate; } - (id) delegate { return _delegate; } - (void) setAcceptsDrop: (BOOL) yesno { _acceptsDrop = yesno; } - (BOOL) acceptsDrop { return _acceptsDrop; } - (void) setFontSize: (CGFloat) fontSize { if(_fontSize == fontSize) return; _fontSize = fontSize; [self layout]; } - (CGFloat) fontSize { return _fontSize; } /* * Delegate methods */ - (BOOL) canPerformClickForProperty: (id) property { if([property isEqualToString: ADEmailProperty] || [property isEqualToString: ADHomePageProperty]) return YES; return NO; } - (void) clickedOnProperty: (id) property withValue: (id) value inView: (id) sender { if([property isEqualToString: ADEmailProperty]) { NSPasteboard *pb = [NSPasteboard generalPasteboard]; [pb declareTypes: [NSArray arrayWithObjects: NSStringPboardType, nil] owner: self]; [pb setString: value forType: NSStringPboardType]; NSPerformService(@"GNUMail/New Mail with recipient", pb); } else if([property isEqualToString: ADHomePageProperty]) { NSPasteboard *pb = [NSPasteboard generalPasteboard]; [pb declareTypes: [NSArray arrayWithObjects: NSStringPboardType, nil] owner: self]; [pb setString: value forType: NSStringPboardType]; NSPerformService(@"Open URL", pb); } } - (void) valueForProperty: (id) property changedToValue: (id) value inView: (id) sender { } - (void) viewWillBeginEditing: (id) view { NSUInteger i; for(i=0; i<[[self subviews] count]; i++) { id v = [[self subviews] objectAtIndex: i]; if(v == view) _editingViewIndex = i; else if([v isKindOfClass: [ADPersonPropertyView class]]) [v endEditing]; } } - (void) view: (id) view changedWidthFrom: (CGFloat) w1 to: (CGFloat) w2 { NSPoint o; NSEnumerator *e; ADPersonPropertyView *v; if(!view) return; o = [view frame].origin; e = [[self subviews] objectEnumerator]; while((v = [e nextObject])) { NSPoint p; if(v == view) continue; p = [v frame].origin; if(p.y == o.y && p.x > o.x) { p.x += (w2-w1); [v setFrameOrigin: p]; } } [self setNeedsDisplay: YES]; } - (void) view: (id) view changedHeightFrom: (CGFloat) oldH to: (CGFloat) newH { NSPoint o; NSEnumerator *e; ADPersonPropertyView *v; if(!view) return; o = [view frame].origin; e = [[self subviews] objectEnumerator]; while((v = [e nextObject])) { NSPoint p; if(v == view) continue; p = [v frame].origin; if(p.y > o.y) { p.y += (newH-oldH); [v setFrameOrigin: p]; } } [self setNeedsDisplay: YES]; } - (void) beginEditingInNextViewWithTextMovement: (int) movement { NSArray *subs; [self layout]; subs = [self subviews]; if(![subs count]) return; switch(movement) { case NSReturnTextMovement: return; case NSTabTextMovement: do { _editingViewIndex++; if(_editingViewIndex >= [subs count]) _editingViewIndex = 0; if([[subs objectAtIndex: _editingViewIndex] respondsToSelector: @selector(hasEditableCells)] && [[subs objectAtIndex: _editingViewIndex] hasEditableCells]) break; } while(YES); [[subs objectAtIndex: _editingViewIndex] beginEditingInFirstCell]; break; case NSBacktabTextMovement: do { _editingViewIndex--; if(_editingViewIndex < 0) _editingViewIndex = [subs count]-1; if([[subs objectAtIndex: _editingViewIndex] respondsToSelector: @selector(hasEditableCells)] && [[subs objectAtIndex: _editingViewIndex] hasEditableCells]) break; } while(YES); [[subs objectAtIndex: _editingViewIndex] beginEditingInLastCell]; break; default: break; } } - (BOOL) personPropertyView: (ADPersonPropertyView*) view willDragValue: (NSString*) value forProperty: (NSString*) aProperty { if(!_delegate || ![_delegate respondsToSelector: @selector(personView:willDragProperty:)] || ![_delegate personView: self willDragProperty: aProperty]) return NO; return YES; } - (BOOL) personPropertyView: (ADPersonPropertyView*) view willDragPerson: (ADPerson*) aPerson { if(!_delegate || ![_delegate respondsToSelector: @selector(personView:willDragPerson:)] || ![_delegate personView: self willDragPerson: aPerson]) return NO; return YES; } - (BOOL) imageView: (ADImageView*) view willDragImage: (NSImage*) image { if(!_delegate || ![_delegate respondsToSelector: @selector(personView:willDragProperty:)] || ![_delegate personView: self willDragProperty: ADImageProperty]) return NO; return YES; } - (BOOL) imageView: (ADImageView*) view willDragPerson: (ADPerson*) aPerson { if(!_delegate || ![_delegate respondsToSelector: @selector(personView:willDragPerson:)] || ![_delegate personView: self willDragPerson: aPerson]) return NO; return YES; } - (NSImage*) draggingImage { return _vcfImage; } /* * NoteView delegate methods */ - (void) textDidChange: (NSNotification*) aNotification { id view; view = [aNotification object]; if(view != _noteView) return; _noteTextChanged = YES; [view sizeToFit]; [self calcSize]; } - (void) textDidEndEditing: (NSNotification*) aNotification { id view; NSString *note; view = [aNotification object]; if(view != _noteView) return; note = [_person valueForProperty: ADNoteProperty]; if(note) { if([[view string] isEqualToString: @""]) [_person removeValueForProperty: ADNoteProperty]; else [_person setValue: [view string] forProperty: ADNoteProperty]; } else if(![[view string] isEqualToString: @""]) [_person setValue: [view string] forProperty: ADNoteProperty]; _noteTextChanged = NO; } /* * action methods */ - (void) mouseDown: (NSEvent*) event { NSEnumerator *e; id v; e = [[self subviews] objectEnumerator]; while((v = [e nextObject])) if([v isKindOfClass: [ADPersonPropertyView class]]) [v endEditing]; [self layout]; [super mouseDown: event]; _mouseDownOnSelf = YES; } - (void) mouseDragged: (NSEvent*) event { NSPasteboard *pb; NSString *str; NSMutableDictionary *dict; if(!_mouseDownOnSelf || _editable) return; if(!_delegate || ![_delegate respondsToSelector: @selector(personView:willDragPerson:)] || ![_delegate personView: self willDragPerson: _person]) return; pb = [NSPasteboard pasteboardWithName: NSDragPboard]; [pb declareTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", @"NSFilesPromisePboardType", NSStringPboardType, ADPeoplePboardType, nil] owner: self]; [pb setData: [_person vCardRepresentation] forType: @"NSVCardPboardType"]; dict = [NSMutableDictionary dictionary]; [dict setObject: [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]] forKey: @"PID"]; if([_person uniqueId]) [dict setObject: [_person uniqueId] forKey: @"UID"]; if([_person addressBook]) [dict setObject: [[_person addressBook] addressBookDescription] forKey: @"AB"]; [pb setPropertyList: [NSArray arrayWithObject: dict] forType: ADPeoplePboardType]; if([[_person valueForProperty: ADEmailProperty] count]) str = [NSString stringWithFormat: @"%@ <%@>", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], [[_person valueForProperty: ADEmailProperty] valueAtIndex: 0]]; else str = [_person screenName]; [pb setString: str forType: NSStringPboardType]; [self dragImage: _vcfImage at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } - (void) mouseUp: (NSEvent*) event { _mouseDownOnSelf = NO; } /* * Drag and drop */ - (NSDragOperation) draggingEntered: (id) sender { BOOL ok; NSPasteboard *pb; NSArray *types; if([sender draggingSource] == self || ([[sender draggingSource] isKindOfClass: [NSView class]] && [[sender draggingSource] isDescendantOf: self])) return NO; ok = NO; pb = [sender draggingPasteboard]; types = [pb types]; if([types containsObject: NSFilenamesPboardType]) { NSArray *arr; NSString *fname, *ext; NSArray *imgExts; arr = [pb propertyListForType: NSFilenamesPboardType]; if(![arr isKindOfClass: [NSArray class]] || [arr count] != 1) return NSDragOperationNone; fname = [arr objectAtIndex: 0]; ext = [[fname pathExtension] lowercaseString]; imgExts = [NSArray arrayWithObjects: @"vcf", @"jpg", @"jpeg", @"tif", @"tiff", nil]; // accept image only if we have a person if([imgExts containsObject: ext] && !_person) return NSDragOperationNone; // don't accept anything besides images and VCFs else if(![imgExts containsObject: ext] && ![ext isEqualToString: @"vcf"]) return NSDragOperationNone; } if(_delegate && [_delegate respondsToSelector: @selector(personView:shouldAcceptDrop:)]) { if([_delegate personView: self shouldAcceptDrop: sender]) ok = YES; else ok = NO; } else { if(_acceptsDrop) ok = YES; else ok = NO; } if(ok) return NSDragOperationCopy; else return NSDragOperationNone; } - (BOOL) prepareForDragOperation: (id) sender { if([sender draggingSource] == self || ([[sender draggingSource] isKindOfClass: [NSView class]] && [[sender draggingSource] isDescendantOf: self])) return NO; if(_delegate && [_delegate respondsToSelector: @selector(personView:shouldAcceptDrop:)]) { if(![_delegate personView: self shouldAcceptDrop: sender]) return NO; } else { if(!_acceptsDrop) return NO; } return YES; } - (BOOL) performDragOperation: (id) sender { NSPasteboard *pb; NSArray *types; pb = [sender draggingPasteboard]; types = [pb types]; if([types containsObject: NSFilenamesPboardType]) { NSArray *arr; NSString *fname, *ext; arr = [pb propertyListForType: NSFilenamesPboardType]; if(![arr isKindOfClass: [NSArray class]] || [arr count] != 1) return NSDragOperationNone; fname = [arr objectAtIndex: 0]; ext = [[fname pathExtension] lowercaseString]; // convert vcf file if([ext isEqualToString: @"vcf"]) { NSMutableArray *ppl; id conv; ADRecord *r; conv = [[ADConverterManager sharedManager] inputConverterWithFile: fname]; ppl = [NSMutableArray array]; while((r = [conv nextRecord])) { if(![r isKindOfClass: [ADPerson class]]) continue; [ppl addObject: r]; } if(![ppl count]) return NO; if(_delegate && [_delegate respondsToSelector: @selector(personView:receivedDroppedPersons:)]) { if(![_delegate personView: self receivedDroppedPersons: ppl]) return NO; } else [self setPerson: [ppl objectAtIndex: 0]]; return YES; } else if([[NSArray arrayWithObjects: @"jpg", @"jpeg", @"tif", @"tiff", nil] containsObject: ext]) { if(!_person) return NO; if(![_person setImageDataWithFile: fname]) return NO; [self layout]; return YES; } } else if([types containsObject: NSTIFFPboardType]) { NSData *data = [pb dataForType: NSTIFFPboardType]; if(![_person setImageData: data]) return NO; if(![_person setImageDataType: @"tiff"]) return NO; [self layout]; return YES; } else if([types containsObject: @"NSVCardPboardType"]) { ADPerson *p; NSData *data; data = [pb dataForType: @"NSVCardPboardType"]; p = [[[ADPerson alloc] initWithVCardRepresentation: data] autorelease]; if(!p) return NO; if(_delegate && [_delegate respondsToSelector: @selector(personView:receivedDroppedPersons:)]) { if(![_delegate personView: self receivedDroppedPersons: [NSArray arrayWithObject: p]]) return NO; } else [self setPerson: p]; return YES; } return NO; } - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) isLocal { return NSDragOperationCopy|NSDragOperationLink; } @end @implementation ADPersonView (PropertyMangling) + (NSString*) nextLabelAfter: (NSString*) previous forProperty: (NSString*) property { NSArray *arr; NSInteger index; arr = [_labelDict objectForKey: property]; if(!arr || ![arr count]) arr = [_labelDict objectForKey: @"Default"]; if(!arr || ![arr count]) return @"!!UNKNOWN!!"; index = [arr indexOfObject: previous]; if(index == NSNotFound) return [arr objectAtIndex: 0]; index++; if(index >= [arr count]) index = 0; return [arr objectAtIndex: index]; } + (NSString*) defaultLabelForProperty: (NSString*) property { NSArray *arr; arr = [_labelDict objectForKey: property]; if(!arr || ![arr count]) arr = [_labelDict objectForKey: @"Default"]; if(!arr || ![arr count]) return @"!!UNKNOWN!!"; return [arr objectAtIndex: 0]; } + (id) emptyValueForProperty: (NSString*) property { ADPropertyType type = [ADPerson typeOfProperty: property]; switch(type) { case ADDateProperty: case ADStringProperty: case ADMultiStringProperty: return [NSString stringWithFormat: @"[%@]", ADLocalizedPropertyOrLabel(property)]; case ADDictionaryProperty: case ADMultiDictionaryProperty: return [NSMutableDictionary dictionary]; default: NSLog(@"Can't create empty value for %@ (type 0x%x)\n", property, type); } return nil; } + (NSArray*) layoutRuleForProperty: (NSString*) property value: (NSDictionary*) dict { NSString *countryCode, *countryName; NSArray *layout; countryCode = [dict objectForKey: ADAddressCountryCodeKey]; countryName = [dict objectForKey: ADAddressCountryKey]; if(!countryCode && countryName) countryCode = [self isoCountryCodeForCountryName: countryName]; if(!countryCode && __defaultCountryCode) countryCode = __defaultCountryCode; if(!countryCode) countryCode = [self isoCountryCodeForCurrentLocale]; layout = [_addressLayoutDict objectForKey: countryCode]; if(!layout) layout = [_addressLayoutDict objectForKey: @"Default"]; return layout; } + (NSString*) isoCountryCodeForCountryName: (NSString*) name { NSEnumerator *e; NSString *key; e = [[_isoCodeDict allKeys] objectEnumerator]; while((key = [e nextObject])) if([[_isoCodeDict objectForKey: key] containsObject: name]) return key; NSLog(@"No default set\n"); return [self isoCountryCodeForCurrentLocale]; } + (void) setDefaultISOCountryCode: (NSString*) code { [__defaultCountryCode release]; __defaultCountryCode = [code copy]; } + (NSString*) isoCountryCodeForCurrentLocale { NSString *lang; NSRange range; lang = [[[NSProcessInfo processInfo] environment] objectForKey: @"LANG"]; if(!lang) return @"us"; // hard-coded default!! range = [lang rangeOfString: @"_"]; if(range.location != NSNotFound) lang = [[lang substringFromIndex: range.location+range.length] lowercaseString]; if(![[_isoCodeDict allKeys] containsObject: lang]) lang = @"us"; return lang; } @end Addresses-0.5.0/Frameworks/AddressView/ADPersonPropertyView+Events.m0000644000175000000240000002064014752742764024706 0ustar multixstaff// ADPersonPropertyView+Events.m (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address View Framework for GNUstep // /* system includes */ /* (none) */ /* my includes */ #import "ADPersonPropertyView.h" #import "ADPersonView.h" @implementation ADPersonPropertyView (Events) - (void) mouseDown: (NSEvent*) event { NSUInteger i; id c = nil; id details; ADMutableMultiValue *mv; NSPoint p; _mouseDownOnSelf = YES; _mouseDownCell = nil; p = [self convertPoint: [event locationInWindow] fromView: nil]; for(i = 0; i < [_cells count]; i++) { c = [_cells objectAtIndex: i]; if(NSPointInRect(p, [c rect])) { _mouseDownCell = c; break; } } if(i == [_cells count]) return; details = [c details]; if([c isEditable] && ![self isEditable]) { _propertyForDrag = [[self propertyForDragWithDetails: [c details]] retain]; } else { [_propertyForDrag release]; _propertyForDrag = nil; } if([c isKindOfClass: [ADPersonActionCell class]]) { ADActionType type; NSString *ident, *label; NSUInteger index; type = [c actionType]; switch(type) { case ADAddAction: mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [_person valueForProperty: _property]] autorelease]; ident = [mv addValue: [self emptyValue] withLabel: [self defaultLabel]]; [_person setValue: mv forProperty: _property]; [[self superview] setNeedsDisplay: YES]; [self layout]; break; case ADRemoveAction: ident = [details objectForKey: @"Identifier"]; label = [details objectForKey: @"Label"]; if(!ident || !label) { NSLog(@"Ident %@ or label %@ are nil!\n", ident, label); return; } index = [[_person valueForProperty: _property] indexForIdentifier: ident]; if(index == NSNotFound) { NSLog(@"Property %@ (%@) doesn't know identifier %@\n", _property, [_person valueForProperty: _property], ident); return; } mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [_person valueForProperty: _property]] autorelease]; [mv removeValueAndLabelAtIndex: index]; [_person setValue: mv forProperty: _property]; [[self superview] setNeedsDisplay: YES]; [self layout]; break; case ADChangeAction: ident = [details objectForKey: @"Identifier"]; label = [details objectForKey: @"Label"]; if(!ident || !label) { NSLog(@"Ident %@ or label %@ are nil!\n", ident, label); return; } index = [[_person valueForProperty: _property] indexForIdentifier: ident]; if(index == NSNotFound) { NSLog(@"Property %@ (%@) doesn't know identifier %@\n", _property, [_person valueForProperty: _property], ident); return; } label = [self nextLabelAfter: label]; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [_person valueForProperty: _property]] autorelease]; [mv replaceLabelAtIndex: index withLabel: label]; [_person setValue: mv forProperty: _property]; [self layout]; break; default: NSLog(@"Unknown action type %d\n", type); } return; } if(_editable) { if(_delegate) [_delegate viewWillBeginEditing: self]; [self beginEditingInCellWithDetails: details becauseOfEvent: event]; [self setNeedsDisplay: YES]; } } - (void) mouseDragged: (NSEvent*) event { NSPasteboard *pb; if(!_mouseDownOnSelf || !_delegate || _editable) return; pb = [NSPasteboard pasteboardWithName: NSDragPboard]; if(_propertyForDrag && [_delegate respondsToSelector: @selector(personPropertyView:willDragValue:forProperty:)] && [_delegate personPropertyView: self willDragValue: _propertyForDrag forProperty: _property]) { [pb declareTypes: [NSArray arrayWithObject: NSStringPboardType] owner: self]; [pb setData: [_person vCardRepresentation] forType: @"NSVCardPboardType"]; [pb setString: _propertyForDrag forType: NSStringPboardType]; [self dragImage: [self imageForDraggedProperty: _propertyForDrag] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } else if(!_propertyForDrag && [_delegate respondsToSelector: @selector(personPropertyView:willDragPerson:)] && [_delegate personPropertyView: self willDragPerson: _person]) { NSString *str; NSMutableDictionary *dict; [pb declareTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", @"NSFilesPromisePboardType", NSStringPboardType, ADPeoplePboardType, nil] owner: self]; [pb setData: [_person vCardRepresentation] forType: @"NSVCardPboardType"]; dict = [NSMutableDictionary dictionary]; [dict setObject: [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]] forKey: @"PID"]; if([_person uniqueId]) [dict setObject: [_person uniqueId] forKey: @"UID"]; if([_person addressBook]) [dict setObject: [[_person addressBook] addressBookDescription] forKey: @"AB"]; [pb setPropertyList: [NSArray arrayWithObject: dict] forType: ADPeoplePboardType]; if([[_person valueForProperty: ADEmailProperty] count]) str = [NSString stringWithFormat: @"%@ <%@>", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], [[_person valueForProperty: ADEmailProperty] valueAtIndex: 0]]; else str = [_person screenName]; [pb setString: str forType: NSStringPboardType]; [self dragImage: [_delegate draggingImage] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } _mouseDownCell = nil; } - (void) mouseUp: (NSEvent*) event { if(_editable) return; if(_mouseDownCell && _delegate && [_mouseDownCell isEditable] && [_delegate respondsToSelector: _clickSel]) [_delegate clickedOnProperty: _property withValue: [_mouseDownCell stringValue] inView: self]; [_propertyForDrag release]; _propertyForDrag = nil; _mouseDownOnSelf = NO; _mouseDownCell = nil; } - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) isLocal { return NSDragOperationCopy|NSDragOperationLink; } - (void) beginEditingInCellWithDetails: (id) details becauseOfEvent: (NSEvent*) e { ADPersonPropertyCell *c; NSRect r; NSText *t; NSUInteger i; [[details retain] autorelease]; [self endEditing]; i = [self indexOfEditableCellWithDetails: details]; c = [_cells objectAtIndex: i]; if(![c isEditable]) return; _editingCellIndex = i; r = [c rect]; t = [_window fieldEditor: YES forObject: c]; // We invoke this directly even if apple says we shoudn't. // Reason is that GS sets this up only if the view is a NSTextView // put ADPersonPropertyView is a generic NSView subclass _textObject = [c setUpFieldEditorAttributes: t]; if([[c stringValue] hasPrefix: @"["]) { [c setStringValue: @""]; r.size.width = [[c font] widthOfString: @""]; } r.size.width += 4; // make the cursor fit too if(e) { [c editWithFrame: r inView: self editor: _textObject delegate: self event: e]; } else { // HACK: We must create our own event here, since we can't // pass nil as event argument to // editWithFrame:inView:... // REASON: In that method, the event is asked for its event // type, which (for a nil event) is 0==NSLeftMouseDown. The // effect is that the NSCell sits there waiting for the // mouse up :-) // REMEDY: Maybe fix this by checking for nil event in // NSCell editWithFrame:inView:...? e = [NSEvent keyEventWithType: NSKeyDown location: NSMakePoint(0, 0) modifierFlags: 0 timestamp: 0 windowNumber: 0 context: nil characters: @"\t" charactersIgnoringModifiers: @"\t" isARepeat: NO keyCode: '\t']; [c editWithFrame: r inView: self editor: _textObject delegate: self event: e]; [_textObject setSelectedRange: NSMakeRange(0, [[c stringValue] length])]; } [self setNeedsDisplay: YES]; } - (void) beginEditingInCellAtIndex: (NSUInteger) i becauseOfEvent: (NSEvent*) e { id cell = [_cells objectAtIndex: i]; return [self beginEditingInCellWithDetails: [cell details] becauseOfEvent: e]; } @end Addresses-0.5.0/Frameworks/AddressView/VCFImage.tiff0000644000175000000240000001053012312144405021417 0ustar multixstaffII*sBQs~yyyyyyyyyyyyyyyyyyyz(w &Z! &%D~H###111444333+++k%yJ444===>>>>>>>>>>>>999((( y 9111>>>>>>>>>>>>>>>>>>>>><<<~ yy%%%<<<>>>>>>>>>>>>>>>>>>>>>>>>666Cyy ,///===>>>>>>>>>>>>>>>>>>>>>>>>;;;xyy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy***===>>>>>>>>>>>>>>>>>>>>>>>>888^yyj999>>>>>>>>>>>>>>>>>>>>>>>>,,,!yy###===>>>>>>>>>>>>>>>===777Ayy''';;;>>>>>>>>>===333Xyy -r Syy#mxyyyyyyyyyyyyuTyy###;;;===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>===777:yy#222>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tyy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &y} *222<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<222* }}yy yy}   D2@HP(R/home/giesler/Source/GNUstep/Addresses/AddressManager/VCFImage.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/ScriptingInfo.plist0000644000175000000240000000010112312144405023010 0ustar multixstaff{ Classes = ( ADPersonView, ADSinglePropertyView ); }Addresses-0.5.0/Frameworks/AddressView/ADPersonPropertyView+Private.m0000644000175000000240000004432514750125334025044 0ustar multixstaff// ADPersonPropertyView+Private.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address Book Application for GNUstep // /* my includes */ #import "ADPersonPropertyView.h" @implementation ADPersonPropertyView (Private) - (ADPersonPropertyCell*) addCellWithValue: (NSString*) val inRect: (NSRect*) rect editable: (BOOL) yesno font: (NSFont*) font alignment: (NSTextAlignment) alignment details: (id) details { ADPersonPropertyCell *cell; NSSize s; cell = [[[ADPersonPropertyCell alloc] init] autorelease]; [cell setEditable: yesno]; [cell setStringValue: val]; [cell setFont: font]; [cell setAlignment: alignment]; if(details) [cell setDetails: details]; s = [cell cellSize]; rect->size.width = MAX(rect->size.width, s.width); rect->size.height = MAX(rect->size.height, s.height); [cell setRect: *rect]; [_cells addObject: cell]; return cell; } - (ADPersonPropertyCell*) addValueCellForValue: (NSString*) val inRect: (NSRect*) rect details: (id) details { ADPersonPropertyCell *cell; cell = [self addCellWithValue: val inRect: rect editable: YES font: [self font] alignment: NSLeftTextAlignment details: details]; if(_delegate && [_delegate respondsToSelector: _clickSel] && [_delegate canPerformClickForProperty: _property] && !_editable) [cell setTextColor: [NSColor blueColor]]; else if(_editable) [cell setTextColor: [NSColor darkGrayColor]]; else [cell setTextColor: [NSColor blackColor]]; return cell; } - (ADPersonPropertyCell*) addValueCellForValue: (NSString*) val inRect: (NSRect*) rect { return [self addValueCellForValue: val inRect: rect details: nil]; } - (ADPersonPropertyCell*) addLabelCellForLabel: (NSString*) label inRect: (NSRect*) rect { NSString *str; NSFont *font; str = ADLocalizedPropertyOrLabel(label); font = [self boldFont]; str = [str stringByAbbreviatingToFitWidth: _maxLabelWidth inFont: font]; rect->size.width = [self maxLabelWidth]; return [self addCellWithValue: str inRect: rect editable: NO font: font alignment: NSRightTextAlignment details: nil]; } - (ADPersonPropertyCell*) addConstantCellForString: (NSString*) str inRect: (NSRect*) rect { NSFont *font = [self font]; rect->size.width = [font widthOfString: str]; return [self addCellWithValue: str inRect: rect editable: NO font: font alignment: NSRightTextAlignment details: nil]; } - (ADPersonActionCell*) addActionCellWithType: (ADActionType) t inRect: (NSRect*) rect details: (id) details { id cell; NSSize cellSize; NSPoint cellOrigin; cell = [[[ADPersonActionCell alloc] init] autorelease]; switch(t) { case ADAddAction: [cell setImage: _addImg]; break; case ADRemoveAction: [cell setImage: _rmvImg]; break; case ADChangeAction: [cell setImage: _chgImg]; break; default: NSLog(@"Unknown action type %d\n", t); } cellSize = [cell rect].size; cellOrigin = rect->origin; if(rect->size.height > cellSize.height) cellOrigin.y += (rect->size.height - cellSize.height)/2 + 2; [cell setOrigin: cellOrigin]; rect->size = [cell rect].size; [cell setDetails: details]; [cell setActionType: t]; [_cells addObject: cell]; return cell; } - (NSArray*) layoutDictionary: (NSDictionary*) dict withLabel: (NSString*) label forDisplayInRect: (NSRect*) rect { NSArray *layout, *row; NSString *field; NSEnumerator *rowEnumerator, *fieldEnumerator; NSSize rowSize; NSRect rowRect; float labelX; BOOL firstRow; NSMutableArray *cells; layout = [self layoutRuleForValue: dict]; cells = [NSMutableArray array]; [self addLabelCellForLabel: label inRect: rect]; rect->origin.x += rect->size.width + 5; labelX = rect->origin.x; rect->size.width += 5; rowRect = *rect; rowSize = rect->size; firstRow = YES; rowEnumerator = [layout objectEnumerator]; while((row = [rowEnumerator nextObject])) { // do we have to layout anything in this row at all? fieldEnumerator = [row objectEnumerator]; while((field = [fieldEnumerator nextObject])) { if([field hasPrefix: @"$"] || ![dict objectForKey: field]) continue; break; } if(!field) continue; fieldEnumerator = [row objectEnumerator]; while((field = [fieldEnumerator nextObject])) { NSString *str; id cell; if([field hasPrefix: @"$"]) str = [field substringFromIndex: 1]; else str = [dict objectForKey: field]; if(!str || [str length] == 0) continue; rowRect.size = NSMakeSize(0, 0); cell = [self addConstantCellForString: str inRect: &rowRect]; [cells addObject: cell]; rowRect.origin.x += rowRect.size.width + 5; rowSize.width += rowRect.size.width + 5; rowSize.height = MAX(rowSize.height, rowRect.size.height); } // add +1 to compensate tiny GNUstep bug rect->size.width = MAX(rect->size.width, rowSize.width+1); if(!firstRow) rect->size.height += rowSize.height+1; firstRow = NO; rowRect.origin.x = rect->origin.x; rowRect.origin.y += rowRect.size.height; rowSize = NSMakeSize(labelX, 0); } return [NSArray arrayWithArray: cells]; } - (NSArray*) layoutDictionary: (NSDictionary*) dict withLabel: (NSString*) label details: (NSDictionary*) details buttons: (BOOL) buttons forEditInRect: (NSRect*) rect { NSArray *layout, *row; NSString *field; NSEnumerator *rowEnumerator, *fieldEnumerator; NSSize rowSize; NSRect rowRect; float labelX; BOOL firstRow, showsDefault; NSMutableArray *cells; layout = [self layoutRuleForValue: dict]; cells = [NSMutableArray array]; [self addLabelCellForLabel: label inRect: rect]; rect->origin.x += rect->size.width + 5; rect->size.width += 5; rowSize = rect->size; if(buttons) { rect->size.height = rowSize.height; [self addActionCellWithType: ADChangeAction inRect: rect details: details]; rect->origin.x += rect->size.width + 5; rowSize.width += rect->size.width + 5; rowSize.height = MAX(rowSize.height, rect->size.height); rect->size.height = rowSize.height; [self addActionCellWithType: ADRemoveAction inRect: rect details: details]; rect->origin.x += rect->size.width + 5; rowSize.width += rect->size.width + 5; rowSize.height = MAX(rowSize.height, rect->size.height); } labelX = rect->origin.x; rowRect = *rect; firstRow = YES; rowEnumerator = [layout objectEnumerator]; while((row = [rowEnumerator nextObject])) { fieldEnumerator = [row objectEnumerator]; while((field = [fieldEnumerator nextObject])) { NSString *str; BOOL label; label = NO; showsDefault = NO; if([field hasPrefix: @"$"]) { str = [field substringFromIndex: 1]; label = YES; } else str = [dict objectForKey: field]; if(!str) { str = [NSString stringWithFormat: @"[%@]", ADLocalizedPropertyOrLabel(field)]; showsDefault = YES; } rowRect.size = NSMakeSize(0, 0); if(label) { ADPersonPropertyCell *cell = [self addConstantCellForString: str inRect: &rowRect]; [cells addObject: cell]; } else { ADPersonPropertyCell *cell; NSMutableDictionary *myDetails = [NSMutableDictionary dictionaryWithDictionary: details]; [myDetails setObject: field forKey: @"Key"]; cell = [self addValueCellForValue: str inRect: &rowRect details: myDetails]; if(showsDefault) [cell setTextColor: [NSColor lightGrayColor]]; [cells addObject: cell]; } rowRect.origin.x += rowRect.size.width + 5; rowSize.width += rowRect.size.width + 5; rowSize.height = MAX(rowSize.height, rowRect.size.height); } rect->size.width = MAX(rect->size.width, rowSize.width+1); if(!firstRow) rect->size.height += rowSize.height+1; firstRow = NO; rowRect.origin.x = rect->origin.x; rowRect.origin.y += rowRect.size.height; rowSize = NSMakeSize(labelX, 0); } return [NSArray arrayWithArray: cells]; } - (void) layoutForEdit { id val; id cell; ADPropertyType type; NSRect r; NSSize allSize; NSUInteger i; BOOL showsDefault; if(!_property || !_person) return; val = [_person valueForProperty: _property]; type = [_person typeOfProperty: _property]; r = NSMakeRect(0, 0, 0, 0); allSize = NSMakeSize(0, 0); // convert types if(val) switch(type) { case ADStringProperty: break; case ADIntegerProperty: val = [NSString stringWithFormat: @"%d", [val intValue]]; break; case ADRealProperty: val = [NSString stringWithFormat: @"%f", [val floatValue]]; break; case ADDateProperty: val = [val descriptionWithCalendarFormat:[[NSUserDefaults standardUserDefaults] objectForKey:NSShortDateFormatString]]; break; case ADArrayProperty: case ADDictionaryProperty: case ADDataProperty: case ADErrorInProperty: NSLog(@"Can't layout object of type %d\n", type); return; default: break; } // layout single-cell values if(!(type & ADMultiValueMask)) { if(_displaysLabel) { [self addLabelCellForLabel: _property inRect: &r]; r.origin.x += r.size.width + 5; allSize.width = r.size.width + 5; allSize.width += r.size.width + 5; r.size = NSMakeSize(0, 0); } showsDefault = NO; if(!val) { val = [self emptyValue]; showsDefault = YES; } cell = [self addValueCellForValue: val inRect: &r]; if(showsDefault) [cell setTextColor: [NSColor lightGrayColor]]; allSize.width += r.size.width; allSize.height = MAX(allSize.height, r.size.height); } else if(type == ADMultiStringProperty) { if(![val count]) { ADPersonPropertyCell *labelCell, *valueCell; NSString *label, *value; NSDictionary *details; label = [self defaultLabel]; details = [NSDictionary dictionaryWithObjectsAndKeys: label, @"Label", nil]; labelCell = [self addLabelCellForLabel: label inRect: &r]; [labelCell setDetails: details]; r.origin.x += r.size.width + 5; allSize.width = r.size.width + 5; allSize.height = r.size.height; r.size = NSMakeSize(0, 0); value = [self emptyValue]; valueCell = [self addValueCellForValue: value inRect: &r]; [valueCell setTextColor: [NSColor lightGrayColor]]; [valueCell setDetails: details]; allSize.width += r.size.width; allSize.height = MAX(allSize.height, r.size.height); } else { for(i=0; i<[val count]; i++) { ADPersonPropertyCell *labelCell, *valueCell; NSString *label, *identifier, *value; NSDictionary *details; NSSize rowSize; label = [val labelAtIndex: i]; identifier = [val identifierAtIndex: i]; value = [val valueAtIndex: i]; details = [NSDictionary dictionaryWithObjectsAndKeys: identifier, @"Identifier", label, @"Label", nil]; labelCell = [self addLabelCellForLabel: label inRect: &r]; [labelCell setDetails: details]; r.origin.x += r.size.width + 5; rowSize.width = r.size.width + 5; rowSize.height = r.size.height; r.size.height = rowSize.height; [self addActionCellWithType: ADChangeAction inRect: &r details: details]; r.origin.x += r.size.width + 5; rowSize.width += r.size.width + 5; rowSize.height = MAX(rowSize.height, r.size.height); r.size.height = rowSize.height; [self addActionCellWithType: ADRemoveAction inRect: &r details: details]; r.origin.x += r.size.width + 5; rowSize.width += r.size.width + 5; rowSize.height = MAX(rowSize.height, r.size.height); r.size = NSMakeSize(0, 0); valueCell = [self addValueCellForValue: value inRect: &r]; [valueCell setDetails: details]; if([value isEqualToString: [self emptyValue]]) [valueCell setTextColor: [NSColor lightGrayColor]]; else [valueCell setTextColor: [NSColor darkGrayColor]]; rowSize.width += r.size.width; rowSize.height = MAX(rowSize.height, r.size.height); r.size = NSMakeSize(0, 0); r.origin.x = 0; r.origin.y += rowSize.height; allSize.width = MAX(allSize.width, rowSize.width); allSize.height += rowSize.height; } r.origin.x = _maxLabelWidth + 5 + [_chgImg size].width + 5; r.origin.y += 5; [self addActionCellWithType: ADAddAction inRect: &r details: nil]; allSize.height += r.size.height + 5; } } else if(type == ADMultiDictionaryProperty) { NSRect rect = NSZeroRect; if(![val count]) { NSDictionary *details; NSString *label; NSMutableDictionary *value; label = [self defaultLabel]; value = [self emptyValue]; details = [NSDictionary dictionaryWithObjectsAndKeys: label, @"Label", nil]; [self layoutDictionary: value withLabel: label details: details buttons: NO forEditInRect: &rect]; allSize = rect.size; } else { for(i=0; i<[val count]; i++) { NSString *label, *identifier; NSDictionary *value; NSDictionary *details; label = [val labelAtIndex: i]; value = [val valueAtIndex: i]; identifier = [val identifierAtIndex: i]; details = [NSDictionary dictionaryWithObjectsAndKeys: identifier, @"Identifier", label, @"Label", nil]; [self layoutDictionary: value withLabel: label details: details buttons: YES forEditInRect: &rect]; allSize.width = MAX(allSize.width, rect.size.width); allSize.height += rect.size.height; rect.origin.x = 0; rect.origin.y += rect.size.height; rect.size = NSZeroSize; } rect.origin.x = _maxLabelWidth + 5 + [_chgImg size].width + 5; rect.origin.y += 5; [self addActionCellWithType: ADAddAction inRect: &rect details: nil]; allSize.height += rect.size.height + 5; } } else NSLog(@"Can't layout values of type %d yet\n", type); _requiredSize = allSize; [self setFrameSize: _requiredSize]; } - (void) layoutForDisplay { NSRect r; NSSize allSize; NSUInteger i; id val; ADPropertyType type; if(!_property || !_person) return; val = [_person valueForProperty: _property]; type = [_person typeOfProperty: _property]; r = NSMakeRect(0, 0, 0, 0); allSize = NSMakeSize(0, 0); if (!val) return; // convert types switch(type) { case ADStringProperty: break; case ADIntegerProperty: val = [NSString stringWithFormat: @"%d", [val intValue]]; break; case ADRealProperty: val = [NSString stringWithFormat: @"%f", [val floatValue]]; break; case ADDateProperty: val = [val descriptionWithCalendarFormat:[[NSUserDefaults standardUserDefaults] objectForKey:NSShortDateFormatString]]; break; case ADArrayProperty: case ADDictionaryProperty: case ADDataProperty: case ADErrorInProperty: NSLog(@"Can't layout object of type %d\n", type); return; default: break; } // layout single-cell values if(!(type & ADMultiValueMask)) { if(_displaysLabel) { [self addLabelCellForLabel: _property inRect: &r]; allSize.width += r.size.width + 5; allSize.height = r.size.height; r.origin.x += r.size.width + 5; r.size = NSMakeSize(0, 0); } [self addValueCellForValue: val inRect: &r]; allSize.width += r.size.width; allSize.height = MAX(allSize.height, r.size.height); } // layout multi-cell values; multi-string only this far else if(type == ADMultiStringProperty) { for(i=0; i<[val count]; i++) { NSString *label, *value, *identifier; NSSize rowSize; NSDictionary *details; label = [val labelAtIndex: i]; value = [val valueAtIndex: i]; identifier = [val identifierAtIndex: i]; details = [NSDictionary dictionaryWithObjectsAndKeys: identifier, @"Identifier", label, @"Label", nil]; [self addLabelCellForLabel: label inRect: &r]; r.origin.x += r.size.width + 5; rowSize.width = r.size.width + 5; rowSize.height = r.size.height; r.size = NSMakeSize(0, 0); [self addValueCellForValue: value inRect: &r details: details]; rowSize.width += r.size.width; rowSize.height = MAX(rowSize.height, r.size.height); r.size = NSMakeSize(0, 0); r.origin.x = 0; r.origin.y += rowSize.height; allSize.width = MAX(allSize.width, rowSize.width); allSize.height += rowSize.height; } } // layout dictionaries else if(type == ADMultiDictionaryProperty) { NSRect rect = NSZeroRect; for (i=0; i<[val count]; i++) { NSArray *cells; NSDictionary *details; NSString *identifier, *label; NSUInteger j; label = [val labelAtIndex: i]; identifier = [val identifierAtIndex: i]; details = [NSDictionary dictionaryWithObjectsAndKeys: identifier, @"Identifier", label, @"Label", nil]; cells = [self layoutDictionary: [val valueAtIndex: i] withLabel: [val labelAtIndex: i] forDisplayInRect: &rect]; for(j=0; j<[cells count]; j++) [[cells objectAtIndex: j] setDetails: details]; allSize.width = MAX(allSize.width, rect.size.width); allSize.height += rect.size.height; rect.origin.x = 0; rect.origin.y += rect.size.height; rect.size = NSZeroSize; } } else NSLog(@"Can't layout values of type %d yet\n", type); _requiredSize = allSize; [self setFrameSize: _requiredSize]; } - (void) layout { CGFloat heightBefore, heightAfter; // clear everything [_cells release]; _cells = [[NSMutableArray alloc] init]; heightBefore = [self frame].size.height; if([self isEditable]) [self layoutForEdit]; else [self layoutForDisplay]; heightAfter = [self frame].size.height; if((heightBefore != heightAfter) && (_delegate != nil) && [_delegate respondsToSelector: @selector(view:changedHeightFrom:to:)]) [_delegate view: self changedHeightFrom: heightBefore to: heightAfter]; [self setNeedsDisplay: YES]; } @end Addresses-0.5.0/Frameworks/AddressView/ADSinglePropertyView.h0000644000175000000240000000467714752742764023430 0ustar multixstaff// ADSinglePropertyView.h (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address View Framework for GNUstep #import #import @class ADSinglePropertyView; @interface NSObject (ADSinglePropertyViewDelegate) - (void) doubleClickOnName: (NSString*) name value: (NSString*) value inView: (ADSinglePropertyView*) aView; @end typedef enum { ADAutoselectNone = 0, ADAutoselectAll = 1, ADAutoselectFirstValue = 2 } ADAutoselectMode; @interface ADSinglePropertyView: NSView { NSString *_property, *_prefLabel; ADAutoselectMode _autosel; NSMutableArray *_names, *_namesUnthinned, *_values, *_people; ADGroup *_selectedGroup; ADAddressBook *_book; NSSplitView *_splitView; NSBrowser *_groupsBrowser; NSTableView *_peopleTable; NSScrollView *_ptScrollView; NSTableColumn *_nameColumn; NSTableColumn *_propertyColumn; id _delegate; } - (instancetype) initWithFrame: (NSRect) frame; - (void) setDelegate: (id) delegate; - (id) delegate; - (void) setDisplayedProperty: (NSString*) property; - (NSString*) displayedProperty; // This value, if non-nil, narrows down the display of multi-values // somewhat. The algorithm is as follows: // foreach ADPerson p in [group members] or [book people]: // if [[person valueForProperty: displayedProperty] // hasValueWithLabel: preferredLabel]: // insert all values with the matching label // else: // insert all values for the property // Has no effect on non-multivalues. nil by default. - (void) setPreferredLabel: (NSString*) preferredLabel; - (NSString*) preferredLabel; // This value toggles whether the view should autoselect everything, // if it deems it sensible. If set, all addresses will be autoselected // on: // o selecting a group (but not "All") // o setting a new preferredLabel // ADAutoselectNone by default. - (void) setAutoselectMode: (ADAutoselectMode) mode; - (ADAutoselectMode) autoselectMode; - (void) autoselectAccordingToMode: (ADAutoselectMode) mode; // Return an array of two-string arrays (Name, Value) - (NSArray*) selectedNamesAndValues; // Return an array of arrays (person[ADPerson*], Value[NSString*], // Index[NSNumber]). - (NSArray*) selectedPeopleAndValues; // Return an array of strings - (NSArray*) selectedValues; - (ADGroup*) selectedGroup; - (NSArray*) selectedPeople; @end Addresses-0.5.0/Frameworks/AddressView/Spanish.lproj/0000755000175000000240000000000012312144406021720 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/Spanish.lproj/Localizable.strings0000644000175000000240000000166412312144406025563 0ustar multixstaff/*** Spanish.lproj/Localizable.strings updated by make_strings 2004-03-13 21:20:34 -0500 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: ADPersonView.m:457 */ /* File: ADPersonView.m:465 */ "Me" = "Yo"; /*** Unmatched/untranslated keys ***/ /* File: ADPersonView.m:255 */ "Notes:" = "Notas:"; /* File: ADPersonView.m:419 */ "No Person Selected" = "No hay persona seleccionada"; /* File: ADPersonView.m:578 */ "Error Loading Image" = "Error cargando la im\u00e1gen"; /* File: ADPersonView.m:580 */ "The image file %@ could not be loaded." = "El archivo de im\u00e1gen %@ no pudo ser cargado."; /* File: ADPersonView.m:581 */ "OK" = "OK"; /* File: ADSinglePropertyView.m:93 */ " (Me)" = " (Yo)"; /* File: ADSinglePropertyView.m:219 */ "Person Name" = "Nombre de la persona"; /* File: ADSinglePropertyView.m:484 */ "Groups" = "Grupos"; /* File: ADSinglePropertyView.m:497 */ "All" = "Todos"; Addresses-0.5.0/Frameworks/AddressView/Main.m0000644000175000000240000000146212312144405020232 0ustar multixstaff#import #import "ADSinglePropertyView.h" @interface Controller: NSObject @end @implementation Controller - (void) applicationDidFinishLaunching: (NSNotification*) note { NSLog(@"Finish\n"); NSRect r = NSMakeRect(0, 0, 400, 400); [[NSAutoreleasePool alloc] init]; NSWindow *win = [[NSWindow alloc] initWithContentRect: r styleMask: NSTitledWindowMask | NSResizableWindowMask backing: NSBackingStoreBuffered defer: NO]; ADSinglePropertyView *v = [[ADSinglePropertyView alloc] initWithFrame: r]; [win setContentView: v]; [win makeKeyAndOrderFront: self]; } @end int main(int argc, const char** argv) { [[NSAutoreleasePool alloc] init]; [[NSApplication sharedApplication] setDelegate: [[Controller alloc] init]]; NSApplicationMain(argc, argv); } Addresses-0.5.0/Frameworks/AddressView/Lock.tiff0000644000175000000240000000135212312144406020731 0ustar multixstaffII*VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV  v F~@(R/home/giesler/Source/GNUstep/Addresses/AddressViewFramework/Lock.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/ADSinglePropertyView.m0000644000175000000240000003065714747772421023427 0ustar multixstaff// ADSinglePropertyView.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address View Framework for GNUstep #import "ADSinglePropertyView.h" // redefine _(@"...") so that it looks into our bundle, not the main bundle #undef _ #define _(x) [[NSBundle bundleForClass: [ADSinglePropertyView class]] \ localizedStringForKey: x \ value: x \ table: nil] @interface ADSinglePropertyView (Private) - (void) _buildArrays; - (void) _handleDatabaseChanged: (NSNotification*) note; - (void) _selectGroupInBrowser: (id) sender; - (void) _doubleOnBrowser: (id) sender; @end @implementation ADSinglePropertyView (Private) - (void) _buildArrays { ADPropertyType type; NSArray *people; ADPerson *p; NSEnumerator *e; [_names release]; [_values release]; [_namesUnthinned release]; [_people release]; _names = [[NSMutableArray alloc] init]; _namesUnthinned = [[NSMutableArray alloc] init]; _values = [[NSMutableArray alloc] init]; _people = [[NSMutableArray alloc] init]; type = [[ADPerson class] typeOfProperty: _property]; if(_selectedGroup) { ADRecord *record; NSString *uid = [_selectedGroup uniqueId]; record = [[_book recordForUniqueId: uid] retain]; if ([record isKindOfClass:[ADGroup class]]) { [_selectedGroup autorelease]; _selectedGroup = (ADGroup *)record; } else { NSLog(@"Internal Error: recordForUniqueId should return an ADGroup"); } } if(!_selectedGroup) people = [_book people]; else people = [_selectedGroup members]; people = [people sortedArrayUsingSelector: @selector(compareByScreenName:)]; e = [people objectEnumerator]; while((p = [e nextObject])) { if(type & ADMultiValueMask) { NSUInteger i, index; BOOL hasPreferred; id val; val = [p valueForProperty: _property]; if (![val count]) continue; hasPreferred = NO; // does it have values matching the // preferred label? if(_prefLabel) for(i=0; i<[val count]; i++) if([_prefLabel isEqualToString: [val labelAtIndex: i]]) { hasPreferred = YES; break; } for(i=0,index=0; i<[val count]; i++) { if(hasPreferred && ![_prefLabel isEqualToString: [val labelAtIndex: i]]) continue; if(index==0) { NSString *name = [p screenName]; if(p == [_book me]) name = [name stringByAppendingString: _(@" (Me)")]; [_names addObject: name]; } else [_names addObject: @""]; [_namesUnthinned addObject: [p screenName]]; [_values addObject: [[val valueAtIndex: i] description]]; [_people addObject: p]; index++; } } else { if (![p valueForProperty: _property]) continue; [_names addObject: [p screenName]]; [_namesUnthinned addObject: [p screenName]]; [_values addObject: [[p valueForProperty: _property] description]]; } } [_peopleTable reloadData]; } - (void) _handleDatabaseChanged: (NSNotification*) note { NSInteger row; [self _buildArrays]; row = [_groupsBrowser selectedRowInColumn: 0]; [_groupsBrowser reloadColumn: 0]; [_groupsBrowser selectRow: row inColumn: 0]; } - (void) _handleDoubleclickOnTable: (id) sender { NSString *name; NSString *value; NSInteger row; row = [sender selectedRow]; if(row == -1 || !_delegate) return; name = [_namesUnthinned objectAtIndex: row]; value = [_values objectAtIndex: row]; if([_delegate respondsToSelector: @selector(doubleClickOnName:value:inView:)]) [_delegate doubleClickOnName: name value: value inView: self]; } - (void) _selectGroupInBrowser: (id) sender { NSInteger row; ADGroup *newGroup = nil; if(!_book) _book = [ADAddressBook sharedAddressBook]; row = [sender selectedRowInColumn: 0]; if(row) newGroup = [[_book groups] objectAtIndex: row-1]; if(newGroup == _selectedGroup) return; [_selectedGroup release]; _selectedGroup = [newGroup retain]; [_peopleTable deselectAll: self]; [self _buildArrays]; [_peopleTable reloadData]; } - (void) _doubleOnBrowser: (id) sender { [self autoselectAccordingToMode: _autosel]; } @end @implementation ADSinglePropertyView - (instancetype) initWithFrame: (NSRect) frame { NSRect r; if ((self = [super initWithFrame: frame])) { [self setDisplayedProperty: ADEmailProperty]; _selectedGroup = nil; [self setAutoresizesSubviews: YES]; r = frame; r.origin = NSMakePoint(0, 0); _splitView = [[[NSSplitView alloc] initWithFrame: r] autorelease]; [_splitView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [_splitView setVertical: YES]; [_splitView setDelegate: self]; [self addSubview: _splitView]; r = frame; r.origin = NSMakePoint(0, 0); r.size.width = frame.size.width/4; _groupsBrowser = [[[NSBrowser alloc] initWithFrame: r] autorelease]; [_groupsBrowser setMaxVisibleColumns: 1]; [_groupsBrowser setAllowsEmptySelection: NO]; [_groupsBrowser setAllowsMultipleSelection: NO]; [_groupsBrowser setDelegate: self]; [_groupsBrowser setTarget: self]; [_groupsBrowser setAction: @selector(_selectGroupInBrowser:)]; [_groupsBrowser setDoubleAction: @selector(_doubleOnBrowser:)]; [_groupsBrowser loadColumnZero]; [_groupsBrowser selectRow: 0 inColumn: 0]; [_splitView addSubview: _groupsBrowser]; r = frame; r.origin = NSMakePoint(0, 0); r.size.width = (frame.size.width*3)/4; _ptScrollView = [[[NSScrollView alloc] initWithFrame: r] autorelease]; [_ptScrollView setRulersVisible: NO]; [_ptScrollView setHasVerticalScroller: YES]; [_ptScrollView setHasHorizontalScroller: YES]; [_ptScrollView setBorderType: NSBezelBorder]; [_ptScrollView setAutoresizingMask: NSViewWidthSizable|NSViewHeightSizable]; [_splitView addSubview: _ptScrollView]; _peopleTable = [[[NSTableView alloc] initWithFrame: frame] autorelease]; [_peopleTable setDataSource: self]; [_peopleTable setTarget: self]; [_peopleTable setDelegate: self]; [_peopleTable setDoubleAction: @selector(_handleDoubleclickOnTable:)]; _nameColumn = [[[NSTableColumn alloc] initWithIdentifier: @"Name"] autorelease]; [[_nameColumn headerCell] setStringValue: _(@"Person Name")]; _propertyColumn = [[[NSTableColumn alloc] initWithIdentifier: @"Property"] autorelease]; [[_propertyColumn headerCell] setStringValue: ADLocalizedPropertyOrLabel(_property)]; [_peopleTable addTableColumn: _nameColumn]; [_peopleTable addTableColumn: _propertyColumn]; [_peopleTable setAutoresizesAllColumnsToFit: YES]; [_peopleTable setAllowsMultipleSelection: YES]; [_peopleTable sizeToFit]; [_ptScrollView setDocumentView: _peopleTable]; _delegate = nil; _prefLabel = nil; _autosel = ADAutoselectFirstValue; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_handleDatabaseChanged:) name: ADDatabaseChangedExternallyNotification object: nil]; } return self; } - (void) setDelegate: (id) delegate { _delegate = delegate; } - (id) delegate { return _delegate; } - (void) dealloc { [[NSNotificationCenter defaultCenter] removeObserver: self]; [super dealloc]; } - (void) setDisplayedProperty: (NSString*) property { ADPropertyType type; if([_property isEqualToString: property]) return; if(!_book) _book = [ADAddressBook sharedAddressBook]; type = [[ADPerson class] typeOfProperty: property]; if(type == ADErrorInProperty) { NSLog(@"Trying to set unknown property %@\n", property); return; } [_property release]; _property = [property copy]; [self _buildArrays]; [[_propertyColumn headerCell] setStringValue: ADLocalizedPropertyOrLabel(_property)]; [[_peopleTable headerView] setNeedsDisplay: YES]; [_peopleTable deselectAll: self]; [_peopleTable reloadData]; } - (NSString*) displayedProperty { return _property; } - (void) setPreferredLabel: (NSString*) preferredLabel { if([preferredLabel isEqualToString: _prefLabel]) return; [_prefLabel release]; _prefLabel = [preferredLabel copy]; [self _buildArrays]; if(_selectedGroup) [self autoselectAccordingToMode: _autosel]; } - (NSString*) preferredLabel { return _prefLabel; } - (void) setAutoselectMode: (ADAutoselectMode) mode { _autosel = mode; } - (ADAutoselectMode) autoselectMode { return _autosel; } - (void) autoselectAccordingToMode: (ADAutoselectMode) mode { NSUInteger i; ADPerson *p; [_peopleTable reloadData]; switch(mode) { case ADAutoselectAll: [_peopleTable selectAll: self]; return; case ADAutoselectFirstValue: /* extend selection without duplicates */ [_peopleTable deselectAll: self]; p = nil; for(i=0; i<[_people count]; i++) { if(p != [_people objectAtIndex: i]) { p = [_people objectAtIndex: i]; [_peopleTable selectRow: i byExtendingSelection: YES]; } } return; default: return; } } - (NSArray*) selectedNamesAndValues { NSMutableArray *retval; NSEnumerator *e; NSNumber *r; retval = [NSMutableArray array]; e = [_peopleTable selectedRowEnumerator]; while((r = [e nextObject])) { NSUInteger i = [r intValue]; [retval addObject: [NSArray arrayWithObjects: [_namesUnthinned objectAtIndex: i], [_values objectAtIndex: i], nil]]; } return [NSArray arrayWithArray: retval]; } - (NSArray*) selectedPeopleAndValues { NSMutableArray *retval; NSEnumerator *e; NSNumber *r; retval = [NSMutableArray array]; e = [_peopleTable selectedRowEnumerator]; while((r = [e nextObject])) { NSUInteger i = [r intValue]; [retval addObject: [NSArray arrayWithObjects: [_people objectAtIndex: i], [_values objectAtIndex: i], [NSNumber numberWithInt: i], nil]]; } return [NSArray arrayWithArray: retval]; } - (NSArray*) selectedValues { NSMutableArray *retval; NSEnumerator *e; NSNumber *r; retval = [NSMutableArray array]; e = [_peopleTable selectedRowEnumerator]; while((r = [e nextObject])) [retval addObject: [_values objectAtIndex: [r intValue]]]; return [NSArray arrayWithArray: retval]; } - (ADGroup*) selectedGroup { return _selectedGroup; } - (NSArray*) selectedPeople { NSMutableArray *retval; NSEnumerator *e; NSNumber *r; retval = [NSMutableArray array]; e = [_peopleTable selectedRowEnumerator]; while((r = [e nextObject])) if(![retval containsObject: [_people objectAtIndex: [r intValue]]]) [retval addObject: [_people objectAtIndex: [r intValue]]]; return [NSArray arrayWithArray: retval]; } /* * NSTableDataSource methods */ - (NSInteger) numberOfRowsInTableView: (NSTableView*) view { return [_values count]; } - (id) tableView: (NSTableView*) v objectValueForTableColumn: (NSTableColumn*) col row: (NSInteger) row { NSString *val; if(col == _nameColumn) val = [_names objectAtIndex: row]; else val = [_values objectAtIndex: row]; return val; } - (BOOL) tableView: (NSTableView*) v shouldEditTableColumn: (NSTableColumn*) col row: (NSInteger) row { return NO; } /* * NSSplitView delegate methods */ - (CGFloat) splitView: (NSSplitView*) sender constrainMinCoordinate: (CGFloat) proposedMin ofSubviewAt: (NSInteger) offset { if(offset == 0 && proposedMin < [_groupsBrowser minColumnWidth]) return [_groupsBrowser minColumnWidth]; return proposedMin; } - (CGFloat) splitView: (NSSplitView*) sender constrainMaxCoordinate: (CGFloat) proposedMax ofSubviewAt: (NSInteger) offset { NSRect r; r = [self frame]; if(offset == 0 && proposedMax > r.size.width - [_groupsBrowser minColumnWidth]) return r.size.width - [_groupsBrowser minColumnWidth]; return proposedMax; } /* * NSBrowser delegate methods */ - (NSInteger) browser: (NSBrowser*) b numberOfRowsInColumn: (NSInteger) col { if(!_book) _book = [ADAddressBook sharedAddressBook]; return [[_book groups] count]+1; } - (NSString*) browser: (NSBrowser*) b titleOfColumn: (NSInteger) col { return _(@"Groups"); } - (void) browser: (NSBrowser*) b willDisplayCell: (NSBrowserCell*) cell atRow: (NSInteger) row column: (NSInteger) col { if(!_book) _book = [ADAddressBook sharedAddressBook]; if(row) [cell setStringValue: [[[_book groups] objectAtIndex: row-1] valueForProperty: ADGroupNameProperty]]; else [cell setStringValue: _(@"All")]; [cell setLeaf: YES]; } @end Addresses-0.5.0/Frameworks/AddressView/Labels.dict0000644000175000000240000000052712312144406021241 0ustar multixstaff{ Email = (WorkEmail, HomeEmail); Address = (WorkAddr, HomeAddr); Phone = (MainPhone, WorkPhone, HomePhone, MobilePhone, HomeFax, WorkFax, Pager); AIM = (WorkAIM, HomeAIM); Jabber = (WorkJabber, HomeJabber); MSN = (WorkMSN, HomeMSN); Yahoo = (WorkYahoo, HomeYahoo); ICQ = (WorkICQ, HomeICQ); Default = (Work, Home, Other); }Addresses-0.5.0/Frameworks/AddressView/Remove.tiff0000644000175000000240000000200012312144406021265 0ustar multixstaffII*111B齽遁111Brrrrrrrrrrrr111B111B鿿齽222222222222222222222鿿遁111B111Brrrrrrrrrrrr111B齽遁111B   H@(R/home/giesler/Source/GNUstep/Addresses/AddressViewFramework/Remove.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/ChangeLog0000644000175000000240000000014012312144406020733 0ustar multixstaff2007-05-02 Nicola Pero * GNUmakefile (debug): Do not set. Addresses-0.5.0/Frameworks/AddressView/GNUmakefile0000644000175000000240000000246614746005572021265 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make VERSION=0.5.0 FRAMEWORK_NAME=AddressView AddressView_CURRENT_VERSION_NAME = 0.5.0 AddressView_DEPLOY_WITH_CURRENT_VERSION = yes AddressView_OBJC_FILES=\ ADPersonView.m \ ADImageView.m \ ADPersonPropertyView.m \ ADPersonPropertyView+Private.m \ ADPersonPropertyView+Events.m \ ADSinglePropertyView.m AddressView_HEADER_FILES=\ AddressView.h \ ADPersonView.h \ ADImageView.h \ ADPersonPropertyView.h \ ADSinglePropertyView.h AddressView_RESOURCE_FILES=\ ScriptingInfo.plist \ UnknownImage.tiff \ Lock.tiff Share.tiff \ Add.tiff Remove.tiff Change.tiff \ VCFImage.tiff \ Labels.dict ISOCodeMapping.dict AddressLayouts.dict AddressView_LOCALIZED_RESOURCE_FILES=Localizable.strings AddressView_LANGUAGES=Dutch English French German Spanish AddressView_OBJCFLAGS=-I.. AddressView_LDFLAGS=-L.. -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/framework.make -include GNUmakefile.postamble ADDITIONAL_LIB_DIRS += -L../Addresses/Addresses.framework LIBRARIES_DEPEND_UPON = -lAddresses $(GUI_LIBS) $(FND_LIBS) $(OBJC_LIBS) $(SYSTEM_LIBS) Addresses-0.5.0/Frameworks/AddressView/AddressLayouts.dict0000644000175000000240000000407512312144406023007 0ustar multixstaff/* * This is the address layout file. It contains ISO country codes * mapped to property list made up entirely of an array containing * arrays. The top-level array is the address; every subarray * represents a line in the address. * You can have string constants in the address by putting in strings * starting with "$". All other strings will be interpreted as address * fields. Please note that lines containing no actual filled fields * (i.e. the fields are non-existent or empty in the address) will not * be shown in display mode, even if they contain string constants. * Allowed fields are: * Street * City * State * ZIP * Country * CountryCode (if you want it displayed in the address as well) * POBox * ExtAddr (something like "Apartment *10, 2nd floor") * Only keys contained int the address layout will appear in the edit * or display view of the address. Only keys contained in the address * layout that actually have corresponding values in the address will * appear in the display view of the address. */ { de = (("$Postfach", POBox), (Street), (ExtAddr), (ZIP, City), (State), (Country)); fr = ((Street), (ExtAddr), (Zip, City), (Country)); nl = (("$Postbus", POBox), ("$Straat", Street), ("$ExtraAdresGegevens", ExtAddress), (ZIP, City), (State), (Country)); sk = (("$P.O.Box", POBox), (Street), (ExtAddr), (ZIP, City), (State), (Country)); us = ((POBox), (ExtAddr), (Street), (City, "$,", State, ZIP), (Country)); ar = ((Street), (ExtAddr), (POBox), ("$(", ZIP, "$)", City, "$,", State), (Country)); Default = (("$POBox", POBox), ("$Street", Street), ("$City", City), ("$State", State), ("$ZIP", ZIP), ("$Country", Country), ("$Extended Address", ExtAddr)); } Addresses-0.5.0/Frameworks/AddressView/Share.tiff0000644000175000000240000000135412312144406021105 0ustar multixstaffII*OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOnnnOOOOOOOOOOOOOOOOOOOOOpkR1kR1kR1kR1kR1kR1kR1pkkkkkkkR1pppkkkkkR1kR1kR1kR1kR1kR1  v G~@(R/home/giesler/Source/GNUstep/Addresses/AddressViewFramework/Share.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/UnknownImage.tiff0000644000175000000240000002646612312144406022460 0ustar multixstaffII*,...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`///`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`///`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````[[[`XXX`VVV`VVV`SSS`VVV`VVV`ZZZ`^^^`````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````YYY`PPP`EEE`===`999`999`333`999`;;;`CCC`NNN`YYY`^^^`````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````^^^`SSS`AAA`222`...`...`999`<<<`;;;`666`...`...`333`AAA`SSS`^^^`````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````^^^`QQQ`:::`///`...`...`@@@`SSS`VVV`VVV`MMM`888`...`...`000`>>>`VVV`````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````TTT`;;;`///`...`...`:::`YYY`````````````^^^`LLL`000`...`...`111`GGG`\\\`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````^^^`GGG`000`...`...`...`OOO`^^^`````````````````WWW`999`...`...`...`;;;`VVV`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````YYY`@@@`...`...`...`777`XXX`````````````````````ZZZ`BBB`...`...`...`222`OOO`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````ZZZ`@@@`...`...`...`CCC`[[[`````````````````````[[[`DDD`...`...`...`...`MMM`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````^^^`LLL`444`...`...`MMM`^^^`````````````````````[[[`DDD`...`...`...`...`MMM`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````]]]`SSS`KKK`MMM`[[[`````````````````````````YYY`>>>`...`...`...`333`PPP`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````___`^^^`^^^`___`````````````````````````VVV`777`...`...`...`<<<`VVV`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````]]]`KKK`///`...`...`111`III`]]]`````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````___`WWW`666`...`...`///`@@@`XXX`````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````ZZZ`AAA`...`///`000`@@@`XXX`````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````[[[`EEE`...`///`555`DDD`XXX`````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````[[[`DDD`...`000`:::`NNN`]]]`````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````VVV`EEE`...`///`===`TTT`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````VVV`<<<`///`///`:::`WWW`````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````UUU`<<<`///`...`333`RRR`````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````XXX`>>>`000`...`...`>>>`````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````JJJ`333`...`...`...`KKK`````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````AAA`///`...`...`...`OOO`````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````>>>`...`...`...`...`III`````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````CCC`000`...`...`...`666`\\\`````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````NNN`444`...`...`...`///`:::`PPP`\\\`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````]]]`EEE`111`...`...`...`///`222`555`555`AAA`ZZZ`````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````^^^`KKK`666`///`...`...`...`111`@@@`VVV`___`````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````___`___`UUU`NNN`NNN`QQQ`___`___`````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````^^^`XXX`VVV`YYY`^^^`````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````^^^`OOO`>>>`:::`???`NNN`\\\`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````PPP`555`///`...`...`333`OOO`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````<<<`///`...`...`...`///`???`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````888`...`...`...`...`...`;;;`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````BBB`000`...`...`...`000`DDD`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````UUU`999`///`...`///`;;;`UUU`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````^^^`UUU`JJJ`EEE`JJJ`VVV`^^^`````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````]]]`[[[`]]]`````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`444`````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````````444`...`...`///`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`444`///`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`...`</, ,-@,&-.-(RUnknownImage.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/Icons.xcf0000644000175000000240000000626712312144406020756 0ustar multixstaffgimp xcf file''BB"/ gimp-commentCreated with The GIMPJ '' New Layer#3      N''b''rn2 222222222222222222222An2 222222222222222222222An2 222222222222222222222An:̎:..^ ^^q3q^.LL.: :L LSqq33qjq : 3 d @'' New Layer#4     "''''I2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2II2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2II2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2I'' New Layer#2     ''''I2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2II2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2II2!2!2!2!2!2!2!2!2222222!2!2!2!2!2!2!2!2II!!!!!!!!!!!!!!!!I'' New Layer     '' ''  d ddd d dddd d"d"d$d$dd#d$d"d"d ddd d dddd d d ddd d dddd d"d"d$d$dd#d$d"d"d ddd d dddd d d ddd d dddd d"d"d$d$dd#d$d"d"d ddd d dddd d Z”ZM MFF && 33&&FFM!M!#Z#Z####%###”#Z#Z#!M!MFF&&33 && FFM MZ”Z '' Background      '' '' Addresses-0.5.0/Frameworks/AddressView/Dutch.lproj/0000755000175000000240000000000012312144406021362 5ustar multixstaffAddresses-0.5.0/Frameworks/AddressView/Dutch.lproj/Localizable.strings0000755000175000000240000000217312312144406025224 0ustar multixstaff/*** English.lproj/Localizable.strings updated by make_strings 2003-10-21 14:41:27 +0200 add comments above this one ***/ /*** Keys found in multiple places ***/ /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:207 */ "Person Name" = "Persoonsnaam"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:451 */ "Groups" = "Groepen"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:464 */ "All" = "Iedereen"; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:510 */ "Error Loading Image" = "Probleem bij het laden van de foto"; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:512 */ "The image file %@ could not be loaded." = "De foto %@ kon niet worden geladen."; /* File: :0 */ /* Flag: unmatched */ /* File: ADPersonView.m:406 */ /* File: ADPersonView.m:414 */ "Me" = "Ik"; /* File: :0 */ /* Flag: unmatched */ /* File: ADSinglePropertyView.m:86 */ " (Me)" = " (Ik)"; /*** Strings from ADPersonView.m ***/ /* File: ADPersonView.m:263 */ "Notes:" = "Notities:"; /* File: ADPersonView.m:513 */ "OK" = "OK"; Addresses-0.5.0/Frameworks/AddressView/README.Localize0000644000175000000240000000231112312144406021604 0ustar multixstaffLOCALIZING ADPERSONVIEW ======================= There are three things that have to be done to localize ADPersonView: o Translate .lproj/Localizable strings (of course) o Check ISOCodeMapping.dict for your country's ISO code and insert all the possible names that you know for your country into the array o Write an address layout for your country and put it into AddressLayouts.dict; key being the country code. o make AddressManager/.lproj/ISOCountryCodes.dict and put in all country codes and the corresponding countries' names in your language The algorithm for determining the correct address layout for an address is as follows: 1 Determining the country code ------------------------------ o Address contains entry for ADAddressCountryCodeKey? Return that. o Address contains entry for ADAddressCountryKey? Try to find that in ISOCodeMapping.dict and return its key. o $LANG is something like "de"? Return that. o $LANG is something like "de_DE" or "zh_TW"? Return lowercased part behind the "_". o Return "us". 2 Determining the address layout -------------------------------- o AddressLayouts.dict contains an entry for country code? Return that. o Return "Default" layout.Addresses-0.5.0/Frameworks/AddressView/ADPersonPropertyView.h0000644000175000000240000001061014746005572023425 0ustar multixstaff// ADPersonPropertyView.h (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address Book Application for GNUstep // #ifndef ADPERSONPROPERTYVIEW_H_ #define ADPERSONPROPERTYVIEW_H_ #import #import @interface NSString(ADPersonPropertySupport) - (NSString*) stringByAbbreviatingToFitWidth: (NSInteger) width inFont: (NSFont*) font; - (NSString*) stringByTrimmingWhitespace; - (BOOL) isEmptyString; @end @interface ADPersonPropertyCell: NSTextFieldCell { NSRect _r; id _details; } - (void) setRect: (NSRect) r; - (NSRect) rect; - (void) setDetails: (id) details; - (id) details; @end typedef enum { ADAddAction = 0, ADRemoveAction = 1, ADChangeAction = 2 } ADActionType; @interface ADPersonActionCell: NSImageCell { NSPoint _origin; id _details; ADActionType _type; } - (void) setActionType: (ADActionType) type; - (ADActionType) actionType; - (void) setOrigin: (NSPoint) origin; - (NSRect) rect; - (void) setDetails: (id) details; - (id) details; @end @interface ADPersonPropertyView: NSView { ADPerson *_person; NSString *_property; NSMutableArray *_cells; BOOL _displaysLabel; NSInteger _maxLabelWidth; CGFloat _fontSize; NSFont *_font; BOOL _fontSetExternally; BOOL _editable; NSUInteger _editingCellIndex; NSText *_textObject; id _delegate; SEL _clickSel, _changeSel, _canPerformSel, _widthSel, _editInNextSel; NSSize _requiredSize; NSImage *_addImg, *_rmvImg, *_chgImg; NSDictionary *_labelDict; BOOL _mouseDownOnSelf; NSString *_propertyForDrag; id _mouseDownCell; } + (NSFont*) font; + (NSFont*) boldFont; + (CGFloat) fontSize; + (void) setFontSize: (CGFloat) size; - (void) setDelegate: (id) delegate; - (id) delegate; - (void) setPerson: (ADPerson*) person; - (ADPerson*) person; - (void) setProperty: (NSString*) property; - (NSString*) property; - (void) setDisplaysLabel: (BOOL) yesno; - (BOOL) displaysLabel; - (void) setMaxLabelWidth: (CGFloat) width; - (CGFloat) maxLabelWidth; - (NSFont*) font; - (void) setFont: (NSFont*) font; - (NSFont*) boldFont; - (CGFloat) fontSize; - (void) setFontSize: (CGFloat) size; - (void) setEditable: (BOOL) editable; - (BOOL) isEditable; - (BOOL) hasEditableCells; - (BOOL) hasCells; - (void) beginEditingInFirstCell; - (void) beginEditingInLastCell; - (void) endEditing; - (NSUInteger) indexOfEditableCellWithDetails: (id) details; - (NSString*) propertyForDragWithDetails: (id) details; - (NSImage*) imageForDraggedProperty: (NSString*) prop; @end @interface ADPersonPropertyView (LabelMangling) - (NSString*) nextLabelAfter: (NSString*) previous; - (NSString*) defaultLabel; - (id) emptyValue; - (NSArray*) layoutRuleForValue: (NSDictionary*) dict; @end @protocol ADPersonPropertyViewDelegate - (void) viewWillBeginEditing: (id) view; // must implement this - (BOOL) canPerformClickForProperty: (id) property; - (void) clickedOnProperty: (id) value withValue: (id) property inView: (id) sender; - (void) valueForProperty: (id) property changedToValue: (id) value inView: (id) sender; - (void) view: (id) view changedWidthFrom: (CGFloat) oldW to: (CGFloat) newW; - (void) view: (id) view changedHeightFrom: (CGFloat) oldH to: (CGFloat) newH; - (void) beginEditingInNextViewWithTextMovement: (int) textMovement; - (BOOL) personPropertyView: (ADPersonPropertyView*) view willDragValue: (NSString*) value forProperty: (NSString*) aProperty; - (BOOL) personPropertyView: (ADPersonPropertyView*) view willDragPerson: (ADPerson*) aPerson; - (NSImage*) draggingImage; @end @interface ADPersonPropertyView (Private) - (ADPersonPropertyCell*) addCellWithValue: (NSString*) val inRect: (NSRect*) rect editable: (BOOL) yesno font: (NSFont*) font alignment: (NSTextAlignment) alignment details: (id) details; - (ADPersonPropertyCell*) addValueCellForValue: (NSString*) val inRect: (NSRect*) rect details: (id) details; - (ADPersonPropertyCell*) addValueCellForValue: (NSString*) val inRect: (NSRect*) rect; - (ADPersonPropertyCell*) addLabelCellForLabel: (NSString*) label inRect: (NSRect*) rect; - (void) layout; @end @interface ADPersonPropertyView (Events) - (void) beginEditingInCellAtIndex: (NSUInteger) i becauseOfEvent: (NSEvent*) e; - (void) beginEditingInCellWithDetails: (id) details becauseOfEvent: (NSEvent*) e; @end #endif Addresses-0.5.0/Frameworks/AddressView/AddressView.h0000644000175000000240000000037112312144406021560 0ustar multixstaff// AddressView.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address View Framework for GNUstep #import #import #import Addresses-0.5.0/Frameworks/AddressView/ADPersonPropertyView.m0000644000175000000240000005644414752742764023461 0ustar multixstaff// ADPersonPropertyView.m (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address View Framework for GNUstep // /* system includes */ #import /* my includes */ #import "ADPersonView.h" #import "ADPersonPropertyView.h" @interface NSBezierPath (ADPersonPropertyExtensions) + (NSBezierPath *) bezierPathWithRoundedRectInRect:(NSRect)rect radius:(CGFloat) radius; @end @implementation NSBezierPath (ADPersonPropertyExtensions) + (NSBezierPath *) bezierPathWithRoundedRectInRect:(NSRect)rect radius:(CGFloat) radius; { NSRect innerRect; NSPoint p1, p2, p3, p4, p11, p12, p13, p14; NSBezierPath *path; innerRect = NSInsetRect(rect, radius, radius); p1 = NSMakePoint(NSMinX(innerRect), NSMinY(innerRect)); p2 = NSMakePoint(NSMaxX(innerRect), NSMinY(innerRect)); p3 = NSMakePoint(NSMaxX(innerRect), NSMaxY(innerRect)); p4 = NSMakePoint(NSMinX(innerRect), NSMaxY(innerRect)); p11 = NSMakePoint(NSMinX(rect), NSMinY(rect)); p12 = NSMakePoint(NSMaxX(rect), NSMinY(rect)); p13 = NSMakePoint(NSMaxX(rect), NSMaxY(rect)); p14 = NSMakePoint(NSMinX(rect), NSMaxY(rect)); path = [self bezierPath]; [path moveToPoint: p11]; [path appendBezierPathWithArcWithCenter: p1 radius: radius startAngle: 180.0 endAngle:270.0]; [path relativeLineToPoint: p12]; [path appendBezierPathWithArcWithCenter: p2 radius: radius startAngle: 270.0 endAngle: 360.0]; [path relativeLineToPoint: p13]; [path appendBezierPathWithArcWithCenter: p3 radius: radius startAngle: 0.0 endAngle: 90.0]; [path relativeLineToPoint: p14]; [path appendBezierPathWithArcWithCenter: p4 radius: radius startAngle: 90.0 endAngle: 180.0]; [path closePath]; return path; } @end @interface NSDictionary (ADPersonPropertyExtensions) - (BOOL) isEqualComparingValues: (NSDictionary*) dict; @end @implementation NSDictionary (ADPersonPropertyExtensions) - (BOOL) isEqualComparingValues: (NSDictionary*) dict { NSEnumerator *e; NSString *key; e = [self keyEnumerator]; while((key = [e nextObject])) { if(![dict objectForKey: key]) continue; if(![[dict objectForKey: key] isEqual: [self objectForKey: key]]) return NO; } return YES; } @end @implementation NSString (ADPersonPropertySupport) - (NSString*) stringByAbbreviatingToFitWidth: (NSInteger) width inFont: (NSFont*) font { NSInteger index; if (width == 0) return self; width--; if([font widthOfString: self] <= width) return self; NSAssert([self length]>3, @"String too short"); index = [self length]-3; while(index>=0) { NSString *str = [[self substringToIndex: index] stringByAppendingString: @"..."]; if([font widthOfString: str] <= width) return str; index--; } return nil; } - (NSString*) stringByTrimmingWhitespace { NSCharacterSet *wsp = [NSCharacterSet whitespaceAndNewlineCharacterSet]; return [self stringByTrimmingCharactersInSet: wsp]; } - (BOOL) isEmptyString { NSString *str = [self stringByTrimmingWhitespace]; if([str isEqualToString: @""]) return YES; return NO; } @end @implementation ADPersonPropertyCell - (void) dealloc { [_details release]; [super dealloc]; } - (void) setRect: (NSRect) r { _r = r; } - (NSRect) rect { return _r; } - (void) setDetails: (id) details { [_details release]; _details = [details retain]; } - (id) details { return _details; } - (id) copyWithZone: (NSZone*) zone { ADPersonPropertyCell *cell = [super copyWithZone: zone]; cell->_details = [_details retain]; return cell; } - (NSText *) setUpFieldEditorAttributes: (NSText *) textObj { NSText *textObject; textObject = [super setUpFieldEditorAttributes: textObj]; [textObject setBackgroundColor: [NSColor orangeColor]]; [textObject setTextColor: [NSColor blackColor]]; [textObject setDrawsBackground: YES]; return textObject; } @end @implementation ADPersonActionCell - (void) dealloc { [_details release]; [super dealloc]; } - (void) setActionType: (ADActionType) type { _type = type; } - (ADActionType) actionType { return _type; } - (void) setOrigin: (NSPoint) origin { _origin = origin; } - (NSRect) rect { NSRect r = NSMakeRect(_origin.x, _origin.y, 0, 0); if([self image]) r.size = [[self image] size]; return r; } - (void) setDetails: (id) details { [_details release]; _details = [details retain]; } - (id) details { return _details; } - (id) copyWithZone: (NSZone*) zone { ADPersonActionCell *cell = [super copyWithZone: zone]; cell->_details = [_details retain]; return cell; } @end @implementation ADPersonPropertyView (LabelMangling) - (NSString*) nextLabelAfter: (NSString*) previous { return [[ADPersonView class] nextLabelAfter: previous forProperty: _property]; } - (NSString*) defaultLabel { return [[ADPersonView class] defaultLabelForProperty: _property]; } - (id) emptyValue { return [[ADPersonView class] emptyValueForProperty: _property]; } - (NSArray*) layoutRuleForValue: (NSDictionary*) dict { return [[ADPersonView class] layoutRuleForProperty: _property value: dict]; } @end static CGFloat _globalFontSize; @implementation ADPersonPropertyView + (NSFont*) font { return [NSFont systemFontOfSize: [self fontSize]]; } + (NSFont*) boldFont { return [NSFont boldSystemFontOfSize: [self fontSize]]; } + (CGFloat) fontSize { return _globalFontSize; } + (void) setFontSize: (CGFloat) size { _globalFontSize = size; } - (instancetype)initWithFrame: (NSRect) frame { NSBundle *b; NSString *filename; if ((self = [super initWithFrame: frame])) { _maxLabelWidth = 110.0; _fontSize = 12.0; _font = [[NSFont systemFontOfSize: _fontSize] retain]; _fontSetExternally = NO; _editable = NO; _editingCellIndex = -1; // load images b = [NSBundle bundleForClass: [self class]]; filename = [b pathForImageResource: @"Add.tiff"]; _addImg = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_addImg, @"Image \"Add.tiff\" could not be loaded!\n"); filename = [b pathForImageResource: @"Remove.tiff"]; _rmvImg = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_rmvImg, @"Image \"Remove.tiff\" could not be loaded!\n"); filename = [b pathForImageResource: @"Change.tiff"]; _chgImg = [[NSImage alloc] initWithContentsOfFile: filename]; NSAssert(_chgImg, @"Image \"Change.tiff\" could not be loaded!\n"); _clickSel = @selector(clickedOnProperty:withValue:inView:); _changeSel = @selector(valueForProperty:changedToValue:inView:); _canPerformSel = @selector(canPerformClickForProperty:); _widthSel = @selector(view:changedWidthFrom:to:); _editInNextSel = @selector(beginEditingInNextViewWithTextMovement:); } return self; } - (void) dealloc { if(_editingCellIndex || _textObject) [self endEditing]; [_cells release]; [_person release]; [_font release]; [_delegate release]; [_addImg release]; [_chgImg release]; [super dealloc]; } - (void) setDelegate: (id) delegate { [_delegate release]; _delegate = [delegate retain]; } - (id) delegate { return _delegate; } - (void) setPerson: (ADPerson*) person { [_person release]; _person = [person retain]; if(_property) [self layout]; } - (ADPerson*) person { return _person; } - (void) setProperty: (NSString*) property { _property = [property copy]; if(_person) [self layout]; } - (NSString*) property { return _property; } - (BOOL) updatePersonWithMultiValueFromCell: (ADPersonPropertyCell*) cell { NSString *key, *label, *identifier; id value; NSInteger i; ADPropertyType type; ADMutableMultiValue *mv; NSMutableDictionary *dict; identifier = [[cell details] objectForKey: @"Identifier"]; label = [[cell details] objectForKey: @"Label"]; key = [[cell details] objectForKey: @"Key"]; value = [cell stringValue]; type = [ADPerson typeOfProperty: _property]; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [_person valueForProperty: _property]] autorelease]; if(identifier) { i = [mv indexForIdentifier: identifier]; if(i == NSNotFound) { NSLog(@"Multivalue for %@ has no index for ID %@\n", _property, identifier); return NO; } switch(type) { case ADMultiStringProperty: if([[mv valueAtIndex: i] isEqualToString: value]) return NO; // nothing to do if([value isEmptyString]) [mv removeValueAndLabelAtIndex: i]; else [mv replaceValueAtIndex: i withValue: value]; return [_person setValue: mv forProperty: _property]; case ADMultiDictionaryProperty: if(!key) { NSLog(@"No key for Multivalue for %@\n", _property); return NO; } dict = [NSMutableDictionary dictionaryWithDictionary: [mv valueAtIndex: i]]; if([[dict objectForKey: key] isEqualToString: value]) return NO; // nothing to do if([value isEmptyString]) { if(![dict objectForKey: key]) return NO; [dict removeObjectForKey: key]; } else [dict setObject: value forKey: key]; [mv replaceValueAtIndex: i withValue: dict]; return [_person setValue: mv forProperty: _property]; default: NSLog(@"Can't update values of type 0x%x yet.\n", type); return NO; } } else // no identifier given; make up our own { if([value isEmptyString]) return NO; // nothing to do if(!label) label = [self defaultLabel]; switch(type) { case ADMultiStringProperty: identifier = [mv addValue: value withLabel: label]; return [_person setValue: mv forProperty: _property]; case ADMultiDictionaryProperty: dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: value, key, nil]; identifier = [mv addValue: dict withLabel: label]; return [_person setValue: mv forProperty: _property]; default: NSLog(@"No identifier given for new value of type 0x%x\n", type); return NO; } } } - (BOOL) updatePersonWithValueFromCell: (ADPersonPropertyCell*) cell { id value; ADPropertyType type = [ADPerson typeOfProperty: _property]; if(type & ADMultiValueMask) return [self updatePersonWithMultiValueFromCell: cell]; value = [cell stringValue]; switch(type) { case ADDateProperty: if([value isEmptyString]) { if([_person valueForProperty: _property]) return [_person removeValueForProperty: _property]; else return NO; } value = [NSCalendarDate dateWithNaturalLanguageString: value]; if(!value) return NO; return [_person setValue: value forProperty: _property]; case ADStringProperty: if([value isEmptyString]) { if([_person valueForProperty: _property]) return [_person removeValueForProperty: _property]; else return NO; // nothing to do } else if(![[_person valueForProperty: _property] isEqualToString: value]) return [_person setValue: value forProperty: _property]; break; default: NSLog(@"Can't handle type %d yet\n", type); return NO; } return NO; } - (void) setDisplaysLabel: (BOOL) yesno { if(_displaysLabel == yesno) return; _displaysLabel = yesno; if([_cells count]) [self layout]; } - (BOOL) displaysLabel { return _displaysLabel; } - (void) setMaxLabelWidth: (CGFloat) width { _maxLabelWidth = width; if([_cells count]) [self layout]; } - (CGFloat) maxLabelWidth { return _maxLabelWidth; } - (void) drawRect: (NSRect) rect { ADPersonPropertyCell *c; NSEnumerator *e; [super drawRect: rect]; [self lockFocus]; //#define GEOM_DEBUG #ifdef GEOM_DEBUG [[NSColor colorWithDeviceRed: .5 green: 1 blue: 1 alpha: 1] set]; NSRectFill(rect); #endif e = [_cells objectEnumerator]; while((c = [e nextObject])) [c drawWithFrame: [c rect] inView: self]; [self unlockFocus]; } - (BOOL) isFlipped { return YES; } - (NSFont*) font { return _font; } - (NSFont*) boldFont { return [NSFont boldSystemFontOfSize: [self fontSize]]; } - (CGFloat) fontSize { if(!_fontSetExternally) return [[self class] fontSize]; return _fontSize; } - (void) setFontSize: (CGFloat) size { _fontSize = size; if(!_fontSetExternally) { [_font release]; _font = [[NSFont systemFontOfSize: _fontSize] retain]; } _fontSetExternally = YES; if([_cells count]) [self layout]; } - (void) setFont: (NSFont*) font { [_font release]; _font = [font retain]; _fontSetExternally = YES; if([_cells count]) [self layout]; } - (void) setEditable: (BOOL) editable { if(_editable == editable) return; _editable = editable; _editingCellIndex = -1; [self layout]; } - (BOOL) isEditable { return _editable; } /* * editing */ - (void) endEditing { if(_editingCellIndex != -1) { id cell; cell = [_cells objectAtIndex: _editingCellIndex]; [cell setStringValue: [[[_textObject string] copy] autorelease]]; [cell endEditing: _textObject]; if([[cell stringValue] isEmptyString]) { id emptyValue; NSDictionary *details; NSString *key; emptyValue = [self emptyValue]; details = [cell details]; if([emptyValue isKindOfClass: [NSDictionary class]]) { key = [details objectForKey: @"Key"]; if(!key) [NSException raise: NSGenericException format: @"Cell for %@ has no value for \"key\" " @"in its details!", _property]; emptyValue = [NSString stringWithFormat: @"[%@]", ADLocalizedPropertyOrLabel(key)]; } [cell setStringValue: emptyValue]; [cell setTextColor: [NSColor lightGrayColor]]; } else { [self updatePersonWithValueFromCell: cell]; [self layout]; } [_textObject removeFromSuperview]; _textObject = nil; _editingCellIndex = -1; } if(_textObject) { [_textObject resignFirstResponder]; [_window makeFirstResponder: _window]; } } - (BOOL) hasEditableCells { NSUInteger i; for(i=0; i<[_cells count]; i++) if([[_cells objectAtIndex: i] isEditable]) return YES; return NO; } - (BOOL) hasCells { return [_cells count] != 0; } - (void) beginEditingInCellAtIndex: (NSUInteger) i countingBackwards: (BOOL) backwards { NSAssert(!(backwards && i > 0), @"index 0 cannot go backwards"); while(![[_cells objectAtIndex: i] isEditable]) if(backwards) i--; else i++; [self beginEditingInCellAtIndex: i becauseOfEvent: nil]; } - (void) beginEditingInFirstCell { [self beginEditingInCellAtIndex: 0 countingBackwards: NO]; } - (void) beginEditingInLastCell { [self beginEditingInCellAtIndex: [_cells count]-1 countingBackwards: YES]; } - (NSUInteger) indexOfEditableCellWithDetails: (id) details { NSUInteger i; for(i=0; i<[_cells count]; i++) { if(details) { if([[[_cells objectAtIndex: i] details] isEqualComparingValues: details] && [[_cells objectAtIndex: i] isEditable]) return i; } else if([[_cells objectAtIndex: i] isEditable]) return i; } return NSNotFound; } - (NSString*) propertyForDragWithDetails: (id) details { NSString *identifier; NSUInteger index; ADMultiValue *mv; id value; if(!details && !([[ADPerson class] typeOfProperty: _property] & ADMultiValueMask)) { if([_property isEqualToString: ADFirstNameProperty] || [_property isEqualToString: ADLastNameProperty]) return [_person screenNameWithFormat: ADScreenNameFirstNameFirst]; else return [_person valueForProperty: _property]; } identifier = [details objectForKey: @"Identifier"]; if(!identifier) { NSLog(@"Error: No identifier in details %@ for property %@\n", details, _property); return nil; } mv = [_person valueForProperty: _property]; if(![mv isKindOfClass: [ADMultiValue class]]) { NSLog(@"Error: Identifier %@ given, but val for %@ is no multivalue\n", identifier, _property); return nil; } index = [mv indexForIdentifier: identifier]; if(index == NSNotFound) { NSLog(@"Error: Identifier %@ not found in val for %@\n", identifier, _property); return nil; } value = [mv valueAtIndex: index]; if([[ADPerson class] typeOfProperty: _property] == ADMultiStringProperty) { if([_property isEqualToString: ADEmailProperty]) return [NSString stringWithFormat: @"%@ <%@>", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], value]; else return value; } else if([[ADPerson class] typeOfProperty: _property] == ADMultiDictionaryProperty) { NSArray *layout; NSEnumerator *rowEnum, *fieldEnum; NSArray *row; NSString *field; NSMutableString *retval; layout = [self layoutRuleForValue: value]; if(!layout) return nil; retval = [NSMutableString stringWithString: @""]; rowEnum = [layout objectEnumerator]; while((row = [rowEnum nextObject])) { NSMutableString *rowContents; rowContents = [NSMutableString stringWithString: @""]; // do we have to layout anything in this row at all? fieldEnum = [row objectEnumerator]; while((field = [fieldEnum nextObject])) if(![field hasPrefix: @"$"] && [value objectForKey: field]) break; if(!field) continue; fieldEnum = [row objectEnumerator]; while((field = [fieldEnum nextObject])) { if(![rowContents isEqualToString: @""]) [rowContents appendString: @" "]; if([field hasPrefix: @"$"]) [rowContents appendString: [field substringFromIndex: 1]]; else [rowContents appendString: [value objectForKey: field]]; } if(![rowContents isEqualToString: @""]) { if([retval isEqualToString: @""]) [retval appendString: rowContents]; else [retval appendString: [NSString stringWithFormat: @"\n%@", rowContents]]; } } if([_property isEqualToString: ADAddressProperty]) return [NSString stringWithFormat: @"%@\n%@", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], retval]; else return retval; } return nil; } - (NSImage*) imageForDraggedProperty: (NSString*) prop { NSAttributedString *str; NSImage *image; NSSize size; NSRect rect; NSImageRep *rep; #define GNUSTEP_BACK_HAS_TRANSPARENT_DRAG_IMAGES 0 #if GNUSTEP_BACK_HAS_TRANSPARENT_DRAG_IMAGES NSBezierPath *path; #endif str = [[[NSAttributedString alloc] initWithString: prop] autorelease]; size = [str size]; size.width += 10; size.height += 10; rect = NSMakeRect(0, 0, size.width, size.height); image = [[[NSImage alloc] initWithSize: size] autorelease]; #if GNUSTEP_BACK_HAS_TRANSPARENT_DRAG_IMAGES rep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL pixelsWide: size.width pixelsHigh: size.height bitsPerSample: 8 samplesPerPixel: 4 hasAlpha: YES isPlanar: YES colorSpaceName: NSCalibratedRGBColorSpace bytesPerRow: 0 bitsPerPixel: 0] autorelease]; [image addRepresentation: rep]; [image lockFocus]; [[NSColor clearColor] set]; NSRectFillUsingOperation(rect, NSCompositeCopy); [[NSColor blackColor] set]; path = [NSBezierPath bezierPathWithRoundedRectInRect: rect radius: 5.0]; [path fill]; #else rep = [[[NSBitmapImageRep alloc] initWithBitmapDataPlanes: NULL pixelsWide: size.width pixelsHigh: size.height bitsPerSample: 8 samplesPerPixel: 3 hasAlpha: NO // GSFIXME: back-art isPlanar: YES colorSpaceName: NSCalibratedRGBColorSpace bytesPerRow: 0 bitsPerPixel: 0] autorelease]; [image addRepresentation: rep]; [image lockFocusOnRepresentation: rep]; [[NSColor colorWithCalibratedRed: .7 green: .7 blue: 1.0 alpha: 1.0] set]; NSRectFill(rect); #endif [str drawAtPoint: NSMakePoint(5, 5)]; [image unlockFocus]; return image; } /* * action methods */ - (void) textDidEndEditing: (NSNotification*) aNotification { int textMovement = -1; NSInteger cellIndex; id c; NSDictionary *dict = [aNotification userInfo]; id details; c = [_cells objectAtIndex: _editingCellIndex]; [c setStringValue: [[[_textObject string] copy] autorelease]]; [c endEditing: _textObject]; [self updatePersonWithValueFromCell: c]; if(dict) { id num = [dict objectForKey: @"NSTextMovement"]; if(num) textMovement = [num intValue]; } cellIndex = _editingCellIndex; details = [[c details] retain]; _editingCellIndex = -1; [_textObject removeFromSuperview]; _textObject = nil; if(_delegate) if([_delegate respondsToSelector: _changeSel]) [_delegate valueForProperty: _property changedToValue: [c stringValue] inView: self]; [((ADPersonView*)[self superview]) cleanupEmptyProperties]; [self layout]; [[self superview] setNeedsDisplay: YES]; // Ended editing by any special text movement? switch(textMovement) { case NSReturnTextMovement: if(_delegate) if([_delegate respondsToSelector: _editInNextSel]) [_delegate beginEditingInNextViewWithTextMovement: textMovement]; case NSBacktabTextMovement: cellIndex = [self indexOfEditableCellWithDetails: details]; [details release]; if(cellIndex != NSNotFound) { cellIndex--; while(cellIndex >= 0) { if([[_cells objectAtIndex: cellIndex] isEditable]) break; cellIndex--; } if(cellIndex >= 0) { [self beginEditingInCellAtIndex: cellIndex becauseOfEvent: nil]; [self setNeedsDisplay: YES]; return; } } if(_delegate) if([_delegate respondsToSelector: _editInNextSel]) [_delegate beginEditingInNextViewWithTextMovement: textMovement]; break; case NSTabTextMovement: cellIndex = [self indexOfEditableCellWithDetails: details]; [details release]; if(cellIndex != NSNotFound) { cellIndex++; while(cellIndex < [_cells count]) { if([[_cells objectAtIndex: cellIndex] isEditable]) break; cellIndex++; } if(cellIndex < [_cells count]) { [self beginEditingInCellAtIndex: cellIndex becauseOfEvent: nil]; [self setNeedsDisplay: YES]; return; } } if(_delegate) if([_delegate respondsToSelector: _editInNextSel]) [_delegate beginEditingInNextViewWithTextMovement: textMovement]; break; default: break; } } - (void) textDidChange: (NSNotification*) aNotification { id c = [_cells objectAtIndex: _editingCellIndex]; NSSize oldSize; NSPoint o; NSSize s, ts; s = [c rect].size; o = [c rect].origin; ts = s; // size of entire view: take origin (i.e. width of label) into account s.width = o.x + [[c font] widthOfString: [_textObject string]] + 4; ts.width = [[c font] widthOfString: [_textObject string]] + 4; oldSize = [self frame].size; s.width = MAX(s.width, _requiredSize.width); s.height = MAX(s.height, _requiredSize.height); //ts.width = s.width; [self setFrameSize: s]; [[_textObject superview] setFrameSize: ts]; [_textObject setFrameSize: ts]; [_textObject setNeedsDisplay: YES]; [self setNeedsDisplay: YES]; [super setNeedsDisplay: YES]; if(_delegate && [_delegate respondsToSelector: _widthSel]) [_delegate view: self changedWidthFrom: oldSize.width to: s.width]; if([_property isEqualToString: ADFirstNameProperty] || [_property isEqualToString: ADLastNameProperty]) [[NSNotificationCenter defaultCenter] postNotificationName: ADPersonNameChangedNotification object: _person userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _property, @"Property", [_textObject string], @"Value", nil]]; } @end Addresses-0.5.0/Frameworks/AddressView/ADImageView.h0000644000175000000240000000167514747772061021454 0ustar multixstaff// ADImageView.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address View Framework for GNUstep // #import #import @interface ADImageView: NSImageView { id __target; SEL _selector; id _delegate; ADPerson *_person; BOOL _mouseDownOnSelf, _mouseDragged; } - (instancetype) initWithFrame: (NSRect) frame; - (void) setTarget: (id) target; - (void) setAction: (SEL) sel; - (void) mouseDown: (NSEvent*) event; - (void) mouseUp: (NSEvent*) event; - (void) mouseDragged: (NSEvent*) event; - (BOOL) hasEditableCells; - (void) setDelegate: (id) delegate; - (id) delegate; - (void) setPerson: (ADPerson*) person; - (ADPerson*) person; @end @interface NSObject (ADImageViewDelegate) - (BOOL) imageView: (ADImageView*) view willDragImage: (NSImage*) image; - (BOOL) imageView: (ADImageView*) view willDragPerson: (ADPerson*) aPerson; - (NSImage*) draggingImage; @end Addresses-0.5.0/Frameworks/AddressView/Change.tiff0000644000175000000240000000200012312144406021215 0ustar multixstaffII*111B齽遁111Brrrrrrrrrrrr111BHHH333HHH111B777777鿿HHHHHH齽333333333鿿VVV222666HHH遁222222222sss111BRRR222222222===111Brrrrrrrrrrrr111B齽遁111B   H@(R/home/giesler/Source/GNUstep/Addresses/AddressViewFramework/Change.tiffCreated with The GIMPHHAddresses-0.5.0/Frameworks/AddressView/ADImageView.m0000644000175000000240000001124514747772113021451 0ustar multixstaff// ADImageView.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address View Framwork for GNUstep // #import "ADImageView.h" #import "ADPersonView.h" @implementation ADImageView - (instancetype) initWithFrame: (NSRect) frame { if ((self = [super initWithFrame: frame])) { [self registerForDraggedTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", NSTIFFPboardType, NSFilenamesPboardType, nil]]; _delegate = nil; _person = nil; _mouseDownOnSelf = NO; } return self; } - (void) dealloc { [_person release]; [super dealloc]; } - (void) setTarget: (id) target { __target = target; } - (void) setAction: (SEL) sel { _selector = sel; } - (void) mouseDown: (NSEvent*) event { _mouseDownOnSelf = YES; _mouseDragged = NO; } - (void) mouseUp: (NSEvent*) event { if(_mouseDragged) return; if([__target respondsToSelector: _selector]) [__target performSelector: _selector withObject: self]; } - (void) mouseDragged: (NSEvent*) event { NSPasteboard *pb; if(!_mouseDownOnSelf || !_delegate) return; if([[self superview] isKindOfClass: [ADPersonView class]] && [(ADPersonView*)[self superview] isEditable]) return; pb = [NSPasteboard pasteboardWithName: NSDragPboard]; if([_person imageData] && [_delegate respondsToSelector: @selector(imageView:willDragImage:)] && [_delegate imageView: self willDragImage: [self image]]) { [pb declareTypes: [NSArray arrayWithObject: NSTIFFPboardType] owner: self]; [pb setData: [[self image] TIFFRepresentation] forType: NSTIFFPboardType]; [self dragImage: [self image] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } else if(![_person imageData] && [_delegate respondsToSelector: @selector(imageView:willDragPerson:)] && [_delegate imageView: self willDragPerson: _person]) { NSString *str; NSMutableDictionary *dict; [pb declareTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", @"NSFilesPromisePboardType", NSStringPboardType, ADPeoplePboardType, nil] owner: self]; [pb setData: [_person vCardRepresentation] forType: @"NSVCardPboardType"]; dict = [NSMutableDictionary dictionary]; [dict setObject: [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]] forKey: @"PID"]; if([_person uniqueId]) [dict setObject: [_person uniqueId] forKey: @"UID"]; if([_person addressBook]) [dict setObject: [[_person addressBook] addressBookDescription] forKey: @"AB"]; [pb setPropertyList: [NSArray arrayWithObject: dict] forType: ADPeoplePboardType]; if([[_person valueForProperty: ADEmailProperty] count]) str = [NSString stringWithFormat: @"%@ <%@>", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], [[_person valueForProperty: ADEmailProperty] valueAtIndex: 0]]; else str = [_person screenName]; [pb setString: str forType: NSStringPboardType]; [self dragImage: [_delegate draggingImage] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } } - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) isLocal { return NSDragOperationCopy|NSDragOperationLink; } - (BOOL) hasEditableCells { return NO; } - (NSDragOperation) draggingEntered: (id) sender { return [[self superview] draggingEntered: sender]; } - (BOOL) prepareForDragOperation: (id) sender { return [[self superview] prepareForDragOperation: sender]; } - (BOOL) performDragOperation: (id) sender { return [[self superview] performDragOperation: sender]; } - (void) setDelegate: (id) delegate { _delegate = delegate; } - (id) delegate { return _delegate; } - (void) setPerson: (ADPerson*) person { NSString *imgPath = nil; if(person == _person) return; [_person release]; _person = nil; [self setImage: nil]; if(!person) return; _person = [person retain]; if(![_person isKindOfClass: [NSDistantObject class]]) imgPath = [_person imageDataFile]; if(!imgPath) imgPath = [[NSBundle bundleForClass: [self class]] pathForImageResource: @"UnknownImage.tiff"]; if(!imgPath) NSLog(@"Error: UnknownImage.tiff not found!\n"); else { NSImage *img = [[[NSImage alloc] initWithContentsOfFile: imgPath] autorelease]; if(!img) NSLog(@"Error: Couldn't load %@\n", imgPath); else [self setImage: img]; } } - (ADPerson*) person { return _person; } @end Addresses-0.5.0/Frameworks/AddressView/#ADImageView.m#0000644000175000000240000001125514722123222021540 0ustar multixstaff// ADImageView.m (this is -*- ObjC -*-) // // \author: Björn Giesler // // Address View Framwork for GNUstep // /* my includes */ #import "ADImageView.h" #import "ADPersonView.h" @implementation ADImageView - (id) initWithFrame: (NSRect) frame { if (self = [super initWithFrame: frame]) { [self registerForDraggedTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", NSTIFFPboardType, NSFilenamesPboardType, nil]]; _delegate = nil; _person = nil; _mouseDownOnSelf = NO; } return self; } - (void) dealloc { [_person release]; [super dealloc]; } - (void) setTarget: (id) target { __target = target; } - (void) setAction: (SEL) sel { _selector = sel; } - (void) mouseDown: (NSEvent*) event { _mouseDownOnSelf = YES; _mouseDragged = NO; } - (void) mouseUp: (NSEvent*) event { if(_mouseDragged) return; if([__target respondsToSelector: _selector]) [__target performSelector: _selector withObject: self]; } - (void) mouseDragged: (NSEvent*) event { NSPasteboard *pb; if(!_mouseDownOnSelf || !_delegate) return; if([[self superview] isKindOfClass: [ADPersonView class]] && [(ADPersonView*)[self superview] isEditable]) return; pb = [NSPasteboard pasteboardWithName: NSDragPboard]; if([_person imageData] && [_delegate respondsToSelector: @selector(imageView:willDragImage:)] && [_delegate imageView: self willDragImage: [self image]]) { [pb declareTypes: [NSArray arrayWithObject: NSTIFFPboardType] owner: self]; [pb setData: [[self image] TIFFRepresentation] forType: NSTIFFPboardType]; [self dragImage: [self image] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } else if(![_person imageData] && [_delegate respondsToSelector: @selector(imageView:willDragPerson:)] && [_delegate imageView: self willDragPerson: _person]) { NSString *str; NSMutableDictionary *dict; [pb declareTypes: [NSArray arrayWithObjects: @"NSVCardPboardType", @"NSFilesPromisePboardType", NSStringPboardType, ADPeoplePboardType, nil] owner: self]; [pb setData: [_person vCardRepresentation] forType: @"NSVCardPboardType"]; dict = [NSMutableDictionary dictionary]; [dict setObject: [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]] forKey: @"PID"]; if([_person uniqueId]) [dict setObject: [_person uniqueId] forKey: @"UID"]; if([_person addressBook]) [dict setObject: [[_person addressBook] addressBookDescription] forKey: @"AB"]; [pb setPropertyList: [NSArray arrayWithObject: dict] forType: ADPeoplePboardType]; if([[_person valueForProperty: ADEmailProperty] count]) str = [NSString stringWithFormat: @"%@ <%@>", [_person screenNameWithFormat: ADScreenNameFirstNameFirst], [[_person valueForProperty: ADEmailProperty] valueAtIndex: 0]]; else str = [_person screenName]; [pb setString: str forType: NSStringPboardType]; [self dragImage: [_delegate draggingImage] at: NSZeroPoint offset: NSZeroSize event: event pasteboard: pb source: self slideBack: YES]; } } - (NSDragOperation) draggingSourceOperationMaskForLocal: (BOOL) isLocal { return NSDragOperationCopy|NSDragOperationLink; } - (BOOL) hasEditableCells { return NO; } - (NSDragOperation) draggingEntered: (id) sender { return [[self superview] draggingEntered: sender]; } - (BOOL) prepareForDragOperation: (id) sender { return [[self superview] prepareForDragOperation: sender]; } - (BOOL) performDragOperation: (id) sender { return [[self superview] performDragOperation: sender]; } - (void) setDelegate: (id) delegate { _delegate = delegate; } - (id) delegate { return _delegate; } - (void) setPerson: (ADPerson*) person { NSString *imgPath = nil; if(person == _person) return; [_person release]; _person = nil; [self setImage: nil]; if(!person) return; _person = [person retain]; if(![_person isKindOfClass: [NSDistantObject class]]) imgPath = [_person imageDataFile]; if(!imgPath) imgPath = [[NSBundle bundleForClass: [self class]] pathForImageResource: @"UnknownImage.tiff"]; if(!imgPathk NSLog(@"Error: UnknownImage.tiff not found!\n"); else { NSImage *img = [[[NSImage alloc] initWithContentsOfFile: imgPath] autorelease]; if(!img) NSLog(@"Error: Couldn't load %@\n", imgPath); else [self setImage: img]; } } - (ADPerson*) person { return _person; } @end Addresses-0.5.0/Frameworks/Addresses/0000755000175000000240000000000014752766037016707 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/French.lproj/0000755000175000000240000000000012312144406021215 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/French.lproj/PropertiesAndLabels.strings0000644000175000000240000000346412312144406026541 0ustar multixstaff"UID" = "Identifiant Unique"; "CreationDate" = "Date de cr\U00e9ation"; "ModificationDate" = "Date de Modification"; "FirstName" = "Pr\U00e9nom"; "LastName" = "Nom"; "FirstNamePhonetic" = "Pr\U00e9nom (Phon\U00e9tique)"; "LastNamePhonetic" = "Nom (Phon\U00e9tique)"; "BirthDate" = "Date de Naissance"; "Organization" = "Organisation"; "JobTitle" = "Fonction"; "HomePage" = "Page Web"; "Email" = "Courriel"; "WorkEmail" = "Courriel (Pro)"; "HomeEmail" = "Courriel (Perso)"; "Address" = "Adresse"; "Street" = "Rue"; "City" = "Ville"; "State" = "D\U00e9partement"; "ZIP" = "Code Postal"; "Country" = "Pays"; "CountryCode" = "Code du Pays"; "POBox" = "Boite Postale"; "ExtAddr" = "Adresse \U00c9tendue"; "HomeAddr" = "Adresse (Perso)"; "WorkAddr" = "Adresse (Pro)"; "Phone" = "T\U00e9l\U00e9phone"; "HomePhone" = "T\U00e9l. (Personnel)"; "WorkPhone" = "T\U00e9l. (Pro)"; "MobilePhone" = "T\U00e9l. Portable"; "MainPhone" = "T\U00e9l. Principal"; "HomeFax" = "Fax (Personnel)"; "WorkFax" = "Fax (Pro)"; "Pager" = "Pager"; "AIM" = "Messagerie Instantan\U00e9e AOL (AIM)"; "WorkAIM" = "AIM Adresse Pro"; "HomeAIM" = "AIM Adresse Perso"; "Jabber" = "Jabber"; "WorkJabber" = "Jabber Adresse Pro"; "HomeJabber" = "Jabber Adresse Perso"; "MSN" = "Microsoft Network (MSN)"; "WorkMSN" = "MSN Adresse Pro"; "HomeMSN" = "MSN Adresse Perso"; "Yahoo" = "Yahoo"; "WorkYahoo" = "Yahoo Adresse Pro"; "HomeYahoo" = "Yahoo Adresse Perso"; "ICQ" = "Num\U00e9ro ICQ"; "WorkICQ" = "Num\U00e9ro ICQ Pro"; "HomeICQ" = "Num\U00e9ro ICQ Perso"; "Note" = "Note"; "MiddleName" = "Second Pr\U00e9nom"; "MiddleNamePhonetic" = "Second Pr\U00e9nom (Phon\U00e9tique)"; "Title" = "Titre"; "Suffix" = "Suffixe"; "Nickname" = "Surnom"; "MaidenName" = "Nom de Jeune Fille"; "Image" = "Image"; "GroupName" = "Nom du Groupe"; "Work" = "Travail"; "Home" = "Maison"; "Other" = "Autres"; Addresses-0.5.0/Frameworks/Addresses/ADSearchElement.m0000644000175000000240000001364714750127520022006 0ustar multixstaff// ADSearchElement.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADSearchElement.h" #import "ADMultiValue.h" @interface ADEnvelopeSearchElement: ADSearchElement { ADSearchConjunction _conj; NSArray *_children; } + (ADSearchElement*) searchElementForConjunction: (ADSearchConjunction) conj children: (NSArray*) children; - (instancetype)initWithConjunction: (ADSearchConjunction) conj children: (NSArray*) children; - (void) dealloc; - (BOOL) matchesRecord: (ADRecord*) record; @end @implementation ADEnvelopeSearchElement + (ADSearchElement*) searchElementForConjunction: (ADSearchConjunction) conj children: (NSArray*) children { return [[self alloc] initWithConjunction: conj children: children]; } - (instancetype) initWithConjunction: (ADSearchConjunction) conj children: (NSArray*) children { if ((self = [super init])) { _conj = conj; _children = [[NSArray alloc] initWithArray: children]; } return self; } - (void) dealloc { [_children release]; [super dealloc]; } - (BOOL) matchesRecord: (ADRecord*) record { NSEnumerator *e; ADSearchElement *s; e = [_children objectEnumerator]; while((s = [e nextObject])) { BOOL retval = [s matchesRecord: record]; if(retval && (_conj == ADSearchOr)) return YES; else if(!retval && (_conj == ADSearchAnd)) return NO; } if(_conj == ADSearchOr) return NO; else return YES; } @end @implementation ADRecordSearchElement - (instancetype) initWithProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison { if ((self = [super init])) { if(!property || !value) { NSLog(@"%@ initialized with nil property or value!\n", [self className]); return nil; } _property = [property copy]; if(label) _label = [label copy]; else _label = nil; if(key) _key = [key copy]; else _key = nil; _val = [value retain]; _comp = comparison; } return self; } - (void) dealloc { [_property release]; [_label release]; [_key release]; [_val release]; [super dealloc]; } - (BOOL) matchesValue: (id) v { if([v isKindOfClass: [NSString class]]) { NSRange r; if(![_val isKindOfClass: [NSString class]]) { NSLog(@"Can't compare %@ instance to %@ instance\n", [v className], [_val className]); return NO; } switch(_comp) { case ADEqual: return [v isEqualToString: _val]; case ADNotEqual: return ![v isEqualToString: _val]; case ADLessThan: return [v compare: _val] < NSOrderedSame; case ADLessThanOrEqual: return [v compare: _val] <= NSOrderedSame; case ADGreaterThan: return [v compare: _val] > NSOrderedSame; case ADGreaterThanOrEqual: return [v compare: _val] >= NSOrderedSame; case ADEqualCaseInsensitive: return [v caseInsensitiveCompare: _val] == NSOrderedSame; case ADContainsSubString: return [v rangeOfString: _val].location != NSNotFound; case ADContainsSubStringCaseInsensitive: r = [v rangeOfString: _val options: NSCaseInsensitiveSearch]; return r.location != NSNotFound; case ADPrefixMatch: return [v rangeOfString: _val].location == 0; case ADPrefixMatchCaseInsensitive: r = [v rangeOfString: _val options: NSCaseInsensitiveSearch]; return r.location == 0; default: NSLog(@"Unknown search comparison %d\n", _comp); return NO; } } else if([v isKindOfClass: [NSDate class]]) { if(![_val isKindOfClass: [NSString class]]) { NSLog(@"Can't compare %@ instance to %@ instance\n", [v className], [_val className]); return NO; } switch(_comp) { case ADEqual: return [v isEqualToDate: _val]; case ADNotEqual: return ![v isEqualToDate: _val]; case ADLessThan: return [v earlierDate: _val] == v; case ADLessThanOrEqual: return [v isEqualToDate: _val] || ([v earlierDate: _val] == v); case ADGreaterThan: return [v laterDate: _val] == v; case ADGreaterThanOrEqual: return [v isEqualToDate: _val] || ([v laterDate: _val] == v); case ADEqualCaseInsensitive: case ADContainsSubString: case ADContainsSubStringCaseInsensitive: case ADPrefixMatch: case ADPrefixMatchCaseInsensitive: NSLog(@"Can't apply comparison %d to date objects\n", _comp); return NO; default: NSLog(@"Unknown search comparison %d\n", _comp); return NO; } } else { NSLog(@"Can't test value of class %@ for match\n", [v className]); return NO; } } - (BOOL) matchesRecord: (ADRecord*) record { NSUInteger i; id val; val = [record valueForProperty: _property]; if(!val) return NO; if([val isKindOfClass: [ADMultiValue class]]) { id val2; for (i = 0; i < [val count]; i++) { if(_label) { // Have a label? Then, only regard values with the label if([[val labelAtIndex: i] isEqualToString: _label]) val2 = [val valueAtIndex: i]; else val2 = nil; } else { val2 = [val valueAtIndex: i]; } if(!val2) continue; if([val2 isKindOfClass: [NSDictionary class]]) { NSEnumerator *e; id v; if(_key) return [self matchesValue: [val2 objectForKey: _key]]; e = [val2 objectEnumerator]; while((v = [e nextObject])) { if([self matchesValue: v]) return YES; } return NO; } else { return [self matchesValue: val2]; } } } else return [self matchesValue: val]; return NO; // make compiler happy } @end @implementation ADSearchElement + (ADSearchElement*) searchElementForConjunction: (ADSearchConjunction) conj children: (NSArray*) children { return [[[ADEnvelopeSearchElement alloc] initWithConjunction: conj children: children] autorelease]; } - (BOOL) matchesRecord: (ADRecord*) record { [self subclassResponsibility: _cmd]; return NO; } @end Addresses-0.5.0/Frameworks/Addresses/ADMultiValue.h0000644000175000000240000000312114750126051021331 0ustar multixstaff// ADMultiValue.h (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address Book Framework for GNUstep // #ifndef _ADMULTIVALUE_H_ #define _ADMULTIVALUE_H_ #import #import @interface ADMultiValue : NSObject { NSString *_primaryId; ADPropertyType _type; NSMutableArray *_arr; } - (NSUInteger) count; - (id) valueAtIndex: (NSUInteger) index; - (NSString*) labelAtIndex: (NSUInteger) index; - (NSString*) identifierAtIndex: (NSUInteger) index; - (NSUInteger) indexForIdentifier: (NSString*) identifier; - (NSString*) primaryIdentifier; - (ADPropertyType) propertyType; @end @interface ADMultiValue(AddressesExtensions) - (instancetype) initWithMultiValue: (ADMultiValue*) mv; - (instancetype) initWithType: (ADPropertyType) type; - (NSArray*) contentArray; @end @interface ADMutableMultiValue: ADMultiValue { int _nextId; } - (NSString*) addValue: (id) value withLabel: (NSString*) label; - (NSString *) insertValue: (id) value withLabel: (NSString*) label atIndex: (NSUInteger) index; - (BOOL) removeValueAndLabelAtIndex: (NSUInteger) index; - (BOOL) replaceValueAtIndex: (NSUInteger) index withValue: (id) value; - (BOOL) replaceLabelAtIndex: (NSUInteger) index withLabel: (NSString*) label; - (BOOL)setPrimaryIdentifier:(NSString *)identifier; @end @interface ADMutableMultiValue(AddressesExtensions) - (BOOL) addValue: (id) value withLabel: (NSString*) label identifier: (NSString*) identifier; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADPListConverter.m0000644000175000000240000000514114750126510022176 0ustar multixstaff// ADPListConverter.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADPListConverter.h" #import "ADPerson.h" #import "ADGroup.h" #import "ADLocalAddressBook.h" #import "ADMultiValue.h" @implementation ADPListConverter - (instancetype)initForInput { if ((self = [super init])) { _done = NO; _plist = nil; } return self; } - (BOOL) useString: (NSString*) str { _plist = [str propertyList]; if(![_plist isKindOfClass: [NSDictionary class]]) { NSLog(@"String (%@) does not contain valid property list!\n", str); return NO; } return YES; } - (ADRecord*) nextRecord { NSMutableArray *keys; NSString *key; ADRecord *r; NSEnumerator *e; keys = [NSMutableArray arrayWithArray: [_plist allKeys]]; if([[_plist objectForKey: @"Type"] isEqualToString: @"Group"]) { NSArray *members = [_plist objectForKey: @"Members"]; r = [[[ADGroup alloc] init] autorelease]; if(members) { [r setValue: members forProperty: ADMemberIDsProperty]; [keys removeObject: @"Members"]; } else [r setValue: [NSArray array] forProperty: ADMemberIDsProperty]; } else r = [[[ADPerson alloc] init] autorelease]; e = [keys objectEnumerator]; while((key = [e nextObject])) { id val; ADPropertyType t; val = [_plist objectForKey: key]; t = [ADPerson typeOfProperty: key]; if(t & ADMultiValueMask) { ADMutableMultiValue *mv; NSUInteger i; if([val isKindOfClass: [NSString class]]) { NSLog(@"Warning: Converting value for %@ from broken " @"string representation\n", key); val = [val propertyList]; } mv = [[[ADMutableMultiValue alloc] initWithType: t] autorelease]; for(i = 0; i < [val count]; i++) { NSDictionary *d; d = [val objectAtIndex: i]; [mv addValue: [d objectForKey: @"Value"] withLabel: [d objectForKey: @"Label"] identifier: [d objectForKey: @"ID"]]; } [r setValue: [[[ADMultiValue alloc] initWithMultiValue: mv] autorelease] forProperty: key]; } else { switch(t) { case ADDateProperty: if([val isKindOfClass: [NSString class]]) [r setValue: [NSCalendarDate dateWithString: val calendarFormat: @"%Y-%m-%d"] forProperty: key]; else if([val isKindOfClass: [NSCalendarDate class]]) [r setValue: [val copy] forProperty: key]; else NSLog(@"Unknown date class %@\n", [val className]); break; default: [r setValue: val forProperty: key]; } } } return r; } @end Addresses-0.5.0/Frameworks/Addresses/ADGroup.h0000644000175000000240000000233614746005572020356 0ustar multixstaff// ADGroup.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADGROUP_H #define _ADGROUP_H #import #import #import #import @interface ADGroup: ADRecord - (NSArray*) members; - (BOOL) addMember: (ADPerson*) person; - (BOOL) removeMember: (ADPerson*) person; - (NSArray*) subgroups; - (BOOL) addSubgroup: (ADGroup*) group; - (BOOL) removeSubgroup: (ADGroup*) group; - (NSArray*) parentGroups; - (BOOL) setDistributionIdentifier: (NSString*) identifier forProperty: (NSString*) property person: (ADPerson*) person; - (NSString*) distributionIdentifierForProperty: (NSString*) property person: (ADPerson*) person; + (NSInteger) addPropertiesAndTypes: (NSDictionary*) properties; + (NSInteger) removeProperties: (NSArray*) properties; + (NSArray*) properties; + (ADPropertyType) typeOfProperty: (NSString*) property; + (ADSearchElement*) searchElementForProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADMultiValue.m0000644000175000000240000001614314752744002021352 0ustar multixstaff// ADMultiValue.m (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address Book API for GNUstep // /* my includes */ #import "ADMultiValue.h" #define IS_A(obj,cls) [obj isKindOfClass: [cls class]] static ADPropertyType _propTypeFromDict(NSDictionary *dict) { id obj = [dict objectForKey: @"Value"]; if(IS_A(obj, NSString)) return ADStringProperty; if(IS_A(obj, NSDate)) return ADDateProperty; if(IS_A(obj, NSArray)) return ADArrayProperty; if(IS_A(obj, NSDictionary)) return ADDictionaryProperty; if(IS_A(obj, NSData)) return ADDataProperty; if(IS_A(obj, NSValue)) return ADIntegerProperty; return ADErrorInProperty; } @interface ADMultiValue (Private) - (NSArray*) array; - (ADPropertyType) type; @end @implementation ADMultiValue - (instancetype) initWithMultiValue: (ADMultiValue*) mv { if ((self = [super init])) { _arr = [[[mv array] mutableCopy] retain]; _primaryId = [[mv primaryIdentifier] copy]; _type = [mv type]; } return self; } - (instancetype) initWithType: (ADPropertyType) type { if ((self = [super init])) { _arr = [[NSMutableArray alloc] initWithCapacity: 5]; _primaryId = nil; _type = type; } return self; } - (void) dealloc { [_arr release]; [_primaryId release]; [super dealloc]; } - (NSArray*) contentArray { return _arr; } - (NSUInteger) count { return [_arr count]; } - (id) valueAtIndex: (NSUInteger) index { return [[_arr objectAtIndex: index] objectForKey: @"Value"]; } - (NSString*) labelAtIndex: (NSUInteger) index { return [[_arr objectAtIndex: index] objectForKey: @"Label"]; } - (NSString*) identifierAtIndex: (NSUInteger) index { return [[_arr objectAtIndex: index] objectForKey: @"ID"]; } - (NSUInteger) indexForIdentifier: (NSString*) identifier { NSUInteger i; for(i=0; i<[_arr count]; i++) if([[[_arr objectAtIndex: i] objectForKey: @"ID"] isEqualToString: identifier]) return i; return NSNotFound; } - (NSString*) primaryIdentifier { return _primaryId; } - (ADPropertyType) propertyType { NSEnumerator *e; id obj; ADPropertyType assumedType; if(![_arr count]) return ADErrorInProperty; e = [_arr objectEnumerator]; obj = [e nextObject]; assumedType = _propTypeFromDict(obj); while((obj = [e nextObject])) if(assumedType != _propTypeFromDict(obj)) return ADErrorInProperty; return assumedType; } - (NSString*) description { return [_arr description]; } - (id) copyWithZone: (NSZone*) zone { return [[ADMultiValue alloc] initWithMultiValue: self]; } - (id) mutableCopyWithZone: (NSZone*) zone { return [[ADMutableMultiValue alloc] initWithMultiValue: self]; } @end @implementation ADMultiValue (Private) - (NSArray*) array { return _arr; } - (ADPropertyType) type { return _type; } @end #define POSTCHANGE [[NSNotificationCenter defaultCenter] postNotificationName: @"_MVChg" object: self]; @implementation ADMutableMultiValue - (id)initWithType: (ADPropertyType) type { if ((self = [super initWithType: type])) { _nextId = 0; } return self; } - (NSString*) _nextValidID { NSEnumerator *e; NSDictionary *dict; NSInteger max; e = [_arr objectEnumerator]; max = 0; while((dict = [e nextObject])) max = MAX(max, [[dict objectForKey: @"ID"] integerValue]); return [NSString stringWithFormat: @"%ld", (long int)(max+1)]; } - (NSString*) addValue: (id) value withLabel: (NSString*) label { NSString *identifier; NSMutableDictionary *dict; identifier = [self _nextValidID]; dict = [NSMutableDictionary dictionary]; // make sure nothing mutable gets added if(_type == ADMultiArrayProperty && [value isKindOfClass: [NSMutableArray class]]) value = [NSArray arrayWithArray: value]; else if(_type == ADMultiDictionaryProperty && [value isKindOfClass: [NSMutableDictionary class]]) value = [NSDictionary dictionaryWithDictionary: value]; else if(_type == ADMultiDataProperty && [value isKindOfClass: [NSMutableData class]]) value = [NSData dataWithData: value]; if(value) [dict setObject: value forKey: @"Value"]; if(label) [dict setObject: label forKey: @"Label"]; [dict setObject: identifier forKey: @"ID"]; [_arr addObject: [NSDictionary dictionaryWithDictionary: dict]]; return identifier; } - (NSString *) insertValue: (id) value withLabel: (NSString*) label atIndex: (NSUInteger) index { NSString* identifier; NSDictionary *dict; identifier = [self _nextValidID]; // make sure nothing mutable gets added if(_type == ADMultiArrayProperty && [value isKindOfClass: [NSMutableArray class]]) value = [NSArray arrayWithArray: value]; else if(_type == ADMultiDictionaryProperty && [value isKindOfClass: [NSMutableDictionary class]]) value = [NSDictionary dictionaryWithDictionary: value]; else if(_type == ADMultiDataProperty && [value isKindOfClass: [NSMutableData class]]) value = [NSData dataWithData: value]; dict = [NSDictionary dictionaryWithObjectsAndKeys: value, @"Value", label, @"", identifier, @"ID", nil]; [_arr insertObject: dict atIndex: index]; return identifier; } - (BOOL) removeValueAndLabelAtIndex: (NSUInteger) index { if(index >= [_arr count]) return NO; [_arr removeObjectAtIndex: index]; return YES; } - (BOOL) replaceValueAtIndex: (NSUInteger) index withValue: (id) value { NSMutableDictionary *dict; if(index >= [_arr count]) return NO; // make sure nothing mutable gets added if(_type == ADMultiArrayProperty && [value isKindOfClass: [NSMutableArray class]]) value = [NSArray arrayWithArray: value]; else if(_type == ADMultiDictionaryProperty && [value isKindOfClass: [NSMutableDictionary class]]) value = [NSDictionary dictionaryWithDictionary: value]; else if(_type == ADMultiDataProperty && [value isKindOfClass: [NSMutableData class]]) value = [NSData dataWithData: value]; dict = [NSMutableDictionary dictionaryWithDictionary: [_arr objectAtIndex: index]]; [dict setObject: value forKey: @"Value"]; [_arr replaceObjectAtIndex: index withObject: dict]; return YES; } - (BOOL) replaceLabelAtIndex: (NSUInteger) index withLabel: (NSString*) label { NSMutableDictionary *dict; if(index >= [_arr count]) return NO; dict = [NSMutableDictionary dictionaryWithDictionary: [_arr objectAtIndex: index]]; [dict setObject: label forKey: @"Label"]; [_arr replaceObjectAtIndex: index withObject: dict]; return YES; } - (BOOL)setPrimaryIdentifier:(NSString *)identifier { [_primaryId release]; _primaryId = [identifier retain]; return YES; } @end @implementation ADMutableMultiValue(AddressesExtensions) - (BOOL) addValue: (id) value withLabel: (NSString*) label identifier: (NSString*) identifier { NSMutableDictionary *dict; if([self indexForIdentifier: identifier] != NSNotFound) return NO; dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: value, @"Value", label, @"Label", identifier, @"ID", nil]; [_arr addObject: [NSDictionary dictionaryWithDictionary: dict]]; return YES; } @end Addresses-0.5.0/Frameworks/Addresses/ADEnvelopeAddressBook.h0000644000175000000240000000133514750125543023152 0ustar multixstaff// ADEnvelopeAddressBook.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import @interface ADEnvelopeAddressBook: ADAddressBook { NSMutableArray *_books; ADAddressBook *_primary; BOOL _merge; } + (ADAddressBook*) sharedAddressBook; - (instancetype) initWithPrimaryAddressBook: (ADAddressBook*) book; - (BOOL) addAddressBook: (ADAddressBook*) book; - (BOOL) removeAddressBook: (ADAddressBook*) book; - (void) setPrimaryAddressBook: (ADAddressBook*) book; - (ADAddressBook*) primaryAddressBook; - (NSEnumerator*) addressBooksEnumerator; - (void) setMergesAddressBooks: (BOOL) merge; - (BOOL) mergesAddressBooks; @end Addresses-0.5.0/Frameworks/Addresses/ADPublicAddressBook.h0000644000175000000240000000104314750126747022616 0ustar multixstaff// ADPublicAddressBook.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import @interface ADPublicAddressBook: ADAddressBook { BOOL _readOnly; ADAddressBook *_book; } - (instancetype)initWithAddressBook: (ADAddressBook*) book readOnly: (BOOL) ro; @end @protocol ADSimpleAddressBookServing - (ADAddressBook*) addressBookForReadOnlyAccessWithAuth: (id) auth; - (ADAddressBook*) addressBookForReadWriteAccessWithAuth: (id) auth; @end Addresses-0.5.0/Frameworks/Addresses/German.lproj/0000755000175000000240000000000012312144406021221 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/German.lproj/PropertiesAndLabels.strings0000644000175000000240000000344612312144406026545 0ustar multixstaff"UID" = "Eindeutige Identifikationsnummer"; "CreationDate" = "Erstellungsdatum"; "ModificationDate" = "\U00c4nderungsdatum"; "FirstName" = "Vorname"; "LastName" = "Nachname"; "FirstNamePhonetic" = "Vorname (Phonetisch)"; "LastNamePhonetic" = "Nachname (Phonetisch)"; "BirthDate" = "Geburtsdatum"; "Organization" = "Organisation"; "JobTitle" = "Beruf"; "HomePage" = "Homepage"; "Email" = "Email-Adresse"; "WorkEmail" = "Email (Gesch\U00e4ftl.)"; "HomeEmail" = "Email (Privat)"; "Address" = "Postanschrift"; "Street" = "Stra\U00dfe"; "City" = "Stadt"; "State" = "Bundesland"; "ZIP" = "Postleitzahl"; "Country" = "Land"; "CountryCode" = "L\U00e4ndercode"; "POBox" = "Postfach"; "ExtAddr" = "Erweiterte Adresse"; "HomeAddr" = "Anschrift (Privat)"; "WorkAddr" = "Anschrift (Gesch\U00e4ftl.)"; "Phone" = "Telefon"; "HomePhone" = "Telefon (Privat)"; "WorkPhone" = "Telefon (Gesch\U00e4ftl.)"; "MobilePhone" = "Handy"; "MainPhone" = "Telefon (Bevorzugt)"; "HomeFax" = "Fax (Privat)"; "WorkFax" = "Fax (Gesch\U00e4ftl.)"; "Pager" = "Pager"; "AIM" = "AOL Instant Messaging"; "WorkAIM" = "AIM (Gesch\U00e4ftl.)"; "HomeAIM" = "AIM (Privat)"; "Jabber" = "Jabber"; "WorkJabber" = "Jabber (Gesch\U00e4ftl.)"; "HomeJabber" = "Jabber (Privat)"; "MSN" = "Microsoft Network"; "WorkMSN" = "MSN (Gesch\U00e4ftl.)"; "HomeMSN" = "MSN (Privat)"; "Yahoo" = "Yahoo"; "WorkYahoo" = "Yahoo (Gesch\U00e4ftl.)"; "HomeYahoo" = "Yahoo (Privat)"; "ICQ" = "ICQ-Nummer"; "WorkICQ" = "ICQ (Gesch\U00e4ftl.)"; "HomeICQ" = "ICQ (Privat)"; "Note" = "Notiz"; "MiddleName" = "Zweiter Vorname"; "MiddleNamePhonetic" = "Zweiter Vorname (Phonetisch)"; "Title" = "Titel"; "Suffix" = "Namenszusatz"; "Nickname" = "Spitzname"; "MaidenName" = "M\U00e4dchenname"; "Image" = "Bild"; "GroupName" = "Gruppenname"; "Work" = "Gesch\U00e4ftl."; "Home" = "Privat"; "Other" = "Andere"; Addresses-0.5.0/Frameworks/Addresses/ADGroup.m0000644000175000000240000001061014746005572020355 0ustar multixstaff// ADGroup.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADGroup.h" #import "ADAddressBook.h" #import "ADTypedefs.h" #import "ADGlobals.h" #import "ADMultiValue.h" static NSMutableDictionary *_propTypes; #define N(x) [NSNumber numberWithInteger: x] @implementation ADGroup + (void) initialize { _propTypes = [[NSMutableDictionary alloc] initWithObjectsAndKeys: N(ADStringProperty), ADUIDProperty, N(ADStringProperty), ADGroupNameProperty, N(ADArrayProperty), ADMemberIDsProperty, N(ADDateProperty), ADCreationDateProperty, N(ADDateProperty), ADModificationDateProperty, N(ADStringProperty), ADSharedProperty, nil]; } - (NSArray*) members { NSArray *arr; NSAssert([self addressBook], @"Address book must be set!"); arr = [[self addressBook] membersForGroup: self]; if([self readOnly]) return ADReadOnlyCopyOfRecordArray(arr); return arr; } - (BOOL) addMember: (ADPerson*) person { NSAssert([self addressBook], @"Address book must be set!"); if([self readOnly]) return NO; return [[self addressBook] addMember: person forGroup: self]; } - (BOOL) removeMember: (ADPerson*) person { NSAssert([self addressBook], @"Address book must be set!"); if([self readOnly]) return NO; return [[self addressBook] removeMember: person forGroup: self]; } - (NSArray*) subgroups { NSArray *arr; NSAssert([self addressBook], @"Address book must be set!"); arr = [[self addressBook] subgroupsForGroup: self]; if([self readOnly]) return ADReadOnlyCopyOfRecordArray(arr); return arr; } - (BOOL) addSubgroup: (ADGroup*) group { NSAssert([self addressBook], @"Address book must be set!"); if([self readOnly]) return NO; return [[self addressBook] addSubgroup: group forGroup: self]; } - (BOOL) removeSubgroup: (ADGroup*) group { NSAssert([self addressBook], @"Address book must be set!"); if([self readOnly]) return NO; return [[self addressBook] removeSubgroup: group forGroup: self]; } - (NSArray*) parentGroups { NSAssert([self addressBook], @"Address book must be set!"); return [[self addressBook] parentGroupsForGroup: self]; } - (BOOL) setDistributionIdentifier: (NSString*) identifier forProperty: (NSString*) property person: (ADPerson*) person { [NSException raise: ADUnimplementedError format: @"Distribution identifiers not yet implemented"]; return NO; } - (NSString*) distributionIdentifierForProperty: (NSString*) property person: (ADPerson*) person { [NSException raise: ADUnimplementedError format: @"Distribution identifiers not yet implemented"]; return nil; } + (NSInteger) addPropertiesAndTypes: (NSDictionary*) properties { NSInteger retval = 0; NSEnumerator *e; NSString *key; e = [properties keyEnumerator]; while((key = [e nextObject])) if(![_propTypes objectForKey: key]) { [_propTypes setObject: [properties objectForKey: key] forKey: key]; retval++; } return retval; } + (NSInteger) removeProperties: (NSArray*) properties { NSInteger retval = 0; NSEnumerator *e; NSString* key; e = [properties objectEnumerator]; while((key = [e nextObject])) if([_propTypes objectForKey: key]) { [_propTypes removeObjectForKey: key]; retval++; } return retval; } + (NSArray*) properties { return [_propTypes allKeys]; } + (ADPropertyType) typeOfProperty: (NSString*) property { return (ADPropertyType)[[_propTypes objectForKey: property] intValue]; } + (ADSearchElement*) searchElementForProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison { return [[[ADRecordSearchElement alloc] initWithProperty: property label: label key: key value: value comparison: comparison] autorelease]; } - (BOOL) setValue: (id) value forProperty: (NSString *) property { if([self readOnly]) return NO; if(([[self class] typeOfProperty: property] & ADMultiValueMask) && ([property isKindOfClass: [ADMutableMultiValue class]])) { // make sure no mutable multivalues are inserted ADMultiValue *mv; mv = [[[ADMultiValue alloc] initWithMultiValue: value] autorelease]; return [self setValue: mv forProperty: property]; } return [super setValue: value forProperty: property]; } @end Addresses-0.5.0/Frameworks/Addresses/ADEnvelopeAddressBook.m0000644000175000000240000001673414750125567023176 0ustar multixstaff// ADEnvelopeAddressBook.m (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address Book Framework for GNUstep // #import "ADLocalAddressBook.h" #import "ADEnvelopeAddressBook.h" #import "ADPublicAddressBook.h" #import "ADRecord.h" #import "ADPerson.h" #import "ADPlugin.h" static ADEnvelopeAddressBook *_envelopeAB = nil; @implementation ADEnvelopeAddressBook + (ADAddressBook*) sharedAddressBook { NSDictionary *domain; NSArray *config; NSDictionary *entry; NSEnumerator *e; NSMutableArray *books; NSUInteger primary = 0; BOOL havePrimary = NO; NSUInteger i; if(_envelopeAB) return _envelopeAB; domain = [[NSUserDefaults standardUserDefaults] persistentDomainForName: @"Addresses"]; config = [domain objectForKey: @"AddressBooks"]; if(!config) { _envelopeAB = [[self alloc] initWithPrimaryAddressBook: [ADLocalAddressBook sharedAddressBook]]; return _envelopeAB; } books = [NSMutableArray array]; e = [config objectEnumerator]; while((entry = [e nextObject])) { NSString *className; ADAddressBook *book = nil; className = [entry objectForKey: @"Class"]; if([className isEqualToString: @"Remote"]) { NSString *host, *pwd; id server; host = [entry objectForKey: @"Host"]; pwd = [entry objectForKey: @"Password"]; NSLog(@"Remote at %@; password %@\n", host, pwd); server = [NSConnection rootProxyForConnectionWithRegisteredName: @"AddressServer" host: host]; if(!server) { NSLog(@"Couldn't connect to AddressServer on %@\n", host); continue; } book = [server addressBookForReadWriteAccessWithAuth: pwd]; if(!book) { NSLog(@"Trying readonly...\n"); book = [server addressBookForReadOnlyAccessWithAuth: pwd]; } if(!book) NSLog(@"AddressServer on %@ doesn't accept password\n", host); else NSLog(@"Got book.\n"); } else if([className isEqualToString: @"Local"]) { NSString *location; location = [entry objectForKey: @"Location"]; if(!location) book = [ADLocalAddressBook sharedAddressBook]; else book = [[[ADLocalAddressBook alloc] initWithLocation: location] autorelease]; } else { book = [[ADPluginManager sharedPluginManager] newAddressBookWithSpecification: entry]; } if (!book) continue; if ([[entry objectForKey: @"Primary"] boolValue]) { if(havePrimary) NSLog(@"Duplicate Primary entry\n"); else primary = [books count]; } [books addObject: book]; } _envelopeAB = [[ADEnvelopeAddressBook alloc] initWithPrimaryAddressBook: [books objectAtIndex: primary]]; for (i = 0; i < [books count]; i++) { if (i == primary) continue; [_envelopeAB addAddressBook: [books objectAtIndex: i]]; } return _envelopeAB; } - (instancetype) initWithPrimaryAddressBook: (ADAddressBook*) book { self = [super init]; if (self) { _merge = YES; _books = [[NSMutableArray alloc] initWithCapacity: 1]; [self setPrimaryAddressBook: book]; } return self; } - (void) dealloc { [_books release]; [super dealloc]; } - (BOOL) addAddressBook: (ADAddressBook*) book { if([_books indexOfObject: book] != NSNotFound) return NO; [_books addObject: book]; return YES; } - (BOOL) removeAddressBook: (ADAddressBook*) book { if([_books indexOfObject: book] == NSNotFound || book == _primary) return NO; [_books removeObject: book]; return YES; } - (void) setPrimaryAddressBook: (ADAddressBook*) book { NSAssert(book, @"Primary address book cannot be nil"); if([_books indexOfObject: book] == NSNotFound) [self addAddressBook: book]; _primary = book; } - (ADAddressBook*) primaryAddressBook { return _primary; } - (NSEnumerator*) addressBooksEnumerator { return [_books objectEnumerator]; } - (void) setMergesAddressBooks: (BOOL) merge { _merge = merge; } - (BOOL) mergesAddressBooks { return _merge; } /* * Subclass stuff */ - (NSArray*) recordsMatchingSearchElement: (ADSearchElement*) search { NSMutableArray *arr; NSEnumerator *e; ADAddressBook *book; arr = [NSMutableArray array]; e = [_books objectEnumerator]; while((book = [e nextObject])) [arr addObjectsFromArray: [book recordsMatchingSearchElement: search]]; return [NSArray arrayWithArray: arr]; } - (BOOL) save { return [_primary save]; } - (BOOL) hasUnsavedChanges { return [_primary hasUnsavedChanges]; } - (ADPerson*) me { NSEnumerator *e; ADAddressBook *book; if (!_merge || [_primary me]) return [_primary me]; e = [_books objectEnumerator]; while((book = [e nextObject])) { if ([book me]) return [book me]; } return nil; } - (void) setMe: (ADPerson*) me { return [[me addressBook] setMe: me]; } - (ADRecord*) recordForUniqueId: (NSString*) uniqueId { NSEnumerator *e; ADAddressBook *book; ADRecord *retval; e = [_books objectEnumerator]; while((book = [e nextObject])) { retval = [book recordForUniqueId: uniqueId]; if(retval) return retval; } return nil; } - (BOOL) addRecord: (ADRecord*) record { return [_primary addRecord: record]; } - (BOOL) removeRecord: (ADRecord*) record { [[record addressBook] removeRecord: record]; return YES; } - (NSArray*) people { NSMutableArray *arr; NSEnumerator *e; ADAddressBook *book; if(!_merge) return [_primary people]; arr = [NSMutableArray arrayWithCapacity: 20]; e = [_books objectEnumerator]; while((book = [e nextObject])) [arr addObjectsFromArray: [book people]]; return arr; } - (NSArray*) groups { NSMutableArray *arr; NSEnumerator *e; ADAddressBook *book; if(!_merge) return [_primary groups]; arr = [NSMutableArray arrayWithCapacity: 20]; e = [_books objectEnumerator]; while((book = [e nextObject])) [arr addObjectsFromArray: [book groups]]; return arr; } @end // ADEnvelopeAddressBook @implementation ADEnvelopeAddressBook(GroupAccess) - (NSArray*) membersForGroup: (ADGroup*) group { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return nil; } - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return NO; } - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return NO; } - (NSArray*) subgroupsForGroup: (ADGroup*) group { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return nil; } - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return NO; } - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return NO; } - (NSArray*) parentGroupsForGroup: (ADGroup*) group; { [NSException raise: ADUnimplementedError format: @"ADEnvelopeAddressBook cannot implement %@", NSStringFromSelector(_cmd)]; return nil; } @end Addresses-0.5.0/Frameworks/Addresses/Documentation/0000755000175000000240000000000012312144407021475 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/Documentation/vcard-21.ps0000644000175000000240000165101312312144407023367 0ustar multixstaff%!PS-Adobe-3.0 %%Title: Microsoft Word - vcard-21.doc %%Creator: PSCRIPT.DRV Version 4.0 %%CreationDate: 09/18/95 07:14:59 %%BoundingBox: 19 9 593 784 %%Pages: (atend) %%PageOrder: Special %%Requirements: %%DocumentNeededFonts: (atend) %%DocumentSuppliedFonts: (atend) %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%EndComments [{ %%BeginFeature: *JobPatchFile 1 save /version23-manualfeedpatch where { pop false } { true }ifelse % we don't do an explicit 'get' since product and version MAY % be in systemdict or statusdict - this technique gets the lookup % without failure statusdict begin product (LaserWriter) eq % true if LaserWriter version cvr 23.0 eq % true if version 23 end and % only install this patch if both are true and % true only if patch is not installed and is for this printer % save object and boolean on stack dup { exch restore }if % either true OR saveobject false dup { /version23-manualfeedpatch true def /oldversion23-showpage /showpage load def /showpage % this showpage will wait extra time if manualfeed is true {% statusdict /manualfeed known {% manualfeed known in statusdict statusdict /manualfeed get {% if true then we loop for 5 seconds usertime 5000 add % target usertime { % loop dup usertime sub 0 lt { exit }if }loop pop % pop the usertime off the stac }if }if oldversion23-showpage }bind def }if not{ restore }if %%EndFeature } stopped cleartomark %%BeginProlog %%BeginProcSet: Pscript_Win_ErrorHandler 1.0 1 /currentpacking where{pop/oldpack currentpacking def/setpacking where{pop false setpacking}if}if/$brkpage 64 dict def $brkpage begin/prnt{dup type /stringtype ne{=string cvs}if dup length 6 mul/tx exch def/ty 10 def currentpoint/toy exch def/tox exch def 1 setgray newpath tox toy 2 sub moveto 0 ty rlineto tx 0 rlineto 0 ty neg rlineto closepath fill tox toy moveto 0 setgray show}bind def/nl{currentpoint exch pop lmargin exch moveto 0 -10 rmoveto}def/=={/cp 0 def typeprint nl}def/typeprint{dup type exec}readonly def /lmargin 72 def/rmargin 72 def/tprint{dup length cp add rmargin gt{nl/cp 0 def }if dup length cp add/cp exch def prnt}readonly def/cvsprint{=string cvs tprint( )tprint}readonly def/integertype{cvsprint}readonly def/realtype{ cvsprint}readonly def/booleantype{cvsprint}readonly def/operatortype{(--) tprint =string cvs tprint(-- )tprint}readonly def/marktype{pop(-mark- )tprint} readonly def/dicttype{pop(-dictionary- )tprint}readonly def/nulltype{pop (-null- )tprint}readonly def/filetype{pop(-filestream- )tprint}readonly def /savetype{pop(-savelevel- )tprint}readonly def/fonttype{pop(-fontid- )tprint} readonly def/nametype{dup xcheck not{(/)tprint}if cvsprint}readonly def /stringtype{dup rcheck{(\()tprint tprint(\))tprint}{pop(-string- )tprint} ifelse}readonly def/arraytype{dup rcheck{dup xcheck{({)tprint{typeprint}forall (})tprint}{([)tprint{typeprint}forall(])tprint}ifelse}{pop(-array- )tprint} ifelse}readonly def/packedarraytype{dup rcheck{dup xcheck{({)tprint{typeprint} forall(})tprint}{([)tprint{typeprint}forall(])tprint}ifelse}{pop (-packedarray- )tprint}ifelse}readonly def/courier/Courier findfont 10 scalefont def end errordict/handleerror{systemdict begin $error begin $brkpage begin newerror{/newerror false store vmstatus pop pop 0 ne{grestoreall}if showpage initgraphics courier setfont lmargin 720 moveto(ERROR: )prnt errorname prnt nl(OFFENDING COMMAND: )prnt/command load prnt $error/ostack known{nl nl(STACK:)prnt nl nl $error/ostack get aload length{==}repeat}if systemdict/showpage get exec(%%[ Error: )print errorname =print (; OffendingCommand: )print/command load =print( ]%%)= flush}if end end end} dup 0 systemdict put dup 4 $brkpage put bind readonly put/currentpacking where {pop/setpacking where{pop oldpack setpacking}if}if %%EndProcSet userdict /Pscript_Win_Driver_Incr 200 dict dup begin put %%BeginResource: file Pscript_FatalError 2.0 0 /FatalErrorIf{{initgraphics findfont exch scalefont setfont counttomark 3 div cvi{moveto show}repeat showpage quit}{cleartomark}ifelse}bind def %%EndResource /VM? {vmstatus exch sub exch pop gt { [ (This job requires more memory than is available in this printer.) 100 500 (Try one or more of the following, and then print again:) 100 485 (In the PostScript dialog box, click Optimize For Portability.) 115 470 (In the Device Options dialog box, make sure the Available Printer Memory is accurate.) 115 455 (Reduce the number of fonts in the document.) 115 440 (Print the document in parts.) 115 425 12 /Times-Roman showpage (%%[ PrinterError: Low Printer VM ]%%) = true FatalErrorIf}if} bind def 30000 VM? %%BeginResource: file Pscript_Win_Utils 2.0 0 /|/def load def/,/load load |/~/exch , |/?/ifelse , |/!/pop , |/`/begin , |/^ /index , |/@/dup , |/+/translate , |/$/roll , |/U/userdict , |/M/moveto , |/- /rlineto , |/&/currentdict , |/:/gsave , |/;/grestore , |/F/false , |/T/true , |/N/newpath , |/E/end , |/Ac/arc , |/An/arcn , |/A/ashow , |/D/awidthshow , | /C/closepath , |/V/div , |/O/eofill , |/L/fill , |/I/lineto , |/-C/rcurveto , |/-M/rmoveto , |/+S/scale , |/Ji/setfont , |/Lc/setlinecap , |/Lj/setlinejoin , |/Lw/setlinewidth , |/S/show , |/LH/showpage , |/K/stroke , |/W/widthshow , |/R/rotate , |/b{bind |}bind |/bd{bind |}bind |/xd{~ |}bd/ld{, |}bd/lw/Lw ld /lc/Lc ld/lj/Lj ld/sg/setgray ld/L2? F/languagelevel where{! languagelevel 2 ge{! T}if}if |/g{@ not{U/DefIf_save save put}if U/DefIf_bool 2 ^ put}b /DefIf_El{if U/DefIf_bool get not @{U/DefIf_save get restore}if}b/e{DefIf_El ! }b/self & |/reinitialize{[/TextInit/GraphInit/UtilsInit counttomark{@ where{ self eq}{F}?{cvx exec}{!}?}repeat cleartomark}b/initialize{`{/ADO_mxRot ~ | /TextInitialised? F | reinitialize E}{U/Pscript_Win_Data 200 dict @ ` put /ADO_mxRot ~ |/TextInitialised? F | reinitialize}?}b/terminate{!{& self eq{ exit}{E}?}loop E}b/suspend/terminate , |/resume{` Pscript_Win_Data `}b/snap{ transform 0.25 sub round 0.25 add ~ 0.25 sub round 0.25 add ~ itransform}b /dsnap{dtransform round ~ round ~ idtransform}b<04>cvn{}|/setjn{{statusdict /jobname known{statusdict/jobname 3 -1 $ put}if}stopped cleartomark}b/solid{[] 0 setdash}b/setdsh{0 setdash}b/colspRefresh{}b/rp{4 2 $ M 1 ^ 0 - 0 ~ - neg 0 -}b/rr{1 ^ 0 - 0 ~ - neg 0 - C}b %%EndResource %%BeginResource: file Pscript_Win_Utils_L1 2.0 0 L2? not g{/rf{N rp L}b/fx{1 1 dtransform @ 0 ge{1 sub 1}{1 add -0.25}? 3 -1 $ @ 0 ge{1 sub 1}{1 add -0.25}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{ 4 -2 $ snap + +S fx rf}b/rs{N rp C K}b/rc{N rp clip N}b/sg{setgray}b/sco{ setrgbcolor}b/sgco{{sg}{sco}?}b}e %%EndResource %%BeginResource: file Pscript_Win_Utils_L2 2.0 0 L2? g{/colspA/DeviceGray |/colspABC/DeviceRGB |/setAorABC{{colspA}{colspABC}? setcolorspace}b/rf/rectfill , |/fx{1 1 dtransform @ 0 ge{1 sub 0.5}{1 add -0.5 }? 3 -1 $ @ 0 ge{1 sub 0.5}{1 add -0.5}? 3 1 $ 4 1 $ idtransform 4 -2 $ idtransform}b/BZ{4 -2 $ snap + +S fx rf}b/rs/rectstroke , |/rc/rectclip , |/sg {@ @ setcolor}b/sco{setcolor}b/colspRefresh{colspABC setcolorspace}b/sgco{{sg }{sco}?}b/UtilsInit{F setglobal}b/definecolorrendering{/ColorRendering defineresource !}b/findcolorrendering{@/ColorRendering resourcestatus{! ! /ColorRendering findresource T}{! F}?}b/selectcolorrendering{@/ColorRendering resourcestatus{! !/ColorRendering}{!/DefaultColorRendering/ColorRendering}? findresource setcolorrendering}b}e %%EndResource end %%EndProlog %%BeginSetup [ 1.000 0 0 1.000 0 0 ] false Pscript_Win_Driver_Incr dup /initialize get exec [{0 /languagelevel where{pop languagelevel}{1}ifelse 2 ge{1 dict dup/JobTimeout 4 -1 roll put setuserparams}{statusdict/setjobtimeout get exec}ifelse } stopped cleartomark [{240 /languagelevel where{pop languagelevel}{1}ifelse 2 ge{1 dict dup/WaitTimeout 4 -1 roll put setuserparams}{statusdict/waittimeout 3 -1 roll put}ifelse } stopped cleartomark [{ statusdict /manualfeed false put } stopped cleartomark [{ %%BeginFeature: *InputSlot AutoSelect Tray %%EndFeature } stopped cleartomark [{ %%BeginFeature: *PageSize US Letter letter %%EndFeature } stopped cleartomark 1 setlinecap 1 setlinejoin /mysetup [ 0.240 0 0 -0.240 19.000 784.000 ] | %%EndSetup userdict begin /savelevel0 save def end %%Page: 1 1 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup : 0 0 2391 3229 rc pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Encoding 2.0 0 /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put %%EndResource %%BeginResource: file Pscript_Win_Text 2.0 0 /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Type1_Hdr 2.0 0 /FEbuf 2 string |/FEglyph 3 string |/FE{(G00)FEglyph copy ! 1 ~{@ 16 lt{ /offset 2 store}{/offset 1 store}? @ 16 FEbuf cvrs FEglyph ~ offset ~ putinterval 1 ^ ~ FEglyph cvn put}for}bind |/Type1Hdr{11 dict `/FontName ~ | /PaintType ~ |/FontType 1 |/FontMatrix[1 3 ^ V 0 0 1 6 ^ V 0 0]| !/Encoding 256 array 0 1 255{1 ^ ~/.notdef put}for 3 ^ 3 ^ FE | ! !/FontBBox{0 0 0 0}| & E currentfile eexec}bind | %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc pagesave restore %%BeginFont: MSTT31c2b300 18000 VM? 0 222 2048 0 /MSTT31c2b300 Type1Hdr 9E67EDC6F3DDB54288D663369F8878B525F6C387D4C0BF9F428EB9407E51E952 128195F343ED526D7EF485FEA7E5D287ED91A53373FD7FB6F77C800240920C39 15217EB1FFBBD9A01126C5DE89A01A5A5A7C5200678645AB4D6CD8706FA69D49 4650B734CAA451D7C6A0E0F042C3C95D25DBDBF78E512BCBA18F52BB8FD4C150 A68BCAE089DE3BE4895C5958EDDEF79B30321F0BF1B702CE1C76E58ED3EDCE87 CE3E59DDE6E765EB08F9DC8500FC9DB0ADC36F5DBF29A6F76EBCD8B25058789B 7DAAE3AC98E2C6EA9022556CDA49BCD956BB54E353C210EFF038EC2B76C6ADA5 7503B1CE9D805098B8992A3C660A59790288ABEA940C201FA49A9EC0057CBD34 A531FA9DF09C3607F9D5AFA57A622849C1AA51504F3BE95D9BB12B26AD2F3981 549CA01435BCBAC61B98D509250CE6F5348CA82A1CACD2716560EA0CAD887AAB 0E246E9C6399A686529446C3A439B9450CF07C94FB5A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont (F0) cvn 0.949 (Bookman Old Style,Italic) cvn /TrueType F (MSTT31c2b300) cvn mF userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 4500 VM? pagesave restore currentfile eexec 9E67EDC6B858A3E762244B628C0B7DE0EE00284598236C7F7E8424458714FFB8 46C33E64B978A2BCB440EA1FC1CFB11E719A708A19B2A085A4EADB2AB3C534EC 9A026E6591B41E8432DB5D8FB98F9D8C01494A2904D5C13F1C950B49496C405C 7BA51E434025D87E7838BBE9DEDF6C96E6501D97D69D4D05A28B2A9F7767D1F5 6FD0377873363E88524E02087EF0F0340A91230B6FCB377333F2B9F675686FD0 A85042035BFFC0B0150086FF3809D3DC7E1E9CCA2799030D0A1CF3F6A8F97D40 D9F00D18BC2829B9313B3E68BB9DAD37DDB714428C04B1C74876E205C57C21E7 65F90EEA8795CF5227A93696FD6DB0A56162BF9AC2837B252CA306BB2C2A9CED 033154C59423EF2E84CB0D44B5D737FEA5AAA979F6690DDFFF5338E490708387 657C25CBE88C40288B2E58C20BF5338635972CF291CD9816E6BE0284E67D1567 C3E83536A7C35D91BFE00193D99E461EF1F2B41090AB1AF3611869224B1B01EB CC3EF279938B1992671CEEBA0065CF1E258E22B473FB7CF1176EC27D7EDE06B4 738FA7C813FB05626B6DE43FFDC2531B84AAC13A4A59F8E3AA4957324372E9E3 AB543BE38D0418DE9E20260C481A4DFC2D0454B201AB126305E3E9998CAA30D8 C4ABF14421C866C1F04B44A4D1D13E65786913B594BC6266E8B9B264B38406A1 30B9FBBD500A0F2691E7131E453D84DC0E91241573C76ED2F0EB0AC4CD4F3074 B94D05FAE98814055A6DEB85D52B642529628A4632FE71C38FD2449D93E25D04 9FF7B4214658FC3AE094F4EC9C7520639F7C4CCA4BB7C185C3E249BBB715EFE7 8A49253ACB79BEF5097EE5D45A489BF100D5A89A9C5BFAAAA57220AEFC99D38B 52EEC7B58ABE4A32649AA1AC8821DC401D5C9414DE5CA155D5D54DBE9A200ADF C29234B1395F53716E4EE6C61FCCB153D00513C885DE43F467BFF2CEBD745F4D 9463E40B5788D63CDC0365136EF10E8FED3CFAEB750504357D97511131F8D03E F5DC41417FD7A765C50318ACD576602CEC232649CD1C028BAC45BCC08CC85D51 4800717FEB92B14309B61964256B75B95D15BEE24830BB7ABD375E971A57679B 6EB2909057313DBF088E169AD776E49910D1FC0D93C157AAF17ABB2D045983BA 9E6C61722C8871DEC129A60C66AC768A45D719DB18295B0D7E3A971A5902D52D C799DAF504D389EE1404DC927D94A64B57C99BFD9A86E19E4F01D64EB4F33C2B 5BE3E1F53BDA5A74BF6827A0A550E8D5A10C403E8C1B919B6BD83FE393B236F9 9B43F7D3B0BAFAF68984B792218CFFC7342DDA10A1BBD554E0823637550FDFC6 F44D05834E0DB59F8D3092A8410AC9D6D4E5AC27E8993B0F9E3E2DF6007BCA3E D89B49C44CAC9949A42D2AC788ED4740297BB22653553BD0788B4D5322632ABF F95195DA9DCEE26A7E4C1C57EA420558D7BD02573A10F81116023F9DF3D2CE40 5010161B8DDFF1A9504AF4DD0268A0E60B3F9699E50CD553E131EE7B2BB6D24B 7F92C61D4D8ADEC079ABC79F262D9AA5102AEE01E0221084D21826218CD1AFAD D5D8E38892A0F598649804F8E159C9C9F5AD2A56C4345BE9231AA4266A6D22AF F6598118316223788284473D0003B3DBDE78FCD5A66686C2CD4C4A0D3AA1390E 36F3F01020F690D8131B2F1A0BD1104239B7E03E1824C6C148C6D93DB3E8E2AF 48D3CDF3BCA39FF6A159B566CD9F405466968505F50CD3665A47C096F96AA5DD 1E82EA9D23D2431CF0A862DFBED884B2312DD622AA7C69C9C778A7EFE801F28E 4BB6656EF7540A0C47FC17FF5CB2149ACFE568B3B8C1AB270C71A5D307290B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F0_117) cvn F0 117 xF F0_117 Ji 1089 750 M 0.246 0 (Y&DUG)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F2) cvn 0.900 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F2_100) cvn F2 100 xF F2_100 Ji 672 918 M -0.007 0 (The Electronic Business Card)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.892 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_83) cvn F4 83 xF F4_83 Ji 1076 1061 M 0.157 0 (Version 2.1)A ; : 1007 1405 528 528 rc pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_BW_Images 2.0 0 /iw 0 |/ih 0 |/im_save 0 |/s 0 |/polarity 0 |/smoothflag 0 |/mystring 0 |/bpc 0 |/setup1asciiproc{[currentfile mystring/readhexstring cvx/! cvx]cvx bind}b /setup1binaryproc{[currentfile mystring/readstring cvx/! cvx]cvx bind}b /setup2asciiproc{currentfile/ASCII85Decode filter/RunLengthDecode filter}b /setup2binaryproc{currentfile/RunLengthDecode filter}b/mycolorspace{colspABC}| /myimagedict{/myimagedict 10 dict | myimagedict @ `/ImageType 1 | /MultipleDataSource F | E}b/imageprocarray[/setup1binaryproc/setup1asciiproc /setup2binaryproc/setup2asciiproc/setup1binarydecodeproc/setup1asciidecodeproc ]|/L2Polarity{{[1 0]}{[0 1]}?}b/Q{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/X{/im_save save | imageprocarray ~ get/s ~ , | L2Polarity/polarity ~ |/smoothflag ~ | snap +/dx 2 ^ |/dy 1 ^ | +S/mystring ~ string |/bpc ~ |/ih ~ |/iw ~ |}b/Z{im_save restore}b/Y{sgco myimagedict @ ` /Width iw |/Height ih |/Decode polarity |/ImageMatrix[iw 0 0 ih 0 0]| /DataSource s |/BitsPerComponent 1 |/Interpolate smoothflag | E imagemask}b %%EndResource %%BeginResource: file Pscript_Win_BW_Images_L1 2.0 0 L2? not g{/setup2asciiproc{[/Level2ImagesError , aload ! T FatalErrorIf}b /setup2binaryproc/setup2asciiproc , |/L2Polarity{}|/Y{sgco iw ih polarity[iw 0 0 ih 0 0]s imagemask}b}e %%EndResource userdict /Level2ImagesError [ (This job contains a bitmapped image that can be printed only on) 100 500 (PostScript(R) Level 2 printers. Please send this file to a PostScript) 100 485 (Level 2 printer, or print your document again with the correct printer) 100 470 (selected.) 100 455 12 /Times-Roman ] put %%BeginResource: file Pscript_Win_Co_Images_L1 2.0 0 L2? not g{/testsystemdict{where{systemdict eq{T}{F}?}{F}?}b/c 1 |/colorimage where{! T}{F}?{/c 0 statusdict `/processcolors where{! ! processcolors}{ /deviceinfo where{! deviceinfo/Colors known{!{deviceinfo/Colors get}}if}if}? E | c 0 ne{/colorimage testsystemdict/setcolortransfer testsystemdict /currentcolortransfer testsystemdict/currentcmykcolor testsystemdict and and and not{/c 0 |}if}if}if c @ 1 ne ~ @ 3 ne ~ 4 ne and and{/c 0 |}if c 1 eq g{ /expandbw{expandfactor mul round cvi bwclut ~ get 255 V}b/doclutimage{!/bwclut ~ | bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/expandfactor ~ |[/expandbw ,/exec , @ currenttransfer ~]cvx bind settransfer iw ih bpc[iw 0 0 ih 0 0]s image}b}e c @ 3 eq ~ 4 eq or g{/nullproc{{}}|/concatutil{/exec , 7 -1 $/exec ,}b/defsubclut{ 1 add getinterval |}b/spconcattransfer{/Dclut ~ |/Cclut ~ |/Bclut ~ |/Aclut ~ |/ncompute ~ , | currentcolortransfer[{Aclut ncompute}concatutil]cvx[{Bclut ncompute}concatutil]cvx[{Cclut ncompute}concatutil]cvx[{Dclut ncompute} concatutil]cvx setcolortransfer}b/setuprgbcluts{/bit3x rgbclut length 3 sub | /bit1x bit3x 3 idiv |/rclut rgbclut |/gclut rclut 1 bit3x defsubclut/bclut rclut 2 bit3x defsubclut}b}e c 3 eq g{/3compute{~ bit3x mul round cvi get 255 V}b/doclutimage{/rgbclut ~ | ! setuprgbcluts/3compute rclut gclut bclut @ spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @]cvx nullproc nullproc T 3 colorimage}b}e c 4 eq g{/ftoint{1 ~ sub 255 mul round cvi}b/stuffclut{ cmykindex 3 -1 $ put}b/4compute{~ bit4x mul round cvi get 255 V}b /invalidcolortable? T |/computecmykclut{setuprgbcluts/bit4x rgbclut length 3 idiv 4 mul 4 sub |/cmykclut bit4x 4 add string |/cclut cmykclut |/mclut cclut 1 bit4x defsubclut/yclut cclut 2 bit4x defsubclut/kclut cclut 3 bit4x defsubclut/cmykindex 0 | 0 1 bit1x{@/cmykindex ~ bit1x ~ sub 4 mul | 3 mul @ rclut ~ get 255 V ~ @ gclut ~ get 255 V ~ bclut ~ get 255 V setrgbcolor currentcmykcolor ftoint kclut stuffclut ftoint yclut stuffclut ftoint mclut stuffclut ftoint cclut stuffclut}for}b/doclutimage{/rgbclut ~ | ! invalidcolortable?{computecmykclut}if/4compute cclut mclut yclut kclut spconcattransfer iw ih bpc[iw 0 0 ih 0 0][s/exec ,/@ , @ @]cvx nullproc nullproc nullproc T 4 colorimage}b}e c 0 eq g{/a{3 mul 3 getinterval putinterval ~ 3 add ~ 3 copy}b/8lookup/a , |/4lookup{/byte 1 ^ | -4 bitshift a byte 15 and a}b/2lookup{/byte 1 ^ | -6 bitshift a byte -4 bitshift 3 and a byte -2 bitshift 3 and a byte 3 and a}b/colorexpand{mystringexp 0 rgbclut 3 copy 7 -1 $/mylookup , forall ! ! ! ! !}b/createexpandstr{/mystringexp ~ mystring length mul string |}b/doclutimage{/rgbclut ~ | !/mylookup bpc 8 eq{3 createexpandstr/8lookup}{bpc 4 eq{6 createexpandstr/4lookup}{12 createexpandstr/2lookup}?}? , | iw ih bpc[iw 0 0 ih 0 0][s/exec ,/colorexpand ,/exec ,]cvx F 3 colorimage}b}e/colorimage where{! T}{F}? g{/do24image{iw ih 8 [iw 0 0 ih 0 0]s F 3 colorimage}b}DefIf_El{/rgbtogray{/str ~ |/len str length |/smlen len 3 idiv |/rstr str |/gstr str 1 len 1 sub getinterval |/bstr str 2 len 2 sub getinterval | str @ 0 1 smlen 1 sub{@ 3 mul rstr 1 ^ get 0.3 mul gstr 2 ^ get 0.59 mul add bstr 3 -1 $ get 0.11 mul add round cvi put @}for ! 0 smlen getinterval}b/do24image{iw ih 8[iw 0 0 ih 0 0][s/exec ,/rgbtogray ,/exec ,]cvx bind image}b}e/doNimage{bpc 24 eq{do24image}{iw ih bpc[iw 0 0 ih 0 0]s image}?}b}e %%EndResource %%BeginResource: file Pscript_Win_Co_Images_L2 2.0 0 L2? g{/doclutimage{/rgbclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[ /Indexed colspABC hival rgbclut]setcolorspace myimagedict @ `/Width iw | /Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s | /BitsPerComponent bpc |/Interpolate smoothflag | E image}b/doCMYKclutimage{ /CMYKclut ~ | ! bpc @ 8 eq{! 255}{4 eq{15}{3}?}?/hival ~ |[/Indexed/DeviceCMYK hival CMYKclut]setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 hival]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc | /Interpolate smoothflag | E image}b/doNimage{bpc 24 eq{colspABC}{colspA}? setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode bpc 24 eq{[0 1 0 1 0 1]}{[0 1]}? |/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent bpc 24 eq{8}{bpc}? |/Interpolate smoothflag | E image}b/doCMYKimage{ /DeviceCMYK setcolorspace myimagedict @ `/Width iw |/Height ih |/Decode[0 1 0 1 0 1 0 1]|/ImageMatrix[iw 0 0 ih 0 0]|/DataSource s |/BitsPerComponent 8 | /Interpolate smoothflag | E image}b}e %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 1007 1405 528 528 rc 48 48 8 48 528 -528 1007 1933 F T 1 X < FF F9 F3 EE E8 E2 E0 DB D5 D0 CA C4 C2 BD B7 B1 AC A6 A4 9F 99 93 8E 88 86 81 7B 75 70 6A 68 62 5D 57 52 4C EF EA E4 DE D9 D3 D1 CC C6 C0 BB B5 B3 AD A8 A2 9D 97 95 8F 8A 84 7E 79 77 71 6C 66 60 5B 59 53 4E 48 42 3D E0 DA D5 CF C9 C4 C2 BC B7 B1 AB A6 A4 9E 99 93 8D 88 86 80 7A 75 6F 6A 68 62 5C 57 51 4B 49 44 3E 39 33 2D D1 CB C5 C0 BA B5 B3 AD A7 A2 9C 96 94 8F 89 84 7E 78 76 71 6B 66 60 5A 58 53 4D 47 42 3C 3A 35 2F 29 24 1E C1 BC B6 B0 AB A5 A3 9E 98 92 8D 87 85 80 7A 74 6F 69 67 61 5C 56 51 4B 49 43 3E 38 33 2D 2B 25 20 1A 14 0F B2 AC A7 A1 9C 96 94 8E 89 83 7D 78 76 70 6B 65 5F 5A 58 52 4D 47 41 3C 3A 34 2E 29 23 1E 1C 16 10 0B 05 47 42 38 33 28 23 19 14 0A 05 8C 82 6E 64 50 46 32 28 14 0A 1A 18 14 12 0E 0D 09 07 03 01 EE DD BB AA 88 77 55 44 22 11 00 > < FFFFFF FFFFCC FFFF99 FFFF66 FFFF33 FFFF00 FFCCFF FFCCCC FFCC99 FFCC66 FFCC33 FFCC00 FF99FF FF99CC FF9999 FF9966 FF9933 FF9900 FF66FF FF66CC FF6699 FF6666 FF6633 FF6600 FF33FF FF33CC FF3399 FF3366 FF3333 FF3300 FF00FF FF00CC FF0099 FF0066 FF0033 FF0000 CCFFFF CCFFCC CCFF99 CCFF66 CCFF33 CCFF00 CCCCFF CCCCCC CCCC99 CCCC66 CCCC33 CCCC00 CC99FF CC99CC CC9999 CC9966 CC9933 CC9900 CC66FF CC66CC CC6699 CC6666 CC6633 CC6600 CC33FF CC33CC CC3399 CC3366 CC3333 CC3300 CC00FF CC00CC CC0099 CC0066 CC0033 CC0000 99FFFF 99FFCC 99FF99 99FF66 99FF33 99FF00 99CCFF 99CCCC 99CC99 99CC66 99CC33 99CC00 9999FF 9999CC 999999 999966 999933 999900 9966FF 9966CC 996699 996666 996633 996600 9933FF 9933CC 993399 993366 993333 993300 9900FF 9900CC 990099 990066 990033 990000 66FFFF 66FFCC 66FF99 66FF66 66FF33 66FF00 66CCFF 66CCCC 66CC99 66CC66 66CC33 66CC00 6699FF 6699CC 669999 669966 669933 669900 6666FF 6666CC 666699 666666 666633 666600 6633FF 6633CC 663399 663366 663333 663300 6600FF 6600CC 660099 660066 660033 660000 33FFFF 33FFCC 33FF99 33FF66 33FF33 33FF00 33CCFF 33CCCC 33CC99 33CC66 33CC33 33CC00 3399FF 3399CC 339999 339966 339933 339900 3366FF 3366CC 336699 336666 336633 336600 3333FF 3333CC 333399 333366 333333 333300 3300FF 3300CC 330099 330066 330033 330000 00FFFF 00FFCC 00FF99 00FF66 00FF33 00FF00 00CCFF 00CCCC 00CC99 00CC66 00CC33 00CC00 0099FF 0099CC 009999 009966 009933 009900 0066FF 0066CC 006699 006666 006633 006600 0033FF 0033CC 003399 003366 003333 003300 0000FF 0000CC 000099 000066 000033 EE0000 DD0000 BB0000 AA0000 880000 770000 550000 440000 220000 110000 00EE00 00DD00 00BB00 00AA00 008800 007700 005500 004400 002200 001100 0000EE 0000DD 0000BB 0000AA 000088 000077 000055 000044 000022 000011 EEEEEE DDDDDD BBBBBB AAAAAA 888888 777777 555555 444444 222222 111111 000000 > doclutimage 00000000000000000000000000000006070E0E0E070700000000000000000000 00000000000000000000000000000000 0000000000000000000000000000F5070E14140E0E07F5F50000000000000000 00000000000000000000000000000000 00000000000000000000000000F5070E0E151515140E07F50000000000000000 00000000000000000000000000000000 000000000000000000000000F5070E141B1C1B1514140E07F600000000000000 00000000000000000000000000000000 0000000000000000000000F5F60E14151B1B22221C15140E07F6000000000000 00000000000000000000000000000000 0000000000000000000000070D0E1B1C1B1CD846221B15140E07F60000000000 00000000000000000000000000000000 000000000000000000F5070D0E151B1B2222888F461C1B15140E07F600000000 00000000000000000000000000000000 000000000000000000F60D0E151B1C2246DCF4FFDD46221B1B140E0D07000000 00000000000000000000000000000000 0000000000000000070D0E151B1B1C46DBF4FEEAFFDDD9221C1B150E0D07F500 00000000000000000000000000000000 000000000000F5F60D0E141B1B2222DCFFFFFBFCFFFFB36A22221B150E0D07F6 00000000000000000000000000000000 0000000000F5F6070E151B1C2246DCFFF4FBF8F7F9FCFFDFDB46221B150E0E07 F6000000000000000000000000000000 0000000000F6070E141B1C2222DCFEFFFBF8000000F8FBEAFEDC46221C1B140E 07070000000000000000000000000000 00000000F5070D0E1B1B2222DCE0FFFCF8F5000000F52B81FFFFDEDB221B1B14 0E07F6F5000000000000000000000000 00000000F50D0E1B1C22466AE0FFFCF8F50000000000002BFAFDFFB3DB461C1B 140E0D07F5F500000000000000000000 000000F5070E151C2222DBFEFFFCF8000000000000000000F5FAFEFFDFDB4622 1B150E0D070600000000000000000000 000000F607141B2222DBFEFFACF8F5000000000000000000000056FEFFDFDB46 1C1B15140E0707F50000000000000000 000000F60D151B46DBE0FFAC56F5000000000000000000F62B000056ACFFE0DC 46221C1B150E0707F5F5000000000000 000000F507141CDBE0FFAC56000000000000000000F8FCFFFF56000056FDEAE0 8F46221C1B1B0E0D07F5000000000000 000000F50E146ADFFFFD56F50000000000000056ACFFFFFFFFF9000000F7ACFF E0DD6A46221C15140E07070000000000 0000F5073864B3FFACF9F50000000000F5FAFEFFFFFFFFFFFFF700000000F8FB EAFFDFDC46221C1B140E070700000000 0000070E3FFDFFFDF900000000002BFAFFFFFFFFFFFFFDFEFE000000000000F7 FBFDFFE08F46221C1B140E0D07000000 00F5075CFDFFFDF9F500F9FEACACFFFFFFFFFFFFACF8F5FFFB00000000000000 F656ACFFE08F46221C1B140E07070000 0000F888FFACF8F50000F6FBFFFFFFFFFFFF812B000056FF5600000000000000 00F556FCFFE08F46D71B1B0E0D07F500 0000F6F9ACFE560000000000F8FEFFFFFBF6000000F581FF2B00000000000000 000000F7FCFFE08F46221C140E07F5F5 000000F656FAACFC2B00000000F581FFFCF5000000F5FDFEF500000000000000 000000002B81FFFFDD461B1B0E0707F5 00000000002BF981FEFBF600000000F8FAF6000000F6FFFB000000000000F7F5 0000000000F781F4FFDDDA1B150E07F5 00000000000000F7F9FBFD56000000000000F5F9F9FAFFF90000000000F8FEFD 2B0000000000F581FEFEDDDA21140707 0000000000000000F5F7FAFCACF700000000F5FBFFFFFF2B000000000000F7FD FFF80000000000F656ACFFB3641C14F5 0000000008100FF50000F5F8FAACFBF6000000002BACFF8100000000000000F5 FBFFFAF500000000F556FCF4B36A3200 000008091010100100000000F65681FDFA00000000F5F9FC0000000000000000 00F9FEFBF6000000000056ACFFFDF800 00080910101008F50000000000002BF981AC5600000000000000000000FAF9F6 00002BFDFDF70000000000F7ACFB2B00 07080F0F090F01000000000000000000F7F9FBACF60000000000000000F9FEFD F70000F5F8F7000000F6FBFCF92B0000 010809090F010000000000000000000000F5F7FAFCFBF500000000000000F6FC FFF90000000000F5F9FCFAF7F5000000 00010701000000000000010909070000000000F5F8FAFCF90000000000000000 56FAF6000000F7FCFB56F50000000000 000000000000000000081010100800000000000000F656FAFCF7000000000000 00000000F6FBFBF9F600000000000000 0000000000000000080F0A1010080000000000000000002B56FBFBF600000000 0000F5FAFBF9F7000000000000000000 0000000000000008090F0F10090100000000000000000000002BF9FBFAF50000 00F8FC81F8F50000F508100901000000 000000000000010808090F090800000000000808F50000000000F5F7F9FBF82B FB8156F5000000000110101009070000 000000000000F5080809090700000000000810100900000000000000F5F8FBFC F92B0000000000000008100A0F090800 0000000000000001080700000000000008101010090000000000000000002BF6 00000108F500000000010F0F0F090807 000000000000000000000000000000F609101010080000000000091008000000 00000F10090100000000010909080801 000000000000000000000000000000080909100F07000000000810100FF50000 00000910100800000000000007080100 0000000000000000000000000000F6090F0F0909000000000009101010010000 00000910100F08000000000000000000 00000000000000000000000000000108080908F600000000F50F10100AF50000 000008100F0908010000000000000000 000000000000000000000000000000010808010000000000010F090F10010000 0000F6090F0909070000000000000000 00000000000000000000000000000000000000000000000008090F0908F50000 00000001090808000000000000000000 0000000000000000000000000000000000000000000000000808080808000000 0000000000F500000000000000000000 0000000000000000000000000000000000000000000000000108080800000000 00000000000000000000000000000000 Z ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F1) cvn 0.892 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F1_83) cvn F1 83 xF F1_83 Ji 672 2270 M -0.926 0 (A)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F3) cvn 0.892 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F3_83) cvn F3 83 xF F3_83 Ji 731 2270 M 0.250 0 ( )A ; : 0 0 2391 3229 rc pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Type3_Hdr 2.0 0 /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc pagesave restore %%BeginFont: MSTT31c2a500 27000 VM? /MSTT31c2a500 [83.0 0 0 0 0 0] [-83.0 -83.0 83.0 83.0 ] [1 83 div 0 0 1 83 div 0 0] /MSTT31c2a500 GreNewFont %%EndFont (F1) cvn 0.940 (Bookman Old Style,Italic) cvn /TrueType F (MSTT31c2a500) cvn mF userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 20952 VM? pagesave restore /G59 [45.0 0.0 7.0 -1.0 50.0 41.0 ] /G59 { 43 42 true [1 0 0 -1 -7.0 41.0 ] {<00003F003E00 0003FF00FF00 003FFE01FF80 3FFFFE01FFC0 3FFFFE03FFC0 7FFFFE03FFE0 7FFFFC03FFE0 7FFFFC03FFE0 7FFFFC03FFE0 FFFFFC01FFE0 FFFFF801FFE0 007FF800FFE0 007FF800FFE0 00FFF8007FE0 00FFF0007FC0 00FFF0007FC0 00FFF0007FC0 01FFF0007FC0 01FFE000FF80 01FFE000FF80 01FFE000FF80 03FFE001FF00 03FFC001FF00 03FFC001FE00 03FFC003FE00 07FFC007FC00 07FF8007FC00 07FF800FF800 07FF801FF800 0FFF803FF000 0FFF807FE000 0FFF80FFC000 0FFFC3FF8000 0FFFFFFF8000 0FFFFFFF0000 07FFFFFC0000 07FFFFF80000 03FFFFF00000 03FFFFE00000 01FFFF800000 007FFE000000 001FE0000000 >} imagemask } 89 /G59 MSTT31c2a500 AddChar /G48 [46.0 0.0 7.0 -1.0 49.0 41.0 ] /G48 { 42 42 true [1 0 0 -1 -7.0 41.0 ] {<000001FF8000 00001FFFF000 0000FFFFFC00 0003FFFFFE00 000FFFFFFF00 001FFFFFFF80 007FFFFFFF80 00FFFFFFFFC0 01FFFF07FFC0 03FFFC03FFC0 07FFF801FFC0 0FFFE001FFC0 0FFFC001FFC0 1FFFC003FFC0 1FFF8007FF80 3FFF000FFF80 3FFF007FFF00 7FFE0FFFFE00 7FFFFFFFFC00 7FFFFFFFF800 FFFFFFFFF000 FFFFFFFFC000 FFFFFFFE0000 FFFFFFE00000 FFFFF8000000 FFF800000000 FFF800000000 FFF800003000 FFF800007000 7FFC0001F800 7FFE0003FC00 7FFF001FFE00 3FFFC07FFF00 3FFFFFFFFE00 1FFFFFFFFC00 1FFFFFFFF800 0FFFFFFFE000 07FFFFFFC000 03FFFFFF0000 00FFFFFC0000 003FFFF00000 0007FF000000 >} imagemask } 72 /G48 MSTT31c2a500 AddChar /G55 [42.0 0.0 8.0 0.0 49.0 41.0 ] /G55 { 41 41 true [1 0 0 -1 -8.0 41.0 ] {<00007C03F800 0003F81FFE00 003FF83FFF00 1FFFF8FFFF00 1FFFF9FFFF80 3FFFF3FFFF80 3FFFF7FFFF80 3FFFF7FFFF80 3FFFFFFFFF80 7FFFFFFFFF80 7FFFFFFFFF00 01FFFFC7FF00 01FFFF01FE00 03FFFE00F800 03FFFC000000 03FFF8000000 03FFF8000000 03FFF0000000 07FFF0000000 07FFE0000000 07FFE0000000 07FFC0000000 0FFFC0000000 0FFF80000000 0FFF80000000 0FFF80000000 1FFF00000000 1FFF00000000 1FFF00000000 1FFE00000000 3FFE00000000 3FFE00000000 3FFC00000000 3FFC00000000 3FFC00000000 7FFC00000000 7FF800000000 7FF800000000 7FF800000000 FFF800000000 FFF000000000 >} imagemask } 85 /G55 MSTT31c2a500 AddChar /G56 [45.0 0.0 6.0 -1.0 49.0 41.0 ] /G56 { 43 42 true [1 0 0 -1 -6.0 41.0 ] {<00001FFF0000 0000FFFFE000 0007FFFFFC00 000FFFFFFF00 003FFFFFFF80 007FFFFFFFC0 00FFFFFFFFC0 00FFFFFFFFE0 01FFF01FFFE0 01FFC007FFE0 03FFC001FFE0 03FFC000FFC0 03FFE0007FC0 03FFF0001F00 03FFFE000000 03FFFFC00000 01FFFFF80000 01FFFFFE0000 00FFFFFFC000 007FFFFFE000 007FFFFFF800 001FFFFFFC00 000FFFFFFC00 0003FFFFFE00 00007FFFFE00 00000FFFFF00 1F0001FFFF00 3F80007FFF00 7FC0001FFF00 FFE0000FFF00 FFF0000FFF00 FFF8000FFE00 FFFE001FFE00 FFFF807FFE00 7FFFFFFFFC00 7FFFFFFFF800 3FFFFFFFF000 1FFFFFFFE000 07FFFFFFC000 01FFFFFF0000 007FFFFC0000 0007FFC00000 >} imagemask } 86 /G56 MSTT31c2a500 AddChar /G4C [32.0 0.0 9.0 -1.0 36.0 58.0 ] /G4C { 27 59 true [1 0 0 -1 -9.0 58.0 ] {<0000FC00 0003FF00 0007FF80 000FFF80 000FFFC0 001FFFC0 001FFFC0 001FFFC0 001FFFC0 001FFF80 000FFF80 000FFF00 0003FE00 0001F800 00000000 00000000 00000000 00003F00 0003FF00 007FFE00 3FFFFE00 3FFFFE00 7FFFFE00 7FFFFC00 7FFFFC00 7FFFFC00 FFFFFC00 FFFFF800 007FF800 007FF800 00FFF800 00FFF000 00FFF000 00FFF000 01FFF000 01FFE000 01FFE000 03FFE000 03FFE000 03FFC000 03FFC000 07FFC000 07FFC000 07FF8000 07FF8000 0FFF8000 0FFF8000 0FFF0000 0FFF0200 0FFF8F00 0FFFFF80 0FFFFFC0 0FFFFFE0 0FFFFFC0 07FFFF80 03FFFF00 03FFFC00 00FFF000 003FC000 >} imagemask } 76 /G4C MSTT31c2a500 AddChar /G57 [37.0 0.0 9.0 -1.0 45.0 54.0 ] /G57 { 36 55 true [1 0 0 -1 -9.0 54.0 ] {<00007FC000 00007FC000 0000FFC000 0000FFC000 0001FFC000 0003FF8000 0003FF8000 0007FF8000 000FFF8000 001FFF0000 003FFF0000 00FFFF0000 03FFFF0000 0FFFFFFFF0 3FFFFFFFF0 7FFFFFFFE0 7FFFFFFFE0 7FFFFFFFE0 7FFFFFFFE0 FFFFFFFFC0 FFFFFFFFC0 007FFC0000 007FF80000 007FF80000 007FF80000 00FFF80000 00FFF00000 00FFF00000 00FFF00000 01FFF00000 01FFE00000 01FFE00000 01FFE00000 03FFE00000 03FFC00000 03FFC00000 03FFC00000 07FFC00000 07FF800000 07FF800000 07FF800800 07FF801E00 0FFF803F00 0FFF807F80 0FFF81FFC0 0FFFC7FF80 07FFFFFF00 07FFFFFE00 07FFFFFC00 03FFFFF800 01FFFFF000 01FFFFE000 007FFF8000 003FFF0000 0007F80000 >} imagemask } 87 /G57 MSTT31c2a500 AddChar userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F1_83) cvn F1 83 xF F1_83 Ji 752 2266 M (YHUVLW)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F3) cvn 0.892 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F3_83) cvn F3 83 xF F3_83 Ji 999 2270 M 0.250 0 ( )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F5) cvn 0.892 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F5_83) cvn F5 83 xF F5_83 Ji 1020 2270 M -0.073 0 (Consortium Specification)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_83 Ji 936 2468 M 0.209 0 (September 18, 1996)A ; LH pagesave restore (%%[ Page: 1 ]%%) = %%PageTrailer %%Page: 2 2 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Graphics 2.0 0 /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b %%EndResource %%BeginResource: file Pscript_Win_Graphics_L1 2.0 0 L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e %%EndResource %%BeginResource: file Pscript_Win_Graphics_L2 2.0 0 L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.324 0 (ii)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 401 444 M 0.184 0 (\251 1996, International Business Machines Corp., Lucent Technologies, Inc., and Siemens. All)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 498 M 0.129 0 (rights reserved.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 573 M 0.176 0 (Permission is granted to copy and distribute this publication provided that it is reproduced in)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 627 M 0.187 0 (its entirety without modification and includes the above copyright notice and this permission)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 681 M 0.265 0 (notice.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 756 M 0.191 0 (No licenses, express or implied, are granted with respect to any of the technology described in)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 810 M 0.188 0 (this publication. International Business Machines Corp., Lucent Technologies, Inc., and)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 864 M 0.207 0 (Siemens retain all their intellectual property rights in the technology described in this)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 918 M 0.208 0 (publication.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 993 M 0.176 0 (Even though International Business Machines Corp., Lucent Technologies, Inc., and Siemens)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1047 M 0.196 0 (have reviewed this specification,)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Bold (F6) cvn 0.947 (Times-Bold) cvn /Type1 T (Times-Bold) cvn mF (F6_38) cvn F6 38 xF F6_38 Ji 958 1049 M -0.116 0 ( INTERNATIONAL BUSINESS MACHINES CORP., LUCENT)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1103 M -0.063 0 (TECHNOLOGIES, INC, AND SIEMENS, MAKE NO WARRANTY OR REPRESENTATION,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1157 M -0.042 0 (EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS PUBLICATION, ITS QUALITY)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1211 M -0.100 0 (OR ACCURACY, NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1265 M -0.104 0 (PARTICULAR PURPOSE. AS A RESULT, THIS SPECIFICATION IS DELIVERED )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 1812 1265 M (\223)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 1831 1265 M 0.005 0 (AS IS)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 1925 1265 M (\224)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1319 M -0.093 0 (AND THE READER ASSUMES THE ENTIRE RISK AS TO ITS QUALITY, ACCURACY OR)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1373 M -0.134 0 (SUITABILITY FOR ANY PARTICULAR PURPOSE..)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1448 M -0.104 0 (IN NO EVENT WILL INTERNATIONAL BUSINESS MACHINES CORP., LUCENT)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1502 M -0.054 0 (TECHNOLOGIES, INC, AND SIEMENS, BE LIABLE FOR DIRECT, INDIRECT, SPECIAL,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1556 M -0.115 0 (INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1610 M -0.067 0 (INACCURACY IN THIS PUBLICATION, EVEN IF ADVISED OF THE POSSIBILITY OF)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_38 Ji 401 1664 M -0.060 0 (SUCH DAMAGES.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1737 M 0.146 0 (This publication is provided with RESTRICTED RIGHTS. Use, duplication, or disclosure by)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1791 M 0.136 0 (the Government are subject to restrictions set forth in DFARS 252.227-7013 or 48 CFR)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1845 M 0.196 0 (52.227-19, as applicable.)A ; LH pagesave restore (%%[ Page: 2 ]%%) = %%PageTrailer %%Page: 3 3 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.103 0 (Trademarks)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2144 3068 M -0.324 0 (iii)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 433 M 0.183 0 (Trademarks)A ; : 0 0 2391 3229 rc pagesave restore %%BeginFont: MSTT31c1c000 27000 VM? /MSTT31c1c000 [38.0 0 0 0 0 0] [-38.0 -38.0 38.0 38.0 ] [1 38 div 0 0 1 38 div 0 0] /MSTT31c1c000 GreNewFont %%EndFont (F2) cvn 0.921 (Bookman Old Style,Italic) cvn /TrueType F (MSTT31c1c000) cvn mF userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 7603 VM? pagesave restore /G59 [22.0 0.0 2.0 0.0 23.0 19.0 ] /G59 { 21 19 true [1 0 0 -1 -2.0 19.0 ] {<00E0E0 3FE3F0 7FE3F8 FFE3F8 FFC1F8 0FC1F8 0FC1F8 0FC1F0 1F81F0 1F81F0 1F83E0 1F83E0 3F07C0 3F0F80 3F1F00 3FFE00 3FFC00 1FF800 0FC000 >} imagemask } 89 /G59 MSTT31c1c000 AddChar /G48 [21.0 0.0 3.0 0.0 23.0 19.0 ] /G48 { 20 19 true [1 0 0 -1 -3.0 19.0 ] {<003F80 01FFE0 07FFE0 0FFFF0 1FE3F0 3FC3F0 7F87F0 7F1FE0 FFFFC0 FFFF00 FFF000 FE0000 FE0080 FF01C0 7F87E0 7FFFC0 3FFF00 1FFE00 07F000 >} imagemask } 72 /G48 MSTT31c1c000 AddChar /G55 [19.0 0.0 4.0 0.0 23.0 19.0 ] /G55 { 19 19 true [1 0 0 -1 -4.0 19.0 ] {<01C3C0 3FCFE0 7FDFE0 FFFFE0 FFFFE0 1FF1C0 1FE000 1FC000 1FC000 3F8000 3F8000 3F0000 3F0000 7F0000 7E0000 7E0000 7E0000 FE0000 FC0000 >} imagemask } 85 /G55 MSTT31c1c000 AddChar /G56 [21.0 0.0 3.0 0.0 23.0 19.0 ] /G56 { 20 19 true [1 0 0 -1 -3.0 19.0 ] {<00FF00 03FFC0 0FFFF0 0FFFF0 1F83F0 1F80E0 1FF000 1FFE00 0FFF80 07FFC0 01FFE0 003FE0 700FE0 F807E0 FE0FE0 FFFFC0 7FFF80 3FFF00 07FC00 >} imagemask } 86 /G56 MSTT31c1c000 AddChar /G4C [14.0 0.0 3.0 0.0 16.0 27.0 ] /G4C { 13 27 true [1 0 0 -1 -3.0 27.0 ] {<01E0 03F0 07F0 07F0 07F0 07E0 01C0 0000 00F0 3FE0 7FE0 FFE0 FFC0 0FC0 0FC0 0FC0 1F80 1F80 1F80 3F80 3F00 3F00 3F20 3FF0 3FF8 3FE0 0F80 >} imagemask } 76 /G4C MSTT31c1c000 AddChar /G57 [17.0 0.0 3.0 0.0 20.0 25.0 ] /G57 { 17 25 true [1 0 0 -1 -3.0 25.0 ] {<00F800 00F800 01F000 03F000 03F000 0FF000 3FFF80 7FFF80 FFFF80 FFFF80 0FC000 0FC000 0FC000 1FC000 1F8000 1F8000 1F8000 3F8000 3F0400 3F0E00 3F1F00 3FFE00 3FFC00 1FF800 07E000 >} imagemask } 87 /G57 MSTT31c1c000 AddChar userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F2_38) cvn F2 38 xF F2_38 Ji 551 601 M (YHUVLW)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 665 598 M 0.363 0 (, the )A ; : 0 0 2391 3229 rc 1267 VM? pagesave restore /G03 [13.0 0.0 0.0 0.0 0.0 0.0 ] /G03 { } 3 /G03 MSTT31c1c000 AddChar userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F2_38) cvn F2 38 xF F2_38 Ji 750 601 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 877 598 M 0.196 0 ( logo, versitcard, vCard, and vCalendar are trademarks of Apple Computer,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 652 M 0.178 0 (Inc., AT&T Corp., International Business Machines Corp., and Siemens.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 727 M 0.196 0 (Apple, is a trademarks of Apple Computer, Inc. registered in the U.S. and other countries.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 802 M 0.192 0 (AT&T and ATTMail are registered trademarks of AT&T Corp.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 877 M 0.152 0 (IBM, IBM Mail, and OS/2 are registered trademarks of International Business Machines)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 931 M 0.126 0 (Corporation.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1006 M 0.211 0 (America Online is a registered trademark of America Online, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1081 M 0.146 0 (CompuServe, CompuServe Information Services are registered trademarks of Compuserve)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1135 M 0.148 0 (Incorporated.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1210 M 0.161 0 (MCIMail is a registered trademark of MCI Communications Corporation.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1285 M 0.157 0 (Microsoft is a registered trademark, and Microsoft Windows is a trademark of Microsoft)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1339 M 0.126 0 (Corporation.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1414 M 0.150 0 (Prodigy is a registered trademark of Prodigy Services Company.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 1489 M 0.195 0 (Unicode is a registered trademark of Unicode, Inc.)A ; LH pagesave restore (%%[ Page: 3 ]%%) = %%PageTrailer %%Page: 4 4 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_42) cvn F3 42 xF F3_42 Ji 221 3068 M -0.324 0 (i)A (v)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F5) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F5_75) cvn F5 75 xF F5_75 Ji 401 433 M 0.073 0 (Contributors)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_42) cvn F7 42 xF F7_42 Ji 401 598 M 0.126 0 (Roland Alden)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 673 M 0.116 0 (Greg Ames, Ames & Associates)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 748 M 0.160 0 (Masanari Arai, Puma Technologies)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 823 M 0.238 0 (Stephen W. Bartlett)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 898 M 0.144 0 (Donal Carroll)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 973 M 0.121 0 (Liang-Jye Chang, Starfish Software)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1048 M 0.071 0 (Frank Dawson, IBM Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1123 M 0.163 0 (Ken Dobson, IntelliLink Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1198 M 0.181 0 (Scott Feldstein, Nimble Software, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1273 M 0.120 0 (Anik Ganguly, OnTime/Division of FTP Software.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1348 M 0.129 0 (Beijing Goo, Microsoft)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1423 M 0.143 0 (Arvind K. Goyal, Lotus Development Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1498 M 0.106 0 (Gary Hand, IBM Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1573 M 0.150 0 (Tim Howes, Netscape Communications Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1648 M 0.146 0 (Mark Joseph, Attachmate Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1723 M 0.140 0 (Kerry Kelly, Now Software, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1798 M 0.210 0 (Phac Letuan, Apple Computer, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1873 M 0.123 0 (Pat Megowan, Counterpoint Sytems Foundry Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 1948 M 0.135 0 (Tohri Mori, IBM Japan/Salutation Consortium)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2023 M 0.195 0 (Ravi Pandya, NetManage, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2098 M 0.102 0 (Geoff Ralston, Four11 Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2173 M 0.208 0 (Steven Rummel, Lucent Technologies)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2248 M 0.139 0 (Michael Santullo, Four11 Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2323 M 0.138 0 (Vinod Seraphin, Lotus Development Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2398 M 0.193 0 (Dexter Seely, Corex Technologies, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2473 M 0.143 0 (Vlad Shmunis, Ring Zero Systems Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2548 M 0.135 0 (Dean Stevens, Now Software, Inc.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2623 M 0.175 0 (Michelle Watkins, Netscape Communications Corporation)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2698 M 0.119 0 (Horst Widlewski, Siemens)A ; LH pagesave restore (%%[ Page: 4 ]%%) = %%PageTrailer %%Page: 5 5 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_42) cvn F3 42 xF F3_42 Ji 371 3068 M -0.119 0 (Reference Information)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 2150 3068 M (v)S ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F5) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F5_75) cvn F5 75 xF F5_75 Ji 551 433 M 0.144 0 (Reference Information)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_42) cvn F7 42 xF F7_42 Ji 551 598 M 0.188 0 (The cited references contain provisions which, through reference in this specification,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 652 M 0.193 0 (constitute provisions of this specification. At the time of publication, the indicated versions in)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 706 M 0.191 0 (the following references were valid. Parties to agreements based on this specification are)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 760 M 0.159 0 (encouraged to research the possibility of revised standards.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F7_29) cvn F7 29 xF F7_29 Ji 566 847 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 835 M 0.044 0 (ANSI X3.4-1977, )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F10) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F10_42) cvn F10 42 xF F10_42 Ji 937 836 M 0.100 0 (Code for Information Interchange)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1513 835 M 0.176 0 (, American National Standards)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 889 M 0.176 0 (Institute, 1977.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_29 Ji 566 997 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 985 M 0.198 0 (CCITT \(ITU\) Recommendation E.163, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1300 986 M 0.120 0 (Numbering Plan for The International Telephone)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 1040 M 0.199 0 (Service)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 751 1039 M 0.193 0 (, CCITT Blue Book, Fascicle II.2, pp. 128-134, November, 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_29 Ji 566 1147 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1135 M 0.179 0 (CCITT \(ITU\) Recommendation G.721, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1304 1136 M 0.195 0 (32 kbit/s Adaptive Differential Pulse Code)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 1190 M 0.104 0 (Modulation \(ADPCM\))A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1007 1189 M 0.196 0 (, CCITT Red Book, Fascicle III.4, November, 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_29 Ji 566 1297 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1285 M 0.179 0 (CCITT \(ITU\) Recommendation X.121, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1304 1286 M 0.132 0 (International Numbering Plan for Public Data)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 1340 M 0.041 0 (Networks)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 785 1339 M 0.182 0 (, CCITT Blue Book, Fascicle VIII.3, pp. 317-332, November, 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_29 Ji 566 1447 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1435 M 0.145 0 (CCITT \(ITU\) Recommendations X.500-X.521, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1438 1436 M 0.071 0 (Data Communication Networks:)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 1490 M 0.078 0 (Directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 790 1489 M 0.188 0 (, CCITT Blue Book, Fascicle VIII.8, November, 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 1585 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1585 M 0.197 0 (CCITT Recommendation X.520, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1195 1586 M 0.093 0 (The Directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1433 1586 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1470 1586 M 0.209 0 (Selected Attribute Types,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1894 1585 M 0.167 0 ( 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 1681 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1681 M 0.197 0 (CCITT Recommendation X.521, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1195 1682 M 0.093 0 (The Directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1433 1682 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1470 1682 M 0.176 0 (Selected Object Classes,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1886 1681 M 0.167 0 ( 1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 1777 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1777 M 0.131 0 (IETF RFC 1738, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 922 1778 M 0.079 0 (Universal Resource Locator)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1400 1777 M 0.214 0 (, December 1994.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 1873 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1873 M 0.105 0 (IETF Network Working Group RFC 1766, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1359 1874 M 0.137 0 (Tags for the Identification of Languages,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 1927 M 0.125 0 (March 1995.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 2023 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2023 M 0.122 0 (IETF Network Working Group Draft, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1274 2024 M 0.132 0 (A MIME Content-Type for Directory Information,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2077 M 0.196 0 (January 1996. Available from the University of Michigan, 535 W. William St., Ann)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2131 M 0.141 0 (Arbor, MI 48103-4943, FTP://ds.internic.net/Internet-Drafts/draft-ietf-asid-mime-direct-)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2185 M 0.235 0 (01.txt.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 2281 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2281 M 0.122 0 (IETF Network Working Group Draft, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1274 2282 M 0.157 0 (An Application/Directory MIME Content-Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 2336 M 0.152 0 (Electronic Business Card Profile,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1198 2335 M 0.184 0 ( May 1996. Available FTP://ds.internic.net/Internet-)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2389 M 0.151 0 (Drafts/draft-ietf-asid-mime-vcard-00.txt.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 566 2485 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2485 M 0.122 0 (IETF Network Working Group Draft, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 1274 2486 M 0.055 0 (UTF-8, A Transformation Format of UNICODE and)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 626 2540 M 0.069 0 (ISO 10646,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 818 2539 M 0.159 0 ( July 1996. Available from FTP://ds.internic.net/Internet-Drafts/draft-yergeau-)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2593 M 0.167 0 (utf8-01.txt.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_29 Ji 566 2701 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2689 M 0.093 0 (ISO 639, )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 789 2690 M 0.126 0 (Code for The Representation of names of languages)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1669 2689 M 0.200 0 (, International Organization)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 626 2743 M 0.174 0 (for Standardization, April, 1988.)A ; LH pagesave restore (%%[ Page: 5 ]%%) = %%PageTrailer %%Page: 6 6 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_42) cvn F3 42 xF F3_42 Ji 221 3068 M -0.162 0 (vi)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3056 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F5) cvn 0.897 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F5_29) cvn F5 29 xF F5_29 Ji 416 435 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco (F5_42) cvn F5 42 xF F5_42 Ji 476 423 M 0.084 0 (ISO 3166, )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F8) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 660 424 M 0.124 0 (Codes for The Representation of names of countries)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1540 423 M 0.200 0 (, International Organization)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 477 M 0.189 0 (for Standardization, December, 1993.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_29 Ji 416 585 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 573 M 0.084 0 (ISO 8601, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 660 574 M 0.110 0 (Data elements and interchange formats)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1329 574 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1366 574 M 0.095 0 (Information interchange)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1780 574 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 628 M 0.142 0 (Representation of dates and times)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1050 627 M 0.191 0 (, International Organization for Standardization, June,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 681 M 0.100 0 (1988.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_29 Ji 416 789 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 777 M 0.084 0 (ISO 8601, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 660 778 M 0.114 0 (Technical Corrigendum 1, Data elements and interchange formats)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1787 778 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 832 M 0.095 0 (Information interchange)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 890 832 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 927 832 M 0.142 0 (Representation of dates and times)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1501 831 M 0.200 0 (, International Organization)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 885 M 0.174 0 (for Standardization, May, 1991.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 981 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 981 M 0.071 0 (ISO 8859-1, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 695 982 M 0.053 0 (Information Processing)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1094 982 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1131 982 M 0.151 0 (8-Bit single-byte coded graphic character sets)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1916 982 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 1036 M 0.188 0 (Part 1: Latin Alphabet No. 1,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 975 1035 M 0.179 0 ( International Organization for Standardization, February,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1089 M 0.100 0 (1987.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1185 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1185 M 0.084 0 (ISO 9070, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 660 1186 M 0.053 0 (Information Processing)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1059 1186 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1096 1186 M 0.100 0 (SGML support facilities)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1502 1186 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1539 1186 M 0.099 0 (Registration Procedures for)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 1240 M 0.168 0 (Public Text Owner Identifiers,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 992 1239 M 0.086 0 ( 1990-02-01.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1335 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1335 M 0.107 0 (ISO/IEC 9070, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 740 1336 M 0.084 0 (Information Technology)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1149 1336 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1186 1336 M 0.115 0 (SGML Support Facilities)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1611 1336 M -0.338 0 (\227)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1648 1336 M 0.109 0 (Registration)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 1390 M 0.142 0 (Procedures for Public Text Owner Identifiers,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1257 1389 M 0.192 0 ( Second Edition, International Organization)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1443 M 0.174 0 (for Standardization, April, 1991.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1539 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1539 M 0.100 0 (ISO/IEC 11180, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 761 1540 M 0.048 0 (Postal addressing)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1064 1539 M 0.191 0 (, International Organization for Standardization, 1993.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1635 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1635 M 0.185 0 (Apple\222s Representation of a Canonical Static DeviceID in )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1471 1636 M 0.176 0 (The Telephony Suite,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1828 1635 M 0.107 0 ( version)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1689 M 0.210 0 (1.0, Apple Computer, Inc., 1993.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1785 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1785 M 0.103 0 (Microsoft TAPI in )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 801 1786 M 0.083 0 (Microsoft Windows 3.1 Telephony Programmers\222 Guide,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1763 1785 M 0.181 0 ( version 1.0,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1839 M 0.120 0 (Microsoft Corporation, 1993.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 416 1935 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 1935 M 0.069 0 (RFC1521, )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 661 1936 M 0.118 0 (MIME \(Multipurpose Internet Mail Extensions\) Part One: Mechanisms for)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 1990 M 0.150 0 (Specifying and Describing the Format of Internet Message Bodies,)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1609 1989 M 0.108 0 ( Network Working)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 2043 M 0.155 0 (Group, September, 1993.)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_29 Ji 416 2151 M -0.150 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 2140 M 0.144 0 (The Unicode Standard, Version 1.1: Version 1.0, Volume 1)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 1478 2139 M 0.058 0 ( \(ISBN 0-201-56788-1\), version)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 2193 M 0.125 0 (1.0, volume 2 \(ISBN 0-20-60845-6\) and )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1169 2194 M 0.161 0 (Unicode Technical Report #4, The Unicode)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 476 2248 M -0.002 0 (Standard)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 630 2247 M 0.187 0 (, version 1.1, The Unicode Consortium, October, 1991. Both references to be)A ; : 0 0 2391 3229 rc 0 0 0 sco F5_42 Ji 476 2301 M 0.103 0 (published by Addison-Wesley.)A ; LH pagesave restore (%%[ Page: 6 ]%%) = %%PageTrailer %%Page: 7 7 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F3) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F3_42) cvn F3 42 xF F3_42 Ji 371 3068 M -0.109 0 (versit Update)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 2132 3068 M -0.216 0 (vii)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc pagesave restore %%BeginFont: MSTT31c1e300 savelevel0 restore userdict begin /savelevel0 save def end userdict begin /savelevel1 save def end : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc savelevel1 restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Encoding 2.0 0 /bullets{{/bullet}repeat}b/ANSIEncoding[/grave/acute/circumflex/tilde/macron /breve/dotaccent/dieresis/ring/cedilla/hungarumlaut/ogonek/caron/dotlessi 18 bullets StandardEncoding 32 95 getinterval aload ! 3 bullets/quotesinglbase /florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron /guilsinglleft/OE 4 bullets/quoteleft/quoteright/quotedblleft/quotedblright /bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe 2 bullets /Ydieresis/space/exclamdown/cent/sterling/currency/yen/brokenbar/section /dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered /macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph /periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter /onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis /Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute /Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls /agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve /oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex /udieresis/yacute/thorn/ydieresis]| ANSIEncoding @ 39/quotesingle put 96/grave put/ANSIEncodingOld ANSIEncoding 256 array copy | ANSIEncodingOld @[138 153 154 169 172 174 177 178 179 181 185 188 189 190 208 215 221 222 240 247 253 254]{/bullet put @}forall 166/bar put 176/ring put %%EndResource %%BeginResource: file Pscript_Win_Text 2.0 0 /TextInit{TextInitialised? not{/Pscript_Windows_Font & |/TextInitialised? T | /fM[1 0 0 -1 0 0]|/mFM matrix |/iMat[1 0 0.212557 neg 1 0 0]|}if}b/xUP null | /yUP null |/uW null |/xSP null |/ySP null |/sW null |/copyfont{1 ^ length add dict `{1 ^/FID ne{|}{! !}?}forall & E}b/rF{3 copyfont @ `/Encoding ANSIEncoding &/CharStrings known{CharStrings/Eth known not{! ANSIEncodingOld} if}if | E}b/mF{findfont ~{@/Encoding get @ StandardEncoding eq{! T}{{ ISOLatin1Encoding}stopped{! F}{eq}?{T}{@ ` T 32 1 127{Encoding 1 ^ get StandardEncoding 3 -1 $ get eq and}for E}?}?}{F}?{rF}{3 copyfont}? ` /OrigFontType ~ |/OrigFontName ~ | & E 2 ^ ~ definefont fM 5 4 -1 $ put fM 4 0 put fM makefont Pscript_Windows_Font 3 1 $ put}b/xF{scalefont Pscript_Windows_Font 3 1 $ put}b/xMF{mFM astore makefont Pscript_Windows_Font 3 1 $ put}b/xF2/scalefont , |/xMF2{mFM astore makefont}b/sLT{: Lw -M currentpoint snap M 0 - 0 Lc K ;}b/sSU{N/uW ~ |/yUP ~ |/xUP ~ |}b/sU{xUP yUP uW sLT}b/sST{N/sW ~ |/ySP ~ |/xSP ~ |}b/sT{xSP ySP sW sLT}b/sR{: + R 0 0 M}b /sRxy{: matrix astore concat 0 0 M}b/eR/; , | %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Type3_Hdr 2.0 0 /GreNewFont{10 dict @ 3 1 $ | @ ` 4 1 $/FontType 3 |/FontMatrix ~ |/FontBBox ~ |/Encoding 256 array | 0 1 255{Encoding ~/.notdef put}for/CharProcs 257 dict | CharProcs/.notdef{}put/Metrics 257 dict | Metrics/.notdef 3 -1 $ put/BuildChar {/char ~ |/fontdict ~ |/charname fontdict/Encoding get char get | fontdict /Metrics get charname get aload ! setcachedevice fontdict ` Encoding char get CharProcs ~ get E exec}| E definefont !}|/AddChar{` Encoding 3 1 $ put CharProcs 3 1 $ put Metrics 3 1 $ put E}| %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc pagesave restore 27000 VM? /MSTT31c1e300 [75.0 0 0 0 0 0] [-75.0 -75.0 75.0 75.0 ] [1 75 div 0 0 1 75 div 0 0] /MSTT31c1e300 GreNewFont %%EndFont (F0) cvn 0.947 (Bookman Old Style,Italic) cvn /TrueType F (MSTT31c1e300) cvn mF userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 15206 VM? pagesave restore /G59 [41.0 0.0 6.0 -1.0 45.0 37.0 ] /G59 { 39 38 true [1 0 0 -1 -6.0 37.0 ] {<0000F803E0 0007F807F8 00FFF80FFC 3FFFF81FFC 7FFFF01FFE 7FFFF01FFE 7FFFF01FFE 7FFFF01FFE FFFFE00FFE FFFFE00FFE 00FFE007FE 00FFE007FE 01FFE007FE 01FFC007FC 01FFC007FC 01FFC007FC 03FFC007FC 03FF8007F8 03FF8007F8 03FF800FF8 07FF800FF0 07FF001FF0 07FF001FE0 07FF003FE0 0FFF003FC0 0FFE007F80 0FFE00FF80 0FFE01FF00 0FFE03FE00 0FFF0FFC00 0FFFFFF800 0FFFFFF000 0FFFFFE000 07FFFFC000 07FFFF8000 03FFFE0000 00FFF80000 003FC00000 >} imagemask } 89 /G59 MSTT31c1e300 AddChar /G48 [42.0 0.0 6.0 -1.0 44.0 37.0 ] /G48 { 38 38 true [1 0 0 -1 -6.0 37.0 ] {<00000FFC00 00007FFF80 0003FFFFE0 000FFFFFF0 003FFFFFF8 007FFFFFF8 00FFFFFFFC 01FFFC1FFC 03FFF00FFC 07FFE00FFC 0FFF800FFC 1FFF800FFC 1FFF001FF8 3FFE007FF8 3FFE01FFF0 7FFC1FFFE0 7FFFFFFFC0 7FFFFFFF80 FFFFFFFE00 FFFFFFF800 FFFFFF8000 FFFFF00000 FFF0000000 FFF0000000 FFF0000180 FFF0000380 FFF80007C0 7FFC001FE0 7FFE007FF0 7FFF01FFF8 3FFFFFFFE0 1FFFFFFFC0 1FFFFFFF80 0FFFFFFE00 07FFFFFC00 01FFFFF000 007FFF8000 000FFC0000 >} imagemask } 72 /G48 MSTT31c1e300 AddChar /G55 [38.0 0.0 7.0 0.0 44.0 37.0 ] /G55 { 37 37 true [1 0 0 -1 -7.0 37.0 ] {<0003E01F80 001FE0FFE0 01FFE1FFF0 3FFFE7FFF8 7FFFCFFFF8 7FFFDFFFF8 7FFFDFFFF8 7FFFFFFFF8 FFFFFFFFF8 FFFFFFFFF0 03FFFE1FE0 03FFFC07C0 03FFF80000 07FFF00000 07FFE00000 07FFC00000 07FFC00000 0FFF800000 0FFF800000 0FFF000000 0FFF000000 1FFF000000 1FFE000000 1FFE000000 1FFE000000 1FFC000000 3FFC000000 3FFC000000 3FF8000000 3FF8000000 7FF8000000 7FF8000000 7FF0000000 7FF0000000 7FF0000000 FFF0000000 FFE0000000 >} imagemask } 85 /G55 MSTT31c1e300 AddChar /G56 [41.0 0.0 5.0 -1.0 44.0 37.0 ] /G56 { 39 38 true [1 0 0 -1 -5.0 37.0 ] {<00003FF800 0003FFFF80 000FFFFFE0 003FFFFFF0 007FFFFFF8 00FFFFFFFC 00FFFFFFFE 01FFE07FFE 01FF801FFE 03FF800FFE 03FF8007FE 03FFC003FC 03FFF000F8 03FFFE0000 03FFFF8000 01FFFFF000 01FFFFFC00 00FFFFFF00 007FFFFFC0 003FFFFFE0 000FFFFFF0 0003FFFFF0 0000FFFFF8 00001FFFF8 1E0003FFF8 7F8000FFF8 7FC0003FF8 FFE0003FF8 FFF0003FF0 FFF8007FF0 FFFF01FFF0 7FFFFFFFE0 7FFFFFFFC0 3FFFFFFF80 0FFFFFFF00 03FFFFFC00 00FFFFF000 000FFF0000 >} imagemask } 86 /G56 MSTT31c1e300 AddChar /G4C [28.0 0.0 8.0 -1.0 32.0 52.0 ] /G4C { 24 53 true [1 0 0 -1 -8.0 52.0 ] {<0001F8 0007FC 000FFE 001FFF 001FFF 003FFF 003FFF 003FFF 003FFE 001FFE 001FFC 000FF8 0003E0 000000 000000 0001F0 000FF0 03FFF0 3FFFF0 7FFFE0 7FFFE0 7FFFE0 7FFFE0 FFFFC0 FFFFC0 01FFC0 01FFC0 03FFC0 03FF80 03FF80 03FF80 07FF80 07FF00 07FF00 07FF00 0FFF00 0FFE00 0FFE00 1FFE00 1FFE00 1FFC00 1FFC00 1FFC00 1FFC10 3FFC78 3FFFFC 1FFFFE 1FFFFF 1FFFFE 0FFFFC 07FFF0 03FFC0 00FF00 >} imagemask } 76 /G4C MSTT31c1e300 AddChar /G57 [33.0 0.0 7.0 -1.0 39.0 49.0 ] /G57 { 32 50 true [1 0 0 -1 -7.0 49.0 ] {<0001FF00 0001FE00 0001FE00 0003FE00 0007FE00 0007FE00 000FFC00 001FFC00 003FFC00 007FFC00 00FFF800 03FFF800 1FFFFFFF 3FFFFFFF 7FFFFFFF 7FFFFFFF 7FFFFFFE FFFFFFFE FFFFFFFE 00FFF000 00FFE000 00FFE000 00FFE000 01FFE000 01FFC000 01FFC000 01FFC000 03FFC000 03FF8000 03FF8000 03FF8000 07FF8000 07FF0000 07FF0000 07FF0000 07FF0000 0FFF0000 0FFE0060 0FFE00F8 0FFE01FC 0FFE03FE 0FFF0FFC 0FFFFFF8 07FFFFF0 07FFFFE0 03FFFFC0 03FFFF80 00FFFF00 007FFC00 001FE000 >} imagemask } 87 /G57 MSTT31c1e300 AddChar userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F0_75) cvn F0 75 xF F0_75 Ji 551 488 M (YHUVLW)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.933 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_75) cvn F2 75 xF F2_75 Ji 774 489 M 0.150 0 ( )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 795 487 M 0.138 0 (Update)A ; : 0 0 2391 3229 rc pagesave restore %%BeginFont: MSTT31c1c000 27000 VM? /MSTT31c1c000 [38.0 0 0 0 0 0] [-38.0 -38.0 38.0 38.0 ] [1 38 div 0 0 1 38 div 0 0] /MSTT31c1c000 GreNewFont %%EndFont (F1) cvn 0.921 (Bookman Old Style,Italic) cvn /TrueType F (MSTT31c1c000) cvn mF userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 8870 VM? pagesave restore /G59 [22.0 0.0 2.0 0.0 23.0 19.0 ] /G59 { 21 19 true [1 0 0 -1 -2.0 19.0 ] {<00E0E0 3FE3F0 7FE3F8 FFE3F8 FFC1F8 0FC1F8 0FC1F8 0FC1F0 1F81F0 1F81F0 1F83E0 1F83E0 3F07C0 3F0F80 3F1F00 3FFE00 3FFC00 1FF800 0FC000 >} imagemask } 89 /G59 MSTT31c1c000 AddChar /G48 [21.0 0.0 3.0 0.0 23.0 19.0 ] /G48 { 20 19 true [1 0 0 -1 -3.0 19.0 ] {<003F80 01FFE0 07FFE0 0FFFF0 1FE3F0 3FC3F0 7F87F0 7F1FE0 FFFFC0 FFFF00 FFF000 FE0000 FE0080 FF01C0 7F87E0 7FFFC0 3FFF00 1FFE00 07F000 >} imagemask } 72 /G48 MSTT31c1c000 AddChar /G55 [19.0 0.0 4.0 0.0 23.0 19.0 ] /G55 { 19 19 true [1 0 0 -1 -4.0 19.0 ] {<01C3C0 3FCFE0 7FDFE0 FFFFE0 FFFFE0 1FF1C0 1FE000 1FC000 1FC000 3F8000 3F8000 3F0000 3F0000 7F0000 7E0000 7E0000 7E0000 FE0000 FC0000 >} imagemask } 85 /G55 MSTT31c1c000 AddChar /G56 [21.0 0.0 3.0 0.0 23.0 19.0 ] /G56 { 20 19 true [1 0 0 -1 -3.0 19.0 ] {<00FF00 03FFC0 0FFFF0 0FFFF0 1F83F0 1F80E0 1FF000 1FFE00 0FFF80 07FFC0 01FFE0 003FE0 700FE0 F807E0 FE0FE0 FFFFC0 7FFF80 3FFF00 07FC00 >} imagemask } 86 /G56 MSTT31c1c000 AddChar /G4C [14.0 0.0 3.0 0.0 16.0 27.0 ] /G4C { 13 27 true [1 0 0 -1 -3.0 27.0 ] {<01E0 03F0 07F0 07F0 07F0 07E0 01C0 0000 00F0 3FE0 7FE0 FFE0 FFC0 0FC0 0FC0 0FC0 1F80 1F80 1F80 3F80 3F00 3F00 3F20 3FF0 3FF8 3FE0 0F80 >} imagemask } 76 /G4C MSTT31c1c000 AddChar /G57 [17.0 0.0 3.0 0.0 20.0 25.0 ] /G57 { 17 25 true [1 0 0 -1 -3.0 25.0 ] {<00F800 00F800 01F000 03F000 03F000 0FF000 3FFF80 7FFF80 FFFF80 FFFF80 0FC000 0FC000 0FC000 1FC000 1F8000 1F8000 1F8000 3F8000 3F0400 3F0E00 3F1F00 3FFE00 3FFC00 1FF800 07E000 >} imagemask } 87 /G57 MSTT31c1c000 AddChar /G03 [13.0 0.0 0.0 0.0 0.0 0.0 ] /G03 { } 3 /G03 MSTT31c1c000 AddChar userdict begin /pagesave save def end mysetup concat colspRefresh : 0 0 0 sco 1 Lc 1 Lj solid 0 0 2391 3229 rc 0 0 0 sco (F1_38) cvn F1 38 xF F1_38 Ji 551 655 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F3) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F3_42) cvn F3 42 xF F3_42 Ji 678 652 M 0.214 0 ( is a multivendor development initiative of the communication and computer industries,)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 706 M 0.184 0 (founded by Apple, AT&T, IBM and Siemens. The )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 1419 709 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1546 706 M 0.244 0 (parties believe that great potential)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 760 M 0.163 0 (exists in improving the nature of communications in the business world)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1764 760 M (\227)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1806 760 M 0.199 0 (permitting)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 814 M 0.206 0 (companies to better manage their quality, productivity, customer satisfaction and cost of)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 868 M 0.185 0 (operations, while expanding the market opportunities for a variety of product and service)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 922 M 0.114 0 (vendors. )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 706 925 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 833 922 M 0.204 0 (parties will jointly define and support open specifications that facilitate and)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 976 M 0.200 0 (promote the interoperability of advanced personal information and communication devices,)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1030 M 0.118 0 (networks and services.)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1105 M 0.298 0 (The )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 628 1108 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 755 1105 M 0.196 0 (vision is to enable diverse communication and computing devices, applications)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1159 M 0.178 0 (and services from competing vendors to interoperate in all environments. Through developing)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1213 M 0.180 0 (a series of specifications for interoperability among diverse communications and computing)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1267 M 0.177 0 (devices, applications, networks and services, )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 1322 1270 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1449 1267 M 0.221 0 (\222s vision will become a reality.)A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 551 1345 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 678 1342 M 0.204 0 (\222s primary development areas are in:)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1417 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1417 M 0.119 0 (Personal Data Interchange \(PDI\))A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1492 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1492 M 0.175 0 (Computer Telephone Integration \(CTI\))A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1567 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1567 M 0.102 0 (Conferencing and Messaging \(C&M\))A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1642 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1642 M 0.203 0 (Wired and Wireless connectivity)A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 551 1720 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 678 1717 M 0.223 0 (specifications are directed at both the decision makers and the implementation teams)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 1771 M 0.113 0 (of:)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1846 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1846 M 0.142 0 (Equipment Manufacturers)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1921 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1921 M 0.089 0 (Independent Software Vendors)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 1996 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 1996 M 0.118 0 (Information Service Providers)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 2071 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 2071 M 0.158 0 (Online Service)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 879 2071 M 0.051 0 ( Providers)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 2146 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 2146 M 0.015 0 (Software Houses)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 566 2221 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 626 2221 M -0.127 0 (Users)A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 551 2299 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 678 2296 M 0.229 0 (specifications are made available to any interested party. In turn, )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 1790 2299 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1917 2296 M 0.161 0 (encourages the)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 2350 M 0.158 0 (support of our goals by soliciting feedback on )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 1340 2353 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1467 2350 M 0.169 0 (specifications.)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 2500 M 0.227 0 (All comments relating to )A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 986 2503 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1113 2500 M 0.197 0 (or the material within this specification should be submitted)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 551 2554 M 0.216 0 (to:)A ; : 0 0 2391 3229 rc 0 0 0 sco F1_38 Ji 1304 2632 M (YHUVLW)S ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1431 2629 M 0.500 0 ( )A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1229 2683 M 0.039 0 (\(800\) 803-6240)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1069 2737 M 0.055 0 (+1 \(201\) 327-2803 \(Outside USA\))A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1225 2791 M 0.128 0 (pdi@v)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1339 2791 M 0.206 0 (ersit.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1137 2845 M 0.143 0 (http://www.versit.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F3_42 Ji 1518 2845 M 0.162 0 (/pdi)A ; LH pagesave restore (%%[ Page: 7 ]%%) = %%PageTrailer %%Page: 8 8 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup pagesave restore Pscript_Win_Driver_Incr begin %%BeginResource: file Pscript_Win_Graphics 2.0 0 /SavedCTM null |/CTMsave{/SavedCTM SavedCTM currentmatrix |}b/CTMrestore{ SavedCTM setmatrix}b/mp null |/ADO_mxRot null |/GDIHMatrix null | /GDIHPatternDict 22 dict | GDIHPatternDict `/PatternType 1 |/PaintType 2 | /Reps L2?{1}{5}? |/XStep 8 Reps mul |/YStep XStep |/BBox[0 0 XStep YStep]| /TilingType 1 |/PaintProc{` 1 Lw[]0 setdash PaintData , exec E}b/FGnd null | /BGnd null |/HS_Horizontal{horiz}b/HS_Vertical{vert}b/HS_FDiagonal{fdiag}b /HS_BDiagonal{biag}b/HS_Cross{horiz vert}b/HS_DiagCross{fdiag biag}b/MaxXYStep XStep YStep gt{XStep}{YStep}? |/horiz{Reps{0 4 M XStep 0 - 0 8 +}repeat 0 -8 Reps mul + K}b/vert{Reps{4 0 M 0 YStep - 8 0 +}repeat 0 -8 Reps mul + K}b/biag {Reps{0 0 M MaxXYStep @ - 0 YStep neg M MaxXYStep @ - 0 8 +}repeat 0 -8 Reps mul + 0 YStep M 8 8 - K}b/fdiag{Reps{0 0 M MaxXYStep @ neg - 0 YStep M MaxXYStep @ neg - 0 8 +}repeat 0 -8 Reps mul + MaxXYStep @ M 8 -8 - K}b E /makehatch{GDIHPatternDict/PaintData 3 -1 $ put CTMsave GDIHMatrix setmatrix GDIHPatternDict matrix mp CTMrestore ~ U ~ 2 ^ put}b/h0{/h0/HS_Horizontal makehatch}b/h1{/h1/HS_Vertical makehatch}b/h2{/h2/HS_FDiagonal makehatch}b/h3{ /h3/HS_BDiagonal makehatch}b/h4{/h4/HS_Cross makehatch}b/h5{/h5/HS_DiagCross makehatch}b/GDIBWPatternDict 17 dict @ `/PatternType 1 |/PaintType L2?{1}{2}? |/RepsV L2?{1}{6}? |/RepsH L2?{1}{5}? |/BBox[0 0 RepsH 1]|/TilingType 1 | /XStep 1 |/YStep 1 |/Height 8 RepsV mul |/Width 8 |/mx[Width 0 0 Height neg 0 Height]|/FGnd null |/BGnd null |/SetBGndFGnd L2?{{BGnd null ne{BGnd aload ! sgco BBox aload ! 2 ^ sub ~ 3 ^ sub ~ rf}if FGnd null ne{FGnd aload ! sgco}if} }{{}}? b/PaintProc{` SetBGndFGnd RepsH{Width Height F mx PaintData imagemask Width 0 +}repeat E}b E |/GDIBWPatternMx null |/pfprep{save 4 1 $ /PatternOfTheDay 4 1 $ GDIBWPatternDict `/PaintData ~ |/BGnd ~ |/FGnd ~ | E CTMsave GDIBWPatternMx setmatrix GDIBWPatternDict matrix mp CTMrestore ~ !}b /hrf null |/prf{pfprep ~ 6 1 $ 5 hrf restore}b/GraphInit{GDIHMatrix null eq{ /SavedCTM matrix | : ADO_mxRot concat 0 0 snap + : 0.48 @ GDIHPatternDict ` YStep mul ~ XStep mul ~ dsnap YStep V ~ XStep V ~ E +S/GDIHMatrix matrix currentmatrix readonly | ; : 0.24 -0.24 +S GDIBWPatternDict ` Width Height E dsnap +S/GDIBWPatternMx matrix currentmatrix readonly | ; ;}if}b/cirp{360 0 An C}b/ellp{CTMsave + +S 0.5 0 M 0 0 0.5 360 0 An C CTMrestore}b/rrp{/rad ~ |/y2 ~ |/x2 ~ |/y1 ~ |/x1 ~ | x2 x1 add 2 V y1 M x1 y1 x1 y2 rad arct x1 y2 x2 y2 rad arct x2 y2 x2 y1 rad arct x2 y1 x1 y1 rad arct C}b/RRp{CTMsave + +S/dyS ~ |/dxS ~ | dxS 2 V 0 M 0 0 0 dyS 0.5 arct 0 dyS dxS dyS 0.5 arct dxS dyS dxS 0 0.5 arct dxS 0 0 0 0.5 arct C CTMrestore}b %%EndResource %%BeginResource: file Pscript_Win_Graphics_L1 2.0 0 L2? not g{/arct{arcto ! ! ! !}b/GDIpattfill{@ ` BGnd null ne PaintType 2 eq and{: BGnd aload ! sgco fEOFill{O}{L}? ; FGnd aload ! U/fGray 2 ^ put{2}{4}? -1 $}if E @ patterncalc : 4 ^/PaintType get 2 eq{fGray{6 -1 $ sg}{8 -3 $ sco}? }if fEOFill{eoclip}{clip}? N patternfill ; N}b/hrf{/fGray 1 ^ 6 eq | -4 $ N rp C/fEOFill F | GDIpattfill}b/hfMain{/fEOFill ~ |/fGray ~ | GDIpattfill}b/hf{T hfMain}b/hfW{F hfMain}b/hs{currentpoint strokepath M hfW}b/pfMain{/fEOFill ~ | pfprep GDIpattfill restore N}b/pf{T pfMain}b/pfW{F pfMain}b/ps{currentpoint strokepath M pfW}b/mpstr 1 string |/mp{~ @ length 12 add dict copy ` /PatternCTM matrix currentmatrix |/PatternMatrix ~ |/PatWidth XStep mpstr length mul |/PatHeight YStep |/FontType 3 |/Encoding 256 array | 3 string 0 1 255{Encoding ~ @ 3 ^ cvs cvn put}for !/FontMatrix matrix |/FontBBox BBox | /BuildChar{! @ ` XStep 0 FontBBox aload ! setcachedevice/PaintProc , E : exec ;}b & E ~ @ 3 -1 $ definefont}b/patterncalc{` : PatternCTM setmatrix PatternMatrix concat BBox aload ! ! ! + pathbbox ; PatHeight V ceiling 4 1 $ PatWidth V ceiling 4 1 $ PatHeight V floor 4 1 $ PatWidth V floor 4 1 $ 2 ^ sub cvi abs ~ 3 ^ sub cvi abs ~ 4 2 $ PatHeight mul ~ PatWidth mul ~ E}b /patternfill{5 -1 $ @ ` Ji PatternCTM setmatrix PatternMatrix concat 0 2 ^ 2 ^ M 0 1 mpstr length 1 sub{1 ^ mpstr 3 1 $ put}for ! 2 ^{currentpoint 5 ^{mpstr S}repeat YStep add M}repeat ! ! ! ! E}b}e %%EndResource %%BeginResource: file Pscript_Win_Graphics_L2 2.0 0 L2? g{/mp/makepattern , |/hrf{6 eq setAorABC setpattern rectfill}b/hf{ setAorABC setpattern O}b/hfW{setAorABC setpattern L}b/hs{setAorABC setpattern K}b/pf{pfprep setpattern O restore N}b/pfW{pfprep setpattern L restore N}b/ps{ pfprep setpattern K restore N}b}e %%EndResource end reinitialize userdict begin /pagesave save def end mysetup concat colspRefresh 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.243 0 (viii)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; LH pagesave restore (%%[ Page: 8 ]%%) = %%PageTrailer %%Page: 9 9 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.136 0 (Contents)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2141 3068 M -0.162 0 (ix)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 508 M 0.128 0 (Contents)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_50) cvn F4 50 xF F4_50 Ji 371 723 M 0.025 0 (Section 1 : Introduction)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 2143 723 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_42) cvn F7 42 xF F7_42 Ji 371 834 M -0.217 0 (1.1 Overview)A ; : 559 834 1832 48 rc 0 0 0 sco F7_42 Ji 605 834 M 0.500 0 (................................)A ; : 911 834 1480 48 rc 0 0 0 sco F7_42 Ji 957 834 M 0.500 0 (................................)A ; : 1263 834 1128 48 rc 0 0 0 sco F7_42 Ji 1309 834 M 0.500 0 (................................)A ; : 1615 834 776 48 rc 0 0 0 sco F7_42 Ji 1661 834 M 0.500 0 (................................)A ; : 1967 834 424 48 rc 0 0 0 sco F7_42 Ji 2013 834 M 0.500 0 (............)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 834 M (1)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 934 M -0.183 0 (1.2 Scope)A ; : 493 934 1898 48 rc 0 0 0 sco F7_42 Ji 539 934 M 0.500 0 (................................)A ; : 845 934 1546 48 rc 0 0 0 sco F7_42 Ji 891 934 M 0.500 0 (................................)A ; : 1197 934 1194 48 rc 0 0 0 sco F7_42 Ji 1243 934 M 0.500 0 (................................)A ; : 1549 934 842 48 rc 0 0 0 sco F7_42 Ji 1595 934 M 0.500 0 (................................)A ; : 1901 934 490 48 rc 0 0 0 sco F7_42 Ji 1947 934 M 0.500 0 (..................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 934 M (2)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 1034 M 0.137 0 (1.3 Contents)A ; : 548 1034 1843 48 rc 0 0 0 sco F7_42 Ji 594 1034 M 0.500 0 (................................)A ; : 900 1034 1491 48 rc 0 0 0 sco F7_42 Ji 946 1034 M 0.500 0 (................................)A ; : 1252 1034 1139 48 rc 0 0 0 sco F7_42 Ji 1298 1034 M 0.500 0 (................................)A ; : 1604 1034 787 48 rc 0 0 0 sco F7_42 Ji 1650 1034 M 0.500 0 (................................)A ; : 1956 1034 435 48 rc 0 0 0 sco F7_42 Ji 2002 1034 M 0.500 0 (.............)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1034 M (3)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 1134 M 0.042 0 (1.4 Definitions and Abbreviations)A ; : 900 1134 1491 48 rc 0 0 0 sco F7_42 Ji 946 1134 M 0.500 0 (................................)A ; : 1252 1134 1139 48 rc 0 0 0 sco F7_42 Ji 1298 1134 M 0.500 0 (................................)A ; : 1604 1134 787 48 rc 0 0 0 sco F7_42 Ji 1650 1134 M 0.500 0 (................................)A ; : 1956 1134 435 48 rc 0 0 0 sco F7_42 Ji 2002 1134 M 0.500 0 (.............)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1134 M (3)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 371 1259 M 0.080 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 2143 1259 M 0.200 0 (5)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 1370 M 0.175 0 (2.1 Encoding Characteristics)A ; : 823 1370 1568 48 rc 0 0 0 sco F7_42 Ji 869 1370 M 0.500 0 (................................)A ; : 1175 1370 1216 48 rc 0 0 0 sco F7_42 Ji 1221 1370 M 0.500 0 (................................)A ; : 1527 1370 864 48 rc 0 0 0 sco F7_42 Ji 1573 1370 M 0.500 0 (................................)A ; : 1879 1370 512 48 rc 0 0 0 sco F7_42 Ji 1925 1370 M 0.500 0 (....................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1370 M (5)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1420 M -0.034 0 (2.1.1 vCard Object)A ; : 691 1420 1700 48 rc 0 0 0 sco F7_42 Ji 737 1420 M 0.500 0 (................................)A ; : 1043 1420 1348 48 rc 0 0 0 sco F7_42 Ji 1089 1420 M 0.500 0 (................................)A ; : 1395 1420 996 48 rc 0 0 0 sco F7_42 Ji 1441 1420 M 0.500 0 (................................)A ; : 1747 1420 644 48 rc 0 0 0 sco F7_42 Ji 1793 1420 M 0.500 0 (................................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1420 M (5)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1470 M -0.011 0 (2.1.2 Property)A ; : 614 1470 1777 48 rc 0 0 0 sco F7_42 Ji 660 1470 M 0.500 0 (................................)A ; : 966 1470 1425 48 rc 0 0 0 sco F7_42 Ji 1012 1470 M 0.500 0 (................................)A ; : 1318 1470 1073 48 rc 0 0 0 sco F7_42 Ji 1364 1470 M 0.500 0 (................................)A ; : 1670 1470 721 48 rc 0 0 0 sco F7_42 Ji 1716 1470 M 0.500 0 (................................)A ; : 2022 1470 369 48 rc 0 0 0 sco F7_42 Ji 2068 1470 M 0.500 0 (.......)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1470 M (5)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1520 M 0.136 0 (2.1.3 Delimiters)A ; : 647 1520 1744 48 rc 0 0 0 sco F7_42 Ji 693 1520 M 0.500 0 (................................)A ; : 999 1520 1392 48 rc 0 0 0 sco F7_42 Ji 1045 1520 M 0.500 0 (................................)A ; : 1351 1520 1040 48 rc 0 0 0 sco F7_42 Ji 1397 1520 M 0.500 0 (................................)A ; : 1703 1520 688 48 rc 0 0 0 sco F7_42 Ji 1749 1520 M 0.500 0 (................................)A ; : 2055 1520 336 48 rc 0 0 0 sco F7_42 Ji 2101 1520 M 0.500 0 (....)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1520 M (6)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1570 M 0.180 0 (2.1.4 Grouping)A ; : 625 1570 1766 48 rc 0 0 0 sco F7_42 Ji 671 1570 M 0.500 0 (................................)A ; : 977 1570 1414 48 rc 0 0 0 sco F7_42 Ji 1023 1570 M 0.500 0 (................................)A ; : 1329 1570 1062 48 rc 0 0 0 sco F7_42 Ji 1375 1570 M 0.500 0 (................................)A ; : 1681 1570 710 48 rc 0 0 0 sco F7_42 Ji 1727 1570 M 0.500 0 (................................)A ; : 2033 1570 358 48 rc 0 0 0 sco F7_42 Ji 2079 1570 M 0.500 0 (......)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1570 M (7)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 1620 M 0.176 0 (2.1.4.1 vCard Grouping)A ; : 812 1620 1579 48 rc 0 0 0 sco F7_42 Ji 858 1620 M 0.500 0 (................................)A ; : 1164 1620 1227 48 rc 0 0 0 sco F7_42 Ji 1210 1620 M 0.500 0 (................................)A ; : 1516 1620 875 48 rc 0 0 0 sco F7_42 Ji 1562 1620 M 0.500 0 (................................)A ; : 1868 1620 523 48 rc 0 0 0 sco F7_42 Ji 1914 1620 M 0.500 0 (.....................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1620 M (7)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 1670 M 0.075 0 (2.1.4.2 Property Grouping)A ; : 856 1670 1535 48 rc 0 0 0 sco F7_42 Ji 902 1670 M 0.500 0 (................................)A ; : 1208 1670 1183 48 rc 0 0 0 sco F7_42 Ji 1254 1670 M 0.500 0 (................................)A ; : 1560 1670 831 48 rc 0 0 0 sco F7_42 Ji 1606 1670 M 0.500 0 (................................)A ; : 1912 1670 479 48 rc 0 0 0 sco F7_42 Ji 1958 1670 M 0.500 0 (.................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1670 M (7)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1720 M 0.145 0 (2.1.5 Encodings)A ; : 647 1720 1744 48 rc 0 0 0 sco F7_42 Ji 693 1720 M 0.500 0 (................................)A ; : 999 1720 1392 48 rc 0 0 0 sco F7_42 Ji 1045 1720 M 0.500 0 (................................)A ; : 1351 1720 1040 48 rc 0 0 0 sco F7_42 Ji 1397 1720 M 0.500 0 (................................)A ; : 1703 1720 688 48 rc 0 0 0 sco F7_42 Ji 1749 1720 M 0.500 0 (................................)A ; : 2055 1720 336 48 rc 0 0 0 sco F7_42 Ji 2101 1720 M 0.500 0 (....)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1720 M (8)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1770 M 0.214 0 (2.1.6 Character Set)A ; : 702 1770 1689 48 rc 0 0 0 sco F7_42 Ji 748 1770 M 0.500 0 (................................)A ; : 1054 1770 1337 48 rc 0 0 0 sco F7_42 Ji 1100 1770 M 0.500 0 (................................)A ; : 1406 1770 985 48 rc 0 0 0 sco F7_42 Ji 1452 1770 M 0.500 0 (................................)A ; : 1758 1770 633 48 rc 0 0 0 sco F7_42 Ji 1804 1770 M 0.500 0 (...............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1770 M (8)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1820 M 0.135 0 (2.1.7 Language)A ; : 636 1820 1755 48 rc 0 0 0 sco F7_42 Ji 682 1820 M 0.500 0 (................................)A ; : 988 1820 1403 48 rc 0 0 0 sco F7_42 Ji 1034 1820 M 0.500 0 (................................)A ; : 1340 1820 1051 48 rc 0 0 0 sco F7_42 Ji 1386 1820 M 0.500 0 (................................)A ; : 1692 1820 699 48 rc 0 0 0 sco F7_42 Ji 1738 1820 M 0.500 0 (................................)A ; : 2044 1820 347 48 rc 0 0 0 sco F7_42 Ji 2090 1820 M 0.500 0 (.....)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1820 M (8)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1870 M 0.020 0 (2.1.8 Value Location)A ; : 724 1870 1667 48 rc 0 0 0 sco F7_42 Ji 770 1870 M 0.500 0 (................................)A ; : 1076 1870 1315 48 rc 0 0 0 sco F7_42 Ji 1122 1870 M 0.500 0 (................................)A ; : 1428 1870 963 48 rc 0 0 0 sco F7_42 Ji 1474 1870 M 0.500 0 (................................)A ; : 1780 1870 611 48 rc 0 0 0 sco F7_42 Ji 1826 1870 M 0.500 0 (.............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1870 M (8)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 1920 M 0.055 0 (2.1.9 Binary Values)A ; : 713 1920 1678 48 rc 0 0 0 sco F7_42 Ji 759 1920 M 0.500 0 (................................)A ; : 1065 1920 1326 48 rc 0 0 0 sco F7_42 Ji 1111 1920 M 0.500 0 (................................)A ; : 1417 1920 974 48 rc 0 0 0 sco F7_42 Ji 1463 1920 M 0.500 0 (................................)A ; : 1769 1920 622 48 rc 0 0 0 sco F7_42 Ji 1815 1920 M 0.500 0 (..............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 1920 M (9)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 2020 M 0.065 0 (2.2 Identification Properties)A ; : 801 2020 1590 48 rc 0 0 0 sco F7_42 Ji 847 2020 M 0.500 0 (................................)A ; : 1153 2020 1238 48 rc 0 0 0 sco F7_42 Ji 1199 2020 M 0.500 0 (................................)A ; : 1505 2020 886 48 rc 0 0 0 sco F7_42 Ji 1551 2020 M 0.500 0 (................................)A ; : 1857 2020 534 48 rc 0 0 0 sco F7_42 Ji 1903 2020 M 0.500 0 (......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 2020 M (9)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2070 M 0.102 0 (2.2.1 Formatted Name)A ; : 757 2070 1634 48 rc 0 0 0 sco F7_42 Ji 803 2070 M 0.500 0 (................................)A ; : 1109 2070 1282 48 rc 0 0 0 sco F7_42 Ji 1155 2070 M 0.500 0 (................................)A ; : 1461 2070 930 48 rc 0 0 0 sco F7_42 Ji 1507 2070 M 0.500 0 (................................)A ; : 1813 2070 578 48 rc 0 0 0 sco F7_42 Ji 1859 2070 M 0.500 0 (..........................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 2070 M (9)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2120 M 0.120 0 (2.2.2 Name)A ; : 570 2120 1821 48 rc 0 0 0 sco F7_42 Ji 616 2120 M 0.500 0 (................................)A ; : 922 2120 1469 48 rc 0 0 0 sco F7_42 Ji 968 2120 M 0.500 0 (................................)A ; : 1274 2120 1117 48 rc 0 0 0 sco F7_42 Ji 1320 2120 M 0.500 0 (................................)A ; : 1626 2120 765 48 rc 0 0 0 sco F7_42 Ji 1672 2120 M 0.500 0 (................................)A ; : 1978 2120 413 48 rc 0 0 0 sco F7_42 Ji 2024 2120 M 0.500 0 (...........)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2150 2120 M (9)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2170 M 0.177 0 (2.2.3 Photograph)A ; : 658 2170 1733 48 rc 0 0 0 sco F7_42 Ji 704 2170 M 0.500 0 (................................)A ; : 1010 2170 1381 48 rc 0 0 0 sco F7_42 Ji 1056 2170 M 0.500 0 (................................)A ; : 1362 2170 1029 48 rc 0 0 0 sco F7_42 Ji 1408 2170 M 0.500 0 (................................)A ; : 1714 2170 677 48 rc 0 0 0 sco F7_42 Ji 1760 2170 M 0.500 0 (................................)A ; : 2066 2170 325 48 rc 0 0 0 sco F7_42 Ji 2112 2170 M 0.500 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2170 M (10)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 2220 M 0.013 0 (2.2.3.1 Photo Format Type)A ; : 867 2220 1524 48 rc 0 0 0 sco F7_42 Ji 913 2220 M 0.500 0 (................................)A ; : 1219 2220 1172 48 rc 0 0 0 sco F7_42 Ji 1265 2220 M 0.500 0 (................................)A ; : 1571 2220 820 48 rc 0 0 0 sco F7_42 Ji 1617 2220 M 0.500 0 (................................)A ; : 1923 2220 468 48 rc 0 0 0 sco F7_42 Ji 1969 2220 M 0.500 0 (..............)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2220 M (10)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2270 M 0.212 0 (2.2.4 Birthdate)A ; : 625 2270 1766 48 rc 0 0 0 sco F7_42 Ji 671 2270 M 0.500 0 (................................)A ; : 977 2270 1414 48 rc 0 0 0 sco F7_42 Ji 1023 2270 M 0.500 0 (................................)A ; : 1329 2270 1062 48 rc 0 0 0 sco F7_42 Ji 1375 2270 M 0.500 0 (................................)A ; : 1681 2270 710 48 rc 0 0 0 sco F7_42 Ji 1727 2270 M 0.500 0 (................................)A ; : 2033 2270 358 48 rc 0 0 0 sco F7_42 Ji 2079 2270 M 0.500 0 (....)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2270 M (11)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 2370 M -0.017 0 (2.3 Delivery Addressing Properties)A ; : 922 2370 1469 48 rc 0 0 0 sco F7_42 Ji 968 2370 M 0.500 0 (................................)A ; : 1274 2370 1117 48 rc 0 0 0 sco F7_42 Ji 1320 2370 M 0.500 0 (................................)A ; : 1626 2370 765 48 rc 0 0 0 sco F7_42 Ji 1672 2370 M 0.500 0 (................................)A ; : 1978 2370 413 48 rc 0 0 0 sco F7_42 Ji 2024 2370 M 0.500 0 (.........)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2370 M (11)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2420 M -0.072 0 (2.3.1 Delivery Address)A ; : 757 2420 1634 48 rc 0 0 0 sco F7_42 Ji 803 2420 M 0.500 0 (................................)A ; : 1109 2420 1282 48 rc 0 0 0 sco F7_42 Ji 1155 2420 M 0.500 0 (................................)A ; : 1461 2420 930 48 rc 0 0 0 sco F7_42 Ji 1507 2420 M 0.500 0 (................................)A ; : 1813 2420 578 48 rc 0 0 0 sco F7_42 Ji 1859 2420 M 0.500 0 (........................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2420 M (11)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 2470 M -0.100 0 (2.3.1.1 Delivery Address Type)A ; : 933 2470 1458 48 rc 0 0 0 sco F7_42 Ji 979 2470 M 0.500 0 (................................)A ; : 1285 2470 1106 48 rc 0 0 0 sco F7_42 Ji 1331 2470 M 0.500 0 (................................)A ; : 1637 2470 754 48 rc 0 0 0 sco F7_42 Ji 1683 2470 M 0.500 0 (................................)A ; : 1989 2470 402 48 rc 0 0 0 sco F7_42 Ji 2035 2470 M 0.500 0 (........)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2470 M (12)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2520 M -0.130 0 (2.3.2 Delivery Label)A ; : 713 2520 1678 48 rc 0 0 0 sco F7_42 Ji 759 2520 M 0.500 0 (................................)A ; : 1065 2520 1326 48 rc 0 0 0 sco F7_42 Ji 1111 2520 M 0.500 0 (................................)A ; : 1417 2520 974 48 rc 0 0 0 sco F7_42 Ji 1463 2520 M 0.500 0 (................................)A ; : 1769 2520 622 48 rc 0 0 0 sco F7_42 Ji 1815 2520 M 0.500 0 (............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2520 M (12)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 2570 M -0.145 0 (2.3.2.1 Delivery Label Type)A ; : 889 2570 1502 48 rc 0 0 0 sco F7_42 Ji 935 2570 M 0.500 0 (................................)A ; : 1241 2570 1150 48 rc 0 0 0 sco F7_42 Ji 1287 2570 M 0.500 0 (................................)A ; : 1593 2570 798 48 rc 0 0 0 sco F7_42 Ji 1639 2570 M 0.500 0 (................................)A ; : 1945 2570 446 48 rc 0 0 0 sco F7_42 Ji 1991 2570 M 0.500 0 (............)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2570 M (13)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 371 2670 M 0.047 0 (2.4 Telecommunications Addressing Properties)A ; : 1131 2670 1260 48 rc 0 0 0 sco F7_42 Ji 1177 2670 M 0.500 0 (................................)A ; : 1483 2670 908 48 rc 0 0 0 sco F7_42 Ji 1529 2670 M 0.500 0 (................................)A ; : 1835 2670 556 48 rc 0 0 0 sco F7_42 Ji 1881 2670 M 0.500 0 (......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2670 M (13)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2720 M 0.049 0 (2.4.1 Telephone Number)A ; : 790 2720 1601 48 rc 0 0 0 sco F7_42 Ji 836 2720 M 0.500 0 (................................)A ; : 1142 2720 1249 48 rc 0 0 0 sco F7_42 Ji 1188 2720 M 0.500 0 (................................)A ; : 1494 2720 897 48 rc 0 0 0 sco F7_42 Ji 1540 2720 M 0.500 0 (................................)A ; : 1846 2720 545 48 rc 0 0 0 sco F7_42 Ji 1892 2720 M 0.500 0 (.....................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2720 M (14)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 2770 M -0.004 0 (2.4.1.1 Telephone Type)A ; : 812 2770 1579 48 rc 0 0 0 sco F7_42 Ji 858 2770 M 0.500 0 (................................)A ; : 1164 2770 1227 48 rc 0 0 0 sco F7_42 Ji 1210 2770 M 0.500 0 (................................)A ; : 1516 2770 875 48 rc 0 0 0 sco F7_42 Ji 1562 2770 M 0.500 0 (................................)A ; : 1868 2770 523 48 rc 0 0 0 sco F7_42 Ji 1914 2770 M 0.500 0 (...................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2770 M (14)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 413 2820 M 0.145 0 (2.4.2 Electronic Mail)A ; : 735 2820 1656 48 rc 0 0 0 sco F7_42 Ji 781 2820 M 0.500 0 (................................)A ; : 1087 2820 1304 48 rc 0 0 0 sco F7_42 Ji 1133 2820 M 0.500 0 (................................)A ; : 1439 2820 952 48 rc 0 0 0 sco F7_42 Ji 1485 2820 M 0.500 0 (................................)A ; : 1791 2820 600 48 rc 0 0 0 sco F7_42 Ji 1837 2820 M 0.500 0 (..........................)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2820 M (15)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 454 2870 M 0.062 0 (2.4.2.1 Electronic Mail Type)A ; : 900 2870 1491 48 rc 0 0 0 sco F7_42 Ji 946 2870 M 0.500 0 (................................)A ; : 1252 2870 1139 48 rc 0 0 0 sco F7_42 Ji 1298 2870 M 0.500 0 (................................)A ; : 1604 2870 787 48 rc 0 0 0 sco F7_42 Ji 1650 2870 M 0.500 0 (................................)A ; : 1956 2870 435 48 rc 0 0 0 sco F7_42 Ji 2002 2870 M 0.500 0 (...........)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 2129 2870 M (15)S ; LH pagesave restore (%%[ Page: 9 ]%%) = %%PageTrailer %%Page: 10 10 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M (x)S ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 263 494 M 0.211 0 (2.4.3 Mailer)A ; : 427 494 1964 48 rc 0 0 0 sco F4_42 Ji 473 494 M 0.500 0 (................................)A ; : 779 494 1612 48 rc 0 0 0 sco F4_42 Ji 825 494 M 0.500 0 (................................)A ; : 1131 494 1260 48 rc 0 0 0 sco F4_42 Ji 1177 494 M 0.500 0 (................................)A ; : 1483 494 908 48 rc 0 0 0 sco F4_42 Ji 1529 494 M 0.500 0 (................................)A ; : 1835 494 556 48 rc 0 0 0 sco F4_42 Ji 1881 494 M 0.500 0 (........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 494 M (16)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 544 M 0.084 0 (2.4.4 Geographical Properties)A ; : 724 544 1667 48 rc 0 0 0 sco F4_42 Ji 770 544 M 0.500 0 (................................)A ; : 1076 544 1315 48 rc 0 0 0 sco F4_42 Ji 1122 544 M 0.500 0 (................................)A ; : 1428 544 963 48 rc 0 0 0 sco F4_42 Ji 1474 544 M 0.500 0 (................................)A ; : 1780 544 611 48 rc 0 0 0 sco F4_42 Ji 1826 544 M 0.500 0 (.............)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 544 M (16)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 594 M 0.069 0 (2.4.5 Time Zone)A ; : 504 594 1887 48 rc 0 0 0 sco F4_42 Ji 550 594 M 0.500 0 (................................)A ; : 856 594 1535 48 rc 0 0 0 sco F4_42 Ji 902 594 M 0.500 0 (................................)A ; : 1208 594 1183 48 rc 0 0 0 sco F4_42 Ji 1254 594 M 0.500 0 (................................)A ; : 1560 594 831 48 rc 0 0 0 sco F4_42 Ji 1606 594 M 0.500 0 (................................)A ; : 1912 594 479 48 rc 0 0 0 sco F4_42 Ji 1958 594 M 0.500 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 594 M (16)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 644 M 0.054 0 (2.4.6 Geographic Position)A ; : 658 644 1733 48 rc 0 0 0 sco F4_42 Ji 704 644 M 0.500 0 (................................)A ; : 1010 644 1381 48 rc 0 0 0 sco F4_42 Ji 1056 644 M 0.500 0 (................................)A ; : 1362 644 1029 48 rc 0 0 0 sco F4_42 Ji 1408 644 M 0.500 0 (................................)A ; : 1714 644 677 48 rc 0 0 0 sco F4_42 Ji 1760 644 M 0.500 0 (...................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 644 M (17)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 744 M 0.193 0 (2.5 Organizational Properties)A ; : 680 744 1711 48 rc 0 0 0 sco F4_42 Ji 726 744 M 0.500 0 (................................)A ; : 1032 744 1359 48 rc 0 0 0 sco F4_42 Ji 1078 744 M 0.500 0 (................................)A ; : 1384 744 1007 48 rc 0 0 0 sco F4_42 Ji 1430 744 M 0.500 0 (................................)A ; : 1736 744 655 48 rc 0 0 0 sco F4_42 Ji 1782 744 M 0.500 0 (.................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 744 M (17)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 794 M 0.197 0 (2.5.1 Title)A ; : 394 794 1997 48 rc 0 0 0 sco F4_42 Ji 440 794 M 0.500 0 (................................)A ; : 746 794 1645 48 rc 0 0 0 sco F4_42 Ji 792 794 M 0.500 0 (................................)A ; : 1098 794 1293 48 rc 0 0 0 sco F4_42 Ji 1144 794 M 0.500 0 (................................)A ; : 1450 794 941 48 rc 0 0 0 sco F4_42 Ji 1496 794 M 0.500 0 (................................)A ; : 1802 794 589 48 rc 0 0 0 sco F4_42 Ji 1848 794 M 0.500 0 (...........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 794 M (17)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 844 M -0.058 0 (2.5.2 Business Category)A ; : 625 844 1766 48 rc 0 0 0 sco F4_42 Ji 671 844 M 0.500 0 (................................)A ; : 977 844 1414 48 rc 0 0 0 sco F4_42 Ji 1023 844 M 0.500 0 (................................)A ; : 1329 844 1062 48 rc 0 0 0 sco F4_42 Ji 1375 844 M 0.500 0 (................................)A ; : 1681 844 710 48 rc 0 0 0 sco F4_42 Ji 1727 844 M 0.500 0 (......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 844 M (17)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 894 M -0.116 0 (2.5.3 Logo)A ; : 405 894 1986 48 rc 0 0 0 sco F4_42 Ji 451 894 M 0.500 0 (................................)A ; : 757 894 1634 48 rc 0 0 0 sco F4_42 Ji 803 894 M 0.500 0 (................................)A ; : 1109 894 1282 48 rc 0 0 0 sco F4_42 Ji 1155 894 M 0.500 0 (................................)A ; : 1461 894 930 48 rc 0 0 0 sco F4_42 Ji 1507 894 M 0.500 0 (................................)A ; : 1813 894 578 48 rc 0 0 0 sco F4_42 Ji 1859 894 M 0.500 0 (..........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 894 M (18)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 304 944 M -0.055 0 (2.5.3.1 Logo Format Type)A ; : 702 944 1689 48 rc 0 0 0 sco F4_42 Ji 748 944 M 0.500 0 (................................)A ; : 1054 944 1337 48 rc 0 0 0 sco F4_42 Ji 1100 944 M 0.500 0 (................................)A ; : 1406 944 985 48 rc 0 0 0 sco F4_42 Ji 1452 944 M 0.500 0 (................................)A ; : 1758 944 633 48 rc 0 0 0 sco F4_42 Ji 1804 944 M 0.500 0 (...............)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 944 M (18)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 994 M 0.168 0 (2.5.4 Agent)A ; : 416 994 1975 48 rc 0 0 0 sco F4_42 Ji 462 994 M 0.500 0 (................................)A ; : 768 994 1623 48 rc 0 0 0 sco F4_42 Ji 814 994 M 0.500 0 (................................)A ; : 1120 994 1271 48 rc 0 0 0 sco F4_42 Ji 1166 994 M 0.500 0 (................................)A ; : 1472 994 919 48 rc 0 0 0 sco F4_42 Ji 1518 994 M 0.500 0 (................................)A ; : 1824 994 567 48 rc 0 0 0 sco F4_42 Ji 1870 994 M 0.500 0 (.........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 994 M (19)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1044 M 0.276 0 (2.5.5 Organization Name and Organizational Unit)A ; : 1076 1044 1315 48 rc 0 0 0 sco F4_42 Ji 1122 1044 M 0.500 0 (................................)A ; : 1428 1044 963 48 rc 0 0 0 sco F4_42 Ji 1474 1044 M 0.500 0 (................................)A ; : 1780 1044 611 48 rc 0 0 0 sco F4_42 Ji 1826 1044 M 0.500 0 (.............)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1044 M (19)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 1144 M 0.073 0 (2.6 Explanatory Properties)A ; : 636 1144 1755 48 rc 0 0 0 sco F4_42 Ji 682 1144 M 0.500 0 (................................)A ; : 988 1144 1403 48 rc 0 0 0 sco F4_42 Ji 1034 1144 M 0.500 0 (................................)A ; : 1340 1144 1051 48 rc 0 0 0 sco F4_42 Ji 1386 1144 M 0.500 0 (................................)A ; : 1692 1144 699 48 rc 0 0 0 sco F4_42 Ji 1738 1144 M 0.500 0 (.....................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1144 M (20)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1194 M 0.139 0 (2.6.1 Comment)A ; : 482 1194 1909 48 rc 0 0 0 sco F4_42 Ji 528 1194 M 0.500 0 (................................)A ; : 834 1194 1557 48 rc 0 0 0 sco F4_42 Ji 880 1194 M 0.500 0 (................................)A ; : 1186 1194 1205 48 rc 0 0 0 sco F4_42 Ji 1232 1194 M 0.500 0 (................................)A ; : 1538 1194 853 48 rc 0 0 0 sco F4_42 Ji 1584 1194 M 0.500 0 (................................)A ; : 1890 1194 501 48 rc 0 0 0 sco F4_42 Ji 1936 1194 M 0.500 0 (...)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1194 M (20)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1244 M -0.036 0 (2.6.2 Last Revision)A ; : 548 1244 1843 48 rc 0 0 0 sco F4_42 Ji 594 1244 M 0.500 0 (................................)A ; : 900 1244 1491 48 rc 0 0 0 sco F4_42 Ji 946 1244 M 0.500 0 (................................)A ; : 1252 1244 1139 48 rc 0 0 0 sco F4_42 Ji 1298 1244 M 0.500 0 (................................)A ; : 1604 1244 787 48 rc 0 0 0 sco F4_42 Ji 1650 1244 M 0.500 0 (.............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1244 M (20)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1294 M 0.104 0 (2.6.3 Sound)A ; : 427 1294 1964 48 rc 0 0 0 sco F4_42 Ji 473 1294 M 0.500 0 (................................)A ; : 779 1294 1612 48 rc 0 0 0 sco F4_42 Ji 825 1294 M 0.500 0 (................................)A ; : 1131 1294 1260 48 rc 0 0 0 sco F4_42 Ji 1177 1294 M 0.500 0 (................................)A ; : 1483 1294 908 48 rc 0 0 0 sco F4_42 Ji 1529 1294 M 0.500 0 (................................)A ; : 1835 1294 556 48 rc 0 0 0 sco F4_42 Ji 1881 1294 M 0.500 0 (........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1294 M (20)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 304 1344 M 0.036 0 (2.6.3.1 Sound Digital Audio Type)A ; : 834 1344 1557 48 rc 0 0 0 sco F4_42 Ji 880 1344 M 0.500 0 (................................)A ; : 1186 1344 1205 48 rc 0 0 0 sco F4_42 Ji 1232 1344 M 0.500 0 (................................)A ; : 1538 1344 853 48 rc 0 0 0 sco F4_42 Ji 1584 1344 M 0.500 0 (................................)A ; : 1890 1344 501 48 rc 0 0 0 sco F4_42 Ji 1936 1344 M 0.500 0 (...)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1344 M (21)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1394 M -0.102 0 (2.6.4 Uniform Resource Locator)A ; : 768 1394 1623 48 rc 0 0 0 sco F4_42 Ji 814 1394 M 0.500 0 (................................)A ; : 1120 1394 1271 48 rc 0 0 0 sco F4_42 Ji 1166 1394 M 0.500 0 (................................)A ; : 1472 1394 919 48 rc 0 0 0 sco F4_42 Ji 1518 1394 M 0.500 0 (................................)A ; : 1824 1394 567 48 rc 0 0 0 sco F4_42 Ji 1870 1394 M 0.500 0 (.........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1394 M (21)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1444 M 0.090 0 (2.6.5 Unique Identifier)A ; : 614 1444 1777 48 rc 0 0 0 sco F4_42 Ji 660 1444 M 0.500 0 (................................)A ; : 966 1444 1425 48 rc 0 0 0 sco F4_42 Ji 1012 1444 M 0.500 0 (................................)A ; : 1318 1444 1073 48 rc 0 0 0 sco F4_42 Ji 1364 1444 M 0.500 0 (................................)A ; : 1670 1444 721 48 rc 0 0 0 sco F4_42 Ji 1716 1444 M 0.500 0 (.......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1444 M (21)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1494 M 0.118 0 (2.6.6 Version)A ; : 449 1494 1942 48 rc 0 0 0 sco F4_42 Ji 495 1494 M 0.500 0 (................................)A ; : 801 1494 1590 48 rc 0 0 0 sco F4_42 Ji 847 1494 M 0.500 0 (................................)A ; : 1153 1494 1238 48 rc 0 0 0 sco F4_42 Ji 1199 1494 M 0.500 0 (................................)A ; : 1505 1494 886 48 rc 0 0 0 sco F4_42 Ji 1551 1494 M 0.500 0 (................................)A ; : 1857 1494 534 48 rc 0 0 0 sco F4_42 Ji 1903 1494 M 0.500 0 (......)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1494 M (22)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 1594 M -0.035 0 (2.7 Security Properties)A ; : 559 1594 1832 48 rc 0 0 0 sco F4_42 Ji 605 1594 M 0.500 0 (................................)A ; : 911 1594 1480 48 rc 0 0 0 sco F4_42 Ji 957 1594 M 0.500 0 (................................)A ; : 1263 1594 1128 48 rc 0 0 0 sco F4_42 Ji 1309 1594 M 0.500 0 (................................)A ; : 1615 1594 776 48 rc 0 0 0 sco F4_42 Ji 1661 1594 M 0.500 0 (............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1594 M (22)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1644 M -0.145 0 (2.7.1 Public Key)A ; : 504 1644 1887 48 rc 0 0 0 sco F4_42 Ji 550 1644 M 0.500 0 (................................)A ; : 856 1644 1535 48 rc 0 0 0 sco F4_42 Ji 902 1644 M 0.500 0 (................................)A ; : 1208 1644 1183 48 rc 0 0 0 sco F4_42 Ji 1254 1644 M 0.500 0 (................................)A ; : 1560 1644 831 48 rc 0 0 0 sco F4_42 Ji 1606 1644 M 0.500 0 (................................)A ; : 1912 1644 479 48 rc 0 0 0 sco F4_42 Ji 1958 1644 M 0.500 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1644 M (22)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1694 M -0.234 0 (2.7.2 Key Type)A ; : 482 1694 1909 48 rc 0 0 0 sco F4_42 Ji 528 1694 M 0.500 0 (................................)A ; : 834 1694 1557 48 rc 0 0 0 sco F4_42 Ji 880 1694 M 0.500 0 (................................)A ; : 1186 1694 1205 48 rc 0 0 0 sco F4_42 Ji 1232 1694 M 0.500 0 (................................)A ; : 1538 1694 853 48 rc 0 0 0 sco F4_42 Ji 1584 1694 M 0.500 0 (................................)A ; : 1890 1694 501 48 rc 0 0 0 sco F4_42 Ji 1936 1694 M 0.500 0 (...)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1694 M (22)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 1794 M -0.016 0 (2.8 Miscellaneous Properties)A ; : 669 1794 1722 48 rc 0 0 0 sco F4_42 Ji 715 1794 M 0.500 0 (................................)A ; : 1021 1794 1370 48 rc 0 0 0 sco F4_42 Ji 1067 1794 M 0.500 0 (................................)A ; : 1373 1794 1018 48 rc 0 0 0 sco F4_42 Ji 1419 1794 M 0.500 0 (................................)A ; : 1725 1794 666 48 rc 0 0 0 sco F4_42 Ji 1771 1794 M 0.500 0 (..................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1794 M (23)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 1844 M 0.135 0 (2.8.1 Extensions)A ; : 504 1844 1887 48 rc 0 0 0 sco F4_42 Ji 550 1844 M 0.500 0 (................................)A ; : 856 1844 1535 48 rc 0 0 0 sco F4_42 Ji 902 1844 M 0.500 0 (................................)A ; : 1208 1844 1183 48 rc 0 0 0 sco F4_42 Ji 1254 1844 M 0.500 0 (................................)A ; : 1560 1844 831 48 rc 0 0 0 sco F4_42 Ji 1606 1844 M 0.500 0 (................................)A ; : 1912 1844 479 48 rc 0 0 0 sco F4_42 Ji 1958 1844 M 0.500 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1844 M (23)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 1944 M 0.119 0 (2.9 Formal Definition)A ; : 548 1944 1843 48 rc 0 0 0 sco F4_42 Ji 594 1944 M 0.500 0 (................................)A ; : 900 1944 1491 48 rc 0 0 0 sco F4_42 Ji 946 1944 M 0.500 0 (................................)A ; : 1252 1944 1139 48 rc 0 0 0 sco F4_42 Ji 1298 1944 M 0.500 0 (................................)A ; : 1604 1944 787 48 rc 0 0 0 sco F4_42 Ji 1650 1944 M 0.500 0 (.............................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 1944 M (24)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.940 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_50) cvn F6 50 xF F6_50 Ji 221 2069 M 0.019 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 1965 2069 M 0.200 0 (27)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 2180 M -0.029 0 (3.1 Recommended Practice with SMTP/MIME)A ; : 966 2180 1425 48 rc 0 0 0 sco F4_42 Ji 1012 2180 M 0.500 0 (................................)A ; : 1318 2180 1073 48 rc 0 0 0 sco F4_42 Ji 1364 2180 M 0.500 0 (................................)A ; : 1670 2180 721 48 rc 0 0 0 sco F4_42 Ji 1716 2180 M 0.500 0 (.......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2180 M (27)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2230 M 0.109 0 (3.1.1 Text/Plain Content Type)A ; : 735 2230 1656 48 rc 0 0 0 sco F4_42 Ji 781 2230 M 0.500 0 (................................)A ; : 1087 2230 1304 48 rc 0 0 0 sco F4_42 Ji 1133 2230 M 0.500 0 (................................)A ; : 1439 2230 952 48 rc 0 0 0 sco F4_42 Ji 1485 2230 M 0.500 0 (................................)A ; : 1791 2230 600 48 rc 0 0 0 sco F4_42 Ji 1837 2230 M 0.500 0 (............)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2230 M (27)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2280 M 0.050 0 (3.1.2 Text/X-vCard Content Type)A ; : 790 2280 1601 48 rc 0 0 0 sco F4_42 Ji 836 2280 M 0.500 0 (................................)A ; : 1142 2280 1249 48 rc 0 0 0 sco F4_42 Ji 1188 2280 M 0.500 0 (................................)A ; : 1494 2280 897 48 rc 0 0 0 sco F4_42 Ji 1540 2280 M 0.500 0 (................................)A ; : 1846 2280 545 48 rc 0 0 0 sco F4_42 Ji 1892 2280 M 0.500 0 (.......)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2280 M (28)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2330 M 0.006 0 (3.1.3 Application/Directory Content Type)A ; : 933 2330 1458 48 rc 0 0 0 sco F4_42 Ji 979 2330 M 0.500 0 (................................)A ; : 1285 2330 1106 48 rc 0 0 0 sco F4_42 Ji 1331 2330 M 0.500 0 (................................)A ; : 1637 2330 754 48 rc 0 0 0 sco F4_42 Ji 1683 2330 M 0.500 0 (..........................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2330 M (29)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 2430 M -0.079 0 (3.2 Recommended Practice with HTTP/HTML)A ; : 966 2430 1425 48 rc 0 0 0 sco F4_42 Ji 1012 2430 M 0.500 0 (................................)A ; : 1318 2430 1073 48 rc 0 0 0 sco F4_42 Ji 1364 2430 M 0.500 0 (................................)A ; : 1670 2430 721 48 rc 0 0 0 sco F4_42 Ji 1716 2430 M 0.500 0 (.......................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2430 M (30)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2480 M 0.064 0 (3.2.1 Form Element Usage)A ; : 680 2480 1711 48 rc 0 0 0 sco F4_42 Ji 726 2480 M 0.500 0 (................................)A ; : 1032 2480 1359 48 rc 0 0 0 sco F4_42 Ji 1078 2480 M 0.500 0 (................................)A ; : 1384 2480 1007 48 rc 0 0 0 sco F4_42 Ji 1430 2480 M 0.500 0 (................................)A ; : 1736 2480 655 48 rc 0 0 0 sco F4_42 Ji 1782 2480 M 0.500 0 (.................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2480 M (30)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2530 M 0.081 0 (3.2.2 Mapping To INPUT Element Attribute Names)A ; : 1098 2530 1293 48 rc 0 0 0 sco F4_42 Ji 1144 2530 M 0.500 0 (................................)A ; : 1450 2530 941 48 rc 0 0 0 sco F4_42 Ji 1496 2530 M 0.500 0 (................................)A ; : 1802 2530 589 48 rc 0 0 0 sco F4_42 Ji 1848 2530 M 0.500 0 (...........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2530 M (31)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 263 2580 M -0.020 0 (3.2.3 Example HTML Code)A ; : 691 2580 1700 48 rc 0 0 0 sco F4_42 Ji 737 2580 M 0.500 0 (................................)A ; : 1043 2580 1348 48 rc 0 0 0 sco F4_42 Ji 1089 2580 M 0.500 0 (................................)A ; : 1395 2580 996 48 rc 0 0 0 sco F4_42 Ji 1441 2580 M 0.500 0 (................................)A ; : 1747 2580 644 48 rc 0 0 0 sco F4_42 Ji 1793 2580 M 0.500 0 (................)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2580 M (34)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 221 2705 M 0.039 0 (Section 4 : UI Support Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 1965 2705 M 0.200 0 (37)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 221 2816 M -0.103 0 (4.1 File System)A ; : 438 2816 1953 48 rc 0 0 0 sco F4_42 Ji 484 2816 M 0.500 0 (................................)A ; : 790 2816 1601 48 rc 0 0 0 sco F4_42 Ji 836 2816 M 0.500 0 (................................)A ; : 1142 2816 1249 48 rc 0 0 0 sco F4_42 Ji 1188 2816 M 0.500 0 (................................)A ; : 1494 2816 897 48 rc 0 0 0 sco F4_42 Ji 1540 2816 M 0.500 0 (................................)A ; : 1846 2816 545 48 rc 0 0 0 sco F4_42 Ji 1892 2816 M 0.500 0 (.......)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1979 2816 M (37)S ; LH pagesave restore (%%[ Page: 10 ]%%) = %%PageTrailer %%Page: 11 11 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.136 0 (Contents)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2141 3068 M -0.162 0 (xi)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 371 494 M 0.077 0 (4.2 Clipboard)A ; : 559 494 1832 48 rc 0 0 0 sco F4_42 Ji 605 494 M 0.500 0 (................................)A ; : 911 494 1480 48 rc 0 0 0 sco F4_42 Ji 957 494 M 0.500 0 (................................)A ; : 1263 494 1128 48 rc 0 0 0 sco F4_42 Ji 1309 494 M 0.500 0 (................................)A ; : 1615 494 776 48 rc 0 0 0 sco F4_42 Ji 1661 494 M 0.500 0 (................................)A ; : 1967 494 424 48 rc 0 0 0 sco F4_42 Ji 2013 494 M 0.500 0 (..........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 2129 494 M (37)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 371 594 M 0.158 0 (4.3 Drag/Drop)A ; : 581 594 1810 48 rc 0 0 0 sco F4_42 Ji 627 594 M 0.500 0 (................................)A ; : 933 594 1458 48 rc 0 0 0 sco F4_42 Ji 979 594 M 0.500 0 (................................)A ; : 1285 594 1106 48 rc 0 0 0 sco F4_42 Ji 1331 594 M 0.500 0 (................................)A ; : 1637 594 754 48 rc 0 0 0 sco F4_42 Ji 1683 594 M 0.500 0 (................................)A ; : 1989 594 402 48 rc 0 0 0 sco F4_42 Ji 2035 594 M 0.500 0 (........)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 2129 594 M (37)S ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.940 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_50) cvn F6 50 xF F6_50 Ji 371 719 M 0.043 0 (Section 5 : Conformance)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 2115 719 M 0.200 0 (39)A ; LH pagesave restore (%%[ Page: 11 ]%%) = %%PageTrailer %%Page: 12 12 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.066 0 (Section 1 : Introduction)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2148 3068 M -0.352 0 (1)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 505 M 0.142 0 (Section 1 : Introduction)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 648 M 0.160 0 (Personal Data Interchange \()A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Bold (F8) cvn 0.929 (Times-Bold) cvn /Type1 T (Times-Bold) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 1023 647 M -0.108 0 (PDI)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1095 648 M 0.211 0 (\) occurs every time two or more individuals communicate, in)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 702 M 0.189 0 (either a business or personal context, face-to-face, or across space and time. Such interchanges)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 756 M 0.179 0 (frequently include the exchange of informal information, such as business cards, telephone)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 810 M 0.173 0 (numbers, addresses, dates and times of appointments, etc. Augmenting PDI with electronics)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 864 M 0.209 0 (and telecommunications can help ensure that information is quickly and reliably)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 918 M 0.216 0 (communicated, stored, organized and easily located when needed.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 993 M 0.173 0 (Personal information, by nature, is complex and diverse. Currently, proprietary standards exist)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1047 M 0.170 0 (to structure some types of PDI information, but no single, open specification comprehensively)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1101 M 0.171 0 (addresses the needs of collecting and communicating PDI information across many common)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1155 M 0.223 0 (communication channels such as telephones, voice-mail, e-mail, and face-to-face meetings.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F1_38) cvn F1 38 xF F1_38 Ji 551 1212 M (YHUVLW\003)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 678 1209 M 0.169 0 ( is developing a comprehensive family of PDI technologies based on open)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1263 M 0.208 0 (specifications and interoperability agreements to help meet this technology need.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_58) cvn F4 58 xF F4_58 Ji 371 1388 M -0.248 0 (1)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 1388 M 14.124 0 32 -0.248 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 1388 M -0.116 0 (Overview)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1517 M 0.194 0 (This specification defines a format for an electronic business card, or )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-BoldItalic (F12) cvn 0.929 (Times-BoldItalic) cvn /Type1 T (Times-BoldItalic) cvn mF (F12_42) cvn F12 42 xF F12_42 Ji 1736 1516 M (vCard)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1841 1517 M 0.247 0 (. The format is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1571 M 0.195 0 (suitable as an interchange format between applications or systems. The format is defined)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1625 M 0.195 0 (independent of the particular method used to transport it. The transport for this exchange might)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1679 M 0.157 0 (be a file system, point-to-point asynchronous communication, wired-network transport, or)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1733 M 0.137 0 (some form of unwired transport.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1808 M 0.188 0 (A vCard is a data stream consisting of one or more vCard objects. The individual vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1862 M 0.217 0 (definitions can be identified and parsed within the datastream. The vCard data stream may)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1916 M 0.198 0 (exist as a persistent form in a file system, document management system, network connection)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1970 M 0.185 0 (between two network endpoints, or in any other digital transport that has an abstraction of a)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2024 M 0.180 0 (stream of bytes.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2099 M 0.242 0 (Conceptually, a )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F14) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F14_42) cvn F14 42 xF F14_42 Ji 829 2100 M 0.070 0 (vCard Writer)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1055 2099 M 0.226 0 ( creates vCard data streams and a )A ; : 0 0 2391 3229 rc 0 0 0 sco F14_42 Ji 1633 2100 M 0.100 0 (vCard Reader)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1871 2099 M 0.160 0 ( interprets vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2153 M 0.230 0 (data streams. The vCard Reader and Writer may be implemented as a single application or as)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2207 M 0.223 0 (separate applications. It is not the intent of this specification to define the implementation of)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2261 M 0.201 0 (these processes beyond some fundamental capabilities related to the format of the vCard data)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2315 M 0.209 0 (stream and a common set of conformance requirements .)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2390 M 0.195 0 (This specification provides for a clear-text encoding that is intended to be based on the syntax)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2444 M 0.140 0 (used by the MIME specification \(RFC 1521\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2519 M 0.189 0 (The encoding of this specification can be used in environments which are constrained to 7-bit)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2573 M 0.177 0 (transfer encodings, short line lengths, and low bandwidth. In addition, the encoding is simple)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2627 M 0.224 0 (in order to facilitate the implementation of reader and writer applications on small platforms,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2681 M 0.150 0 (such as Personal Digital Assistants \(PDA\), cellular telephones, or alphanumeric pagers.)A ; LH pagesave restore (%%[ Page: 12 ]%%) = %%PageTrailer %%Page: 13 13 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (2)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.966 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_58) cvn F4 58 xF F4_58 Ji 221 490 M -0.248 0 (1)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 269 490 M 14.124 0 32 -0.248 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 331 490 M -0.212 0 (Scope)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 401 619 M 0.179 0 (The vCard is intended to be used for exchanging information about people and resources. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 673 M 0.154 0 (today\222s business environment, this information is typically exchanged on business cards. It is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 727 M 0.203 0 (appropriate, then that this specification define this information in terms of a paradigm based on)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 781 M 0.199 0 (an electronic business card object.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 856 M 0.188 0 (The ultimate destination for this information is often a collection of business cards, Rolodex\256)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 910 M 0.210 0 (file, or electronic contact manager. Prior to the introduction of the vCard specification, users of)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 964 M 0.199 0 (such applications typically had to re-key the original information, often transcribing it from)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1018 M 0.196 0 (paper business cards. With the advent of the vCard specification, this information can be)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1072 M 0.205 0 (exchanged in an automated fashion.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1147 M 0.188 0 (The basis for the data types supported by this specification have their origin in openly defined,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1201 M 0.187 0 (international standards and in additional capabilities based on enhancements suggested by the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1255 M 0.174 0 (demonstration of the exchange of prototypical vCards using the Internet based World-Wide-)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1309 M 0.177 0 (Web, Infra-red data transport, and simultaneous voice and data \(SVD\) modems.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1384 M 0.298 0 (The )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 478 1384 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 497 1384 M 0.005 0 (person)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 609 1384 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 628 1384 M 0.186 0 ( object defined by the CCITT X.500 Series Recommendation for Directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1438 M 0.195 0 (Services was the primary reference for the properties that are defined by this specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1492 M 0.206 0 (Every attempt was made to make it possible to map the X.520/X.521 attributes and objects)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1546 M 0.215 0 (into and out of an instance of a vCard. The vCard specification has extended the capabilities)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1600 M 0.204 0 (that have been defined within the CCITT X.500 Series Recommendation to allow the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1654 M 0.187 0 (exchange of additional information often recorded on business cards and electronic contact)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1708 M 0.170 0 (managers. For example, this specification provides support for exchanging graphic images)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1762 M 0.147 0 (representing company logos, photographs of individuals, geo-positioning information, and)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1816 M 0.176 0 (other extensions to properties defined by the X.500 Recommendation.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1891 M 0.205 0 (The specification of all date and time values are defined in terms of the ISO 8601 standard for)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1945 M 0.162 0 (representation of dates and times. ISO 8601 supersedes all other international standards)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 1999 M 0.219 0 (defined at the time this specification was drafted.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2074 M 0.215 0 (The paradigm of an electronic business card is related to the concepts of an entry in a)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2128 M 0.171 0 (LAN/WAN directory or an electronic mail address book or distribution list. However, the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2182 M 0.183 0 (requirements of the electronic business card go beyond the definitions of a )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1677 2182 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1696 2182 M 0.005 0 (person)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1808 2182 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1827 2182 M 0.265 0 ( object)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2236 M 0.179 0 (found in either the CCITT X.500 Series Recommendation, network directory services, or)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2290 M 0.185 0 (electronic mail address book products. The vCard specification is needed to address the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2344 M 0.200 0 (requirements for an interchange format for the )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1200 2344 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1219 2344 M 0.005 0 (person)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1331 2344 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1350 2344 M 0.226 0 ( personal data type or object.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2419 M 0.139 0 (Personal data applications such as Personal Information Managers \(PIM\) often provide an)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2473 M 0.172 0 (import/export capability using Comma Separated Value \(CSV\) or Tab Delimited Files \(TDF\))A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2527 M 0.185 0 (formats. However, these solutions do not preserve the intent of the originating application.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2581 M 0.190 0 (When a CSV and TDF format is used by a PIM, the meta-data or semantics of the originating)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2635 M 0.221 0 (object are only apparent to a similar version of the originating application. Exchange of data)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2689 M 0.171 0 (between such applications is another important application of an industry-standard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2743 M 0.189 0 (specification for an electronic business card interchange format, such as the vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 401 2797 M 0.206 0 (specification.)A ; LH pagesave restore (%%[ Page: 13 ]%%) = %%PageTrailer %%Page: 14 14 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.066 0 (Section 1 : Introduction)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2148 3068 M -0.352 0 (3)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.966 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_58) cvn F4 58 xF F4_58 Ji 371 490 M -0.248 0 (1)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 490 M 14.124 0 32 -0.248 0 (3 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 490 M -0.289 0 (Contents)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 619 M 0.187 0 (This specification is separated into eight sections:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 566 694 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 694 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 645 694 M 0.174 0 (Section 1 : Introduction)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1047 694 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1066 694 M 0.172 0 ( introduces PDI and the vCard specification with an overview,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 748 M 0.182 0 (scope statement and section on definitions and abbreviations.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 566 844 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 844 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 645 844 M 0.195 0 (Section 2 : vCard Specification)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1176 844 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1195 844 M 0.187 0 ( defines the semantics and syntax for the vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 566 940 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 940 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 645 940 M 0.216 0 (Section 3 : Internet Reco)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1068 940 M 0.151 0 (mmendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1296 940 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1315 940 M 0.232 0 ( specifies a set of guidelines to facilitate the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 994 M 0.139 0 (exchange of vCard objects over Internet protocols such as HTTP using HTML and SMTP)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1048 M 0.060 0 (using MIME.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 566 1144 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1144 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 645 1144 M 0.154 0 (Section 4 : UI Support Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1352 1144 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1371 1144 M 0.232 0 ( specifies a set of guidelines to facilitate the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1198 M 0.193 0 (exchange of vCard objects at the desktop user interface using the file system, clipboard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1252 M 0.189 0 (and drag/drop capabilities of the operating system.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 566 1348 M 0.300 0 (\225)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1348 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 645 1348 M 0.183 0 (Section 5 : Conformance)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1068 1348 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1087 1348 M 0.187 0 ( defines minimum conformance requirements to consider while)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1402 M 0.155 0 (developing support for this vCard specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 371 1548 M -0.248 0 (1)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 1548 M 14.124 0 32 -0.248 0 (4 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 1548 M -0.235 0 (Definitions and Abbreviations)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1677 M 0.158 0 (Definitions and abbreviations used within this specification follow.)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-BoldItalic (F8) cvn 0.929 (Times-BoldItalic) cvn /Type1 T (Times-BoldItalic) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 551 1751 M 0.038 0 (Electronic Business Card)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 993 1752 M 0.115 0 (: Also known as vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1847 M -0.005 0 (FPI)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 621 1848 M 0.180 0 (: Formal Public Identifier. A string expression that represents a public identifier for an)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 1902 M 0.140 0 (object. FPI syntax is defined by ISO 9070.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1997 M -0.327 0 (GUID)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 657 1998 M 0.163 0 (: Globally Unique IDentifier)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2093 M -0.004 0 (Internet)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 691 2094 M 0.151 0 (: A WAN connecting thousands of disparate networks in industry, education,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 2148 M 0.174 0 (government, and research. The Internet uses TCP/IP as the standard for transmitting)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 2202 M 0.181 0 (information.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2297 M -0.338 0 (ISO)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 620 2298 M 0.188 0 (: Organization for International Standardization; a worldwide federation of national)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 2352 M 0.098 0 (standards bodies \(ISO Member bodies\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2447 M -0.257 0 (MIME)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 669 2448 M 0.154 0 (: Multipurpose Internet Mail Extensions, as defined in RFC1521.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2543 M (PDA)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 635 2544 M 0.160 0 (: Personal Digital Assistant computing device)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2639 M -0.108 0 (PDI)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 623 2640 M 0.210 0 (: Personal Data Interchange, a collaborative application area which involves the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 2694 M 0.179 0 (communication of data between people who have a business or personal relationship, but)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 641 2748 M 0.178 0 (do not necessarily share a common computing infrastructure.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2843 M -0.113 0 (PIM)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 630 2844 M 0.142 0 (: Personal Information Manager)A ; LH pagesave restore (%%[ Page: 14 ]%%) = %%PageTrailer %%Page: 15 15 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (4)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-BoldItalic (F4) cvn 0.929 (Times-BoldItalic) cvn /Type1 T (Times-BoldItalic) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 401 497 M 0.045 0 (RFC#### documents)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 767 498 M 0.246 0 (: Internet )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 933 498 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 952 498 M 0.139 0 (Request For Comment)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1335 498 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1354 498 M 0.160 0 ( documents \(i.e., RFC822, RFC1521,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 491 552 M 0.340 0 (etc.\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 647 M (URL)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 485 648 M 0.177 0 (: Uniform Resource Locator; a string expression that can represent any resource on the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 491 702 M 0.174 0 (Internet or local system. RFC 1738 defines the syntax for an URL.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 797 M (UTC)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 485 798 M 0.175 0 (: Universal Time Coordinated; also known as UCT, for Universal Coordinated Time.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 893 M (vCard)S ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 506 894 M 0.234 0 (: The generic term for an electronic, virtual information card that can be transferred)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 491 948 M 0.187 0 (between computers, PDAs, or other electronic devices through telephone lines, or e-mail)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 491 1002 M 0.153 0 (networks, or infrared links. How, when, why, and where vCard are used depends on the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 491 1056 M 0.209 0 (applications developed utilizing a vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1151 M 0.069 0 (versitcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 572 1152 M 0.253 0 (: a vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1247 M -0.225 0 (WAN)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 496 1248 M 0.147 0 (: Wide-Area Network)A ; LH pagesave restore (%%[ Page: 15 ]%%) = %%PageTrailer %%Page: 16 16 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.101 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2148 3068 M -0.352 0 (5)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 505 M 0.151 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 648 M 0.180 0 (This section defines the semantics and syntax for the vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 723 M 0.198 0 (A vCard is a collection of one or more properties. A property is a uniquely named value. A set)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 777 M 0.193 0 (of properties can be grouped within a vCard. For example, the properties for a telephone)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 831 M 0.198 0 (number and comment can be grouped in order to preserve the coupling of the annotation with)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 885 M 0.195 0 (the telephone number. In addition to property groupings, a vCard can include other, nested)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 939 M 0.172 0 (vCard objects. This allows for the recording of information about a secondary person or object)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 993 M 0.190 0 (associated with a given person or object. Additionally, this allows for the specification of a)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1047 M 0.164 0 (distribution list or work group of multiple vCard objects.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_58) cvn F4 58 xF F4_58 Ji 371 1172 M -0.248 0 (2)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 1172 M 14.124 0 32 -0.248 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 1172 M -0.184 0 (Encoding Characteristics)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1301 M 0.199 0 (The following are encoding characteristics specific to this specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_50) cvn F4 50 xF F4_50 Ji 371 1406 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 413 1406 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 441 1406 M 0.100 0 (.)A 15.900 0 32 0.200 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 513 1406 M 0.150 0 (vCard Object)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1521 M 0.199 0 (A vCard data stream may include one or more vCard objects. An individual vCard object is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1575 M 0.227 0 (identified within a data stream by the appearance of the Begin vCard Delimiter:)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F10) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F10_33) cvn F10 33 xF F10_33 Ji 626 1652 M 0.200 0 (BEGIN:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1713 M 0.208 0 (The sentinel string must appear as the first characters in the data stream or the first characters)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1767 M 0.285 0 (on a line.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1842 M 0.239 0 (The vCard object is terminated with either the logical end of the data stream or the appearance)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1896 M 0.228 0 (of the End vCard Delimiter as the first character on a line:)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1973 M 0.200 0 (END:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 371 2064 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 413 2064 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 441 2064 M 0.100 0 (.)A 15.900 0 32 0.200 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 513 2064 M 0.050 0 (Property)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2179 M 0.088 0 (A )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F12) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F12_42) cvn F12 42 xF F12_42 Ji 592 2180 M 0.095 0 (property )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 748 2179 M 0.193 0 (is the definition of an individual attribute describing the vCard. A property takes)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2233 M 0.159 0 (the following form:)A ; : 0 0 2391 3229 rc 0 0 0 sco (F2_33) cvn F2 33 xF F2_33 Ji 626 2305 M -0.523 0 (PropertyName [\221;\221 PropertyParameters] \222:\221 PropertyValue)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2371 M 0.163 0 (as shown in the following example:)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2448 M 0.200 0 (TEL;HOME:+1-919-555-1234)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2509 M 0.197 0 (A property takes the form of one or more lines of text. The specification of property names and)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2563 M 0.198 0 (property parameters is case insensitive. The property name can be one of a set of pre-defined)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2617 M 0.194 0 (strings. The property name, along with an optional grouping label, must appear as the first)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2671 M 0.231 0 (characters on a line. In the previous example, )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1334 2671 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1353 2671 M 0.338 0 (TEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1431 2671 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1450 2671 M 0.259 0 ( is the name of the Teleph)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1893 2671 M 0.122 0 (one Number)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2725 M 0.176 0 (property. Property values are specified as strings. In the previous example, )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1829 2725 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1848 2725 M 0.024 0 (+1-919-555-1234)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 2145 2725 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2779 M 0.200 0 (is the formatted value for the Telephone Number property.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2854 M 0.177 0 (A property value can be further qualified with a property parameter expression. Property)A ; LH pagesave restore (%%[ Page: 16 ]%%) = %%PageTrailer %%Page: 17 17 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (6)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 401 498 M 0.204 0 (parameter expressions are delimited from the property name with a Semi-colon character)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 552 M 0.178 0 (\(ASCII 59\). A Semi-colon in a property parameter value must be escaped with a Backslash)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 606 M 0.190 0 (character \(ASCII 92\). The property parameter expressions are specified as either a name=value)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 660 M 0.210 0 (or a value string. The value string can be specified alone in those cases where the value is)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 714 M 0.208 0 (unambiguous. For example a complete property parameter specification might be:)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F6) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F6_33) cvn F6 33 xF F6_33 Ji 476 791 M 0.200 0 (NOTE;ENCODING=QUOTED-PRINTABLE:Don\222t remember to order Girl=)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 833 M 0.200 0 ( Scout cookies from Stacey today!)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 1196 833 M 0.200 0 (//Full property parameter expression)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 894 M 0.194 0 (A valid short version of the same property parameter specification might be:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 971 M 0.200 0 (NOTE;QUOTED-PRINTABLE:Don\222t remember to order Girl=)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 1013 M 0.200 0 ( Scout cookies from Stacey today!)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 1196 1013 M 0.200 0 (//Full property parameter express)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 1856 1013 M 0.200 0 (ion)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F8) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F8_50) cvn F8 50 xF F8_50 Ji 221 1104 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 263 1104 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 291 1104 M 0.100 0 (.)A 15.900 0 32 0.200 0 (3 )D ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 363 1104 M 0.025 0 (Delimiters)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1219 M 0.204 0 (Individual lines within the vCard data stream are delimited by the \(RFC 822\) line break, which)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1273 M 0.176 0 (is a CRLF sequence \(ASCII decimal 13, followed by ASCII decimal 10\). Long lines of text)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1327 M 0.202 0 (can be split into a multiple-line representation using the RFC 822 )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1524 1327 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1543 1327 M 0.095 0 (folding)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1665 1327 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1684 1327 M 0.260 0 ( technique. That is,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1381 M 0.192 0 (wherever there may be linear white space \(NOT simply LWSP-chars\), a CRLF immediately)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1435 M 0.208 0 (followed by at least one LWSP-char may instead be inserted. For example the line:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 1512 M 0.200 0 (NOTE:This is a very long description that exists on a long line.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1573 M 0.180 0 (Can be represented as:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 1650 M 0.200 0 (NOTE:This is a very long description)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 1713 M 0.200 0 ( that exists on a long line.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1774 M 0.183 0 (The process of moving from this folded multiple-line representation of a property definition to)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1828 M 0.213 0 (its single line representation is called )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1042 1828 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1061 1828 M 0.074 0 (unfolding)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1225 1828 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1244 1828 M 0.161 0 (. Unfolding is accomplished by regarding)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1882 M 0.194 0 (CRLF immediately followed by a LWSP-char as equivalent to the LWSP-char.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1957 M 0.207 0 (It is recommended that folding be limited to higher-level syntactic breaks in structured)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2011 M 0.173 0 (components of the property definition.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2086 M 0.204 0 (A formatted text line break in a property value, must also be represented by a \(RFC 822\) line)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2140 M 0.202 0 (break, which is a CRLF sequence. However, since the CRLF sequence is used to delimit a line,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2194 M 0.202 0 (property values with formatted line breaks \(i.e., multiple lines\) must be encoded using an)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2248 M 0.180 0 (alternate encoding of either Quoted-Printable or Base64, as defined in RFC 1521.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2323 M 0.213 0 (For example, in the Quoted-Printable encoding the multiple lines of formatted text are)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2377 M 0.163 0 (separated with a Quoted-Printable CRLF sequence of )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1318 2377 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1337 2377 M -0.004 0 (=0D)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1412 2377 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1431 2377 M 0.168 0 ( followed by )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1656 2377 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1675 2377 M -0.004 0 (=0A)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1750 2377 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1769 2377 M 0.149 0 ( followe)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1909 2377 M 0.225 0 (d by a)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2431 M 0.159 0 (Quoted-Printable softline break sequence of )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1158 2431 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1177 2431 M 0.312 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1201 2431 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1220 2431 M 0.186 0 (. Quoted-Printable lines of text must also be)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2485 M 0.199 0 (limited to less than 76 characters. The 76 characters does not include the CRLF \(RFC 822\) line)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2539 M 0.217 0 (break sequence. For example a multiple line LABEL property value of:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 2616 M 0.200 0 (123 Winding Way)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 2658 M 0.200 0 (Any Town, CA 12345)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 2700 M 0.200 0 (USA)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2761 M 0.176 0 (Would be represented in a Quoted-Printable encoding as:)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 2838 M 0.200 0 (LABEL;ENCODING=QUOTED-PRINTABLE:123 Winding Way=0D=0A=)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 476 2880 M 0.200 0 ( Any Town, CA 12345=0D=0A=)A ; LH pagesave restore (%%[ Page: 17 ]%%) = %%PageTrailer %%Page: 18 18 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.101 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2148 3068 M -0.352 0 (7)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 626 500 M 0.200 0 ( USA)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 561 M 0.201 0 (Property parameter substrings are delimited by a field delimiter, specified by the Semi-colon)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 615 M 0.202 0 (character \(ASCII decimal 59\). A Semi-colon in a property parameter value must be escaped)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 669 M 0.154 0 (with a Backslash character \(ASCII 92\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 744 M 0.185 0 (Compound property values are property values that also make use of the Semi-colon, field)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 798 M 0.209 0 (delimiter to separate positional components of the value. For example, the Name property is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 852 M 0.219 0 (made up of the Family Name, Given Name, etc. components. A Semi-colon in a component of)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 906 M 0.173 0 (a compound property value must be escaped with a Backslash character \(ASCII 92\).)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F8) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F8_50) cvn F8 50 xF F8_50 Ji 371 1011 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 413 1011 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 441 1011 M 0.100 0 (.)A 15.900 0 32 0.200 0 (4 )D ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 513 1011 M 0.250 0 (Grouping)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1126 M 0.175 0 (There are two forms of grouping or collections supported within the vCard. A collection of)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1180 M 0.198 0 (vCard objects can be grouped and a collection of properties within an individual vCard can be)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1234 M 0.108 0 (grouped.)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-BoldOblique (F10) cvn 0.952 (Helvetica-BoldOblique) cvn /Type1 T (Helvetica-BoldOblique) cvn mF (F10_42) cvn F10 42 xF F10_42 Ji 371 1307 M -0.352 0 (2)A 0.324 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 406 1307 M -0.352 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 429 1307 M 0.324 0 (.)A -0.352 0 (4)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 464 1307 M 0.324 0 (.)A 18.676 0 32 -0.352 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 529 1307 M 0.093 0 (vCard Grouping)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1401 M 0.222 0 (The vCard data stream can consist of multiple vCard objects. The vCard data stream can,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1455 M 0.224 0 (sequentially, contain one or more vCard objects., In addition, the vCard data stream can)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1509 M 0.194 0 (contain a property whose value is a nested vCard. In both of these cases, each vCard object)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1563 M 0.208 0 (will be delimited by the vCard Delimiters. The vCard Reader conforming to this specification)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1617 M 0.156 0 (must be able to parse and process any of these combinations of vCard Groupings. The support)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1671 M 0.173 0 (for vCard Grouping is optional for a vCard Writer conforming to this specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 371 1744 M -0.352 0 (2)A 0.324 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 406 1744 M -0.352 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 429 1744 M 0.324 0 (.)A -0.352 0 (4)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 464 1744 M 0.324 0 (.)A 18.676 0 32 -0.352 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F10_42 Ji 529 1744 M 0.095 0 (Property Grouping)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1838 M 0.088 0 (A )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F12) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F12_42) cvn F12 42 xF F12_42 Ji 592 1839 M 0.050 0 (Property Grouping)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 916 1838 M 0.220 0 ( is the definition of a method for specifying a collection of related)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1892 M 0.210 0 (properties within a vCard object. There is no requirement on a vCard reader that it preserve the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1946 M 0.175 0 (property group name. However, the vCard reader is required to preserve the grouping of the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2000 M 0.140 0 (properties.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2075 M 0.187 0 (The Property Grouping is identified by a character string prefix to the property name;)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2129 M 0.187 0 (separated by the Period character \(ASCII decimal 46\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2204 M 0.173 0 (The grouping of a comment property with a telephone property is shown in the following)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2258 M 0.254 0 (example:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2335 M 0.200 0 (A.TEL;HOME:+1-213-555-1234)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2377 M 0.200 0 (A.NOTE:This is my vacation home.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2438 M 0.191 0 (The vCard Reader conforming to this specification must be able to parse and process the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2492 M 0.145 0 (property grouping. The support for Property Grouping is optional for a vCard Writer)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2546 M 0.183 0 (conforming to this specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 371 2651 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 413 2651 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 441 2651 M 0.100 0 (.)A 15.900 0 32 0.200 0 (5 )D ; : 0 0 2391 3229 rc 0 0 0 sco F8_50 Ji 513 2651 M 0.267 0 (Encodings)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2766 M 0.206 0 (The default encoding for the vCard object is 7-Bit. The default encoding can be overridden for)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2820 M 0.188 0 (an individual property value by using the )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1260 2820 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1279 2820 M -0.160 0 (ENCODING)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1497 2820 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1516 2820 M 0.220 0 ( property parameter. This parameter)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2874 M 0.273 0 (value can be either )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 883 2874 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 902 2874 M -0.059 0 (BASE64)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1051 2874 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1070 2874 M 0.500 0 (, )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1092 2874 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1111 2874 M -0.038 0 (QUOTED-PRINTABLE)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1528 2874 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1547 2874 M 0.303 0 (, or )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1615 2874 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1634 2874 M 0.085 0 (8BIT)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1723 2874 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1742 2874 M 0.258 0 (. This parameter may be)A ; LH pagesave restore (%%[ Page: 18 ]%%) = %%PageTrailer %%Page: 19 19 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (8)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 401 498 M 0.146 0 (used on any property.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 573 M 0.190 0 (Some transports \(e.g., MIME based electronic mail\) may also provide an encoding property at)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 627 M 0.174 0 (the transport wrapper level. This property can be used in these cases for transporting a vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 681 M 0.218 0 (data stream that has been defined using a default encoding other than 7-bit \(e.g., 8-bit\).)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_50) cvn F6 50 xF F6_50 Ji 221 786 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 786 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 786 M 0.100 0 (.)A 15.900 0 32 0.200 0 (6 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 786 M 0.069 0 (Character Set)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 901 M 0.213 0 (The default character set is ASCII. The default character set can be overridden for an)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 955 M 0.181 0 (individual property value by using the )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1059 955 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1078 955 M -0.050 0 (CHARSET)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1269 955 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1288 955 M 0.186 0 ( property parameter. This property)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1009 M 0.194 0 (parameter may be used on any property. However, the use of this parameter on some)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1063 M 0.187 0 (properties may not make sense.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1138 M 0.142 0 (Any character set registered with the Internet Assigned Numbers Authority \(IANA\) can be)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1192 M 0.184 0 (specified by this property parameter. For example, ISO 8859-8 or the Latin/Hebrew character)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1246 M 0.176 0 (set is specified by:)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F8) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F8_33) cvn F8 33 xF F8_33 Ji 476 1323 M 0.200 0 (ADR;CHARSET=ISO-8859-8:...)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1384 M 0.196 0 (Some transports \(e.g., MIME based electronic mail\) may also provide a character set property)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1438 M 0.181 0 (at the transport wrapper level. This property can be used in these cases for transporting a vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1492 M 0.202 0 (data stream that has been defined using a default character set other than ASCII \(e.g., UTF-8\).)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 221 1597 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 1597 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 1597 M 0.100 0 (.)A 15.900 0 32 0.200 0 (7 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 1597 M 0.356 0 (Language)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1712 M 0.226 0 (The default language is )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 810 1712 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 829 1712 M -0.062 0 (en-US)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 936 1712 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 955 1712 M 0.190 0 ( \(US English\). The default language can be overridden for an)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1766 M 0.181 0 (individual property value by using the )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1059 1766 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1078 1766 M -0.159 0 (LANGUAGE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1310 1766 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1329 1766 M 0.200 0 ( property parameter. The values for this)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1820 M 0.172 0 (property are a string consistent with RFC 1766, Tags for the Identification of Languages. This)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1874 M 0.188 0 (property parameter may be used on any property. However, the use of this parameter on some)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1928 M 0.145 0 (properties, such as PHOTO, LOGO, SOUND, TEL, may not make sense. Canadian French)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 1982 M 0.181 0 (would be specified by this parameter by the following:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2059 M 0.200 0 (ADR;LANGUAGE=fr-CA:...)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 221 2150 M 0.200 0 (2)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 2150 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 2150 M 0.100 0 (.)A 15.900 0 32 0.200 0 (8 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 2150 M 0.239 0 (Value Location)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2265 M 0.198 0 (The default location of the property value is inline with the property. However, for some)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2319 M 0.207 0 (properties, such as those that specify multimedia values, it is efficient to organize the property)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2373 M 0.238 0 (value as a separate entity \(e.g., a file out on the network\). The property parameter )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1801 2373 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1820 2373 M -0.059 0 (VALUE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1962 2373 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2427 M 0.227 0 (can be specified to override the )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 945 2427 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 964 2427 M 0.009 0 (INLINE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1104 2427 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1123 2427 M 0.229 0 ( location of the property value. In the case of the)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2481 M 0.192 0 (vCard being transported within a MIME email message, the property value can be specified as)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2535 M 0.224 0 (being located in a separate MIME entity with the )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1246 2535 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1265 2535 M 0.069 0 (Content-ID)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1457 2535 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1476 2535 M 0.277 0 ( value, or )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1647 2535 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1666 2535 M -0.108 0 (CID)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1738 2535 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1757 2535 M 0.146 0 ( for short. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2589 M 0.187 0 (this case, the property value is the Content-ID for the MIME entity containing the property)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2643 M 0.214 0 (value. In addition, the property value can be specified as being located out on the network)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2697 M 0.182 0 (within some Internet resource with the )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1066 2697 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1085 2697 M (URL)S ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1169 2697 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1188 2697 M 0.226 0 ( value. In this case, the property value is the)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2751 M 0.182 0 (Uniform Resource Locator for the Internet resource containing the property value. This)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2805 M 0.188 0 (property parameter may be used on any property. However, the use of this parameter on some)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 2859 M 0.208 0 (properties may not make sense; for example the Version, Time Zone, Comment, Unique)A ; LH pagesave restore (%%[ Page: 19 ]%%) = %%PageTrailer %%Page: 20 20 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.101 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2148 3068 M -0.352 0 (9)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 551 498 M 0.208 0 (Identifier, properties . The following specifies a value not located inline with the vCard but out)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 552 M 0.232 0 (in the Internet:)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F6) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F6_33) cvn F6 33 xF F6_33 Ji 626 629 M 0.200 0 (PHOTO;VALUE=URL;TYPE=GIF:http://www.abc.com/dir_photos/my_photo.gif)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 626 692 M 0.200 0 (SOUND;VALUE=CONTENT-ID: ; \( 15, 13.\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1030 M 0.200 0 ( LF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1030 M 0.200 0 (= ; \( 12, 10.\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1072 M 0.200 0 ( CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1072 M 0.200 0 (= CR LF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1114 M 0.200 0 ( SPACE)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1114 M 0.200 0 (= ; \( 40, 32.\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1156 M 0.200 0 ( HTAB)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1156 M 0.200 0 (= ; \( 11, 9.\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1219 M 0.200 0 (All literal property names are valid as upper, lower, or mixed case.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1282 M 0.200 0 (ws)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 1282 M 0.200 0 (= 1*\(SPACE / HTAB\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 521 1324 M 0.200 0 (; )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 561 1324 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 581 1324 M 0.200 0 (whitespace,)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 801 1324 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 821 1324 M 0.200 0 ( one or more spaces or tabs)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1387 M 0.200 0 (wsls)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 1387 M 0.200 0 (= 1*\(SPACE / HTAB / CRLF\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 521 1429 M 0.200 0 (; whitespace with line separators)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1492 M 0.200 0 (word)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 1492 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1555 M 0.200 0 (groups)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1555 M 0.200 0 (= groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 926 1555 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 946 1555 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 966 1555 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 986 1555 M 0.200 0 ( word)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 1597 M 0.200 0 (/ word)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1660 M 0.200 0 (vcard_file)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 746 1660 M 0.200 0 (= [wsls] vcard [wsls])A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1723 M 0.200 0 (vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 1723 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 711 1723 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 731 1723 M 0.200 0 (BEGIN)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 831 1723 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 851 1723 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 971 1723 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 991 1723 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1011 1723 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1031 1723 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1151 1723 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1171 1723 M 0.200 0 (VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1271 1723 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1291 1723 M 0.200 0 ( [ws] 1*CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 1765 M 0.200 0 ( items *CRLF )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 1765 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 1765 M 0.200 0 (END)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 936 1765 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 956 1765 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1076 1765 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1096 1765 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1116 1765 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1136 1765 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1256 1765 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1276 1765 M 0.200 0 (VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1376 1765 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1828 M 0.200 0 (items)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 1828 M 0.200 0 (= items *CRLF item)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 1870 M 0.200 0 (/ item)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 521 1912 M 0.200 0 (; these may be )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 821 1912 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 841 1912 M 0.200 0 (folded)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 961 1912 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 1975 M 0.200 0 (item)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 1975 M 0.200 0 (= [groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 871 1975 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 891 1975 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 911 1975 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 931 1975 M 0.200 0 (] name)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2017 M 0.200 0 ( [params] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2017 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2017 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2017 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2017 M 0.200 0 ( value CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2059 M 0.200 0 (/ [groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2059 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2059 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2059 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2059 M 0.200 0 (] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 896 2059 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2059 M 0.200 0 (ADR)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 976 2059 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2101 M 0.200 0 ( [params] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2101 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2101 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2101 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2101 M 0.200 0 ( addressparts CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2143 M 0.200 0 (/ [groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2143 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2143 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2143 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2143 M 0.200 0 (] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 896 2143 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2143 M 0.200 0 (ORG)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 976 2143 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2185 M 0.200 0 ( [params] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2185 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2185 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2185 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2185 M 0.200 0 ( orgparts CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2227 M 0.200 0 (/ [groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2227 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2227 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2227 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2227 M 0.200 0 (] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 896 2227 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2227 M 0.200 0 (N)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 936 2227 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2269 M 0.200 0 ( [params] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2269 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2269 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2269 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2269 M 0.200 0 ( nameparts CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2311 M 0.200 0 (/ [groups )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2311 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2311 M 0.200 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2311 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2311 M 0.200 0 (] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 896 2311 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2311 M 0.200 0 (AGENT)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1016 2311 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2353 M 0.200 0 ( [params] )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2353 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2353 M 0.200 0 (:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2353 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2353 M 0.200 0 ( vcard CRLF)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 521 2395 M 0.200 0 (; these may be )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 821 2395 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 841 2395 M 0.200 0 (folded)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 961 2395 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2458 M 0.200 0 (name)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 2458 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 711 2458 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 731 2458 M 0.200 0 (LOGO)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 811 2458 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 831 2458 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 891 2458 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 911 2458 M 0.200 0 (PHOTO)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1011 2458 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1031 2458 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1091 2458 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1111 2458 M 0.200 0 (LABEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1211 2458 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1231 2458 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1291 2458 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1311 2458 M 0.200 0 (FN)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1351 2458 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1371 2458 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1431 2458 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1451 2458 M 0.200 0 (TITLE)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1551 2458 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2500 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 636 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 656 2500 M 0.200 0 (SOUND)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 756 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 776 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 836 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2500 M 0.200 0 (VERSION)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 996 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1016 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1076 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1096 2500 M 0.200 0 (TEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1156 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1176 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1236 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1256 2500 M 0.200 0 (EMAIL)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1356 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1376 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1436 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1456 2500 M 0.200 0 (TZ)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1496 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1516 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1576 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1596 2500 M 0.200 0 (GEO)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1656 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1676 2500 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1736 2500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1756 2500 M 0.200 0 (NOTE)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1836 2500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2542 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 636 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 656 2542 M 0.200 0 (URL)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 716 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 736 2542 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 816 2542 M 0.200 0 (BDAY)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 896 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2542 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 976 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 996 2542 M 0.200 0 (ROLE)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1076 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1096 2542 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1156 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1176 2542 M 0.200 0 (REV)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1236 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1256 2542 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1316 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1336 2542 M 0.200 0 (UID)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1396 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1416 2542 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1476 2542 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1496 2542 M 0.200 0 (KEY)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 1556 2542 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 596 2584 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 636 2584 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 656 2584 M 0.200 0 (MAILER)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 776 2584 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 796 2584 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 856 2584 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 876 2584 M 0.200 0 (X-)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 916 2584 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 936 2584 M 0.200 0 ( word)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 521 2626 M 0.200 0 (; these may be )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 821 2626 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 841 2626 M 0.200 0 (folded)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 961 2626 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2689 M 0.200 0 (value)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 2689 M 0.200 0 (= 7bit / quoted-printable / base64)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2752 M 0.200 0 (7bit)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 2752 M 0.200 0 (= <7bit us-ascii printable chars, excluding CR LF>)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2815 M 0.200 0 (8bit)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 671 2815 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_33 Ji 476 2878 M 0.200 0 (quoted-printable = )A ; LH pagesave restore (%%[ Page: 35 ]%%) = %%PageTrailer %%Page: 36 36 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.101 0 (Section 2 : vCard Specificiation)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (25)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 626 500 M 0.200 0 (base64)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 500 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 542 M 0.200 0 (; the end of the text is marked with two CRLF sequences)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 584 M 0.200 0 (; this results in one blank line before the start of the next property)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 647 M 0.200 0 (params)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 647 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 936 647 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 956 647 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 976 647 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 996 647 M 0.200 0 ( [ws] paramlist)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 710 M 0.200 0 (paramlist)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 710 M 0.200 0 (= paramlist [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 710 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1181 710 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1201 710 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1221 710 M 0.200 0 ( [ws] param)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 752 M 0.200 0 (/ param)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 815 M 0.200 0 (param)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 815 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 861 815 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 881 815 M 0.200 0 (TYPE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 961 815 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 981 815 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1101 815 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1121 815 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1141 815 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 815 M 0.200 0 ( [ws] ptypeval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 857 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 857 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 857 M 0.200 0 (VALUE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 857 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 926 857 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1046 857 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1066 857 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 857 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 857 M 0.200 0 ( [ws] pvalueval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 899 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 899 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 899 M 0.200 0 (ENCODING)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 899 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 899 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 899 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1126 899 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 899 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 899 M 0.200 0 ( [ws] pencodingval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 941 M 0.200 0 (/)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 766 941 M 0.200 0 ( )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 941 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 941 M 0.200 0 (CHARSET)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 946 941 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 941 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 941 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 941 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1126 941 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 941 M 0.200 0 ( [ws] charsetval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 983 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 983 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 983 M 0.200 0 (LANGUAGE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 983 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 983 M 0.200 0 ( [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 983 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1126 983 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 983 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 983 M 0.200 0 ( [ws] langval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 1025 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 1025 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 1025 M 0.200 0 (X-)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 846 1025 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 866 1025 M 0.200 0 ( word [ws] )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 1025 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 1025 M 0.200 0 (=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1126 1025 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 1025 M 0.200 0 ( [ws] word)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 1067 M 0.200 0 (/ knowntype)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1130 M 0.200 0 (ptypeval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 1130 M 0.200 0 (= knowntype / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1101 1130 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1121 1130 M 0.200 0 (X-)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 1130 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1181 1130 M 0.200 0 ( word)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1193 M 0.200 0 (pvalueval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 1193 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 861 1193 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 881 1193 M 0.200 0 (INLINE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1001 1193 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1021 1193 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1081 1193 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1101 1193 M 0.200 0 (URL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 1193 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1181 1193 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1241 1193 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1261 1193 M 0.200 0 (CONTENT-ID)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1461 1193 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1481 1193 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1541 1193 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1561 1193 M 0.200 0 (CID)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1621 1193 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1641 1193 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1701 1193 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1721 1193 M 0.200 0 (X-)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1761 1193 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1781 1193 M 0.200 0 ( word)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1256 M 0.200 0 (pencodingval )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 1256 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 936 1256 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 956 1256 M 0.200 0 (7BIT)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1036 1256 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1056 1256 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1116 1256 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1136 1256 M 0.200 0 (8BIT)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1216 1256 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1236 1256 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1296 1256 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1316 1256 M 0.200 0 (QUOTED-PRINTABLE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1636 1256 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1656 1256 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1716 1256 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1736 1256 M 0.200 0 (BASE64)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1856 1256 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1876 1256 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1936 1256 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1956 1256 M 0.200 0 (X-)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1996 1256 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 2016 1256 M 0.200 0 ( word)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1319 M 0.200 0 (charsetval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 1319 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1424 M 0.200 0 (langval)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 1424 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1487 M 0.200 0 (addressparts)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 1487 M 0.200 0 (= 0*6\(strnosemi )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1216 1487 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1236 1487 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1256 1487 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1276 1487 M 0.200 0 (\) strnosemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1529 M 0.200 0 (; PO Box, Extended Addr, Street, Locality)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1491 1529 M 0.200 0 (, Region, Postal Code,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1571 M 0.200 0 (Country Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1634 M 0.200 0 (orgparts)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 1634 M 0.200 0 (= *\(strnosemi )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1101 1634 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1121 1634 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1141 1634 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 1634 M 0.200 0 (\) strnosemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1676 M 0.200 0 (; First is Organization Name, remainder are Organization Units.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1739 M 0.200 0 (nameparts)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 1739 M 0.200 0 (= 0*4\(strnosemi )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1141 1739 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 1739 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1181 1739 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1201 1739 M 0.200 0 (\) strnosemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1781 M 0.200 0 (; Family, Given, Middle, Prefix, Suffix.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1823 M 0.200 0 (; Example:Public;John;Q.;Reverend Dr.;III, Esq.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1886 M 0.200 0 (strnosemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 1886 M 0.200 0 (= *\(*nonsemi \()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1101 1886 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1121 1886 M 0.200 0 (\\;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1161 1886 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1181 1886 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1241 1886 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1261 1886 M 0.200 0 (\\)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1281 1886 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1301 1886 M 0.200 0 ( CRLF\)\) *nonsemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1928 M 0.200 0 (; To include a semicolon in this string, it must be escaped)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 671 1970 M 0.200 0 (; with a )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 851 1970 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 871 1970 M 0.200 0 (\\)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 891 1970 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 911 1970 M 0.200 0 ( character.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2033 M 0.200 0 (nonsemi)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 896 2033 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2096 M 0.200 0 (knowntype)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 2096 M 0.200 0 (= )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 861 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 881 2096 M 0.200 0 (DOM)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 941 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 961 2096 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1021 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1041 2096 M 0.200 0 (INTL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1121 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1141 2096 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1201 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1221 2096 M 0.200 0 (POSTAL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1341 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1361 2096 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1421 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1441 2096 M 0.200 0 (PARCEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1561 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1581 2096 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1641 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1661 2096 M 0.200 0 (HOME)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1741 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1761 2096 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1821 2096 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1841 2096 M 0.200 0 (WORK)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1921 2096 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2138 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2138 M 0.200 0 (PREF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 2138 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2138 M 0.200 0 (VOICE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 2138 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1186 2138 M 0.200 0 (FAX)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1266 2138 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1326 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1346 2138 M 0.200 0 (MSG)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1406 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1426 2138 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1486 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1506 2138 M 0.200 0 (CELL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1586 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1606 2138 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1666 2138 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1686 2138 M 0.200 0 (PAGER)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1786 2138 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2180 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2180 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2180 M 0.200 0 (BBS)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 866 2180 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2180 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 946 2180 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2180 M 0.200 0 (MODEM)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1066 2180 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2180 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 2180 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2180 M 0.200 0 (CAR)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1226 2180 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2180 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1306 2180 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1326 2180 M 0.200 0 (ISDN)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1406 2180 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1426 2180 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1486 2180 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1506 2180 M 0.200 0 (VIDEO)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1606 2180 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2222 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2222 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2222 M 0.200 0 (AOL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 866 2222 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2222 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 946 2222 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2222 M 0.200 0 (APPLELINK)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 2222 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2222 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1226 2222 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2222 M 0.200 0 (ATTMAIL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1386 2222 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1406 2222 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1466 2222 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1486 2222 M 0.200 0 (CIS)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1546 2222 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1566 2222 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1626 2222 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1646 2222 M 0.200 0 (EWORLD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1766 2222 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2264 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2264 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2264 M 0.200 0 (INTERNET)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2264 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2264 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1046 2264 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1066 2264 M 0.200 0 (IBMMAIL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1206 2264 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1226 2264 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1286 2264 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1306 2264 M 0.200 0 (MCIMAIL)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1446 2264 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2306 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2306 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2306 M 0.200 0 (POWERSHARE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1006 2306 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1026 2306 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2306 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 2306 M 0.200 0 (PRODIGY)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2306 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1266 2306 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1326 2306 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1346 2306 M 0.200 0 (TLX)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1406 2306 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1426 2306 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1486 2306 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1506 2306 M 0.200 0 (X400)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1586 2306 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2348 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2348 M 0.200 0 (GIF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 866 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 946 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2348 M 0.200 0 (CGM)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1026 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1046 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1126 2348 M 0.200 0 (WMF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1186 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1206 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1266 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1286 2348 M 0.200 0 (BMP)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1346 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1366 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1426 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1446 2348 M 0.200 0 (MET)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1506 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1526 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1586 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1606 2348 M 0.200 0 (PMB)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1666 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1686 2348 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1746 2348 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1766 2348 M 0.200 0 (DIB)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1826 2348 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2390 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2390 M 0.200 0 (PICT)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 2390 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2390 M 0.200 0 (TIFF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1066 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2390 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2390 M 0.200 0 (PDF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1226 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2390 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1306 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1326 2390 M 0.200 0 (PS)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1366 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1386 2390 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1446 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1466 2390 M 0.200 0 (JPEG)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1546 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1566 2390 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1626 2390 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1646 2390 M 0.200 0 (QTIME)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1746 2390 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2432 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2432 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2432 M 0.200 0 (MPEG)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2432 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 2432 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2432 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2432 M 0.200 0 (MPEG2)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2432 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1106 2432 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2432 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1186 2432 M 0.200 0 (AVI)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1246 2432 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2474 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2474 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2474 M 0.200 0 (WAVE)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2474 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 2474 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2474 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2474 M 0.200 0 (AIFF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1066 2474 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1086 2474 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1146 2474 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1166 2474 M 0.200 0 (PCM)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1226 2474 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 746 2516 M 0.200 0 (/ )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 786 2516 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 806 2516 M 0.200 0 (X509)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 886 2516 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 906 2516 M 0.200 0 ( / )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 966 2516 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 986 2516 M 0.200 0 (PGP)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1046 2516 M 0.200 0 (\224)A ; LH pagesave restore (%%[ Page: 36 ]%%) = %%PageTrailer %%Page: 37 37 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.093 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (27)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 505 M 0.168 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_58) cvn F4 58 xF F4_58 Ji 371 698 M -0.248 0 (3)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 698 M 14.124 0 32 -0.248 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 698 M -0.127 0 (Recommended Practice )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 1152 698 M -0.124 0 (w)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 1197 698 M -0.130 0 (ith SMTP/MIME)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_42) cvn F7 42 xF F7_42 Ji 551 827 M 0.169 0 (The vCard information can be transported through SMTP/MIME based electronic mail)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 881 M 0.154 0 (services. Interoperability of vCard information over SMTP/MIME transports can be better)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 935 M 0.181 0 (assured by following a common set of recommended practices for encapsulation of the vCard.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_50) cvn F4 50 xF F4_50 Ji 371 1040 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 413 1040 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 441 1040 M 0.100 0 (.)A 15.900 0 32 0.200 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 513 1040 M 0.237 0 (Text/Plain Content Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1155 M 0.185 0 (Without any change to existing SMTP or MIME compliant user agents, a vCard can be)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1209 M 0.205 0 (included within Internet email messages. This might be the case for an existing, simple user)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1263 M 0.175 0 (agent such as a legacy SMTP mail system. While this approach provides for transport of)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1317 M 0.182 0 (vCards over SMTP services, it does not allow for the end user to take advantage of the full)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1371 M 0.229 0 (capabilities of either the vCard or Internet email \(i.e., MIME\) functionality.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1446 M 0.177 0 (The following demonstrates how a vCard can be included as an epilog to a SMTP message)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1500 M 0.198 0 (made up of a RFC 822 message. This may be an initial method for incorporating vCard objects)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 1554 M 0.095 0 (into SMTP messages.)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F10) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F10_33) cvn F10 33 xF F10_33 Ji 626 1631 M 0.200 0 (Date: Thr, 25 Jan 96 0932 EDT)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1673 M 0.200 0 (From: john.smith@host.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1715 M 0.200 0 (Subject: Re: RFC822 vCard Example)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1757 M 0.200 0 (Sender: john.smith@host.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1799 M 0.200 0 (To: smartin@host2.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1841 M 0.200 0 (Message-ID: )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1925 M 0.200 0 (Steve: Thanks for the call earlier today. I am unable to)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 1967 M 0.200 0 (use your material at this time. Please feel free to contact)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2009 M 0.200 0 (me in the future.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2072 M 0.200 0 (BEGIN:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2114 M 0.200 0 (VERSION:2.1)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2156 M 0.200 0 (N:Smith;John;M.;Mr.;Esq.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2198 M 0.200 0 (TEL;WORK;VOICE;MSG:+1 \(919\) 555-1234)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2240 M 0.200 0 (TEL;WORK;FAX:+1 \(919\) 555-9876)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2282 M 0.200 0 (ADR;WORK;PARCEL;POSTAL;DOM:Suite 101;1 Central St.;Any Town;NC;27654)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2324 M 0.200 0 (END:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 2385 M 0.205 0 (The following example demonstrates how a vCard can be included as a separate text/plain)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 551 2439 M 0.159 0 (content portion within current MIME user agents.)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2516 M 0.200 0 (Date: Fri, 26 Jan 1996 07:53:00 -0500)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2558 M 0.200 0 (From: smartin@host2.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2600 M 0.200 0 (Subject: RE: Text/Plain MIME vCard Example)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2642 M 0.200 0 (To: fdawson@VNET.IBM.COM)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2684 M 0.200 0 (Mime-Version: 1.0)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2726 M 0.200 0 (Content-Type: multipart/mixed; boundary=vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2768 M 0.200 0 (Message-ID: )A ; : 0 0 2391 3229 rc 0 0 0 sco F10_33 Ji 626 2873 M 0.200 0 (--vcard)A ; LH pagesave restore (%%[ Page: 37 ]%%) = %%PageTrailer %%Page: 38 38 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (28)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 476 500 M 0.200 0 (Content-Type:text/plain; charset=us-ascii)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 542 M 0.200 0 (Content-Transfer-Encoding: 7bit)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 605 M 0.200 0 (John: I have looked over my material and feel that you may)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 647 M 0.200 0 (have over looked a couple of appropriate pieces. Please give)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 689 M 0.200 0 (me a call so that we can discuss further.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 752 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 794 M 0.200 0 (Content-Type:text/plain; charset=us-ascii; name=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1436 794 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1456 794 M 0.200 0 (MARTIN.VCF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1656 794 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 899 M 0.200 0 (BEGIN:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 941 M 0.200 0 (VERSION:2.1)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 983 M 0.200 0 (N:Martin;Stephen)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1025 M 0.200 0 (TEL;HOME;VOICE:+1 \(210\) 555-1357)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1067 M 0.200 0 (TEL;HOME;FAX:+1 \(210\) 555-0864)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1109 M 0.200 0 (ADR;WORK;PARCEL;POSTAL;DOM:123 Cliff Ave.;Big Town;CA;97531)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1151 M 0.200 0 (END:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1214 M 0.200 0 (--vcard--)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_50) cvn F6 50 xF F6_50 Ji 221 1305 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 1305 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 1305 M 0.100 0 (.)A 15.900 0 32 0.200 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 1305 M 0.210 0 (Text/X-vCard Content Type)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F8) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 401 1420 M 0.164 0 (A vCard object may also be transferred in a \(RFC 1521\) MIME entity as a non-standard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1474 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 420 1474 M 0.141 0 (text/x-vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 634 1474 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 653 1474 M 0.158 0 ( content-type. This \(RFC 1521\) MIME type maybe useful in those cases where)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1528 M 0.174 0 (the MIME compliant messaging service does not yet support the )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1506 1528 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1525 1528 M 0.193 0 (application/directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1879 1528 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1898 1528 M 0.213 0 ( and)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1582 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 420 1582 M 0.237 0 (multipart/related)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 704 1582 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 723 1582 M 0.202 0 ( MIME content-types and yet the specificity of a calendaring and)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1636 M 0.194 0 (scheduling media type is required.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1711 M 0.182 0 (The following example demonstrates how a vCard can be included as a separate non-standard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 1765 M 0.161 0 (text/x-vCard content portion within current MIME user agents.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1842 M 0.200 0 (Date: Fri, 26 Jan 1996 07:53:00 +0000)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1884 M 0.200 0 (From: smartin@host2.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1926 M 0.200 0 (Subject: RE: Text/x-vCard MIME vCard Example)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1968 M 0.200 0 (To: fdawson@VNET.IBM.COM)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2010 M 0.200 0 (Mime-Version: 1.0)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2052 M 0.200 0 (Content-Type: multipart/mixed; boundary=vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2094 M 0.200 0 (Message-ID: )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2199 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2241 M 0.200 0 (Content-Type:text/plain; charset=us-ascii)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2283 M 0.200 0 (Content-Transfer-Encoding: 7bit)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2346 M 0.200 0 (John: I have looked over my material and feel that you may)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2388 M 0.200 0 (have over looked a couple of appropriate pieces. Please give)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2430 M 0.200 0 (me a call so that we can discuss further.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2493 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2535 M 0.200 0 (Content-Type:text/x-vCard; charset=us-ascii; name=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1476 2535 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1496 2535 M 0.200 0 (MARTIN.VCF)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1696 2535 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2640 M 0.200 0 (BEGIN:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2682 M 0.200 0 (VERSION:2.1N:Martin;Stephen)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2724 M 0.200 0 (TEL;HOME;VOICE:+1 \(210\) 555-1357)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2766 M 0.200 0 (TEL;HOME;FAX:+1 \(210\) 555-0864)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2808 M 0.200 0 (ADR;WORK;PARCEL;POSTAL;DOM:123 Cliff Ave.;Big Town;CA;97531)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2850 M 0.200 0 (END:VCARD)A ; LH pagesave restore (%%[ Page: 38 ]%%) = %%PageTrailer %%Page: 39 39 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.093 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (29)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 626 500 M 0.200 0 (--vcard--)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_50) cvn F6 50 xF F6_50 Ji 371 591 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 413 591 M 0.200 0 (1)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 441 591 M 0.100 0 (.)A 15.900 0 32 0.200 0 (3 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 513 591 M 0.206 0 (Application/Directory Content Type)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F8) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 551 706 M 0.168 0 (The Internet Engineering Task Force \(IETF\) Access and Searching of Internet Directories)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 760 M 0.132 0 (\(ASID\) working group has produced an Internet Draft defining the )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1691 760 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1710 760 M 0.193 0 (application/directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 2064 760 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 814 M 0.199 0 (MIME content type. The current draft name is draft-ietf-asid-mime-direct-01.txt. This)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 868 M 0.175 0 (specification is intended to be aligned with this work. Internet Drafts are working documents)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 922 M 0.164 0 (of an IETF working group, valid for at most six months, and should be considered )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1956 922 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1975 922 M 0.022 0 (works in)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 976 M -0.037 0 (progress)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 693 976 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 712 976 M 0.500 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1051 M 0.156 0 (This MIME content type was designed to be used to transport directory information across)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1105 M 0.224 0 (MIME based electronic mail services. The internet draft is directly applicable to the exchange)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1159 M 0.189 0 (of business card data, such as that defined by the vCard specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1234 M 0.298 0 (The )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-BoldItalic (F10) cvn 0.929 (Times-BoldItalic) cvn /Type1 T (Times-BoldItalic) cvn mF (F10_42) cvn F10 42 xF F10_42 Ji 628 1233 M 0.113 0 (versit)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 722 1234 M 0.500 0 ( )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Bold (F12) cvn 0.929 (Times-Bold) cvn /Type1 T (Times-Bold) cvn mF (F12_42) cvn F12 42 xF F12_42 Ji 733 1233 M 0.066 0 (PDI Team)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 919 1234 M 0.138 0 ( has worked within the IETF ASID Working Group to draft an)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1288 M 0.187 0 (application/directory profile that registers the method for transporting a vCard as an)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1342 M 0.195 0 (application/directory Content-Type. The current draft name is draft-ietf-asid-mime-vcard-)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1396 M 0.190 0 (00.txt. This work is expected to be progressed to a Request For Comment after the publication)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1450 M 0.191 0 (of this version of the vCard specification. In the interim, the following guidelines are provided)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1504 M 0.196 0 (to describe how a vCard might be conveyed using the application/directory draft specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1579 M 0.188 0 (A vCard should be included in a MIME message that has a Content-Type header field value of)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1633 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 570 1633 M 0.237 0 (multipart/related)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 854 1633 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 873 1633 M 0.216 0 (. The vCard is included in the message as the primary body part. The)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1687 M 0.205 0 (position of the body part entity can also be specified with the )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1600 1687 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1619 1687 M 0.165 0 (start=)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1716 1687 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1735 1687 M 0.194 0 ( parameter. This MIME)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1741 M 0.204 0 (body part entity has a Content-Type body part header field value of )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1708 1741 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1727 1741 M 0.193 0 (application/directory)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 2081 1741 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1795 M 0.239 0 (with a )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 667 1795 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 686 1795 M 0.147 0 (profile)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 799 1795 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 818 1795 M 0.256 0 ( parameter value of )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1159 1795 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1178 1795 M 0.144 0 (vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1272 1795 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1291 1795 M 0.183 0 (. Any vCard binary information, such as a logo,)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1849 M 0.210 0 (picture, or digital audio pronunciation can be included inline within the vCard, as is specified)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1903 M 0.197 0 (by the vCard specification. Preferably, the binary information should be extracted from the)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1957 M 0.190 0 (vCard object and contained in the MIME message as secondary body part entities. The binary)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2011 M 0.207 0 (content in the secondary body part entities can be referenced from within the vCard object)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2065 M 0.183 0 (through the use of the )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 932 2065 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 951 2065 M 0.003 0 (VALUE=)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1117 2065 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 1136 2065 M 0.229 0 ( property parameter. In this latter case, the binary)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2119 M 0.160 0 (information should be transformed into a content type nominally supported by MIME user)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2173 M 0.171 0 (agents. For image content, this would be the Graphics Image Format \(GIF\) or Joint Picture)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2227 M 0.139 0 (Encoding Group \(JPEG\) formats. For audio content, this would be the 8-bit mu-law \(PCM\))A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2281 M 0.189 0 (format specified by the MIME specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 2356 M 0.186 0 (The following example defines how this might be specified:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2433 M 0.200 0 (Date: Mon, 29 Jan 96 0830 EDT)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2475 M 0.200 0 (From: john.smith@host.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2517 M 0.200 0 (Subject: Re: MIME application/directory vCard Example)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2559 M 0.200 0 (Sender: john.smith@host.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2601 M 0.200 0 (To: smartin@host2.com)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2643 M 0.200 0 (Message-ID: )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2685 M 0.200 0 (Content-Type: multipart/related; boundary=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1466 2685 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1486 2685 M 0.200 0 (vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1586 2685 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1606 2685 M 0.200 0 (;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 2727 M 0.200 0 (type=application/directory;)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 821 2769 M 0.200 0 (start=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2832 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2874 M 0.200 0 (Content-Type: application/directory; charset=us-ascii;)A ; LH pagesave restore (%%[ Page: 39 ]%%) = %%PageTrailer %%Page: 40 40 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (30)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 671 500 M 0.200 0 (source=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 811 500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 831 500 M 0.200 0 (file:/)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 951 500 M 0.200 0 (/versit.or2)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1171 500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1191 500 M 0.200 0 (; profile=)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1391 500 M 0.200 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1411 500 M 0.200 0 (vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1511 500 M 0.200 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 542 M 0.200 0 (Content-ID: <)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 605 M 0.200 0 (BEGIN:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 647 M 0.200 0 (VERSION:2.1)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 689 M 0.200 0 (N:Smith;John;M.;Mr.;Esq.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 731 M 0.200 0 (TEL;WORK;VOICE;MSG:+1 \(919\) 555-1234)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 773 M 0.200 0 (TEL;CELL:+1 \(919\) 554-6758)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 815 M 0.200 0 (TEL;WORK;FAX:+1 \(919\) 555-9876)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 857 M 0.200 0 (PHOTO;GIF;MIME:<)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 899 M 0.200 0 (ADR;WORK;PARCEL;POSTAL;DOM:Suite 101;1 Central St.;Any Town;NC;27654)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 941 M 0.200 0 (END:VCARD)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1004 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1046 M 0.200 0 (Content-Type: text/plain; charset=us-ascii)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1088 M 0.200 0 (Content-ID: <)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1151 M 0.200 0 (Steve:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1214 M 0.200 0 (I am not in the office today. You may want to try)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1256 M 0.200 0 (reaching me either on my cellular telephone or fax your)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1298 M 0.200 0 (new ideas to my office.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1361 M 0.200 0 (Let\222s setup a face-to-face meeting later this week, after I review)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1403 M 0.200 0 (your updated material. I am including a picture in my business card)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1445 M 0.200 0 (data, since we have not met yet.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1508 M 0.200 0 (-- John)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1571 M 0.200 0 (--vcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1613 M 0.200 0 (Content-Type: image/gif)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1655 M 0.200 0 (Content-ID: <)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1718 M 0.200 0 (...image data would go here...)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1781 M 0.200 0 (--vcard--)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.966 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_58) cvn F6 58 xF F6_58 Ji 221 1892 M -0.248 0 (3)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_58 Ji 269 1892 M 14.124 0 32 -0.248 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_58 Ji 331 1892 M -0.127 0 (Recommended Practice )A ; : 0 0 2391 3229 rc 0 0 0 sco F6_58 Ji 1002 1892 M -0.250 0 (with)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_58 Ji 1117 1892 M -0.175 0 ( HTTP/HTML)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F8) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 401 2021 M 0.143 0 (A vCard object should be transferred over HTTP with the non-standard MIME type/subtype)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2075 M 0.227 0 (value of )A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 550 2075 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 569 2075 M 0.141 0 (text/x-vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 783 2075 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 802 2075 M 0.157 0 (. The non-standard subtype should be used because the vCard has not)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2129 M 0.181 0 (been registered as a MIME media type with the IANA.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2204 M 0.186 0 (The vCard information can be captured with a FORM type of HTML document.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2258 M 0.182 0 (Interoperability of of vCard information can be better assured by following a common set of)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2312 M 0.183 0 (recommended practices for mapping vCard information into and out of HTML documents.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F6_50) cvn F6 50 xF F6_50 Ji 221 2417 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 2417 M 0.200 0 (2)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 2417 M 0.100 0 (.)A 15.900 0 32 0.200 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 2417 M 0.092 0 (Form Element Usage)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2532 M 0.189 0 (The HTML )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Bold (F11) cvn 0.929 (Times-Bold) cvn /Type1 T (Times-Bold) cvn mF (F11_42) cvn F11 42 xF F11_42 Ji 608 2531 M 0.173 0 (FORM)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 737 2532 M 0.212 0 ( element is a useful method for capturing data intended for input into)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2586 M 0.176 0 (individual vCard property values. The following recommended practices are provided for such)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2640 M 0.129 0 (use.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 221 2745 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 263 2745 M 0.200 0 (2)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 291 2745 M 0.100 0 (.)A 15.900 0 32 0.200 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_50 Ji 363 2745 M 0.153 0 (Mapping To INPUT Element Attribute Names)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 401 2860 M 0.191 0 (An HTML form data set is a useful mechanism for capturing vCard data within the Internet)A ; LH pagesave restore (%%[ Page: 40 ]%%) = %%PageTrailer %%Page: 41 41 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.093 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (31)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 551 498 M 0.227 0 (WWW. The use of a consistent naming scheme for the name attributes within a form element)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 552 M 0.199 0 (will permit implementations to support automatic fill-in of forms with existing vCard data. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 606 M 0.193 0 (addition, such a consistent naming scheme will provide a greater assurance of interoperability)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 660 M 0.189 0 (between HTML based applications that use vCard data.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 735 M 0.188 0 (The following table provides a recommended mapping of vCard properties and name attributes)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 551 789 M 0.245 0 (within a form element.)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F6) cvn 0.952 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 1689 862 M 0.049 0 (Identification Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco (F6_33) cvn F6 33 xF F6_33 Ji 558 942 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 975 942 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_33 Ji 1629 942 M -0.166 0 (Comment)A ; 345 912 N M 6 6 rr : 0 0 0 sco O ; 345 912 N M 6 6 rr : 0 0 0 sco O ; 351 912 N M 595 6 rr : 0 0 0 sco O ; 946 912 N M 6 6 rr : 0 0 0 sco O ; 952 912 N M 281 6 rr : 0 0 0 sco O ; 1233 912 N M 6 6 rr : 0 0 0 sco O ; 1239 912 N M 930 6 rr : 0 0 0 sco O ; 2169 912 N M 6 6 rr : 0 0 0 sco O ; 2169 912 N M 6 6 rr : 0 0 0 sco O ; 345 918 N M 6 63 rr : 0 0 0 sco O ; 946 918 N M 6 63 rr : 0 0 0 sco O ; 1233 918 N M 6 63 rr : 0 0 0 sco O ; 2169 918 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco (F4_33) cvn F4 33 xF F4_33 Ji 371 1032 M 0.163 0 (Formatted Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1071 1032 M -0.087 0 (FN)A ; 345 981 N M 6 6 rr : 0 0 0 sco O ; 345 981 N M 6 6 rr : 0 0 0 sco O ; 351 981 N M 6 6 rr : 0 0 0 sco O ; 357 981 N M 589 6 rr : 0 0 0 sco O ; 946 981 N M 6 6 rr : 0 0 0 sco O ; 952 981 N M 6 6 rr : 0 0 0 sco O ; 958 981 N M 275 6 rr : 0 0 0 sco O ; 1233 981 N M 6 6 rr : 0 0 0 sco O ; 1239 981 N M 6 6 rr : 0 0 0 sco O ; 1245 981 N M 924 6 rr : 0 0 0 sco O ; 2169 981 N M 6 6 rr : 0 0 0 sco O ; 2169 981 N M 6 6 rr : 0 0 0 sco O ; 346 987 N M 3 109 rr : 0 0 0 sco O ; 947 987 N M 3 109 rr : 0 0 0 sco O ; 1234 987 N M 3 109 rr : 0 0 0 sco O ; 2170 987 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 371 1144 M 0.299 0 (Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1080 1144 M 0.174 0 (N)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1144 M 0.215 0 (Individual components of name property are captured as separate)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1190 M 0.059 0 (input elements with the names N.Family, N.First, N.Middle,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1236 M -0.003 0 (N.Prefix, N.Suffix.)A ; 346 1096 N M 3 3 rr : 0 0 0 sco O ; 349 1096 N M 598 3 rr : 0 0 0 sco O ; 947 1096 N M 3 3 rr : 0 0 0 sco O ; 950 1096 N M 284 3 rr : 0 0 0 sco O ; 1234 1096 N M 3 3 rr : 0 0 0 sco O ; 1237 1096 N M 933 3 rr : 0 0 0 sco O ; 2170 1096 N M 3 3 rr : 0 0 0 sco O ; 346 1099 N M 3 176 rr : 0 0 0 sco O ; 947 1099 N M 3 176 rr : 0 0 0 sco O ; 1234 1099 N M 3 176 rr : 0 0 0 sco O ; 2170 1099 N M 3 176 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 371 1323 M 0.284 0 (Photograph)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1037 1323 M 0.002 0 (PHOTO)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1323 M 0.162 0 (Only the URL based specification is supported by this mapping.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1369 M 0.101 0 (Value is the URL for the graphic.)A ; 346 1275 N M 3 3 rr : 0 0 0 sco O ; 349 1275 N M 598 3 rr : 0 0 0 sco O ; 947 1275 N M 3 3 rr : 0 0 0 sco O ; 950 1275 N M 284 3 rr : 0 0 0 sco O ; 1234 1275 N M 3 3 rr : 0 0 0 sco O ; 1237 1275 N M 933 3 rr : 0 0 0 sco O ; 2170 1275 N M 3 3 rr : 0 0 0 sco O ; 346 1278 N M 3 130 rr : 0 0 0 sco O ; 947 1278 N M 3 130 rr : 0 0 0 sco O ; 1234 1278 N M 3 130 rr : 0 0 0 sco O ; 2170 1278 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 371 1456 M 0.190 0 (Photograph Format Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 999 1456 M 0.095 0 (PHOTO.Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1456 M 0.171 0 (Where the value is one of the enumerated strings defined by the)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1259 1502 M 0.161 0 (vCard specification.)A ; 346 1408 N M 3 3 rr : 0 0 0 sco O ; 349 1408 N M 598 3 rr : 0 0 0 sco O ; 947 1408 N M 3 3 rr : 0 0 0 sco O ; 950 1408 N M 284 3 rr : 0 0 0 sco O ; 1234 1408 N M 3 3 rr : 0 0 0 sco O ; 1237 1408 N M 933 3 rr : 0 0 0 sco O ; 2170 1408 N M 3 3 rr : 0 0 0 sco O ; 346 1411 N M 3 130 rr : 0 0 0 sco O ; 947 1411 N M 3 130 rr : 0 0 0 sco O ; 1234 1411 N M 3 130 rr : 0 0 0 sco O ; 2170 1411 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 371 1589 M 0.130 0 (Birthdate)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1045 1589 M 0.128 0 (BDAY)A ; 346 1541 N M 3 3 rr : 0 0 0 sco O ; 349 1541 N M 598 3 rr : 0 0 0 sco O ; 947 1541 N M 3 3 rr : 0 0 0 sco O ; 950 1541 N M 284 3 rr : 0 0 0 sco O ; 1234 1541 N M 3 3 rr : 0 0 0 sco O ; 1237 1541 N M 933 3 rr : 0 0 0 sco O ; 2170 1541 N M 3 3 rr : 0 0 0 sco O ; 346 1544 N M 3 109 rr : 0 0 0 sco O ; 346 1653 N M 3 3 rr : 0 0 0 sco O ; 346 1653 N M 3 3 rr : 0 0 0 sco O ; 349 1653 N M 598 3 rr : 0 0 0 sco O ; 947 1544 N M 3 109 rr : 0 0 0 sco O ; 947 1653 N M 3 3 rr : 0 0 0 sco O ; 950 1653 N M 284 3 rr : 0 0 0 sco O ; 1234 1544 N M 3 109 rr : 0 0 0 sco O ; 1234 1653 N M 3 3 rr : 0 0 0 sco O ; 1237 1653 N M 933 3 rr : 0 0 0 sco O ; 2170 1544 N M 3 109 rr : 0 0 0 sco O ; 2170 1653 N M 3 3 rr : 0 0 0 sco O ; 2170 1653 N M 3 3 rr : 0 0 0 sco O ; LH pagesave restore (%%[ Page: 41 ]%%) = %%PageTrailer %%Page: 42 42 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (32)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.952 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 1397 517 M -0.052 0 (Delivery Addressing Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_33) cvn F4 33 xF F4_33 Ji 408 597 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 825 597 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1479 597 M -0.166 0 (Comment)A ; 195 567 N M 6 6 rr : 0 0 0 sco O ; 195 567 N M 6 6 rr : 0 0 0 sco O ; 201 567 N M 595 6 rr : 0 0 0 sco O ; 796 567 N M 6 6 rr : 0 0 0 sco O ; 802 567 N M 281 6 rr : 0 0 0 sco O ; 1083 567 N M 6 6 rr : 0 0 0 sco O ; 1089 567 N M 930 6 rr : 0 0 0 sco O ; 2019 567 N M 6 6 rr : 0 0 0 sco O ; 2019 567 N M 6 6 rr : 0 0 0 sco O ; 195 573 N M 6 63 rr : 0 0 0 sco O ; 796 573 N M 6 63 rr : 0 0 0 sco O ; 1083 573 N M 6 63 rr : 0 0 0 sco O ; 2019 573 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.909 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_33) cvn F7 33 xF F7_33 Ji 221 687 M 0.196 0 (Delivery Address)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 907 687 M 0.112 0 (ADR)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 687 M -0.019 0 (TYPE=TEXTAREA)A ; 195 636 N M 6 6 rr : 0 0 0 sco O ; 195 636 N M 6 6 rr : 0 0 0 sco O ; 201 636 N M 6 6 rr : 0 0 0 sco O ; 207 636 N M 589 6 rr : 0 0 0 sco O ; 796 636 N M 6 6 rr : 0 0 0 sco O ; 802 636 N M 6 6 rr : 0 0 0 sco O ; 808 636 N M 275 6 rr : 0 0 0 sco O ; 1083 636 N M 6 6 rr : 0 0 0 sco O ; 1089 636 N M 6 6 rr : 0 0 0 sco O ; 1095 636 N M 924 6 rr : 0 0 0 sco O ; 2019 636 N M 6 6 rr : 0 0 0 sco O ; 2019 636 N M 6 6 rr : 0 0 0 sco O ; 196 642 N M 3 109 rr : 0 0 0 sco O ; 797 642 N M 3 109 rr : 0 0 0 sco O ; 1084 642 N M 3 109 rr : 0 0 0 sco O ; 2020 642 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 799 M 0.233 0 (Address Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 895 799 M 0.117 0 (ADR.x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 799 M 0.121 0 (TYPE=CHECKBOX. Separate input elements are used to capture)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 845 M 0.153 0 (the possible delivery types. The elements are named ADR.x,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 891 M 0.176 0 (where x is one of the enumerated strings defined by the vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 937 M 0.151 0 (specification.)A ; 196 751 N M 3 3 rr : 0 0 0 sco O ; 199 751 N M 598 3 rr : 0 0 0 sco O ; 797 751 N M 3 3 rr : 0 0 0 sco O ; 800 751 N M 284 3 rr : 0 0 0 sco O ; 1084 751 N M 3 3 rr : 0 0 0 sco O ; 1087 751 N M 933 3 rr : 0 0 0 sco O ; 2020 751 N M 3 3 rr : 0 0 0 sco O ; 196 754 N M 3 222 rr : 0 0 0 sco O ; 797 754 N M 3 222 rr : 0 0 0 sco O ; 1084 754 N M 3 222 rr : 0 0 0 sco O ; 2020 754 N M 3 222 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1024 M 0.153 0 (Delivery Label)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 889 1024 M -0.065 0 (LABEL)A ; 196 976 N M 3 3 rr : 0 0 0 sco O ; 199 976 N M 598 3 rr : 0 0 0 sco O ; 797 976 N M 3 3 rr : 0 0 0 sco O ; 800 976 N M 284 3 rr : 0 0 0 sco O ; 1084 976 N M 3 3 rr : 0 0 0 sco O ; 1087 976 N M 933 3 rr : 0 0 0 sco O ; 2020 976 N M 3 3 rr : 0 0 0 sco O ; 196 979 N M 3 109 rr : 0 0 0 sco O ; 797 979 N M 3 109 rr : 0 0 0 sco O ; 1084 979 N M 3 109 rr : 0 0 0 sco O ; 2020 979 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1136 M 0.179 0 (Label Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 877 1136 M -0.011 0 (LABEL.x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1136 M 0.121 0 (TYPE=CHECKBOX. Separate input elements are used to capture)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1182 M 0.137 0 (the possible delivery types. The elements are named LABEL.x,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1228 M 0.176 0 (where x is one of the enumerated strings defined by the vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1274 M 0.151 0 (specification.)A ; 196 1088 N M 3 3 rr : 0 0 0 sco O ; 199 1088 N M 598 3 rr : 0 0 0 sco O ; 797 1088 N M 3 3 rr : 0 0 0 sco O ; 800 1088 N M 284 3 rr : 0 0 0 sco O ; 1084 1088 N M 3 3 rr : 0 0 0 sco O ; 1087 1088 N M 933 3 rr : 0 0 0 sco O ; 2020 1088 N M 3 3 rr : 0 0 0 sco O ; 196 1091 N M 3 222 rr : 0 0 0 sco O ; 196 1313 N M 3 3 rr : 0 0 0 sco O ; 196 1313 N M 3 3 rr : 0 0 0 sco O ; 199 1313 N M 598 3 rr : 0 0 0 sco O ; 797 1091 N M 3 222 rr : 0 0 0 sco O ; 797 1313 N M 3 3 rr : 0 0 0 sco O ; 800 1313 N M 284 3 rr : 0 0 0 sco O ; 1084 1091 N M 3 222 rr : 0 0 0 sco O ; 1084 1313 N M 3 3 rr : 0 0 0 sco O ; 1087 1313 N M 933 3 rr : 0 0 0 sco O ; 2020 1091 N M 3 222 rr : 0 0 0 sco O ; 2020 1313 N M 3 3 rr : 0 0 0 sco O ; 2020 1313 N M 3 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1141 1416 M 0.003 0 (Telecommunications Addressing Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 408 1496 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 825 1496 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1479 1496 M -0.166 0 (Comment)A ; 195 1466 N M 6 6 rr : 0 0 0 sco O ; 195 1466 N M 6 6 rr : 0 0 0 sco O ; 201 1466 N M 595 6 rr : 0 0 0 sco O ; 796 1466 N M 6 6 rr : 0 0 0 sco O ; 802 1466 N M 281 6 rr : 0 0 0 sco O ; 1083 1466 N M 6 6 rr : 0 0 0 sco O ; 1089 1466 N M 930 6 rr : 0 0 0 sco O ; 2019 1466 N M 6 6 rr : 0 0 0 sco O ; 2019 1466 N M 6 6 rr : 0 0 0 sco O ; 195 1472 N M 6 63 rr : 0 0 0 sco O ; 796 1472 N M 6 63 rr : 0 0 0 sco O ; 1083 1472 N M 6 63 rr : 0 0 0 sco O ; 2019 1472 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1586 M 0.270 0 (Telephone Number)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 912 1586 M -0.163 0 (TEL)A ; 195 1535 N M 6 6 rr : 0 0 0 sco O ; 195 1535 N M 6 6 rr : 0 0 0 sco O ; 201 1535 N M 6 6 rr : 0 0 0 sco O ; 207 1535 N M 589 6 rr : 0 0 0 sco O ; 796 1535 N M 6 6 rr : 0 0 0 sco O ; 802 1535 N M 6 6 rr : 0 0 0 sco O ; 808 1535 N M 275 6 rr : 0 0 0 sco O ; 1083 1535 N M 6 6 rr : 0 0 0 sco O ; 1089 1535 N M 6 6 rr : 0 0 0 sco O ; 1095 1535 N M 924 6 rr : 0 0 0 sco O ; 2019 1535 N M 6 6 rr : 0 0 0 sco O ; 2019 1535 N M 6 6 rr : 0 0 0 sco O ; 196 1541 N M 3 109 rr : 0 0 0 sco O ; 797 1541 N M 3 109 rr : 0 0 0 sco O ; 1084 1541 N M 3 109 rr : 0 0 0 sco O ; 2020 1541 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1698 M 0.260 0 (Telephone Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 900 1698 M -0.048 0 (TEL.x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1698 M 0.121 0 (TYPE=CHECKBOX. Separate input elements are used to capture)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1744 M 0.151 0 (the possible telephone types. The elements are named TEL.x,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1790 M 0.176 0 (where x is one of the enumerated strings defined by the vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 1836 M 0.151 0 (specification.)A ; 196 1650 N M 3 3 rr : 0 0 0 sco O ; 199 1650 N M 598 3 rr : 0 0 0 sco O ; 797 1650 N M 3 3 rr : 0 0 0 sco O ; 800 1650 N M 284 3 rr : 0 0 0 sco O ; 1084 1650 N M 3 3 rr : 0 0 0 sco O ; 1087 1650 N M 933 3 rr : 0 0 0 sco O ; 2020 1650 N M 3 3 rr : 0 0 0 sco O ; 196 1653 N M 3 222 rr : 0 0 0 sco O ; 797 1653 N M 3 222 rr : 0 0 0 sco O ; 1084 1653 N M 3 222 rr : 0 0 0 sco O ; 2020 1653 N M 3 222 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1923 M 0.104 0 (Electronic Mail Address)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 890 1923 M -0.096 0 (EMAIL)A ; 196 1875 N M 3 3 rr : 0 0 0 sco O ; 199 1875 N M 598 3 rr : 0 0 0 sco O ; 797 1875 N M 3 3 rr : 0 0 0 sco O ; 800 1875 N M 284 3 rr : 0 0 0 sco O ; 1084 1875 N M 3 3 rr : 0 0 0 sco O ; 1087 1875 N M 933 3 rr : 0 0 0 sco O ; 2020 1875 N M 3 3 rr : 0 0 0 sco O ; 196 1878 N M 3 109 rr : 0 0 0 sco O ; 797 1878 N M 3 109 rr : 0 0 0 sco O ; 1084 1878 N M 3 109 rr : 0 0 0 sco O ; 2020 1878 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2035 M 0.119 0 (Electronic Mail Address Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 852 2035 M 0.046 0 (EMAIL.Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1109 2035 M 0.095 0 (Selection option from a list of alternatives.)A ; 196 1987 N M 3 3 rr : 0 0 0 sco O ; 199 1987 N M 598 3 rr : 0 0 0 sco O ; 797 1987 N M 3 3 rr : 0 0 0 sco O ; 800 1987 N M 284 3 rr : 0 0 0 sco O ; 1084 1987 N M 3 3 rr : 0 0 0 sco O ; 1087 1987 N M 933 3 rr : 0 0 0 sco O ; 2020 1987 N M 3 3 rr : 0 0 0 sco O ; 196 1990 N M 3 109 rr : 0 0 0 sco O ; 797 1990 N M 3 109 rr : 0 0 0 sco O ; 1084 1990 N M 3 109 rr : 0 0 0 sco O ; 2020 1990 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2147 M 0.004 0 (Mailer)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 879 2147 M -0.082 0 (MAILER)A ; 196 2099 N M 3 3 rr : 0 0 0 sco O ; 199 2099 N M 598 3 rr : 0 0 0 sco O ; 797 2099 N M 3 3 rr : 0 0 0 sco O ; 800 2099 N M 284 3 rr : 0 0 0 sco O ; 1084 2099 N M 3 3 rr : 0 0 0 sco O ; 1087 2099 N M 933 3 rr : 0 0 0 sco O ; 2020 2099 N M 3 3 rr : 0 0 0 sco O ; 196 2102 N M 3 109 rr : 0 0 0 sco O ; 196 2211 N M 3 3 rr : 0 0 0 sco O ; 196 2211 N M 3 3 rr : 0 0 0 sco O ; 199 2211 N M 598 3 rr : 0 0 0 sco O ; 797 2102 N M 3 109 rr : 0 0 0 sco O ; 797 2211 N M 3 3 rr : 0 0 0 sco O ; 800 2211 N M 284 3 rr : 0 0 0 sco O ; 1084 2102 N M 3 109 rr : 0 0 0 sco O ; 1084 2211 N M 3 3 rr : 0 0 0 sco O ; 1087 2211 N M 933 3 rr : 0 0 0 sco O ; 2020 2102 N M 3 109 rr : 0 0 0 sco O ; 2020 2211 N M 3 3 rr : 0 0 0 sco O ; 2020 2211 N M 3 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1533 2314 M 0.007 0 (Geographical Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 408 2394 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 825 2394 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1479 2394 M -0.166 0 (Comment)A ; 195 2364 N M 6 6 rr : 0 0 0 sco O ; 195 2364 N M 6 6 rr : 0 0 0 sco O ; 201 2364 N M 595 6 rr : 0 0 0 sco O ; 796 2364 N M 6 6 rr : 0 0 0 sco O ; 802 2364 N M 281 6 rr : 0 0 0 sco O ; 1083 2364 N M 6 6 rr : 0 0 0 sco O ; 1089 2364 N M 930 6 rr : 0 0 0 sco O ; 2019 2364 N M 6 6 rr : 0 0 0 sco O ; 2019 2364 N M 6 6 rr : 0 0 0 sco O ; 195 2370 N M 6 63 rr : 0 0 0 sco O ; 796 2370 N M 6 63 rr : 0 0 0 sco O ; 1083 2370 N M 6 63 rr : 0 0 0 sco O ; 2019 2370 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2484 M 0.141 0 (Time Zone)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 922 2484 M -0.163 0 (TZ)A ; 195 2433 N M 6 6 rr : 0 0 0 sco O ; 195 2433 N M 6 6 rr : 0 0 0 sco O ; 201 2433 N M 6 6 rr : 0 0 0 sco O ; 207 2433 N M 589 6 rr : 0 0 0 sco O ; 796 2433 N M 6 6 rr : 0 0 0 sco O ; 802 2433 N M 6 6 rr : 0 0 0 sco O ; 808 2433 N M 275 6 rr : 0 0 0 sco O ; 1083 2433 N M 6 6 rr : 0 0 0 sco O ; 1089 2433 N M 6 6 rr : 0 0 0 sco O ; 1095 2433 N M 924 6 rr : 0 0 0 sco O ; 2019 2433 N M 6 6 rr : 0 0 0 sco O ; 2019 2433 N M 6 6 rr : 0 0 0 sco O ; 196 2439 N M 3 109 rr : 0 0 0 sco O ; 797 2439 N M 3 109 rr : 0 0 0 sco O ; 1084 2439 N M 3 109 rr : 0 0 0 sco O ; 2020 2439 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2596 M 0.189 0 (Geographic Position)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 908 2596 M 0.062 0 (GEO)A ; 196 2548 N M 3 3 rr : 0 0 0 sco O ; 199 2548 N M 598 3 rr : 0 0 0 sco O ; 797 2548 N M 3 3 rr : 0 0 0 sco O ; 800 2548 N M 284 3 rr : 0 0 0 sco O ; 1084 2548 N M 3 3 rr : 0 0 0 sco O ; 1087 2548 N M 933 3 rr : 0 0 0 sco O ; 2020 2548 N M 3 3 rr : 0 0 0 sco O ; 196 2551 N M 3 109 rr : 0 0 0 sco O ; 196 2660 N M 3 3 rr : 0 0 0 sco O ; 196 2660 N M 3 3 rr : 0 0 0 sco O ; 199 2660 N M 598 3 rr : 0 0 0 sco O ; 797 2551 N M 3 109 rr : 0 0 0 sco O ; 797 2660 N M 3 3 rr : 0 0 0 sco O ; 800 2660 N M 284 3 rr : 0 0 0 sco O ; 1084 2551 N M 3 109 rr : 0 0 0 sco O ; 1084 2660 N M 3 3 rr : 0 0 0 sco O ; 1087 2660 N M 933 3 rr : 0 0 0 sco O ; 2020 2551 N M 3 109 rr : 0 0 0 sco O ; 2020 2660 N M 3 3 rr : 0 0 0 sco O ; 2020 2660 N M 3 3 rr : 0 0 0 sco O ; LH pagesave restore (%%[ Page: 42 ]%%) = %%PageTrailer %%Page: 43 43 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.093 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (33)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.952 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 1659 517 M 0.034 0 (Organizational Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_33) cvn F4 33 xF F4_33 Ji 558 597 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 975 597 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1629 597 M -0.166 0 (Comment)A ; 345 567 N M 6 6 rr : 0 0 0 sco O ; 345 567 N M 6 6 rr : 0 0 0 sco O ; 351 567 N M 595 6 rr : 0 0 0 sco O ; 946 567 N M 6 6 rr : 0 0 0 sco O ; 952 567 N M 281 6 rr : 0 0 0 sco O ; 1233 567 N M 6 6 rr : 0 0 0 sco O ; 1239 567 N M 930 6 rr : 0 0 0 sco O ; 2169 567 N M 6 6 rr : 0 0 0 sco O ; 2169 567 N M 6 6 rr : 0 0 0 sco O ; 345 573 N M 6 63 rr : 0 0 0 sco O ; 946 573 N M 6 63 rr : 0 0 0 sco O ; 1233 573 N M 6 63 rr : 0 0 0 sco O ; 2169 573 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.909 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_33) cvn F7 33 xF F7_33 Ji 371 687 M -0.067 0 (Title)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1047 687 M -0.128 0 (TITLE)A ; 345 636 N M 6 6 rr : 0 0 0 sco O ; 345 636 N M 6 6 rr : 0 0 0 sco O ; 351 636 N M 6 6 rr : 0 0 0 sco O ; 357 636 N M 589 6 rr : 0 0 0 sco O ; 946 636 N M 6 6 rr : 0 0 0 sco O ; 952 636 N M 6 6 rr : 0 0 0 sco O ; 958 636 N M 275 6 rr : 0 0 0 sco O ; 1233 636 N M 6 6 rr : 0 0 0 sco O ; 1239 636 N M 6 6 rr : 0 0 0 sco O ; 1245 636 N M 924 6 rr : 0 0 0 sco O ; 2169 636 N M 6 6 rr : 0 0 0 sco O ; 2169 636 N M 6 6 rr : 0 0 0 sco O ; 346 642 N M 3 109 rr : 0 0 0 sco O ; 947 642 N M 3 109 rr : 0 0 0 sco O ; 1234 642 N M 3 109 rr : 0 0 0 sco O ; 2170 642 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 371 799 M 0.201 0 (Business Category)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1049 799 M -0.041 0 (ROLE)A ; 346 751 N M 3 3 rr : 0 0 0 sco O ; 349 751 N M 598 3 rr : 0 0 0 sco O ; 947 751 N M 3 3 rr : 0 0 0 sco O ; 950 751 N M 284 3 rr : 0 0 0 sco O ; 1234 751 N M 3 3 rr : 0 0 0 sco O ; 1237 751 N M 933 3 rr : 0 0 0 sco O ; 2170 751 N M 3 3 rr : 0 0 0 sco O ; 346 754 N M 3 109 rr : 0 0 0 sco O ; 947 754 N M 3 109 rr : 0 0 0 sco O ; 1234 754 N M 3 109 rr : 0 0 0 sco O ; 2170 754 N M 3 109 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 371 911 M 0.334 0 (Logo)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1046 911 M 0.090 0 (LOGO)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 911 M 0.162 0 (Only the URL based specification is supported by this mapping.)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 957 M 0.101 0 (Value is the URL for the graphic.)A ; 346 863 N M 3 3 rr : 0 0 0 sco O ; 349 863 N M 598 3 rr : 0 0 0 sco O ; 947 863 N M 3 3 rr : 0 0 0 sco O ; 950 863 N M 284 3 rr : 0 0 0 sco O ; 1234 863 N M 3 3 rr : 0 0 0 sco O ; 1237 863 N M 933 3 rr : 0 0 0 sco O ; 2170 863 N M 3 3 rr : 0 0 0 sco O ; 346 866 N M 3 130 rr : 0 0 0 sco O ; 947 866 N M 3 130 rr : 0 0 0 sco O ; 1234 866 N M 3 130 rr : 0 0 0 sco O ; 2170 866 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 371 1044 M 0.168 0 (Logo Format Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1008 1044 M 0.144 0 (LOGO.Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1044 M 0.171 0 (Where the value is one of the enumerated strings defined by the)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1090 M 0.161 0 (vCard specification.)A ; 346 996 N M 3 3 rr : 0 0 0 sco O ; 349 996 N M 598 3 rr : 0 0 0 sco O ; 947 996 N M 3 3 rr : 0 0 0 sco O ; 950 996 N M 284 3 rr : 0 0 0 sco O ; 1234 996 N M 3 3 rr : 0 0 0 sco O ; 1237 996 N M 933 3 rr : 0 0 0 sco O ; 2170 996 N M 3 3 rr : 0 0 0 sco O ; 346 999 N M 3 130 rr : 0 0 0 sco O ; 947 999 N M 3 130 rr : 0 0 0 sco O ; 1234 999 N M 3 130 rr : 0 0 0 sco O ; 2170 999 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 371 1177 M 0.270 0 (Agent)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1177 M 0.201 0 (Captured through a separate form element using the mapping)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1223 M 0.148 0 (defined in these tables.)A ; 346 1129 N M 3 3 rr : 0 0 0 sco O ; 349 1129 N M 598 3 rr : 0 0 0 sco O ; 947 1129 N M 3 3 rr : 0 0 0 sco O ; 950 1129 N M 284 3 rr : 0 0 0 sco O ; 1234 1129 N M 3 3 rr : 0 0 0 sco O ; 1237 1129 N M 933 3 rr : 0 0 0 sco O ; 2170 1129 N M 3 3 rr : 0 0 0 sco O ; 346 1132 N M 3 130 rr : 0 0 0 sco O ; 947 1132 N M 3 130 rr : 0 0 0 sco O ; 1234 1132 N M 3 130 rr : 0 0 0 sco O ; 2170 1132 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 371 1310 M 0.226 0 (Organization)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1057 1310 M 0.112 0 (ORG)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1310 M 0.113 0 (TYPE=TEXT. Separate input elements for the organizational)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1356 M 0.157 0 (name and unit. The name ORG.Name is used to capture the)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1402 M 0.149 0 (organizational name. The name ORG.UNIT is used to capture the)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1448 M 0.107 0 (organizational unit. If there are multiple organizational units, it is)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1494 M 0.114 0 (captured in a form with name attributes ORG.UNIT1,)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1259 1540 M 0.037 0 (ORG.UNIT2, etc.)A ; 346 1262 N M 3 3 rr : 0 0 0 sco O ; 349 1262 N M 598 3 rr : 0 0 0 sco O ; 947 1262 N M 3 3 rr : 0 0 0 sco O ; 950 1262 N M 284 3 rr : 0 0 0 sco O ; 1234 1262 N M 3 3 rr : 0 0 0 sco O ; 1237 1262 N M 933 3 rr : 0 0 0 sco O ; 2170 1262 N M 3 3 rr : 0 0 0 sco O ; 346 1265 N M 3 314 rr : 0 0 0 sco O ; 346 1579 N M 3 3 rr : 0 0 0 sco O ; 346 1579 N M 3 3 rr : 0 0 0 sco O ; 349 1579 N M 598 3 rr : 0 0 0 sco O ; 947 1265 N M 3 314 rr : 0 0 0 sco O ; 947 1579 N M 3 3 rr : 0 0 0 sco O ; 950 1579 N M 284 3 rr : 0 0 0 sco O ; 1234 1265 N M 3 314 rr : 0 0 0 sco O ; 1234 1579 N M 3 3 rr : 0 0 0 sco O ; 1237 1579 N M 933 3 rr : 0 0 0 sco O ; 2170 1265 N M 3 314 rr : 0 0 0 sco O ; 2170 1579 N M 3 3 rr : 0 0 0 sco O ; 2170 1579 N M 3 3 rr : 0 0 0 sco O ; LH pagesave restore (%%[ Page: 43 ]%%) = %%PageTrailer %%Page: 44 44 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (34)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.952 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 1562 517 M -0.037 0 (Explanatory Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_33) cvn F4 33 xF F4_33 Ji 523 597 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1054 597 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1601 597 M -0.166 0 (Comment)A ; 195 567 N M 6 6 rr : 0 0 0 sco O ; 195 567 N M 6 6 rr : 0 0 0 sco O ; 201 567 N M 823 6 rr : 0 0 0 sco O ; 1024 567 N M 6 6 rr : 0 0 0 sco O ; 1030 567 N M 282 6 rr : 0 0 0 sco O ; 1312 567 N M 6 6 rr : 0 0 0 sco O ; 1318 567 N M 719 6 rr : 0 0 0 sco O ; 2037 567 N M 6 6 rr : 0 0 0 sco O ; 2037 567 N M 6 6 rr : 0 0 0 sco O ; 195 573 N M 6 63 rr : 0 0 0 sco O ; 1024 573 N M 6 63 rr : 0 0 0 sco O ; 1312 573 N M 6 63 rr : 0 0 0 sco O ; 2037 573 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F7) cvn 0.909 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F7_33) cvn F7 33 xF F7_33 Ji 221 687 M 0.259 0 (Comment)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 687 M 0.006 0 (NOTE)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 687 M -0.047 0 (TYPE=TEXT)A ; 195 636 N M 6 6 rr : 0 0 0 sco O ; 195 636 N M 6 6 rr : 0 0 0 sco O ; 201 636 N M 6 6 rr : 0 0 0 sco O ; 207 636 N M 817 6 rr : 0 0 0 sco O ; 1024 636 N M 6 6 rr : 0 0 0 sco O ; 1030 636 N M 6 6 rr : 0 0 0 sco O ; 1036 636 N M 276 6 rr : 0 0 0 sco O ; 1312 636 N M 6 6 rr : 0 0 0 sco O ; 1318 636 N M 6 6 rr : 0 0 0 sco O ; 1324 636 N M 713 6 rr : 0 0 0 sco O ; 2037 636 N M 6 6 rr : 0 0 0 sco O ; 2037 636 N M 6 6 rr : 0 0 0 sco O ; 196 642 N M 3 84 rr : 0 0 0 sco O ; 1025 642 N M 3 84 rr : 0 0 0 sco O ; 1313 642 N M 3 84 rr : 0 0 0 sco O ; 2038 642 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 774 M 0.121 0 (Last Revision)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 774 M (REV)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 774 M 0.141 0 (A hidden field.)A ; 196 726 N M 3 3 rr : 0 0 0 sco O ; 199 726 N M 826 3 rr : 0 0 0 sco O ; 1025 726 N M 3 3 rr : 0 0 0 sco O ; 1028 726 N M 285 3 rr : 0 0 0 sco O ; 1313 726 N M 3 3 rr : 0 0 0 sco O ; 1316 726 N M 722 3 rr : 0 0 0 sco O ; 2038 726 N M 3 3 rr : 0 0 0 sco O ; 196 729 N M 3 84 rr : 0 0 0 sco O ; 1025 729 N M 3 84 rr : 0 0 0 sco O ; 1313 729 N M 3 84 rr : 0 0 0 sco O ; 2038 729 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 861 M 0.217 0 (Version)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 861 M 0.002 0 (VERSION)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 861 M 0.113 0 (A hidden field with the value set to the string)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 907 M 0.348 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1352 907 M 0.250 0 (2.1)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1394 907 M 0.348 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1409 907 M -0.250 0 (.)A ; 196 813 N M 3 3 rr : 0 0 0 sco O ; 199 813 N M 826 3 rr : 0 0 0 sco O ; 1025 813 N M 3 3 rr : 0 0 0 sco O ; 1028 813 N M 285 3 rr : 0 0 0 sco O ; 1313 813 N M 3 3 rr : 0 0 0 sco O ; 1316 813 N M 722 3 rr : 0 0 0 sco O ; 2038 813 N M 3 3 rr : 0 0 0 sco O ; 196 816 N M 3 130 rr : 0 0 0 sco O ; 1025 816 N M 3 130 rr : 0 0 0 sco O ; 1313 816 N M 3 130 rr : 0 0 0 sco O ; 2038 816 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 994 M 0.360 0 (Language)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 994 M 0.090 0 (LANG)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 994 M 0.113 0 (A hidden field with the value set to the string)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1040 M 0.174 0 (associated with the default language used in the)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1086 M 0.070 0 (form \(e.g., US-eng\).)A ; 196 946 N M 3 3 rr : 0 0 0 sco O ; 199 946 N M 826 3 rr : 0 0 0 sco O ; 1025 946 N M 3 3 rr : 0 0 0 sco O ; 1028 946 N M 285 3 rr : 0 0 0 sco O ; 1313 946 N M 3 3 rr : 0 0 0 sco O ; 1316 946 N M 722 3 rr : 0 0 0 sco O ; 2038 946 N M 3 3 rr : 0 0 0 sco O ; 196 949 N M 3 176 rr : 0 0 0 sco O ; 1025 949 N M 3 176 rr : 0 0 0 sco O ; 1313 949 N M 3 176 rr : 0 0 0 sco O ; 2038 949 N M 3 176 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1173 M 0.330 0 (Sound)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1173 M 0.070 0 (SOUND)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1173 M -0.047 0 (TYPE=TEXT)A ; 196 1125 N M 3 3 rr : 0 0 0 sco O ; 199 1125 N M 826 3 rr : 0 0 0 sco O ; 1025 1125 N M 3 3 rr : 0 0 0 sco O ; 1028 1125 N M 285 3 rr : 0 0 0 sco O ; 1313 1125 N M 3 3 rr : 0 0 0 sco O ; 1316 1125 N M 722 3 rr : 0 0 0 sco O ; 2038 1125 N M 3 3 rr : 0 0 0 sco O ; 196 1128 N M 3 84 rr : 0 0 0 sco O ; 1025 1128 N M 3 84 rr : 0 0 0 sco O ; 1313 1128 N M 3 84 rr : 0 0 0 sco O ; 2038 1128 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1260 M 0.259 0 (Sound Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1260 M 0.058 0 (N/A)A ; 196 1212 N M 3 3 rr : 0 0 0 sco O ; 199 1212 N M 826 3 rr : 0 0 0 sco O ; 1025 1212 N M 3 3 rr : 0 0 0 sco O ; 1028 1212 N M 285 3 rr : 0 0 0 sco O ; 1313 1212 N M 3 3 rr : 0 0 0 sco O ; 1316 1212 N M 722 3 rr : 0 0 0 sco O ; 2038 1212 N M 3 3 rr : 0 0 0 sco O ; 196 1215 N M 3 84 rr : 0 0 0 sco O ; 1025 1215 N M 3 84 rr : 0 0 0 sco O ; 1313 1215 N M 3 84 rr : 0 0 0 sco O ; 2038 1215 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1347 M 0.184 0 (Uniform Resource Locator)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1347 M (URL)S ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1347 M -0.047 0 (TYPE=TEXT)A ; 196 1299 N M 3 3 rr : 0 0 0 sco O ; 199 1299 N M 826 3 rr : 0 0 0 sco O ; 1025 1299 N M 3 3 rr : 0 0 0 sco O ; 1028 1299 N M 285 3 rr : 0 0 0 sco O ; 1313 1299 N M 3 3 rr : 0 0 0 sco O ; 1316 1299 N M 722 3 rr : 0 0 0 sco O ; 2038 1299 N M 3 3 rr : 0 0 0 sco O ; 196 1302 N M 3 84 rr : 0 0 0 sco O ; 1025 1302 N M 3 84 rr : 0 0 0 sco O ; 1313 1302 N M 3 84 rr : 0 0 0 sco O ; 2038 1302 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1434 M 0.165 0 (Unique Identifier)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1434 M 0.120 0 (UID)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1434 M -0.047 0 (TYPE=TEXT)A ; 196 1386 N M 3 3 rr : 0 0 0 sco O ; 199 1386 N M 826 3 rr : 0 0 0 sco O ; 1025 1386 N M 3 3 rr : 0 0 0 sco O ; 1028 1386 N M 285 3 rr : 0 0 0 sco O ; 1313 1386 N M 3 3 rr : 0 0 0 sco O ; 1316 1386 N M 722 3 rr : 0 0 0 sco O ; 2038 1386 N M 3 3 rr : 0 0 0 sco O ; 196 1389 N M 3 84 rr : 0 0 0 sco O ; 1025 1389 N M 3 84 rr : 0 0 0 sco O ; 1313 1389 N M 3 84 rr : 0 0 0 sco O ; 2038 1389 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1521 M 0.229 0 (Binary Encoding)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1521 M 0.019 0 (BE.x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1521 M 0.202 0 (Where x is one of the enumerated encoding types)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1567 M 0.176 0 (defined by the vCard specification.)A ; 196 1473 N M 3 3 rr : 0 0 0 sco O ; 199 1473 N M 826 3 rr : 0 0 0 sco O ; 1025 1473 N M 3 3 rr : 0 0 0 sco O ; 1028 1473 N M 285 3 rr : 0 0 0 sco O ; 1313 1473 N M 3 3 rr : 0 0 0 sco O ; 1316 1473 N M 722 3 rr : 0 0 0 sco O ; 2038 1473 N M 3 3 rr : 0 0 0 sco O ; 196 1476 N M 3 130 rr : 0 0 0 sco O ; 196 1606 N M 3 3 rr : 0 0 0 sco O ; 196 1606 N M 3 3 rr : 0 0 0 sco O ; 199 1606 N M 826 3 rr : 0 0 0 sco O ; 1025 1476 N M 3 130 rr : 0 0 0 sco O ; 1025 1606 N M 3 3 rr : 0 0 0 sco O ; 1028 1606 N M 285 3 rr : 0 0 0 sco O ; 1313 1476 N M 3 130 rr : 0 0 0 sco O ; 1313 1606 N M 3 3 rr : 0 0 0 sco O ; 1316 1606 N M 722 3 rr : 0 0 0 sco O ; 2038 1476 N M 3 130 rr : 0 0 0 sco O ; 2038 1606 N M 3 3 rr : 0 0 0 sco O ; 2038 1606 N M 3 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 1637 1718 M -0.060 0 (Security Properties)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 523 1798 M -0.139 0 (Description)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1054 1798 M -0.108 0 (Attribute Name)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 1601 1798 M -0.166 0 (Comment)A ; 195 1768 N M 6 6 rr : 0 0 0 sco O ; 195 1768 N M 6 6 rr : 0 0 0 sco O ; 201 1768 N M 823 6 rr : 0 0 0 sco O ; 1024 1768 N M 6 6 rr : 0 0 0 sco O ; 1030 1768 N M 282 6 rr : 0 0 0 sco O ; 1312 1768 N M 6 6 rr : 0 0 0 sco O ; 1318 1768 N M 719 6 rr : 0 0 0 sco O ; 2037 1768 N M 6 6 rr : 0 0 0 sco O ; 2037 1768 N M 6 6 rr : 0 0 0 sco O ; 195 1774 N M 6 63 rr : 0 0 0 sco O ; 1024 1774 N M 6 63 rr : 0 0 0 sco O ; 1312 1774 N M 6 63 rr : 0 0 0 sco O ; 2037 1774 N M 6 63 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1888 M 0.142 0 (Public Key)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1888 M 0.062 0 (KEY)A ; 195 1837 N M 6 6 rr : 0 0 0 sco O ; 195 1837 N M 6 6 rr : 0 0 0 sco O ; 201 1837 N M 6 6 rr : 0 0 0 sco O ; 207 1837 N M 817 6 rr : 0 0 0 sco O ; 1024 1837 N M 6 6 rr : 0 0 0 sco O ; 1030 1837 N M 6 6 rr : 0 0 0 sco O ; 1036 1837 N M 276 6 rr : 0 0 0 sco O ; 1312 1837 N M 6 6 rr : 0 0 0 sco O ; 1318 1837 N M 6 6 rr : 0 0 0 sco O ; 1324 1837 N M 713 6 rr : 0 0 0 sco O ; 2037 1837 N M 6 6 rr : 0 0 0 sco O ; 2037 1837 N M 6 6 rr : 0 0 0 sco O ; 196 1843 N M 3 84 rr : 0 0 0 sco O ; 1025 1843 N M 3 84 rr : 0 0 0 sco O ; 1313 1843 N M 3 84 rr : 0 0 0 sco O ; 2038 1843 N M 3 84 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 1975 M 0.245 0 (Key Type)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 1975 M 0.137 0 (KEY.Type.x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 1975 M 0.202 0 (Where x is one of the enumerated encoding types)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 2021 M 0.176 0 (defined by the vCard specification.)A ; 196 1927 N M 3 3 rr : 0 0 0 sco O ; 199 1927 N M 826 3 rr : 0 0 0 sco O ; 1025 1927 N M 3 3 rr : 0 0 0 sco O ; 1028 1927 N M 285 3 rr : 0 0 0 sco O ; 1313 1927 N M 3 3 rr : 0 0 0 sco O ; 1316 1927 N M 722 3 rr : 0 0 0 sco O ; 2038 1927 N M 3 3 rr : 0 0 0 sco O ; 196 1930 N M 3 130 rr : 0 0 0 sco O ; 1025 1930 N M 3 130 rr : 0 0 0 sco O ; 1313 1930 N M 3 130 rr : 0 0 0 sco O ; 2038 1930 N M 3 130 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2108 M -0.109 0 (MISCELLANEOUS PROPERTIES)A ; 196 2060 N M 3 3 rr : 0 0 0 sco O ; 199 2060 N M 826 3 rr : 0 0 0 sco O ; 1025 2060 N M 3 3 rr : 0 0 0 sco O ; 1028 2060 N M 285 3 rr : 0 0 0 sco O ; 1313 2060 N M 3 3 rr : 0 0 0 sco O ; 1316 2060 N M 722 3 rr : 0 0 0 sco O ; 2038 2060 N M 3 3 rr : 0 0 0 sco O ; 196 2063 N M 3 87 rr : 0 0 0 sco O ; 1025 2063 N M 3 87 rr : 0 0 0 sco O ; 1313 2063 N M 3 87 rr : 0 0 0 sco O ; 2038 2063 N M 3 87 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 221 2195 M 0.216 0 (Extensions)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1050 2195 M 0.228 0 (X-x)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 2195 M 0.158 0 (Where x is a string defined by the extension)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_33 Ji 1337 2241 M 0.205 0 (author.)A ; 196 2147 N M 3 3 rr : 0 0 0 sco O ; 199 2147 N M 826 3 rr : 0 0 0 sco O ; 1025 2147 N M 3 3 rr : 0 0 0 sco O ; 1028 2147 N M 285 3 rr : 0 0 0 sco O ; 1313 2147 N M 3 3 rr : 0 0 0 sco O ; 1316 2147 N M 722 3 rr : 0 0 0 sco O ; 2038 2147 N M 3 3 rr : 0 0 0 sco O ; 196 2150 N M 3 130 rr : 0 0 0 sco O ; 196 2280 N M 3 3 rr : 0 0 0 sco O ; 196 2280 N M 3 3 rr : 0 0 0 sco O ; 199 2280 N M 826 3 rr : 0 0 0 sco O ; 1025 2150 N M 3 130 rr : 0 0 0 sco O ; 1025 2280 N M 3 3 rr : 0 0 0 sco O ; 1028 2280 N M 285 3 rr : 0 0 0 sco O ; 1313 2150 N M 3 130 rr : 0 0 0 sco O ; 1313 2280 N M 3 3 rr : 0 0 0 sco O ; 1316 2280 N M 722 3 rr : 0 0 0 sco O ; 2038 2150 N M 3 130 rr : 0 0 0 sco O ; 2038 2280 N M 3 3 rr : 0 0 0 sco O ; 2038 2280 N M 3 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco (F7_42) cvn F7 42 xF F7_42 Ji 401 2385 M 0.202 0 (Where multiple properties \(e.g., telephone numbers\) appear, a label prefix should be used. For)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2439 M 0.255 0 (example, telephone #1 might have a name attribute of )A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1329 2439 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1348 2439 M 0.238 0 (A.TEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1467 2439 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 1486 2439 M 0.249 0 (, telephone #2 might have a)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2493 M 0.253 0 (name attribute of )A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 703 2493 M 0.352 0 (\223)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 722 2493 M 0.300 0 (B.TEL)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 839 2493 M 0.352 0 (\224)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 858 2493 M 0.421 0 (, etc.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_50) cvn F4 50 xF F4_50 Ji 221 2598 M 0.200 0 (3)A 0.100 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 263 2598 M 0.200 0 (2)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 291 2598 M 0.100 0 (.)A 15.900 0 32 0.200 0 (3 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_50 Ji 363 2598 M 0.159 0 (Example HTML Code)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2713 M 0.192 0 (The following HTML code is an example of the use of the mapping of INPUT element)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2767 M 0.208 0 (attributes names to vCard property names. The code can be used to capture input data for)A ; : 0 0 2391 3229 rc 0 0 0 sco F7_42 Ji 401 2821 M 0.239 0 (creating a vCard on a Web homepage.)A ; LH pagesave restore (%%[ Page: 44 ]%%) = %%PageTrailer %%Page: 45 45 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.093 0 (Section 3 : Internet Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (35)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 626 500 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 542 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 584 M 0.200 0 (Create Your Own Versitcard)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 626 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 668 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 710 M 0.200 0 (

Create Your Own Versitcard

)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 752 M 0.200 0 (

Fill out this form and we'll)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 794 M 0.200 0 (create a Versitcard for you and send it to the email address of your)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 836 M 0.200 0 (choice,)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 878 M 0.200 0 (along with more information on the Versitcard format.

)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 920 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 962 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1004 M 0.200 0 (Formatted Name:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1088 M 0.200 0 (Phoenetic Pronunciation:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1172 M 0.200 0 (Company Name:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1256 M 0.200 0 (Company Unit:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1340 M 0.200 0 (Title:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1424 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1466 M 0.200 0 (Family Name:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1550 M 0.200 0 (Given Name:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1634 M 0.200 0 (Middle Name:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1718 M 0.200 0 (Name Prefix:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1802 M 0.200 0 (Name Suffix:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1886 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 1928 M 0.200 0 (Delivery Label:

)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2012 M 0.200 0 (Post Office Address:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2096 M 0.200 0 (Extended Address:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2180 M 0.200 0 (Street Address:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2264 M 0.200 0 (City:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2348 M 0.200 0 (Region:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2432 M 0.200 0 (Postal Code:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2516 M 0.200 0 (Country Name:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2600 M 0.200 0 (Work)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2642 M 0.200 0 (Home)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2684 M 0.200 0 (Parcel Postal
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2768 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2810 M 0.200 0 (TimeZone:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 626 2894 M 0.200 0 (Location:
)A ; LH pagesave restore (%%[ Page: 45 ]%%) = %%PageTrailer %%Page: 46 46 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (36)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Courier-Bold (F4) cvn 0.788 (Courier-Bold) cvn /Type1 T (Courier-Bold) cvn mF (F4_33) cvn F4 33 xF F4_33 Ji 476 500 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 542 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 584 M 0.200 0 (Telephone #1:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 668 M 0.200 0 (Work)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 710 M 0.200 0 (Home)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 752 M 0.200 0 (Voice)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 794 M 0.200 0 (Msg Fax Preferred
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 920 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 962 M 0.200 0 (Telephone #2:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1046 M 0.200 0 (Work Home)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1130 M 0.200 0 (Voice Msg)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1214 M 0.200 0 (Fax)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1256 M 0.200 0 (Preferred
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1298 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1340 M 0.200 0 (Telephone #3:
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1424 M 0.200 0 (Work)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1466 M 0.200 0 (Home Voice Msg)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1592 M 0.200 0 (Fax Preferred
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1676 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 1718 M 0.200 0 (EmailAddress: )A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2348 M 0.200 0 (Work Home
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2432 M 0.200 0 (
)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2474 M 0.200 0 (Send my Versitcard to this internet email address:)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2516 M 0.200 0 (
Press)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2558 M 0.200 0 ( to send the form now. Or, press to reset values to the form defaults.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2642 M 0.200 0 ()A ; : 0 0 2391 3229 rc 0 0 0 sco F4_33 Ji 476 2684 M 0.200 0 ()A ; LH pagesave restore (%%[ Page: 46 ]%%) = %%PageTrailer %%Page: 47 47 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.097 0 (Section 4 : UI Support Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (37)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 505 M 0.151 0 (Section 4 : UI Support Recommendations)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 648 M 0.205 0 (When integrating vCard support into an application, an implementor needs to consider a)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 702 M 0.164 0 (number of user interface \(UI\) implications. Most applications provide some levels of support)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 756 M 0.191 0 (for interacting with other applications. This is usually accomplished in three ways. These)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 810 M 0.195 0 (include the File System, Clipboard, and Drag/Drop. The full potential of the vCard technology)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 864 M 0.215 0 (can be better utilized if an application supports the vCard in each of these UI actions.)A ; : 0 0 2391 3229 rc 0 0 0 sco (F4_58) cvn F4 58 xF F4_58 Ji 371 989 M -0.248 0 (4)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 989 M 14.124 0 32 -0.248 0 (1 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 989 M -0.124 0 (File System)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1118 M 0.172 0 (It is recommended that applications integrating support for vCard specification provide support)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1172 M 0.168 0 (for importing and exporting vCard objects from the operating system\222s file system. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1226 M 0.209 0 (operating systems that support file types, it is recommended that a file type of )A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-BoldItalic (F9) cvn 0.929 (Times-BoldItalic) cvn /Type1 T (Times-BoldItalic) cvn mF (F9_42) cvn F9 42 xF F9_42 Ji 1885 1225 M -0.014 0 (VCF)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 1969 1226 M 0.199 0 ( be used to)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1280 M 0.182 0 (distinguish the vCard objects. Applications should make use of the file system capabilities to)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1334 M 0.184 0 (support the FileOpen and FileSaveAs, or their equivalent function, of a vCard object.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 371 1459 M -0.248 0 (4)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 1459 M 14.124 0 32 -0.248 0 (2 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 1459 M -0.187 0 (Clipboard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1588 M 0.183 0 (It is recommended that applications integrating support for the vCard specification provide UI)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1642 M 0.171 0 (capabilities for exchanging vCard objects through the operating system\222s clipboard. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1696 M 0.164 0 (operating systems that provide support for registering clipboard format types, it is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1750 M 0.203 0 (recommended that the vCard object be registered using the string )A ; : 0 0 2391 3229 rc 0 0 0 sco F9_42 Ji 1670 1749 M 0.011 0 (+//ISBN 1-887687-00-)A ; : 0 0 2391 3229 rc 0 0 0 sco F9_42 Ji 551 1803 M 0.050 0 (9::versit::PDI//vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 923 1804 M 0.144 0 (. This string is an ISO 9070 Formal Public Identifier \(FPI\). Applications)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1858 M 0.179 0 (should make use of the operating system\222s clipboard capability to support the Cut, Copy, and)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1912 M 0.205 0 (Paste, or their equivalent function, of a vCard object. Applications copying a vCard to the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1966 M 0.194 0 (clipboard should put the vCard object on to the clipboard in both the vCard registered format)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2020 M 0.260 0 (and a plain text format.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 371 2145 M -0.248 0 (4)A -0.124 0 (.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 419 2145 M 14.124 0 32 -0.248 0 (3 )D ; : 0 0 2391 3229 rc 0 0 0 sco F4_58 Ji 481 2145 M -0.062 0 (Drag/Drop)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2274 M 0.183 0 (It is recommended that applications integrating support for the vCard specification provide UI)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2328 M 0.174 0 (capabilities for exchanging vCard objects through the operating system\222s drag/drop capability.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2382 M 0.161 0 (In operating systems that provide support for registering drag/drop object types, it is)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2436 M 0.203 0 (recommended that the vCard object be registered using the string )A ; : 0 0 2391 3229 rc 0 0 0 sco F9_42 Ji 1670 2435 M 0.011 0 (+//ISBN 1-887687-00-)A ; : 0 0 2391 3229 rc 0 0 0 sco F9_42 Ji 551 2489 M 0.050 0 (9::versit::PDI//vCard)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 923 2490 M 0.144 0 (. This string is an ISO 9070 Formal Public Identifier \(FPI\). Applications)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2544 M 0.202 0 (should make use of the operating system\222s drag/drop capability to enable the application to act)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2598 M 0.218 0 (as either a Drag Source and Drag Target, or their equivalent function, of a vcard object.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2652 M 0.187 0 (Applications acting as a Drag Source should advertise their ability to render the vCard in both)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2706 M 0.219 0 (the vCard registered format and a plain text format)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2781 M 0.192 0 (Where an operating system environment provided multiple drag/drop protocols \(e.g., file)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 2835 M 0.213 0 (specification or clipboard based\), it is recommended that an implementation provide)A ; LH pagesave restore (%%[ Page: 47 ]%%) = %%PageTrailer %%Page: 48 48 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (38)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F4) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F4_42) cvn F4 42 xF F4_42 Ji 401 498 M 0.184 0 (negotiated support for both. For example, the file specification based drag/drop protocol is)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 552 M 0.200 0 (useful when dragging a desktop file object or a web based URL to a target application. In)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 606 M 0.171 0 (addition, the clipboard based drag/drop protocol is useful when dragging an event or todo from)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 660 M 0.205 0 (a source within an application to a target in another application. Supporting just one of these)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 714 M 0.203 0 (mechanisms will unnecessarily lead to a lack of interoperability between applications)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 768 M 0.135 0 (supporting this specifications.)A ; : 0 0 2391 3229 rc 0 0 0 sco F4_42 Ji 401 843 M 0.500 0 (.)A ; LH pagesave restore (%%[ Page: 48 ]%%) = %%PageTrailer %%Page: 49 49 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 365 221 N M 1812 9 rr : 0 0 0 sco O ; 365 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 371 3068 M -0.096 0 (Section 5 : Conformance)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 2125 3068 M -0.352 0 (39)A ; 365 3060 N M 1812 3 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica-Bold (F4) cvn 0.960 (Helvetica-Bold) cvn /Type1 T (Helvetica-Bold) cvn mF (F4_75) cvn F4 75 xF F4_75 Ji 551 580 M 0.152 0 (Section 5 : Conformance)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Roman (F6) cvn 0.905 (Times-Roman) cvn /Type1 T (Times-Roman) cvn mF (F6_42) cvn F6 42 xF F6_42 Ji 551 723 M 0.214 0 (In order for a vCard Reader or Writer to conform to this specification it must meet the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 777 M 0.186 0 (following criteria:)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Symbol (F8) cvn 1.000 (Symbol) cvn /Type1 F (Symbol) cvn mF (F8_42) cvn F8 42 xF F8_42 Ji 551 848 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 852 M 0.208 0 (Implement at least one of the syntaxes defined by this specification.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 923 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 927 M 0.203 0 (All properties must be implemented as defined. Statements elsewhere in the specification)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 981 M 0.193 0 (which describe features as optional or with exceptions take precedence over this criterion.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1052 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1056 M 0.177 0 (Character set support is up to the underlying implementation. However, support for the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1110 M 0.202 0 (default character set \(i.e., US ASCII\) is required. Optionally, other character sets may be)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1164 M 0.085 0 (supported.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1235 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1239 M 0.182 0 (All extensions are optional. It is requested that any vendor-specific extensions include the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1293 M 0.195 0 (vendor identification sub-string in the extension name. For example, the extension name)A ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Times-Italic (F10) cvn 0.881 (Times-Italic) cvn /Type1 T (Times-Italic) cvn mF (F10_42) cvn F10 42 xF F10_42 Ji 626 1348 M 0.171 0 (X-ABC-)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 760 1347 M 0.200 0 ( for an extension created by the ABC organization.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1418 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1422 M 0.193 0 (All vendor defined extensions must declare the minimum conformance for that extension.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1497 M 0.211 0 (Additionally, in order for a vCard Reader to conform to this specification it must meet the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1551 M 0.201 0 (following additional criteria:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1622 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1626 M 0.197 0 (Must be able to parse all properties.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1697 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1701 M 0.158 0 (All forms of vCard Grouping must be able to be parsed and processed.)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1772 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1776 M 0.153 0 (Property Grouping must be able to be parsed and processed.)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1851 M 0.214 0 (Additionally, in order for a vCard Writer to conform to this specification it must meet the)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 551 1905 M 0.201 0 (following additional criteria:)A ; : 0 0 2391 3229 rc 0 0 0 sco F8_42 Ji 551 1976 M 45.820 0 32 -0.320 0 (\267 )D ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 1980 M 0.201 0 (Must be able to send at least the Version, Formatted Name, Name, Address, Telephone,)A ; : 0 0 2391 3229 rc 0 0 0 sco F6_42 Ji 626 2034 M 0.227 0 (Email, and Mailer properties.)A ; LH pagesave restore (%%[ Page: 49 ]%%) = %%PageTrailer %%Page: 50 50 %%BeginPageSetup [{ %%BeginFeature: *Resolution 300dpi %%EndFeature } stopped cleartomark [{ %%BeginFeature: *Duplex %%EndFeature } stopped cleartomark userdict begin /pagesave save def end mysetup concat colspRefresh : 1.000 1.000 1.000 sco 0 0 2550 3300 rf ; %%EndPageSetup 215 221 N M 1812 9 rr : 0 0 0 sco O ; 215 230 N M 1812 9 rr : 0 0 0 sco O ; : 0 0 2391 3229 rc 0 0 0 sco %%IncludeFont: Helvetica (F2) cvn 0.929 (Helvetica) cvn /Type1 T (Helvetica) cvn mF (F2_42) cvn F2 42 xF F2_42 Ji 221 3068 M -0.352 0 (40)A ; : 0 0 2391 3229 rc 0 0 0 sco F2_42 Ji 1427 3068 M -0.112 0 (vCard Specification, Version 2.1)A ; 215 3060 N M 1812 3 rr : 0 0 0 sco O ; LH pagesave restore (%%[ Page: 50 ]%%) = %%PageTrailer %%Trailer %%DocumentNeededFonts: Times-Italic %%+ Times-Roman %%+ Helvetica %%+ Times-Bold %%+ Helvetica-Bold %%+ Times-BoldItalic %%+ Courier-Bold %%+ Helvetica-BoldOblique %%+ Symbol %%DocumentSuppliedFonts: Bookman Old Style Pscript_Win_Driver_Incr dup /terminate get exec savelevel0 restore %%Pages: 50 (%%[ LastPage ]%%) = %%EOF Addresses-0.5.0/Frameworks/Addresses/ADPublicAddressBook.m0000644000175000000240000000473014750127042022616 0ustar multixstaff// ADPublicAddressBook.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADPublicAddressBook.h" #import "ADRecord.h" @implementation ADPublicAddressBook - (instancetype) initWithAddressBook: (ADAddressBook*) book readOnly: (BOOL) ro { if ((self = [super init])) { NSAssert(book, @"Address Book may not be nil!"); _book = [book retain]; _readOnly = ro; } return self; } - (NSArray*) recordsMatchingSearchElement: (ADSearchElement*) search { NSArray *arr; arr = [_book recordsMatchingSearchElement: search]; if(_readOnly) arr = ADReadOnlyCopyOfRecordArray(arr); return arr; } - (BOOL) save { if(_readOnly) return NO; return [_book save]; } - (BOOL) hasUnsavedChanges { if(_readOnly) return NO; return [_book hasUnsavedChanges]; } - (ADPerson*) me { if(_readOnly) { ADRecord *r; r = (ADRecord*)[_book me]; if(!r) return nil; r = [r copy]; [r setReadOnly]; return (ADPerson*)r; } return [_book me]; } - (void) setMe: (ADPerson*) me { if (_readOnly) return; [_book setMe: me]; } - (ADRecord*) recordForUniqueId: (NSString*) uniqueId { ADRecord *r = [_book recordForUniqueId: uniqueId]; if (!r) return nil; if (_readOnly) { r = [r copy]; [r setReadOnly]; } return r; } - (BOOL) addRecord: (ADRecord*) record { if (_readOnly) return NO; return [_book addRecord: record]; } - (BOOL) removeRecord: (ADRecord*) record { if (_readOnly) return NO; return [_book removeRecord: record]; } - (NSArray*) people { NSArray *arr = [_book people]; if (_readOnly) return ADReadOnlyCopyOfRecordArray(arr); return arr; } - (NSArray*) groups { NSArray *arr = [_book groups]; if (_readOnly) return ADReadOnlyCopyOfRecordArray(arr); return arr; } @end #if 0 // add this later @interface ADAddressBook(GroupAccess) - (NSArray*) membersForGroup: (ADGroup*) group; - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group; - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group; - (NSArray*) subgroupsForGroup: (ADGroup*) group; - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (NSArray*) parentGroupsForGroup: (ADGroup*) group; @end @interface ADAddressBook(AddressesExtensions) - (NSArray*) groupsContainingRecord: (ADRecord*) record; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADVCFConverter.h0000644000175000000240000000124114746005572021562 0ustar multixstaff// ADVCFConverter.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADVCFCONVERTER_H_ #define _ADVCFCONVERTER_H_ #import @interface ADVCFConverter: NSObject { NSString *_str; NSMutableString *_out; BOOL _input; NSUInteger _idx; } /* ADInputConverting */ - (instancetype)initForInput; - (BOOL) useString: (NSString*) str; - (ADRecord*) nextRecord; /* ADOutputConverting */ - (instancetype)initForOutput; - (BOOL) canStoreMultipleRecords; - (void) storeRecord: (ADRecord*) record; - (NSString*) string; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADPerson.h0000644000175000000240000000326414750126534020526 0ustar multixstaff// ADPerson.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADPERSON_H #define _ADPERSON_H #import #import #import @class ADSearchElement; @interface ADPerson: ADRecord /*! \brief Add properties to all people records Takes a dictionary of the form {propName = propType; [...]}. Property names must be unique; if a property is already in, it will not be added, nor will its type be changed. Returns the number of properties successfully added. */ + (NSInteger) addPropertiesAndTypes: (NSDictionary*) properties; /*! \brief Remove properties from all people records Returns the number of properties successfully removed */ + (NSInteger) removeProperties: (NSArray*) properties; + (NSArray*) properties; + (ADPropertyType) typeOfProperty: (NSString*) property; + (ADSearchElement*) searchElementForProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison; - (ADPropertyType) typeOfProperty: (NSString*) property; - (NSArray*) parentGroups; - (instancetype) initWithVCardRepresentation: (NSData*) vCardData; - (NSData *) vCardRepresentation; @end @interface ADPerson(AddressesExtensions) + (ADScreenNameFormat) screenNameFormat; + (void) setScreenNameFormat: (ADScreenNameFormat) aFormat; - (NSString*) screenName; - (NSString*) screenNameWithFormat: (ADScreenNameFormat) aFormat; - (NSComparisonResult) compareByScreenName: (ADPerson*) theOtherGuy; - (BOOL) shared; - (void) setShared: (BOOL) yesno; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADConverter.h0000644000175000000240000000244114746005572021226 0ustar multixstaff// ADConverter.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADCONVERTER_H_ #define _ADCONVERTER_H_ #import #import @protocol ADInputConverting - (instancetype)initForInput; - (BOOL) useString: (NSString*) string; - (ADRecord*) nextRecord; @end @protocol ADOutputConverting - (instancetype)initForOutput; - (BOOL) canStoreMultipleRecords; - (void) storeRecord: (ADRecord*) record; - (NSString*) string; @end @interface ADConverterManager: NSObject { NSMutableDictionary *_icClasses, *_ocClasses; } + (ADConverterManager*) sharedManager; - (BOOL) registerInputConverterClass: (Class) c forType: (NSString*) type; - (BOOL) registerOutputConverterClass: (Class) c forType: (NSString*) type; - (id) inputConverterForType: (NSString*) type; - (id) outputConverterForType: (NSString*) type; /*! \brief Return a pre-initialized input converter for the given file Find a fitting converter and pre-initialize it with the date for the given file. */ - (id) inputConverterWithFile: (NSString*) filename; - (NSArray*) inputConvertableFileTypes; - (NSArray*) outputConvertableFileTypes; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADLocalAddressBook.h0000644000175000000240000000243714750125736022437 0ustar multixstaff// ADLocalAddressBook.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import #import @interface ADLocalAddressBook: ADAddressBook { NSString *_loc; NSMutableDictionary *_unsaved; NSMutableDictionary *_deleted; NSMutableDictionary *_cache; } + (NSString*) defaultLocation; + (void) setDefaultLocation: (NSString*) location; + (ADAddressBook*) sharedAddressBook; + (BOOL) makeLocalAddressBookAtLocation: (NSString*) location; - (instancetype)initWithLocation: (NSString*) location; - (NSString*) location; @end @interface ADLocalAddressBook(GroupAccess) - (NSArray*) membersForGroup: (ADGroup*) group; - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group; - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group; - (NSArray*) subgroupsForGroup: (ADGroup*) group; - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (NSArray*) parentGroupsForGroup: (ADGroup*) group; @end @interface ADLocalAddressBook(ImageDataFile) - (BOOL) setImageDataForPerson: (ADPerson*) person withFile: (NSString*) filename; - (NSString*) imageDataFileForPerson: (ADPerson*) person; @end Addresses-0.5.0/Frameworks/Addresses/ADPerson.m0000644000175000000240000002144714750126562020537 0ustar multixstaff// ADPerson.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADAddressBook.h" #import "ADPerson.h" #import "ADGlobals.h" #import "ADTypedefs.h" #import "ADMultiValue.h" static NSMutableDictionary *_propTypes; static ADScreenNameFormat _scrNameFormat = ADScreenNameLastNameFirst; #define N(x) [NSNumber numberWithInteger: x] @implementation ADPerson + (void) initialize { NSDictionary *dom; NSString *scrName; _propTypes = [[NSMutableDictionary alloc] initWithObjectsAndKeys: N(ADStringProperty), ADUIDProperty, N(ADDateProperty), ADCreationDateProperty, N(ADDateProperty), ADModificationDateProperty, N(ADStringProperty), ADSharedProperty, N(ADStringProperty), ADFirstNameProperty, N(ADStringProperty), ADLastNameProperty, N(ADStringProperty), ADFirstNamePhoneticProperty, N(ADStringProperty), ADLastNamePhoneticProperty, N(ADDateProperty), ADBirthdayProperty, N(ADStringProperty), ADOrganizationProperty, N(ADStringProperty), ADJobTitleProperty, N(ADStringProperty), ADHomePageProperty, N(ADMultiStringProperty), ADEmailProperty, N(ADMultiDictionaryProperty), ADAddressProperty, N(ADMultiStringProperty), ADPhoneProperty, N(ADMultiStringProperty), ADAIMInstantProperty, N(ADMultiStringProperty), ADJabberInstantProperty, N(ADMultiStringProperty), ADMSNInstantProperty, N(ADMultiStringProperty), ADYahooInstantProperty, N(ADMultiStringProperty), ADICQInstantProperty, N(ADStringProperty), ADNoteProperty, N(ADStringProperty), ADMiddleNameProperty, N(ADStringProperty), ADMiddleNamePhoneticProperty, N(ADStringProperty), ADTitleProperty, N(ADStringProperty), ADSuffixProperty, N(ADStringProperty), ADNicknameProperty, N(ADStringProperty), ADMaidenNameProperty, N(ADDataProperty), ADImageProperty, N(ADStringProperty), ADImageTypeProperty, nil]; dom = [NSMutableDictionary dictionaryWithDictionary: [[NSUserDefaults standardUserDefaults] persistentDomainForName: @"Addresses"]]; if(!dom) { _scrNameFormat = ADScreenNameLastNameFirst; scrName = @"LastNameFirst"; dom = [NSDictionary dictionaryWithObjectsAndKeys: scrName, @"ScreenNameFormat", nil]; } else { scrName = [dom objectForKey: @"ScreenNameFormat"]; if(!scrName || [scrName isEqualToString: @"LastNameFirst"]) { _scrNameFormat = ADScreenNameLastNameFirst; scrName = @"LastNameFirst"; } else if([scrName isEqualToString: @"FirstNameFirst"]) { _scrNameFormat = ADScreenNameFirstNameFirst; scrName = @"FirstNameFirst"; } else { NSLog(@"Unknown value %@ for ScreenNameFormat. " @"Using LastNameFirst.\n", scrName); _scrNameFormat = ADScreenNameFirstNameFirst; scrName = @"LastNameFirst"; } } [[NSUserDefaults standardUserDefaults] setPersistentDomain: dom forName: @"Addresses"]; } + (NSInteger) addPropertiesAndTypes: (NSDictionary*) properties { NSInteger retval = 0; NSEnumerator *e; NSString *key; e = [properties keyEnumerator]; while((key = [e nextObject])) if(![_propTypes objectForKey: key]) { [_propTypes setObject: [properties objectForKey: key] forKey: key]; retval++; } return retval; } + (NSInteger) removeProperties: (NSArray*) properties { NSInteger retval = 0; NSEnumerator *e; NSString* key; e = [properties objectEnumerator]; while((key = [e nextObject])) if([_propTypes objectForKey: key]) { [_propTypes removeObjectForKey: key]; retval++; } return retval; } + (NSArray*) properties { return [_propTypes allKeys]; } + (ADPropertyType) typeOfProperty: (NSString*) property { id val; val = [_propTypes objectForKey: property]; if(val) return (ADPropertyType)[val integerValue]; return ADErrorInProperty; } + (ADSearchElement*) searchElementForProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison { return [[[ADRecordSearchElement alloc] initWithProperty: property label: label key: key value: value comparison: comparison] autorelease]; } - (ADPropertyType) typeOfProperty: (NSString*) property { return [[self class] typeOfProperty: property]; } - (id) valueForProperty: (NSString*) property { id val; ADPropertyType type; val = [super valueForProperty: property]; type = [[self class] typeOfProperty: property]; // multi-value? If so, create empty one and put it in if(!val && (type & ADMultiValueMask) && ![self readOnly]) { NSMutableDictionary *newDict; val = [[[ADMultiValue alloc] initWithType: type] autorelease]; newDict = [NSMutableDictionary dictionaryWithDictionary: _dict]; [newDict setObject: val forKey: property]; [_dict release]; _dict = [[NSDictionary alloc] initWithDictionary: newDict]; } return val; } - (BOOL) setValue: (id) value forProperty: (NSString *) property { if([self readOnly]) return NO; if(([[self class] typeOfProperty: property] & ADMultiValueMask) && ([property isKindOfClass: [ADMutableMultiValue class]])) { // make sure no mutable multivalues are inserted ADMultiValue *mv; mv = [[[ADMultiValue alloc] initWithMultiValue: value] autorelease]; return [self setValue: mv forProperty: property]; } return [super setValue: value forProperty: property]; } - (NSArray*) parentGroups { if(![self addressBook]) return [NSArray array]; return [[self addressBook] groupsContainingRecord: self]; } - (instancetype) initWithVCardRepresentation: (NSData*) vCardData { NSString *str = [[[NSString alloc] initWithData: vCardData encoding: NSUTF8StringEncoding] autorelease]; if(!str) { str = [[[NSString alloc] initWithData: vCardData encoding: NSASCIIStringEncoding] autorelease]; str = [[[NSString alloc] initWithCString: [str cString]] autorelease]; } if(!str) return nil; return [self initWithRepresentation: str type: @"vcf"]; } - (NSData *) vCardRepresentation { NSString *str; const char *utf8str; str = [self representationWithType: @"vcf"]; utf8str = [str UTF8String]; return [NSData dataWithBytes: utf8str length: strlen(utf8str)]; } @end @implementation ADPerson (AddressesExtensions) + (ADScreenNameFormat) screenNameFormat { return _scrNameFormat; } + (void) setScreenNameFormat: (ADScreenNameFormat) aFormat { NSDictionary *oldDom; NSMutableDictionary *newDom; if(aFormat == _scrNameFormat) return; _scrNameFormat = aFormat; oldDom = [[NSUserDefaults standardUserDefaults] persistentDomainForName: @"Addresses"]; NSAssert(oldDom, @"User defaults Domain 'Addresses' must exist"); newDom = [NSMutableDictionary dictionaryWithDictionary: oldDom]; if(_scrNameFormat == ADScreenNameLastNameFirst) [newDom setObject: @"LastNameFirst" forKey: @"ScreenNameFormat"]; else [newDom setObject: @"FirstNameFirst" forKey: @"ScreenNameFormat"]; [[NSUserDefaults standardUserDefaults] setPersistentDomain: newDom forName: @"Addresses"]; } - (NSString*) screenName { return [self screenNameWithFormat: _scrNameFormat]; } - (NSString*) screenNameWithFormat: (ADScreenNameFormat) aFormat { NSString *last, *first, *fn; last = [self valueForProperty: ADLastNameProperty]; first = [self valueForProperty: ADFirstNameProperty]; if (!last && !first) { fn = [self valueForProperty: ADFormattedNameProperty]; if (fn) return fn; return @"New Person"; } if (!first) return last; if (!last) return first; if (aFormat == ADScreenNameFirstNameFirst) return [NSString stringWithFormat: @"%@ %@", first, last]; return [NSString stringWithFormat: @"%@, %@", last, first]; } - (NSComparisonResult) compareByScreenName: (ADPerson*) theOtherGuy { NSString *myName, *hisName; NSComparisonResult result; myName = [self screenName]; hisName = [theOtherGuy screenName]; if ([myName isEqualToString: @"New Person"]) return NSOrderedAscending; else if([hisName isEqualToString: @"New Person"]) return NSOrderedDescending; result = [[self screenName] compare: [theOtherGuy screenName]]; return result; } - (BOOL) shared { if (![self valueForProperty: ADSharedProperty]) return NO; return [[self valueForProperty: ADSharedProperty] boolValue]; } - (void) setShared: (BOOL) yesno { if ([self shared] == yesno) return; if (yesno) [self setValue: @"YES" forProperty: ADSharedProperty]; else [self setValue: @"NO" forProperty: ADSharedProperty]; } @end Addresses-0.5.0/Frameworks/Addresses/ADGlobals.h0000644000175000000240000001142112312144407020624 0ustar multixstaff// ADGlobals.h (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADGLOBALS_H_ #define _ADGLOBALS_H_ #import /* * Properties common to all Records */ extern NSString * const ADUIDProperty; // string extern NSString * const ADCreationDateProperty; // date extern NSString * const ADModificationDateProperty; // date extern NSString * const ADSharedProperty; // @"YES"/@"NO" NON-APPLE /* * Person-specific properties */ extern NSString * const ADFirstNameProperty; // string extern NSString * const ADLastNameProperty; // string extern NSString * const ADMiddleNameProperty; // string UNSUPP extern NSString * const ADMiddleNamePhoneticProperty; // string UNSUPP extern NSString * const ADFirstNamePhoneticProperty; // string UNSUPP extern NSString * const ADLastNamePhoneticProperty; // string UNSUPP extern NSString * const ADTitleProperty; // string UNSUPP extern NSString * const ADSuffixProperty; // string UNSUPP extern NSString * const ADNicknameProperty; // string UNSUPP extern NSString * const ADMaidenNameProperty; // string UNSUPP extern NSString * const ADFormattedNameProperty; extern NSString * const ADBirthdayProperty; // date extern NSString * const ADOrganizationProperty; // string extern NSString * const ADJobTitleProperty; // string extern NSString * const ADHomePageProperty; // string extern NSString * const ADEmailProperty; // multi-string extern NSString * const ADEmailWorkLabel; extern NSString * const ADEmailHomeLabel; extern NSString * const ADAddressProperty; // multi-dictionary extern NSString * const ADAddressStreetKey; extern NSString * const ADAddressCityKey; extern NSString * const ADAddressStateKey; extern NSString * const ADAddressZIPKey; extern NSString * const ADAddressCountryKey; extern NSString * const ADAddressCountryCodeKey; extern NSString * const ADAddressPOBoxKey; // NON-APPLE EXTENSION extern NSString * const ADAddressExtendedAddressKey; // NON-APPLE EXTENSION extern NSString * const ADAddressHomeLabel; extern NSString * const ADAddressWorkLabel; extern NSString * const ADImageProperty; extern NSString * const ADImageTypeProperty; // NON-APPLE EXTENSION extern NSString * const ADPhoneProperty; // multi-string extern NSString * const ADPhoneWorkLabel; extern NSString * const ADPhoneHomeLabel; extern NSString * const ADPhoneMobileLabel; extern NSString * const ADPhoneMainLabel; extern NSString * const ADPhoneHomeFAXLabel; extern NSString * const ADPhoneWorkFAXLabel; extern NSString * const ADPhonePagerLabel; extern NSString * const ADAIMInstantProperty; // multi-string extern NSString * const ADAIMWorkLabel; extern NSString * const ADAIMHomeLabel; extern NSString * const ADJabberInstantProperty; // multi-string extern NSString * const ADJabberWorkLabel; extern NSString * const ADJabberHomeLabel; extern NSString * const ADMSNInstantProperty; // multi-string extern NSString * const ADMSNWorkLabel; extern NSString * const ADMSNHomeLabel; extern NSString * const ADYahooInstantProperty; // multi-string extern NSString * const ADYahooWorkLabel; extern NSString * const ADYahooHomeLabel; extern NSString * const ADICQInstantProperty; // multi-string extern NSString * const ADICQWorkLabel; extern NSString * const ADICQHomeLabel; extern NSString * const ADNoteProperty; // string /* * Group-specific */ extern NSString * const ADGroupNameProperty; // string extern NSString * const ADMemberIDsProperty; // array; NON-APPLE EXTENSION /* * Generic labels */ extern NSString * const ADWorkLabel; extern NSString * const ADHomeLabel; extern NSString * const ADOtherLabel; /* * Notifications and parameters */ extern NSString * const ADDatabaseChangedNotification; extern NSString * const ADDatabaseChangedExternallyNotification; extern NSString * const ADRecordChangedNotification; // EXTENSION extern NSString * const ADUniqueIDOfChangedRecordKey; extern NSString * const ADChangedPropertyKey; extern NSString * const ADChangedValueKey; extern NSString * const ADAddressBookContainingChangedRecordKey; // Return localized version of built-in properties, labels or keys NSString *ADLocalizedPropertyOrLabel(NSString *propertyOrLabel); /* * Some errors */ extern NSString* ADAddressBookInaccessibleError; extern NSString* ADAddressBookConsistencyError; extern NSString* ADAddressBookInternalError; // report this to author! extern NSString* ADUnimplementedError; // report this to author! @interface ADScriptingInfo: NSObject + (NSDictionary*) namedObjectsForScripting; @end /* * Some utility functions */ NSArray *ADReadOnlyCopyOfRecordArray(NSArray* arr); #endif Addresses-0.5.0/Frameworks/Addresses/ADVCFConverter.m0000644000175000000240000005746314746005572021610 0ustar multixstaff// ADVCFConverter.m (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // Riccardo Mottola // // Address Book Framework for GNUstep // #import #import "ADPerson.h" #import "ADGlobals.h" #import "ADImageLoading.h" #import "ADMultiValue.h" #import "ADVCFConverter.h" @interface NSString(QuotedPrintable) - (unsigned long) hexLongValue; - (NSString*) stringByQuotedPrintableDecoding; - (NSString*) stringByQuotedPrintableEncoding; @end @implementation NSString(QuotedPrintable) - (unsigned long) hexLongValue { unsigned long val; NSString *str; NSString *hexchars; NSUInteger i; val = 0; str = [[self stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]] lowercaseString]; hexchars = @"0123456789abcdef"; for(i = 0; i < [str length]; i++) { NSRange r; NSString *substr; r = NSMakeRange(i, 1); substr = [str substringWithRange: r]; r = [hexchars rangeOfString: substr]; if(r.location == NSNotFound) [NSException raise: NSGenericException format: @"\"%@\"[%u] not a hex char", str, (unsigned)i]; val <<= 4; val |= r.location; } return val; } - (NSString*) stringByQuotedPrintableDecoding { NSUInteger i; NSMutableString *str; NSMutableString *str2; // process \ escaped chars str = [NSMutableString stringWithString:self]; for (i = 0; i < [self length]; i++) { NSRange r; NSString *s; r = NSMakeRange(i, 1); s = [self substringWithRange: r]; if([s isEqualToString: @"\\"]) [str deleteCharactersInRange:r]; } str2 = [NSMutableString stringWithCapacity: [str length]]; for(i = 0; i < [str length]; i++) { NSRange r; NSString *s; r = NSMakeRange(i, 1); s = [str substringWithRange: r]; if([s isEqualToString: @"="] && i < [str length]-2) { unsigned char c; NSString *hex; BOOL hexDecodeWorked; r = NSMakeRange(i+1, 2); hex = [str substringWithRange: r]; hexDecodeWorked = YES; NS_DURING { c = (unsigned char)[hex hexLongValue]; } NS_HANDLER { hexDecodeWorked = NO; } NS_ENDHANDLER; if (hexDecodeWorked) { [str2 appendString: [NSString stringWithFormat: @"%c", c]]; i+=2; } else // hex decode failed! { /* * Note: This is maybe not the true and plain VCard * specification, but some Vcard files (e.g. when exported * from the Apple Address Book) don't take care when encoding * URLs (and possibly other fields). So we fall back to not * interpreting the hex characters. * * The URL format in question is this: * http://www.somesearchengine.com/query=blablabla * ^ * This is not an escaped special character * * XXX: May produce problems with some URLS containing * valid alphanumerical hex numbers after the '='. * FIX: No fix known. */ [str2 appendString: s]; // note: s equals @"=" } } else [str2 appendString: s]; } return [NSString stringWithUTF8String: [str2 cString]]; } - (NSString*) stringByQuotedPrintableEncoding { NSUInteger i; size_t len; const unsigned char *cstr; NSMutableString *str; cstr = (unsigned char *)[self UTF8String]; len = strlen((char *)cstr); str = [NSMutableString stringWithCapacity: len]; for (i = 0; i < len; i++) { if (cstr[i] == ' ') [str appendString: @"=20"]; else if(cstr[i] > 127) [str appendFormat: @"=%X", cstr[i]]; else [str appendFormat: @"%c", cstr[i]]; } return str; } @end @interface NSArray(VCFKeys) - (NSString*) restOfStringStartingWith: (NSString*) start; @end @implementation NSArray(VCFKeys) - (NSString*) restOfStringStartingWith: (NSString*) start { NSEnumerator *e; id obj; e = [self objectEnumerator]; while((obj = [e nextObject])) { if(![obj isKindOfClass: [NSString class]]) continue; if([obj length] < [start length]) continue; if([[obj substringToIndex: [start length]] isEqualToString: start]) return [obj substringFromIndex: [start length]]; } return nil; } @end NSData *base64Decode(NSString* nsstr) { return [GSMimeDocument decodeBase64:[nsstr dataUsingEncoding:NSUTF8StringEncoding]]; } NSString *base64Encode(NSData* data) { return AUTORELEASE([[NSString alloc] initWithData:[GSMimeDocument encodeBase64:data] encoding:NSUTF8StringEncoding]); } @interface ADVCFConverter(Private) - (BOOL) parseLine: (NSUInteger) line fromArray: (NSArray*) arr upToLine: (NSUInteger*) retLine intoKeyBlock: (NSArray**) k valueBlock: (NSArray**) v; - (void) integrateKeyBlock: (NSArray*) k valueBlock: (NSArray*) v intoPerson: (ADPerson*) p; - (void) appendStringForProperty: (NSString*) property inPerson: (ADPerson*) p; - (void) appendStringWithHeader: (NSString*) header value: (NSString*) value; - (void) appendStringWithHeader: (NSString*) header value: (NSString*) value binaryLinebreak: (BOOL) blb; @end static NSArray *knownItems; @implementation ADVCFConverter + (void) initialize { knownItems = [[NSArray alloc] initWithObjects: @"org", @"role", @"url", @"adr", @"n", @"agent", @"logo", @"photo", @"label", @"fn", @"title", @"sound", @"version", @"tel", @"email", @"tz", @"geo", @"note", @"bday", @"rev", @"uid", @"key", @"mailer", nil]; } - (void) dealloc { [_str release]; [_out release]; [super dealloc]; } - (instancetype) initForInput { if ((self = [super init])) { _input = YES; _str = nil; _out = nil; } return self; } - (BOOL) useString: (NSString*) str { _str = [str copy]; _idx = 0; return YES; } - (ADRecord*) nextRecord { NSUInteger i; NSString *str; NSArray *lines; ADPerson *person; person = [[[ADPerson alloc] init] autorelease]; [person setValue: [NSDate date] forProperty: ADModificationDateProperty]; [person setValue: [NSDate date] forProperty: ADCreationDateProperty]; if (_idx > [_str length]) return nil; str = [_str substringFromIndex: _idx]; lines = [str componentsSeparatedByString: @"\n"]; i = 0; while (i < [lines count]) { NSArray *keyblock, *valueblock; BOOL retval; NSUInteger oldIndex, newIndex; oldIndex = i; retval = [self parseLine: i fromArray: lines upToLine: &i intoKeyBlock: &keyblock valueBlock: &valueblock]; newIndex = i; while (oldIndex < newIndex) { _idx += [[lines objectAtIndex: oldIndex++] length] + 1; } if(retval) { if([keyblock containsObject: @"end"]) // done! return person; if(![keyblock containsObject: @"begin"] && ![keyblock containsObject: @"end"] && ![keyblock containsObject: @"version"]) [self integrateKeyBlock: keyblock valueBlock: valueblock intoPerson: person]; } } return nil; } /* COutputConverting */ - (instancetype)initForOutput { if ((self = [super init])) { _str = nil; _input = NO; _idx = 0; _out = [[NSMutableString alloc] init]; } return self; } - (BOOL) canStoreMultipleRecords { return YES; } - (void) storeRecord: (ADRecord*) record { NSEnumerator *e; NSString *prop; NSString *name; id val; NSArray *myProps; if(![record isKindOfClass: [ADPerson class]]) { NSLog(@"Can't store objects of class %@\n", [record className]); return; } myProps = [NSArray arrayWithObjects: ADLastNameProperty, ADFirstNameProperty, ADMiddleNameProperty, ADTitleProperty, nil]; [_out appendString: @"BEGIN:VCARD\r\n"]; [_out appendString: @"VERSION:2.1\r\n"]; [_out appendString: @"X-GENERATOR:Addresses for GNUstep pre-1.0\r\n"]; // Create name ourselves name = @""; e = [myProps objectEnumerator]; while((prop = [e nextObject])) { val = [record valueForProperty: prop]; name = [name stringByAppendingFormat: @"%@;", val ? val : @""]; } val = [record valueForProperty: ADSuffixProperty]; name = [name stringByAppendingFormat: @"%@", val ? val : @""]; [self appendStringWithHeader: @"N" value: name]; e = [[[record class] properties] objectEnumerator]; while((prop = [e nextObject])) { if(![myProps containsObject: prop] && ![prop isEqualToString: ADSuffixProperty]) [self appendStringForProperty: prop inPerson: (ADPerson*) record]; } [_out appendString: @"END:VCARD\r\n"]; } - (NSString*) string { return _out; } @end @implementation ADVCFConverter (Private) - (BOOL) parseLine: (NSUInteger) line fromArray: (NSArray*) arr upToLine: (NSUInteger*) retLine intoKeyBlock: (NSArray**) k valueBlock: (NSArray**) v { NSString *str, *keyblock, *value; NSCharacterSet *wsp; NSRange r; BOOL lastLineWasReadable; wsp = [NSCharacterSet whitespaceAndNewlineCharacterSet]; *retLine = line; str = [[arr objectAtIndex: (*retLine)++] stringByTrimmingCharactersInSet: wsp]; if (![str length]) return NO; /* * Unfolding multi-line value fields conforming to RFC 2425 */ // While "there is a next line that begins with a space character"... lastLineWasReadable = YES; while (*retLine < [arr count] && lastLineWasReadable) { NSString* str2 = [arr objectAtIndex: *retLine]; if ([str2 length] == 0) { lastLineWasReadable = NO; } else { NSString* firstCharacter = [str2 substringWithRange: NSMakeRange(0,1)]; if ([firstCharacter isEqualToString: @" "] || // Space [firstCharacter isEqualToString: @"\t"]) // Tab { /* * Ignore all spaces in front of the real data. IIRC not * compliant to the VCard standard, but the Apple Address * book does it this way, too. :-/ * * Trim the first characters (usually the whitespace) and * the last character(s) (the CRLF)! */ str2 = [str2 stringByTrimmingCharactersInSet:wsp]; str = [str stringByAppendingString: str2]; // we parsed a line more, so increase the counter (*retLine)++; } else lastLineWasReadable = NO; } } #ifdef DEBUGGING NSLog(@"Input line : %@", str); #endif r = [str rangeOfString: @":"]; if(r.location == NSNotFound) { NSLog(@"Syntax error in line %lu!\n", (unsigned long)line); return NO; } keyblock = [str substringToIndex: r.location]; *k = [[keyblock lowercaseString] componentsSeparatedByString: @";"]; value = [str substringFromIndex: r.location+r.length]; if([value isEqualToString: @"="]) // escape to next line { value = [[arr objectAtIndex: (*retLine)++] stringByTrimmingCharactersInSet: wsp]; *v = [[value stringByQuotedPrintableDecoding] componentsSeparatedByString: @";"]; } else *v = [[value stringByQuotedPrintableDecoding] componentsSeparatedByString: @";"]; return YES; } - (void) integrateKeyBlock: (NSArray*) k valueBlock: (NSArray*) v intoPerson: (ADPerson*) p { NSString* key; NSRange r; if(![k count]) { NSLog(@"No keys in '%@':'%@'\n", k, v); return; } else if(![v count]) { NSLog(@"No values in '%@':'%@'\n", k, v); return; } key = [k objectAtIndex: 0]; /* * Strip any group from the key (ie item1.ADR) * See http://tools.ietf.org/search/rfc2426#section-4 * and http://tools.ietf.org/search/rfc2425 which says : * * The group construct is used to group related attributes together. * The group name is a syntactic convention used to indicate that all * type names prefaced with the same group name SHOULD be grouped * together when displayed by an application. It has no other * significance. Implementations that do not understand or support * grouping MAY simply strip off any text before a "." to the left of * the type name and present the types and values as normal. */ r = [key rangeOfString: @"."]; if (r.location != NSNotFound) key = [key substringFromIndex: r.location+1]; #if 0 if(![knownItems containsObject: key]) { NSLog(@"%@ not in knownItems\n", key); return; } #endif if([key isEqualToString: @"n"]) { if([v count] != 5) NSLog(@"Value for '%@':'%@' doesn't have enough entries!\n", k, v); [p setValue: [v objectAtIndex: 0] forProperty: ADLastNameProperty]; if([v count] > 1) [p setValue: [v objectAtIndex: 1] forProperty: ADFirstNameProperty]; if([v count] > 2) [p setValue: [v objectAtIndex: 2] forProperty: ADMiddleNameProperty]; if([v count] > 3) [p setValue: [v objectAtIndex: 3] forProperty: ADTitleProperty]; if([v count] > 4) [p setValue: [v objectAtIndex: 4] forProperty: ADSuffixProperty]; } else if([key isEqualToString: @"org"]) [p setValue: [v objectAtIndex: 0] forProperty: ADOrganizationProperty]; else if([key isEqualToString: @"title"]) [p setValue: [v objectAtIndex: 0] forProperty: ADJobTitleProperty]; else if([key isEqualToString: @"url"]) [p setValue: [v objectAtIndex: 0] forProperty: ADHomePageProperty]; else if([key isEqualToString: @"fn"]) [p setValue: [v objectAtIndex: 0] forProperty: ADFormattedNameProperty]; else if([key isEqualToString: @"bday"]) { NSCalendarDate *d; d = [NSCalendarDate dateWithString: [v objectAtIndex: 0] calendarFormat: @"%Y-%d-%m"]; if(!d) d = [NSCalendarDate dateWithString: [v objectAtIndex: 0] calendarFormat: @"%Y%d%m"]; if(d) [p setValue: d forProperty: ADBirthdayProperty]; else NSLog(@"Can't convert %@ to date\n", [v objectAtIndex: 0]); } else if([key isEqualToString: @"note"]) [p setValue: [v objectAtIndex: 0] forProperty: ADNoteProperty]; // phone -- multi-string else if([key isEqualToString: @"tel"]) { ADMutableMultiValue *mv; NSString *val; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [p valueForProperty: ADPhoneProperty]] autorelease]; val = [v objectAtIndex: 0]; if([k containsObject: @"fax"]) { if([k containsObject: @"home"]) [mv addValue: val withLabel: ADPhoneHomeFAXLabel]; else [mv addValue: val withLabel: ADPhoneWorkFAXLabel]; } else if([k containsObject: @"pager"]) { [mv addValue: val withLabel: ADPhonePagerLabel]; } else // assume "voice" for everything else { if([k containsObject: @"main"]) [mv addValue: val withLabel: ADPhoneMainLabel]; else if([k containsObject: @"cell"]) [mv addValue: val withLabel: ADPhoneMobileLabel]; else if([k containsObject: @"home"]) [mv addValue: val withLabel: ADPhoneHomeLabel]; else [mv addValue: val withLabel: ADPhoneWorkLabel]; } [p setValue: mv forProperty: ADPhoneProperty]; } // email -- multi-string else if([key isEqualToString: @"email"]) { ADMutableMultiValue *mv; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [p valueForProperty: ADEmailProperty]] autorelease]; if([k containsObject: @"home"]) [mv addValue: [v objectAtIndex: 0] withLabel: ADEmailHomeLabel]; else [mv addValue: [v objectAtIndex: 0] withLabel: ADEmailWorkLabel]; [p setValue: mv forProperty: ADEmailProperty]; } else if([key isEqualToString: @"adr"]) { ADMutableMultiValue *mv; NSMutableDictionary *dict; NSString *poBox, *extendedAddr, *street, *locality, *region, *postalCode, *countryName; mv = [[[ADMutableMultiValue alloc] initWithMultiValue: [p valueForProperty: ADAddressProperty]] autorelease]; dict = [NSMutableDictionary dictionaryWithCapacity: 6]; poBox = [v objectAtIndex: 0]; extendedAddr = [v objectAtIndex: 1]; street = [v objectAtIndex: 2]; locality = [v objectAtIndex: 3]; region = [v objectAtIndex: 4]; postalCode = [v objectAtIndex: 5]; countryName = [v objectAtIndex: 6]; if(street && ![street isEqualToString: @""]) [dict setObject: street forKey: ADAddressStreetKey]; if(locality && ![locality isEqualToString: @""]) [dict setObject: locality forKey: ADAddressCityKey]; if(region && ![region isEqualToString: @""]) [dict setObject: region forKey: ADAddressStateKey]; if(postalCode && ![postalCode isEqualToString: @""]) [dict setObject: postalCode forKey: ADAddressZIPKey]; if(countryName && ![countryName isEqualToString: @""]) [dict setObject: countryName forKey: ADAddressCountryKey]; if(poBox && ![poBox isEqualToString: @""]) [dict setObject: poBox forKey: ADAddressPOBoxKey]; if(extendedAddr && ![extendedAddr isEqualToString: @""]) [dict setObject: extendedAddr forKey: ADAddressExtendedAddressKey]; if([k containsObject: @"home"]) [mv addValue: dict withLabel: ADAddressHomeLabel]; else [mv addValue: dict withLabel: ADAddressWorkLabel]; [p setValue: mv forProperty: ADAddressProperty]; } else if([key isEqualToString: @"photo"]) { NSString *encoding; NSString *type; NSData *data; NSLog(@"Photo str found. Keys %@", k); encoding = [k restOfStringStartingWith: @"encoding="]; if(![encoding isEqualToString: @"base64"] && ![encoding isEqualToString: @"b"] && // Evolution exports this way ![k containsObject: @"base64"]) { NSLog(@"Cannot integrate image -- unknown " @"encoding '%@'\n", encoding); return; } type = [k restOfStringStartingWith: @"type="]; data = base64Decode([v objectAtIndex: 0]); // Let's hope NSImage handles this [p setImageData: data]; if(type) [p setImageDataType: type]; else [p setImageDataType: @"jpg"]; // FIXME: This is a fallback solution :-( } // FIXME: The following keys (specified in the vcard spec) aren't // handled by this converter yet, because they're not in the Apple // spec, but should perhaps be: // @"label" -- free-form postal delivery label text // @"key" -- public key // @"rev" -- last revision in ISO8601 format, which NSDate can't // parse (yet) } - (void) appendStringForProperty: (NSString*) prop inPerson: (ADPerson*) p { id val; int i; NSString *label, *identifier, *vcfLabel, *hdr, *fmt; val = [p valueForProperty: prop]; if(!val || ([val respondsToSelector: @selector(count)] && ![val count])) return; if([prop isEqualToString: ADOrganizationProperty]) [self appendStringWithHeader: @"ORG" value: val]; else if([prop isEqualToString: ADJobTitleProperty]) [self appendStringWithHeader: @"TITLE" value: val]; else if([prop isEqualToString: ADHomePageProperty]) [self appendStringWithHeader: @"URL" value: val]; else if([prop isEqualToString: ADNoteProperty]) [self appendStringWithHeader: @"NOTE" value: val]; else if([prop isEqualToString: ADPhoneProperty]) // multi-string { NSString *value; for(i=0; i<[val count]; i++) { value = [val valueAtIndex: i]; identifier = [val identifierAtIndex: i]; label = [val labelAtIndex: i]; vcfLabel = @""; if([label isEqualToString: ADPhoneWorkLabel] || [label isEqualToString: ADWorkLabel]) vcfLabel = @"WORK;VOICE;"; else if([label isEqualToString: ADPhoneHomeLabel] || [label isEqualToString: ADHomeLabel]) vcfLabel = @"HOME;VOICE;"; else if([label isEqualToString: ADPhoneMobileLabel]) vcfLabel = @"CELL;VOICE;"; else if([label isEqualToString: ADPhoneMainLabel]) vcfLabel = @"PREF;VOICE;"; else if([label isEqualToString: ADPhoneHomeFAXLabel]) vcfLabel = @"HOME;FAX;"; else if([label isEqualToString: ADPhoneWorkFAXLabel]) vcfLabel = @"WORK;FAX;"; else if([label isEqualToString: ADPhonePagerLabel]) vcfLabel = @"PAGER;"; else if([label isEqualToString: ADOtherLabel]) vcfLabel = @"OTHER;"; hdr = [NSString stringWithFormat: @"TEL;%@X-GNUSTEPLABEL=%@;" @"X-GNUSTEPID=%@;%d", vcfLabel, label, identifier, i+1]; [self appendStringWithHeader: hdr value: value]; } } else if([prop isEqualToString: ADEmailProperty]) { NSString *value; for(i=0; i<[val count]; i++) { value = [val valueAtIndex: i]; identifier = [val identifierAtIndex: i]; label = [val labelAtIndex: i]; vcfLabel = @""; if([label isEqualToString: ADEmailWorkLabel] || [label isEqualToString: ADWorkLabel]) vcfLabel = @"WORK;"; else if([label isEqualToString: ADEmailHomeLabel] || [label isEqualToString: ADHomeLabel]) vcfLabel = @"HOME;"; else if([label isEqualToString: ADOtherLabel]) vcfLabel = @"OTHER;"; hdr = [NSString stringWithFormat: @"EMAIL;INTERNET;%@X-GNUSTEPLABEL=%@;" @"X-GNUSTEPID=%@;%d", vcfLabel, label, identifier, i+1]; [self appendStringWithHeader: hdr value: value]; } } else if([prop isEqualToString: ADAddressProperty]) { NSDictionary *value; NSString *poBox, *extAddr, *street, *locality, *region, *postalCode, *country; for(i=0; i<[val count]; i++) { value = [val valueAtIndex: i]; identifier = [val identifierAtIndex: i]; label = [val labelAtIndex: i]; vcfLabel = @""; if([label isEqualToString: ADAddressWorkLabel] || [label isEqualToString: ADWorkLabel]) vcfLabel = @"WORK;"; else if([label isEqualToString: ADAddressHomeLabel] || [label isEqualToString: ADHomeLabel]) vcfLabel = @"HOME;"; else if([label isEqualToString: ADOtherLabel]) vcfLabel = @"OTHER;"; poBox = [value objectForKey: ADAddressPOBoxKey]; if(!poBox) poBox = @""; extAddr = [value objectForKey: ADAddressExtendedAddressKey]; if(!extAddr) extAddr = @""; street = [value objectForKey: ADAddressStreetKey]; if(!street) street = @""; locality = [value objectForKey: ADAddressCityKey]; if(!locality) locality = @""; region = [value objectForKey: ADAddressStateKey]; if(!region) region = @""; postalCode = [value objectForKey: ADAddressZIPKey]; if(!postalCode) postalCode = @""; country = [value objectForKey: ADAddressCountryKey]; if(!country) country = @""; hdr = [NSString stringWithFormat: @"ADR;%@X-GNUSTEPLABEL=%@;" @"X-GNUSTEPID=%@;%d", vcfLabel, label, identifier, i+1]; fmt = [NSString stringWithFormat: @"%@;%@;%@;%@;%@;%@;%@", poBox, extAddr, street, locality, region, postalCode, country]; [self appendStringWithHeader: hdr value: fmt]; } } else if([prop isEqualToString: ADImageProperty]) { if ([p valueForProperty: ADImageTypeProperty]) hdr = [NSString stringWithFormat: @"PHOTO;TYPE=%@;ENCODING=BASE64", [[p valueForProperty: ADImageTypeProperty] uppercaseString]]; else hdr = [NSString stringWithFormat: @"PHOTO;ENCODING=BASE64"]; [self appendStringWithHeader: hdr value: base64Encode(val) binaryLinebreak: YES]; } else if([prop isEqualToString: ADBirthdayProperty]) [self appendStringWithHeader: @"BDAY" value: [val descriptionWithCalendarFormat: @"%Y-%d-%m"]]; else NSLog(@"Warning: Unhandled property '%@' in conversion to vcard\n", prop); } - (void) appendStringWithHeader: (NSString*) header value: (NSString*) value { return [self appendStringWithHeader: header value: value binaryLinebreak: NO]; } - (void) appendStringWithHeader: (NSString*) header value: (NSString*) value binaryLinebreak: (BOOL) blb { const char *str1, *str2; str1 = [value lossyCString]; str2 = [value UTF8String]; if(strcmp(str1, str2) != 0) { value = [value stringByQuotedPrintableEncoding]; header = [header stringByAppendingString: @";ENCODING=QUOTED-PRINTABLE;CHARSET=UTF-8"]; } if(!([value length] >= 76) || !blb) [_out appendFormat: @"%@:%@\r\n", header, value]; else { int i; [_out appendFormat: @"%@:\r\n", header]; for(i=0; i<[value length]; i+=76) { NSString *substr; substr = [value substringFromIndex: i]; if([substr length] > 76) substr = [value substringWithRange: NSMakeRange(i, 76)]; [_out appendFormat: @" %@\r\n", substr]; } } } @end Addresses-0.5.0/Frameworks/Addresses/ADConverter.m0000644000175000000240000000677114746005572021245 0ustar multixstaff// ADConverter.m (this is -*- ObjC -*-) // // Author: Björn Giesler // Riccardo Mottola // Address Book Framework for GNUstep // #import "ADConverter.h" #import "ADPListConverter.h" #import "ADVCFConverter.h" ADConverterManager *_manager = nil; @implementation ADConverterManager + (ADConverterManager*) sharedManager { if(!_manager) _manager = [[self alloc] init]; return _manager; } - (instancetype)init { self = [super init]; if (self) { _icClasses = [[NSMutableDictionary alloc] initWithCapacity: 1]; _ocClasses = [[NSMutableDictionary alloc] initWithCapacity: 1]; // couple of standard converters [self registerInputConverterClass: [ADPListConverter class] forType: @"mfaddr"]; [self registerInputConverterClass: [ADVCFConverter class] forType: @"vcf"]; [self registerOutputConverterClass: [ADVCFConverter class] forType: @"vcf"]; } return self; } - (BOOL) registerInputConverterClass: (Class) c forType: (NSString*) type { type = [type lowercaseString]; if([[_icClasses allKeys] containsObject: type]) return NO; [_icClasses setObject: c forKey: type]; return YES; } - (BOOL) registerOutputConverterClass: (Class) c forType: (NSString*) type { type = [type lowercaseString]; if([[_ocClasses allKeys] containsObject: type]) return NO; [_ocClasses setObject: c forKey: type]; return YES; } - (id) inputConverterForType: (NSString*) type { Class c; c = [_icClasses objectForKey: type]; if(!c) return nil; return [[[c alloc] initForInput] autorelease]; } - (id) outputConverterForType: (NSString*) type { Class c; c = [_ocClasses objectForKey: type]; if(!c) return nil; return [[[c alloc] initForOutput] autorelease]; } - (id) inputConverterWithFile: (NSString*) filename { id obj; Class c; NSData *data; NSString *string; c = [_icClasses objectForKey: [[filename pathExtension] lowercaseString]]; if(!c) return nil; obj = [[[c alloc] initForInput] autorelease]; data = [NSData dataWithContentsOfFile: filename]; if (!data || [data length] < 5) { NSLog(@"Error while reading file %@", filename); return nil; } /* UTF-8 is standard, so it is our first attempt */ string = [[NSString alloc] initWithData:data encoding: NSUTF8StringEncoding]; if (!string) { const unichar *data_unichar = (const unichar *)(void *) [data bytes]; NSLog(@"File in is notNSUTF8StringEncoding. vCARD RFC 6350 specifies UTF-8 as only valid encoding"); if ((data_unichar[0] == 0xFEFF) || (data_unichar[0] == 0xFFFE)) { NSLog(@"found an UTF-16 BOM"); string = [[NSString alloc] initWithData:data encoding:NSUnicodeStringEncoding]; } } if (!string) { NSLog(@"Attempting NSISOLatin1StringEncoding"); string = [[NSString alloc] initWithData:data encoding: NSISOLatin1StringEncoding]; } if (!string) { NSLog(@"Attempting NSISOLatin2StringEncoding"); string = [[NSString alloc] initWithData:data encoding: NSISOLatin2StringEncoding]; } if (!string) { NSLog(@"No encoding found for file %@, aborting.", filename); return nil; } if (![obj useString: AUTORELEASE(string)]) return nil; return obj; } - (NSArray*) inputConvertableFileTypes { return [_icClasses allKeys]; } - (NSArray*) outputConvertableFileTypes { return [_ocClasses allKeys]; } @end Addresses-0.5.0/Frameworks/Addresses/ScriptingInfo.plist0000644000175000000240000000063512312144407022523 0ustar multixstaff{ ScriptingInfoClass = ADScriptingInfo; Classes = ( ADAddressBook, ADConverterManager, ADEnvelopeAddressBook, ADGroup, ADLocalAddressBook, ADMultiValue, ADMultiValue, ADMutableMultiValue, ADMutableMultiValue, ADPListConverter, ADPerson, ADRecord, ADSearchElement, ADVCFConverter ); } Addresses-0.5.0/Frameworks/Addresses/English.lproj/0000755000175000000240000000000012312144407021402 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/English.lproj/PropertiesAndLabels.strings0000644000175000000240000000321712312144407026722 0ustar multixstaff"UID" = "Unique Identifier"; "CreationDate" = "Creation Date"; "ModificationDate" = "Modification Date"; "FirstName" = "First Name"; "LastName" = "Last Name"; "FirstNamePhonetic" = "First Name (Phonetic)"; "LastNamePhonetic" = "Last Name (Phonetic)"; "BirthDate" = "Date of Birth"; "Organization" = "Organization"; "JobTitle" = "Job Title"; "HomePage" = "Home Page"; "Email" = "Email"; "WorkEmail" = "Work Email Address"; "HomeEmail" = "Home Email Address"; "Address" = "Address"; "Street" = "Street"; "City" = "City"; "State" = "State"; "ZIP" = "ZIP Code"; "Country" = "Country"; "CountryCode" = "Country Code"; "POBox" = "PO Box"; "ExtAddr" = "Extended Address"; "HomeAddr" = "Home Address"; "WorkAddr" = "Work Address"; "Phone" = "Phone"; "HomePhone" = "Home Phone"; "WorkPhone" = "Work Phone"; "MobilePhone" = "Mobile Phone"; "MainPhone" = "Main Phone"; "HomeFax" = "Home Fax"; "WorkFax" = "Work Fax"; "Pager" = "Pager"; "AIM" = "AOL Instant Messaging"; "WorkAIM" = "AIM Work Address"; "HomeAIM" = "AIM Home Address"; "Jabber" = "Jabber"; "WorkJabber" = "Jabber Work Address"; "HomeJabber" = "Jabber Home Address"; "MSN" = "Microsoft Network"; "WorkMSN" = "MSN Work Address"; "HomeMSN" = "MSN Home Address"; "Yahoo" = "Yahoo"; "WorkYahoo" = "Yahoo Work Address"; "HomeYahoo" = "Yahoo Home Address"; "ICQ" = "ICQ Number"; "WorkICQ" = "Work ICQ Number"; "HomeICQ" = "Home ICQ Number"; "Note" = "Note"; "MiddleName" = "Middle Name"; "MiddleNamePhonetic" = "Middle Name (Phonetic)"; "Title" = "Title"; "Suffix" = "Suffix"; "Nickname" = "Nickname"; "MaidenName" = "Maiden Name"; "Image" = "Image"; "GroupName" = "Group Name"; "Work" = "Work"; "Home" = "Home"; "Other" = "Other"; Addresses-0.5.0/Frameworks/Addresses/ADLocalAddressBook.m0000644000175000000240000005536614750126005022443 0ustar multixstaff// ADLocalAddressBook.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADLocalAddressBook.h" #import "ADRecord.h" static NSString *_localABDefLoc = @"~/GNUstep/Library/Addresses"; static ADLocalAddressBook *_localAB = nil; @interface ADLocalAddressBook(Private) - (void) _invalidateCache; - (NSString*) _nextValidID; - (void) _handleRecordChanged: (NSNotification*) note; - (void) _handleDBChangedExternally: (NSNotification*) note; - (BOOL) _lockDatabase; - (void) _unlockDatabase; - (NSArray*) _toplevelRecordsOfClass: (Class) c; - (NSArray*) _allGroupsEverywhere; - (NSArray*) _allSubgroupsBelowGroup: (ADGroup*) group; - (BOOL) removeRecord: (ADRecord*) record forGroup: (ADGroup*) group recursive: (BOOL) recursive; @end @implementation ADLocalAddressBook(Private) - (void) _invalidateCache { [_cache release]; _cache = [[NSMutableDictionary alloc] init]; } - (NSString*) _nextValidID { unsigned long next; NSFileManager *fm; NSString *idFile; next = 0; fm = [NSFileManager defaultManager]; idFile = [_loc stringByAppendingPathComponent: @"NEXTID"]; if([fm fileExistsAtPath: idFile]) next = [[NSString stringWithContentsOfFile: idFile] intValue]; else { NSString *fname; NSEnumerator *e; e = [[fm directoryContentsAtPath: _loc] objectEnumerator]; NSLog(@"Warning: Creating new NEXTID\n"); while((fname = [e nextObject])) if([[fname pathExtension] isEqualToString: @"mfaddr"]) next = MAX(next, [[fname stringByDeletingPathExtension] intValue]); NSLog(@"New NEXTID is %lu\n", next); } next++; if(![[NSString stringWithFormat: @"%lu", next] writeToFile: idFile atomically: NO]) [NSException raise: ADAddressBookInternalError format: @"Couldn't save %@", idFile]; return [NSString stringWithFormat: @"%lu", next]; } - (void) _handleRecordChanged: (NSNotification*) note { ADRecord *record; record = [note object]; if([record addressBook] != self) return; if(![record uniqueId]) return; if(![_unsaved objectForKey: [record uniqueId]]) [_unsaved setObject: record forKey: [record uniqueId]]; [[NSNotificationCenter defaultCenter] postNotificationName: ADDatabaseChangedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [record uniqueId], @"UniqueIDOfChangedRecord", self, @"AddressBookContainingChangedRecord", nil]]; } - (void) _handleDBChangedExternally: (NSNotification*) note { NSString *obj; NSDictionary *info; NSString *location, *pid; obj = [note object]; info = [note userInfo]; if(![obj isEqualToString: [self className]]) return; location = [info objectForKey: @"Location"]; pid = [info objectForKey: @"IDOfChangingProcess"]; if(!location || !pid) return; if([location isEqualToString: _loc] && ([pid intValue] != [[NSProcessInfo processInfo] processIdentifier])) { NSLog(@"Posting\n"); [self _invalidateCache]; [[NSNotificationCenter defaultCenter] postNotificationName: ADDatabaseChangedExternallyNotification object: self userInfo: [note userInfo]]; } } - (BOOL) _lockDatabase { int pid; NSString *contents; NSString *lockfile; pid = [[NSProcessInfo processInfo] processIdentifier]; contents = [NSString stringWithFormat: @"%d", pid]; lockfile = [_loc stringByAppendingPathComponent: @"LOCK"]; if([[NSFileManager defaultManager] fileExistsAtPath: lockfile]) { pid = [[NSString stringWithContentsOfFile: lockfile] intValue]; NSLog(@"Lock file held by process with id %d\n", pid); return NO; } return [contents writeToFile: lockfile atomically: NO]; } - (void) _unlockDatabase { NSString *lockfile; lockfile = [_loc stringByAppendingPathComponent: @"LOCK"]; [[NSFileManager defaultManager] removeFileAtPath: lockfile handler: nil]; } - (NSArray*) _toplevelRecordsOfClass: (Class) c { NSMutableArray *ppl; NSFileManager *fm; NSEnumerator *e; NSString *fname; ADRecord *record; NSMutableDictionary *tmpUnsaved; ppl = [NSMutableArray arrayWithCapacity: 10]; fm = [NSFileManager defaultManager]; e = [[fm directoryContentsAtPath: _loc] objectEnumerator]; while((fname = [e nextObject])) { NSString *str; NSString *uid; uid = [fname stringByDeletingPathExtension]; record = [self recordForUniqueId: uid]; if(!record || ![record isKindOfClass: c]) continue; str = [record valueForProperty: @"Toplevel"]; if(str && ![str boolValue]) continue; [ppl addObject: record]; } // add those that haven't been saved tmpUnsaved = [[_unsaved mutableCopy] autorelease]; e = [ppl objectEnumerator]; while((record = [e nextObject])) [tmpUnsaved removeObjectForKey: [record uniqueId]]; e = [tmpUnsaved objectEnumerator]; while((record = [e nextObject])) if([record isKindOfClass: c]) { NSString *str = [record valueForProperty: @"Toplevel"]; if(str && ![str boolValue]) continue; [ppl addObject: record]; } return ppl; } - (NSArray*) _allGroupsEverywhere { NSMutableArray *arr; NSEnumerator *e; ADGroup *group; arr = [NSMutableArray array]; e = [[self groups] objectEnumerator]; while((group = [e nextObject])) { NSArray *subgroups = [self _allSubgroupsBelowGroup: group]; [arr addObject: group]; [arr addObjectsFromArray: subgroups]; } return arr; } - (NSArray*) _allSubgroupsBelowGroup: (ADGroup*) group { NSMutableArray *arr; NSEnumerator *e; ADGroup *otherGroup; arr = [NSMutableArray array]; e = [[group subgroups] objectEnumerator]; while((otherGroup = [e nextObject])) { NSArray *subgroups = [self _allSubgroupsBelowGroup: otherGroup]; [arr addObject: otherGroup]; [arr addObjectsFromArray: subgroups]; } return arr; } - (BOOL) removeRecord: (ADRecord*) record forGroup: (ADGroup*) group recursive: (BOOL) recursive { NSString *guid; NSString *muid; NSMutableArray *memberIds; NSUInteger i; BOOL doneAnything; guid = [group uniqueId]; if(!guid || [group addressBook] != self) { NSLog(@"Group being removed from is not part of this address book\n"); return NO; } muid = [record uniqueId]; if(!muid || [record addressBook] != self) { NSLog(@"Member being removed is not part of this address book\n"); return NO; } memberIds = [NSMutableArray arrayWithArray: [group valueForProperty: ADMemberIDsProperty]]; for(i = 0; i < [memberIds count]; i++) { NSString *ruid; ruid = [memberIds objectAtIndex: i]; if([ruid isEqualToString: muid]) { [memberIds removeObjectAtIndex: i--]; doneAnything = YES; } } // was this group changed? put it into _unsaved if(doneAnything) [group setValue: memberIds forProperty: ADMemberIDsProperty]; if(recursive) { NSEnumerator *e; ADGroup *subgroup; e = [[group subgroups] objectEnumerator]; while((subgroup = [e nextObject])) [self removeRecord: record forGroup: group recursive: YES]; } return YES; } @end @implementation ADLocalAddressBook + (NSString*) defaultLocation { return _localABDefLoc; } + (void) setDefaultLocation: (NSString*) location { NSAssert(location, @"Location cannot be nil"); [_localABDefLoc release]; _localABDefLoc = [location retain]; } + (ADAddressBook*) sharedAddressBook { if(!_localAB) _localAB = [[ADLocalAddressBook alloc] initWithLocation: [self defaultLocation]]; return _localAB; } + (BOOL) makeLocalAddressBookAtLocation: (NSString*) location { NSUInteger i; NSString *currentPath; NSFileManager *fm; NSArray *arr; fm = [NSFileManager defaultManager]; location = [location stringByExpandingTildeInPath]; arr = [location pathComponents]; currentPath = [arr objectAtIndex: 0]; for(i = 1; i < [arr count]; i++) { BOOL dir, result; currentPath = [currentPath stringByAppendingPathComponent: [arr objectAtIndex: i]]; result = [fm fileExistsAtPath: currentPath isDirectory: &dir]; if((result == YES) && (dir == NO)) return NO; if(result == NO) result = [fm createDirectoryAtPath: currentPath attributes: nil]; if(result == NO) return NO; } return YES; } - (instancetype) initWithLocation: (NSString*) location { self = [super init]; if (self) { BOOL dir; NSString *loc; NSAssert(location, @"Location cannot be nil"); _cache = [[NSMutableDictionary alloc] init]; loc = [location stringByExpandingTildeInPath]; if(![[NSFileManager defaultManager] fileExistsAtPath: loc isDirectory: &dir] || !dir) if(![[self class] makeLocalAddressBookAtLocation: location]) [NSException raise: ADAddressBookInternalError format: @"Couldn't create local address book at %@", location]; _loc = [loc retain]; _unsaved = [[NSMutableDictionary alloc] initWithCapacity: 10]; _deleted = [[NSMutableDictionary alloc] initWithCapacity: 10]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(_handleRecordChanged:) name: ADRecordChangedNotification object: nil]; [[NSDistributedNotificationCenter defaultCenter] addObserver: self selector: @selector(_handleDBChangedExternally:) name: ADDatabaseChangedExternallyNotification object: nil]; } return self; } - (void) dealloc { [_loc release]; [_unsaved release]; [[NSNotificationCenter defaultCenter] removeObserver: self]; [[NSDistributedNotificationCenter defaultCenter] removeObserver: self]; [super dealloc]; } - (NSString*) location { return _loc; } - (BOOL) save { NSEnumerator *e; ADRecord *r; NSString *path; NSFileManager *fm; NSString *pidStr; fm = [NSFileManager defaultManager]; if(![self _lockDatabase]) return NO; // save everything from _unsaved e = [_unsaved objectEnumerator]; while((r = [e nextObject])) { path = [[_loc stringByAppendingPathComponent: [r uniqueId]] stringByAppendingPathExtension: @"mfaddr"]; if(![[r contentDictionary] writeToFile: path atomically: NO]) { NSLog(@"Couldn't write record to %@", path); [self _unlockDatabase]; return NO; } } // delete everything from _deleted e = [_deleted objectEnumerator]; while((r = [e nextObject])) { NSString *imgPath; NSEnumerator *e; NSString *imgFile; path = [[_loc stringByAppendingPathComponent: [r uniqueId]] stringByAppendingPathExtension: @"mfaddr"]; if(![fm removeFileAtPath: path handler: nil]) NSLog(@"Error removing %@\n", path); imgPath = [_loc stringByAppendingPathComponent: @"IMAGES"]; e = [[fm directoryContentsAtPath: imgPath] objectEnumerator]; while((imgFile = [e nextObject])) { if([[imgFile stringByDeletingPathExtension] isEqualToString: [r uniqueId]]) { imgFile = [imgPath stringByAppendingPathComponent: imgFile]; if(![fm removeFileAtPath: imgFile handler: nil]) NSLog(@"Error removing %@\n", imgFile); } } } [self _unlockDatabase]; [_unsaved release]; _unsaved = [[NSMutableDictionary alloc] initWithCapacity: 10]; [_deleted release]; _deleted = [[NSMutableDictionary alloc] initWithCapacity: 10]; pidStr = [NSString stringWithFormat: @"%d", [[NSProcessInfo processInfo] processIdentifier]]; [[NSDistributedNotificationCenter defaultCenter] postNotificationName: ADDatabaseChangedExternallyNotification object: [self className] userInfo: [NSDictionary dictionaryWithObjectsAndKeys: _loc, @"Location", pidStr, @"IDOfChangingProcess", nil]]; return YES; } - (BOOL) hasUnsavedChanges { return (([_unsaved count] != 0) || ([_deleted count] != 0)); } - (ADPerson*) me { NSFileManager *fm; NSString *path; NSCharacterSet *wsp; NSString *uid; ADRecord *r; fm = [NSFileManager defaultManager]; path = [_loc stringByAppendingPathComponent: @"ME"]; if(![fm fileExistsAtPath: path]) return nil; wsp = [NSCharacterSet whitespaceAndNewlineCharacterSet]; uid = [[NSString stringWithContentsOfFile: path] stringByTrimmingCharactersInSet: wsp]; r = [self recordForUniqueId: uid]; if(!r || ![r isKindOfClass: [ADPerson class]]) { NSLog(@"No record with uid '%@'\n", uid); [fm removeFileAtPath: path handler: nil]; return nil; } return (ADPerson*)r; } - (void) setMe: (ADPerson*) me { NSString *path; NSString *uid; BOOL retval; path = [_loc stringByAppendingPathComponent: @"ME"]; uid = [me uniqueId]; if(!uid) { NSLog(@"Record for \"me\" has no UID!\n"); return; } if(![self _lockDatabase]) return; retval = [uid writeToFile: path atomically: NO]; [self _unlockDatabase]; if(!retval) NSLog(@"Couldn't write \"me\" record to %@\n", path); } - (ADRecord*) recordForUniqueId: (NSString*) uniqueId { NSString *path; NSFileManager *fm; BOOL dir; id record; path = [_loc stringByAppendingPathComponent: uniqueId]; fm = [NSFileManager defaultManager]; // has it been deleted by us? if so, return nil! record = [_deleted objectForKey: uniqueId]; if(record) return nil; // has it been modified by us? record = [_unsaved objectForKey: uniqueId]; if(record) return record; // did we cache it? record = [_cache objectForKey: uniqueId]; if(record) return record; path = [path stringByAppendingPathExtension: @"mfaddr"]; if([fm fileExistsAtPath: path isDirectory: &dir] && !dir) record = [[ADRecord alloc] initWithRepresentation: [NSString stringWithContentsOfFile: path] type: @"mfaddr"]; if(record) { [record setAddressBook: self]; [_cache setObject: record forKey: [record uniqueId]]; return [record autorelease]; } return nil; } - (BOOL) addRecord: (ADRecord*) record { NSString *type; NSData *data; NSString *uid; uid = [record uniqueId]; if(uid) { NSLog(@"Record already contains an UID\n"); return NO; } if([record addressBook]) { NSLog(@"Record is already part of an address book\n"); return NO; } uid = [self _nextValidID]; [record setValue: uid forProperty: ADUIDProperty]; [record setAddressBook: self]; [_unsaved setObject: record forKey: uid]; // save out image to temp file type = [record valueForProperty: ADImageTypeProperty]; data = [record valueForProperty: ADImageProperty]; if(type && data) { NSString *path; path = [NSTemporaryDirectory() stringByAppendingPathComponent: @"ADLABPic"]; path = [path stringByAppendingPathExtension: type]; if(![data writeToFile: path atomically: NO]) NSLog(@"Couldn't write temp file %@\n", path); else if(![self setImageDataForPerson: (ADPerson*)record withFile: path]) NSLog(@"Couldn't set temp file %@\n", path); [[NSFileManager defaultManager] removeFileAtPath: path handler: nil]; } [[NSNotificationCenter defaultCenter] postNotificationName: ADDatabaseChangedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: [record uniqueId], @"UniqueIDOfChangedRecord", self, @"AddressBookContainingChangedRecord", nil]]; return YES; } - (BOOL) removeRecord: (ADRecord*) record { NSString *uid; NSEnumerator *e; ADGroup *g; uid = [record uniqueId]; if(!uid) { NSLog(@"Record does not contain an UID\n"); return NO; } if([record addressBook] != self) { NSLog(@"Record is not part of this address book\n"); return NO; } [_unsaved removeObjectForKey: uid]; if([record isKindOfClass: [ADGroup class]]) { g = (ADGroup*)record; while([[g subgroups] count]) [g removeSubgroup: [[g subgroups] objectAtIndex: 0]]; } [_deleted setObject: record forKey: uid]; e = [[self groups] objectEnumerator]; while((g = [e nextObject])) [self removeRecord: record forGroup: g recursive: YES]; [[NSNotificationCenter defaultCenter] postNotificationName: ADDatabaseChangedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: uid, @"UniqueIDOfChangedRecord", self, @"AddressBookContainingChangedRecord", nil]]; return YES; } - (NSArray*) people { return [self _toplevelRecordsOfClass: [ADPerson class]]; } - (NSArray*) groups { return [self _toplevelRecordsOfClass: [ADGroup class]]; } @end // ADLocalAddressBook @implementation ADLocalAddressBook(GroupAccess) - (NSArray*) recordsInGroup: (ADGroup*) group withClass: (Class) class { NSMutableArray *members; NSMutableArray *memberIds; NSString *guid; NSUInteger i; guid = [group uniqueId]; if(!guid || [group addressBook] != self) { NSLog(@"Group being examined is not part of this address book\n"); return nil; } members = [NSMutableArray array]; memberIds = [group valueForProperty: ADMemberIDsProperty]; for(i = 0; i < [memberIds count]; i++) { ADRecord *r = [self recordForUniqueId: [memberIds objectAtIndex: i]]; if(!r) { NSLog(@"Error: Member %@ still in group, but doesn't exist\n", [memberIds objectAtIndex: i]); [memberIds removeObjectAtIndex: i--]; continue; } if([r isKindOfClass: class]) [members addObject: r]; } return [NSArray arrayWithArray: members]; } - (NSArray*) membersForGroup: (ADGroup*) group { return [self recordsInGroup: group withClass: [ADPerson class]]; } - (BOOL) addRecord: (ADRecord*) record forGroup: (ADGroup*) group { NSString *guid; NSString *muid; NSMutableArray *memberIds; guid = [group uniqueId]; if(!guid || [group addressBook] != self) { NSLog(@"Group being added to is not part of this address book\n"); return NO; } muid = [record uniqueId]; if(!muid || [record addressBook] != self) { if([record isKindOfClass: [ADGroup class]] && ![record addressBook] && !muid) { muid = [self _nextValidID]; [record setValue: muid forProperty: ADUIDProperty]; [record setAddressBook: self]; [record setValue: @"NO" forProperty: @"Toplevel"]; [_unsaved setObject: record forKey: muid]; } else { NSLog(@"Member being added to group has no UID\n"); return NO; } } memberIds = [NSMutableArray arrayWithArray: [group valueForProperty: ADMemberIDsProperty]]; if(!memberIds) { memberIds = [[[NSMutableArray alloc] init] autorelease]; [group setValue: memberIds forProperty: ADMemberIDsProperty]; } if([memberIds containsObject: muid]) { NSLog(@"Record %@ already is a member of group\n", muid); return NO; } [memberIds addObject: muid]; [group setValue: memberIds forProperty: ADMemberIDsProperty]; return YES; } - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group { return [self addRecord: person forGroup: group]; } - (BOOL) removeRecord: (ADRecord*) record forGroup: (ADGroup*) group { return [self removeRecord: record forGroup: group recursive: NO]; } - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group { return [self removeRecord: person forGroup: group]; } - (NSArray*) subgroupsForGroup: (ADGroup*) group { return [self recordsInGroup: group withClass: [ADGroup class]]; } - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { return [self addRecord: g1 forGroup: g2]; } - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { NSArray *arr; NSUInteger i; arr = [self subgroupsForGroup: g1]; for(i=0; i<[arr count]; i++) [self removeSubgroup: [arr objectAtIndex: i] forGroup: g1]; [self removeRecord: g1 forGroup: g2]; // when a subgroup gets removed from the last parent group, it is // deleted, as opposed to when a person is removed. arr = [self parentGroupsForGroup: g1]; if(![arr count]) [_deleted setObject: g1 forKey: [g1 uniqueId]]; return YES; } - (NSArray*) parentGroupsForGroup: (ADGroup*) group { NSMutableArray *arr; NSEnumerator *e; ADGroup *g; NSString *guid; guid = [group uniqueId]; if(!guid || [group addressBook] != self) { NSLog(@"Group being removed from is not part of this address book\n"); return nil; } arr = [NSMutableArray array]; e = [[self _allGroupsEverywhere] objectEnumerator]; while((g = [e nextObject])) if([[g valueForProperty: ADMemberIDsProperty] containsObject: guid]) [arr addObject: g]; return [NSArray arrayWithArray: arr]; } @end @implementation ADLocalAddressBook (ImageDataFile) - (BOOL) setImageDataForPerson: (ADPerson*) person withFile: (NSString*) filename { NSString *uid; NSString *path; NSData *data; NSFileManager *fm; BOOL dir, ok; uid = [person uniqueId]; if(!uid || [person addressBook] != self) { NSLog(@"Person for image file %@ is not part of this address book\n", filename); return NO; } fm = [NSFileManager defaultManager]; path = [_loc stringByAppendingPathComponent: @"IMAGES"]; ok = [fm fileExistsAtPath: path isDirectory: &dir]; if(ok && !dir) [NSException raise: ADAddressBookInternalError format: @"%@ exists, but is not a directory!", path]; if(!ok) ok = [fm createDirectoryAtPath: path attributes: nil]; if(!ok) { NSLog(@"Error: Couldn't create directory %@\n", path); return NO; } data = [NSData dataWithContentsOfFile: filename]; if(!data) return NO; path = [path stringByAppendingPathComponent: uid]; path = [path stringByAppendingPathExtension: [filename pathExtension]]; ok = [data writeToFile: path atomically: NO]; if(!ok) return NO; [person setValue: [path pathExtension] forProperty: ADImageTypeProperty]; return YES; } - (NSString*) imageDataFileForPerson: (ADPerson*) person { NSString *uid; NSString *type; NSString *path; NSFileManager *fm; BOOL dir, ok; uid = [person uniqueId]; if(!uid || [person addressBook] != self) { NSLog(@"Person whose image file is being queried is not part of " @"this address book\n"); return nil; } type = [person valueForProperty: ADImageTypeProperty]; if(!type) { if([person valueForProperty: ADImageProperty]) NSLog(@"Person whose image file is being queried has an image, but " @"no ImageType property\n"); return nil; } fm = [NSFileManager defaultManager]; path = [_loc stringByAppendingPathComponent: @"IMAGES"]; path = [path stringByAppendingPathComponent: uid]; path = [path stringByAppendingPathExtension: type]; ok = [fm fileExistsAtPath: path isDirectory: &dir]; if(!ok) path = nil; if(ok && dir) [NSException raise: ADAddressBookInternalError format: @"%@ exists, but is a directory!", path]; return path; } @end @implementation ADLocalAddressBook(AddressesExtensions) - (NSDictionary*) addressBookDescription { return [NSDictionary dictionaryWithObjectsAndKeys: [self className], @"Class", _loc, @"Location", nil]; } @end Addresses-0.5.0/Frameworks/Addresses/ADImageLoading.h0000644000175000000240000000222712312144407021565 0ustar multixstaff// ADImageLoading.h (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address Book API for GNUstep // #ifndef ADIMAGELOADING_H #define ADIMAGELOADING_H #import @protocol CImageClient - (void) consumeImageData: (NSData*) data forTag: (ADImageTag) tag; @end @interface ADPerson (ImageAdditions) - (BOOL) setImageData: (NSData*) data; - (NSData*) imageData; // Following two not implemented on GNUstep - (ADImageTag) beginLoadingImageDataForClient: (id) client; + (void) cancelLoadingImageDataForTag: (ADImageTag) tag; @end #define NSIMAGEREP_BROKEN // FIXME NOTE: The following extension WILL DISAPPEAR as soon as GNUstep's // NSImageRep can initWithData: for data formats other than // tiff. Right now, it can only initWithContentsOfFile:, so we have to // keep a file around. #ifdef NSIMAGEREP_BROKEN @interface ADPerson (ImageAdditionsForBrokenNSImageRep) // these require the person to be owned by an address book. - (BOOL) setImageDataWithFile: (NSString*) filename; - (NSString*) imageDataFile; - (BOOL) setImageDataType: (NSString*) type; @end #endif #endif //ADIMAGELOADING_H Addresses-0.5.0/Frameworks/Addresses/Spanish.lproj/0000755000175000000240000000000012312144407021416 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/Spanish.lproj/PropertiesAndLabels.strings0000644000175000000240000000365012312144407026737 0ustar multixstaff"UID" = "Identificador \u00fanico"; "CreationDate" = "Fecha de creaci\u00f3n"; "ModificationDate" = "Fecha de modificaci\u00f3n"; "FirstName" = "Nombre"; "LastName" = "Apellido"; "FirstNamePhonetic" = "Nombre (Fon\u00e9tico)"; "LastNamePhonetic" = "Apellido (Fon\u00e9tico)"; "BirthDate" = "Fecha de nacimiento"; "Organization" = "Organizaci\u00f3n"; "JobTitle" = "Puesto"; "HomePage" = "Homepage"; "Email" = "Correo electr\u00f3nico"; "WorkEmail" = "Correo electr\u00f3nico Laboral"; "HomeEmail" = "Correo electr\u00f3nico Personal"; "Address" = "Domicilio"; "Street" = "Calle"; "City" = "Ciudad"; "State" = "Provincia"; "ZIP" = "C\u00f3digo postal"; "Country" = "Pa\u00eds"; "CountryCode" = "C\u00f3digo de pa\u00eds"; "POBox" = "Casilla de Correo"; "ExtAddr" = "Piso/Departamento/Puerta"; "HomeAddr" = "Domicilio Personal"; "WorkAddr" = "Domicilio Laboral"; "Phone" = "Tel\u00e9fono"; "HomePhone" = "Tel\u00e9fono Personal"; "WorkPhone" = "Tel\u00e9fono Laboral"; "MobilePhone" = "Tel\u00e9fono m\u00f3vil"; "MainPhone" = "Conmutador"; "HomeFax" = "Fax Personal"; "WorkFax" = "Fax Laboral"; "Pager" = "Radiollamada"; "AIM" = "AOL Instant Messaging"; "WorkAIM" = "Usuario AIM Laboral"; "HomeAIM" = "Usuario AIM Personal"; "Jabber" = "Jabber"; "WorkJabber" = "Usuario Jabber Laboral"; "HomeJabber" = "Usuario Jabber Personal"; "MSN" = "Microsoft Network"; "WorkMSN" = "Usuario MSN Laboral"; "HomeMSN" = "Usuario MSN Personal"; "Yahoo" = "Yahoo"; "WorkYahoo" = "Usuario Yahoo Laboral"; "HomeYahoo" = "Usuario Yahoo Personal"; "ICQ" = "N\u00famero ICQ"; "WorkICQ" = "N\u00famero ICQ Laboral"; "HomeICQ" = "N\u00famero ICQ Personal"; "Note" = "Note"; "MiddleName" = "Nombre intermedio"; "MiddleNamePhonetic" = "Nombre intermedio (Fon\u00e9tico)"; "Title" = "T\u00edtulo"; "Suffix" = "Sufijo"; "Nickname" = "Apodo"; "MaidenName" = "Nombre soltera"; "Image" = "Im\u00e1gen"; "GroupName" = "Nombre de grupo"; "Work" = "Trabajo"; "Home" = "Casa"; "Other" = "Otro"; Addresses-0.5.0/Frameworks/Addresses/ADImageLoading.m0000644000175000000240000000332114746005572021602 0ustar multixstaff// ADImageLoading.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADImageLoading.h" @implementation ADPerson (ImageAdditions) - (BOOL) setImageData: (NSData*) data { if(!data) return [self removeValueForProperty: ADImageProperty]; else return [self setValue: data forProperty: ADImageProperty]; } - (NSData*) imageData { return [self valueForProperty: ADImageProperty]; } - (ADImageTag) beginLoadingImageDataForClient: (id) client { [NSException raise: ADUnimplementedError format: @"Asynchronous loading not implemented on GNUstep"]; return -1; } + (void) cancelLoadingImageDataForTag: (ADImageTag) tag { [NSException raise: ADUnimplementedError format: @"Asynchronous loading not implemented on GNUstep"]; } @end #ifdef NSIMAGEREP_BROKEN @implementation ADPerson (ImageAdditionsForBrokenNSImageRep) - (BOOL) setImageDataWithFile: (NSString*) filename { NSData *data; data = [NSData dataWithContentsOfFile: filename]; if(!data) return NO; [self setImageData: data]; if([self addressBook] && [[self addressBook] respondsToSelector: @selector(setImageDataForPerson:withFile:)]) return [(ADLocalAddressBook *)[self addressBook] setImageDataForPerson: self withFile: filename]; return YES; } - (NSString*) imageDataFile { if(![self addressBook] || ![[self addressBook] respondsToSelector: @selector(imageDataFileForPerson:)]) return nil; else return [(ADLocalAddressBook *)[self addressBook] imageDataFileForPerson: self]; } - (BOOL) setImageDataType: (NSString*) type { return [self setValue: type forProperty: ADImageTypeProperty]; } @end #endif Addresses-0.5.0/Frameworks/Addresses/ADGlobals.m0000644000175000000240000002111314746005572020644 0ustar multixstaff// ADGlobals.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import #import "ADGlobals.h" #import "ADAddressBook.h" #import "ADLocalAddressBook.h" NSString* const ADUIDProperty = @"UID"; NSString* const ADCreationDateProperty = @"CreationDate"; NSString* const ADModificationDateProperty = @"ModificationDate"; NSString* const ADSharedProperty = @"Shared"; NSString* const ADFirstNameProperty = @"FirstName"; NSString* const ADLastNameProperty = @"LastName"; NSString* const ADFirstNamePhoneticProperty = @"FirstNamePhonetic"; NSString* const ADLastNamePhoneticProperty = @"LastNamePhonetic"; NSString* const ADFormattedNameProperty = @"FormattedName"; NSString* const ADBirthdayProperty = @"BirthDate"; NSString* const ADOrganizationProperty = @"Organization"; NSString* const ADJobTitleProperty = @"JobTitle"; NSString* const ADHomePageProperty = @"HomePage"; NSString* const ADEmailProperty = @"Email"; NSString* const ADEmailWorkLabel = @"WorkEmail"; NSString* const ADEmailHomeLabel = @"HomeEmail"; NSString* const ADAddressProperty = @"Address"; NSString* const ADAddressStreetKey = @"Street"; NSString* const ADAddressCityKey = @"City"; NSString* const ADAddressStateKey = @"State"; NSString* const ADAddressZIPKey = @"ZIP"; NSString* const ADAddressCountryKey = @"Country"; NSString* const ADAddressCountryCodeKey = @"CountryCode"; NSString* const ADAddressPOBoxKey = @"POBox"; // EXTENSION NSString* const ADAddressExtendedAddressKey = @"ExtAddr"; // EXTENSION NSString* const ADAddressHomeLabel = @"HomeAddr"; NSString* const ADAddressWorkLabel = @"WorkAddr"; NSString* const ADPhoneProperty = @"Phone"; NSString* const ADPhoneWorkLabel = @"WorkPhone"; NSString* const ADPhoneHomeLabel = @"HomePhone"; NSString* const ADPhoneMobileLabel = @"MobilePhone"; NSString* const ADPhoneMainLabel = @"MainPhone"; NSString* const ADPhoneHomeFAXLabel = @"HomeFax"; NSString* const ADPhoneWorkFAXLabel = @"WorkFax"; NSString* const ADPhonePagerLabel = @"Pager"; NSString* const ADAIMInstantProperty = @"AIM"; NSString* const ADAIMWorkLabel = @"WorkAIM"; NSString* const ADAIMHomeLabel = @"HomeAIM"; NSString* const ADJabberInstantProperty = @"Jabber"; NSString* const ADJabberWorkLabel = @"WorkJabber"; NSString* const ADJabberHomeLabel = @"HomeJabber"; NSString* const ADMSNInstantProperty = @"MSN"; NSString* const ADMSNWorkLabel = @"WorkMSN"; NSString* const ADMSNHomeLabel = @"HomeMSN"; NSString* const ADYahooInstantProperty = @"Yahoo"; NSString* const ADYahooWorkLabel = @"WorkYahoo"; NSString* const ADYahooHomeLabel = @"HomeYahoo"; NSString* const ADICQInstantProperty = @"ICQ"; NSString* const ADICQWorkLabel = @"WorkICQ"; NSString* const ADICQHomeLabel = @"HomeICQ"; NSString* const ADNoteProperty = @"Note"; NSString* const ADMiddleNameProperty = @"MiddleName"; NSString* const ADMiddleNamePhoneticProperty = @"MiddleNamePhonetic"; NSString* const ADTitleProperty = @"Title"; NSString* const ADSuffixProperty = @"Suffix"; NSString* const ADNicknameProperty = @"Nickname"; NSString* const ADMaidenNameProperty = @"MaidenName"; NSString* const ADImageProperty = @"Image"; NSString* const ADImageTypeProperty = @"ImageType"; NSString* const ADGroupNameProperty = @"GroupName"; NSString* const ADMemberIDsProperty = @"Members"; NSString* const ADWorkLabel = @"Work"; NSString* const ADHomeLabel = @"Home"; NSString* const ADOtherLabel = @"Other"; NSString* const ADDatabaseChangedNotification=@"ADDatabaseChangedNotification"; NSString* const ADDatabaseChangedExternallyNotification=@"ADDatabaseChangedExternallyNotification"; NSString* const ADRecordChangedNotification=@"ADRecordChangedNotification"; NSString* const ADUniqueIDOfChangedRecordKey=@"ADUniqueIDOfChangedRecordKey"; NSString* const ADChangedPropertyKey=@"ADChangedPropertyKey"; NSString* const ADChangedValueKey=@"ADChangedValueKey"; NSString* const ADAddressBookContainingChangedRecordKey=@"ADAddressBookContainingChangedRecordKey"; NSString* ADAddressBookInaccessibleError = @"ADAddressBookInaccessibleError"; NSString* ADAddressBookConsistencyError = @"ADAddressBookConsistencyError"; NSString* ADAddressBookInternalError = @"ADAddressBookInternalError"; NSString* ADUnimplementedError = @"ADUnimplementedError"; static NSBundle *myBundle = nil; NSString* ADLocalizedPropertyOrLabel(NSString* propertyOrLabel) { NSString *str; if(!myBundle) myBundle = [NSBundle bundleForClass: [ADAddressBook class]]; str = [myBundle localizedStringForKey: propertyOrLabel value: propertyOrLabel table: @"PropertiesAndLabels"]; if(str) return str; return propertyOrLabel; } @implementation ADScriptingInfo + (NSDictionary*) namedObjectsForScripting { return [NSDictionary dictionaryWithObjectsAndKeys: ADUIDProperty, @"ADUIDProperty", ADCreationDateProperty, @"ADCreationDateProperty", ADModificationDateProperty, @"ADModificationDateProperty", ADFirstNameProperty, @"ADFirstNameProperty", ADLastNameProperty, @"ADLastNameProperty", ADMiddleNameProperty, @"ADMiddleNameProperty", ADMiddleNamePhoneticProperty, @"ADMiddleNamePhoneticProperty", ADFirstNamePhoneticProperty, @"ADFirstNamePhoneticProperty", ADLastNamePhoneticProperty, @"ADLastNamePhoneticProperty", ADTitleProperty, @"ADTitleProperty", ADSuffixProperty, @"ADSuffixProperty", ADNicknameProperty, @"ADNicknameProperty", ADMaidenNameProperty, @"ADMaidenNameProperty", ADBirthdayProperty, @"ADBirthdayProperty", ADOrganizationProperty, @"ADOrganizationProperty", ADJobTitleProperty, @"ADJobTitleProperty", ADHomePageProperty, @"ADHomePageProperty", ADEmailProperty, @"ADEmailProperty", ADEmailWorkLabel, @"ADEmailWorkLabel", ADEmailHomeLabel, @"ADEmailHomeLabel", ADAddressProperty, @"ADAddressProperty", ADAddressStreetKey, @"ADAddressStreetKey", ADAddressCityKey, @"ADAddressCityKey", ADAddressStateKey, @"ADAddressStateKey", ADAddressZIPKey, @"ADAddressZIPKey", ADAddressCountryKey, @"ADAddressCountryKey", ADAddressCountryCodeKey, @"ADAddressCountryCodeKey", ADAddressPOBoxKey, @"ADAddressPOBoxKey", ADAddressExtendedAddressKey, @"ADAddressExtendedAddressKey", ADAddressHomeLabel, @"ADAddressHomeLabel", ADAddressWorkLabel, @"ADAddressWorkLabel", ADImageProperty, @"ADImageProperty", ADPhoneProperty, @"ADPhoneProperty", ADPhoneWorkLabel, @"ADPhoneWorkLabel", ADPhoneHomeLabel, @"ADPhoneHomeLabel", ADPhoneMobileLabel, @"ADPhoneMobileLabel", ADPhoneMainLabel, @"ADPhoneMainLabel", ADPhoneHomeFAXLabel, @"ADPhoneHomeFAXLabel", ADPhoneWorkFAXLabel, @"ADPhoneWorkFAXLabel", ADPhonePagerLabel, @"ADPhonePagerLabel", ADAIMInstantProperty, @"ADAIMInstantProperty", ADAIMWorkLabel, @"ADAIMWorkLabel", ADAIMHomeLabel, @"ADAIMHomeLabel", ADJabberInstantProperty, @"ADJabberInstantProperty", ADJabberWorkLabel, @"ADJabberWorkLabel", ADJabberHomeLabel, @"ADJabberHomeLabel", ADMSNInstantProperty, @"ADMSNInstantProperty", ADMSNWorkLabel, @"ADMSNWorkLabel", ADMSNHomeLabel, @"ADMSNHomeLabel", ADYahooInstantProperty, @"ADYahooInstantProperty", ADYahooWorkLabel, @"ADYahooWorkLabel", ADYahooHomeLabel, @"ADYahooHomeLabel", ADICQInstantProperty, @"ADICQInstantProperty", ADICQWorkLabel, @"ADICQWorkLabel", ADICQHomeLabel, @"ADICQHomeLabel", ADNoteProperty, @"ADNoteProperty", ADGroupNameProperty, @"ADGroupNameProperty", ADWorkLabel, @"ADWorkLabel", ADHomeLabel, @"ADHomeLabel", ADOtherLabel, @"ADOtherLabel", ADDatabaseChangedNotification, @"ADDatabaseChangedNotification", ADDatabaseChangedExternallyNotification, @"ADDatabaseChangedExternallyNotification", ADRecordChangedNotification, @"ADRecordChangedNotification", ADAddressBookInaccessibleError, @"ADAddressBookInaccessibleError", ADAddressBookConsistencyError, @"ADAddressBookConsistencyError", ADAddressBookInternalError, @"ADAddressBookInternalError", ADUnimplementedError, @"ADUnimplementedError", nil]; } @end /* * Utility functions */ NSArray* ADReadOnlyCopyOfRecordArray(NSArray* arr) { NSMutableArray *retval; NSEnumerator *e; ADRecord *r; retval = [NSMutableArray arrayWithCapacity: [arr count]]; e = [arr objectEnumerator]; while((r = [e nextObject])) { r = [[r copy] autorelease]; [r setReadOnly]; [retval addObject: r]; } return [NSArray arrayWithArray: retval]; } Addresses-0.5.0/Frameworks/Addresses/AddressBook.h0000644000175000000240000001311012312144407021231 0ustar multixstaff// AddressBook.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import // main classes #define ABAddressBook ADAddressBook #define ABGroup ADGroup #define ABMultiValue ADMultiValue #define ABMutableMultiValue ADMutableMultiValue #define ABPerson ADPerson #define ABRecord ADRecord #define ABSearchElement ADSearchElement // typedefs #define kABMultiValueMask ADMultiValueMask #define kABErrorInProperty ADErrorInProperty #define kABStringProperty ADStringProperty #define kABIntegerProperty ADIntegerProperty #define kABRealProperty ADRealProperty #define kABDateProperty ADDateProperty #define kABArrayProperty ADArrayProperty #define kABDictionaryProperty ADDictionaryProperty #define kABDataProperty ADDataProperty #define kABMultiStringProperty ADMultiStringProperty #define kABMultiIntegerProperty ADMultiIntegerProperty #define kABMultiRealProperty ADMultiRealProperty #define kABMultiDateProperty ADMultiDateProperty #define kABMultiArrayProperty ADMultiArrayProperty #define kABMultiDictionaryProperty ADMultiDictionaryProperty #define kABMultiDataProperty ADMultiDataProperty #define ABPropertyType ADPropertyType #define kABEqual ADEqual #define kABNotEqual ADNotEqual #define kABLessThan ADLessThan #define kABLessThanOrEqual ADLessThanOrEqual #define kABGreaterThan ADGreaterThan #define kABGreaterThanOrEqual ADGreaterThanOrEqual #define kABEqualCaseInsensitive ADEqualCaseInsensitive #define kABContainsSubString ADContainsSubString #define kABContainsSubStringCaseInsensitive ADContainsSubStringCaseInsensitive #define kABPrefixMatch ADPrefixMatch #define kABPrefixMatchCaseInsensitive ADPrefixMatchCaseInsensitive #define ABSearchComparison ADSearchComparison #define kABSearchAnd ADSearchAnd #define kABSearchOr ADSearchOr #define ABSearchConjunction ADSearchConjunction // globals #define kABUIDProperty ADUIDProperty #define kABCreationDateProperty ADCreationDateProperty #define kABModificationDateProperty ADModificationDateProperty #define kABFirstNameProperty ADFirstNameProperty #define kABLastNameProperty ADLastNameProperty #define kABMiddleNameProperty ADMiddleNameProperty #define kABMiddleNamePhoneticProperty ADMiddleNamePhoneticProperty #define kABFirstNamePhoneticProperty ADFirstNamePhoneticProperty #define kABLastNamePhoneticProperty ADLastNamePhoneticProperty #define kABTitleProperty ADTitleProperty #define kABSuffixProperty ADSuffixProperty #define kABNicknameProperty ADNicknameProperty #define kABMaidenNameProperty ADMaidenNameProperty #define kABBirthdayProperty ADBirthdayProperty #define kABOrganizationProperty ADOrganizationProperty #define kABJobTitleProperty ADJobTitleProperty #define kABHomePageProperty ADHomePageProperty #define kABEmailProperty ADEmailProperty #define kABEmailWorkLabel ADEmailWorkLabel #define kABEmailHomeLabel ADEmailHomeLabel #define kABAddressProperty ADAddressProperty #define kABAddressStreetKey ADAddressStreetKey #define kABAddressCityKey ADAddressCityKey #define kABAddressStateKey ADAddressStateKey #define kABAddressZIPKey ADAddressZIPKey #define kABAddressCountryKey ADAddressCountryKey #define kABAddressCountryCodeKey ADAddressCountryCodeKey #define kABAddressHomeLabel ADAddressHomeLabel #define kABAddressWorkLabel ADAddressWorkLabel #define kABPhoneProperty ADPhoneProperty #define kABPhoneWorkLabel ADPhoneWorkLabel #define kABPhoneHomeLabel ADPhoneHomeLabel #define kABPhoneMobileLabel ADPhoneMobileLabel #define kABPhoneMainLabel ADPhoneMainLabel #define kABPhoneHomeFAXLabel ADPhoneHomeFAXLabel #define kABPhoneWorkFAXLabel ADPhoneWorkFAXLabel #define kABPhonePagerLabel ADPhonePagerLabel #define kABAIMInstantProperty ADAIMInstantProperty #define kABAIMWorkLabel ADAIMWorkLabel #define kABAIMHomeLabel ADAIMHomeLabel #define kABJabberInstantProperty ADJabberInstantProperty #define kABJabberWorkLabel ADJabberWorkLabel #define kABJabberHomeLabel ADJabberHomeLabel #define kABMSNInstantProperty ADMSNInstantProperty #define kABMSNWorkLabel ADMSNWorkLabel #define kABMSNHomeLabel ADMSNHomeLabel #define kABYahooInstantProperty ADYahooInstantProperty #define kABYahooWorkLabel ADYahooWorkLabel #define kABYahooHomeLabel ADYahooHomeLabel #define kABICQInstantProperty ADICQInstantProperty #define kABICQWorkLabel ADICQWorkLabel #define kABICQHomeLabel ADICQHomeLabel #define kABNoteProperty ADNoteProperty #define kABGroupNameProperty ADGroupNameProperty #define kABWorkLabel ADWorkLabel #define kABHomeLabel ADHomeLabel #define kABOtherLabel ADOtherLabel #define kABDatabaseChangedNotification ADDatabaseChangedNotification #define kABDatabaseChangedExternallyNotification ADDatabaseChangedExternallyNotification #define ABLocalizedPropertyOrLabel ADLocalizedPropertyOrLabel Addresses-0.5.0/Frameworks/Addresses/GNUmakefile0000644000175000000240000000323514746005572020755 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make VERSION=0.5.0 FRAMEWORK_NAME=Addresses Addresses_CURRENT_VERSION_NAME = 0.5.0 Addresses_DEPLOY_WITH_CURRENT_VERSION = yes Addresses_OBJC_FILES= \ ADAddressBook.m \ ADConverter.m \ ADEnvelopeAddressBook.m \ ADGlobals.m \ ADGroup.m \ ADImageLoading.m \ ADLocalAddressBook.m \ ADMultiValue.m \ ADPerson.m \ ADPListConverter.m \ ADPlugin.m \ ADPublicAddressBook.m \ ADRecord.m \ ADSearchElement.m \ ADVCFConverter.m Addresses_HEADER_FILES= \ ADAddressBook.h \ ADConverter.h \ ADEnvelopeAddressBook.h \ ADGlobals.h \ ADGroup.h \ ADImageLoading.h \ ADLocalAddressBook.h \ ADMultiValue.h \ ADPerson.h \ ADPListConverter.h \ ADPlugin.h \ ADPublicAddressBook.h \ ADRecord.h \ ADSearchElement.h \ ADTypedefs.h \ ADVCFConverter.h \ Addresses.h \ AddressBook.h Addresses_RESOURCE_FILES=ScriptingInfo.plist Addresses_LOCALIZED_RESOURCE_FILES=PropertiesAndLabels.strings Addresses_LANGUAGES=Dutch English French German Spanish LIBRARIES_DEPEND_UPON = $(GUI_LIBS) $(FND_LIBS) $(OBJC_LIBS) $(SYSTEM_LIBS) -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/framework.make -include GNUmakefile.postamble ifneq ($(FOUNDATION_LIB), apple) after-Addresses-install:: @echo "Installing the compatibility header ..." -$(MKINSTALLDIRS) $(GNUSTEP_HEADERS)/AddressBook -$(INSTALL_DATA) AddressBook.h $(GNUSTEP_HEADERS)/AddressBook/ endif Addresses-0.5.0/Frameworks/Addresses/ChangeLog0000644000175000000240000000135114746005572020452 0ustar multixstaff2017-01-09 Riccardo Mottola * ADGroup.h * ADGroup.m * ADPerson.h * ADPerson.m Update int types to Apple spec. 2010-03-16 Philippe Roussel * Addresses/ADVCFConverter.m: accept Evolution type "b" for images encoding 2009-10-07 Nicola Pero * GNUmakefile (after-Addresses-install): Rewritten in a cleaner, more portable way avoiding symlinks. Do not install AddressBook/AddressBook.h when the Apple FoundationKit (and hence we assume Apple's AddressBook) is being used. 2007-05-02 Nicola Pero * GNUmakefile (debug): Do not set (it's now the default too). (after-Addresses-install): Updated rule to use GNUSTEP_HEADERS instead of GNUSTEP_INSTALLATION_DIR. Addresses-0.5.0/Frameworks/Addresses/ADPlugin.h0000644000175000000240000000302614750126707020514 0ustar multixstaff// ADPlugin.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADAddressBook.h" /** This class defines the interface for address book class plugins. An address book class plugin is contained in a bundle that gets loaded at runtime. It can create address books of one specific kind (see the LDAP plugin as an example, and the main README file for an overview). Specifications to create address books are given as dictionaries, contained in the AddressBooks array in the Addresses user defaults domain. Typically, an address book class plugin is accompanied by a configurator gui plugin that gets loaded by AddressManager. The gui writes the defaults entry. An address book class plugin's name ends in ".abclass", not in ".bundle"! */ @protocol ADPluggedInAddressBook /** Return a new address book according to the dictionary contained in the specification. */ - (instancetype) initWithSpecification: (NSDictionary*) aSpec; @end @interface ADPluginManager: NSObject { NSMutableArray* abClassPlugins; } + (ADPluginManager*) sharedPluginManager; /** Check the usual places for bundles that end in ".abclass", and which have not already been loaded. */ - (BOOL) checkForNewPlugins; /** Look for "ClassName" in aSpec, then look for an appropriate class in abClassPlugins, then try to create an instance using aSpec and return it. */ - (ADAddressBook*) newAddressBookWithSpecification: (NSDictionary*) aSpec; @end Addresses-0.5.0/Frameworks/Addresses/Dutch.lproj/0000755000175000000240000000000012312144407021060 5ustar multixstaffAddresses-0.5.0/Frameworks/Addresses/Dutch.lproj/PropertiesAndLabels.strings0000755000175000000240000000324612312144407026405 0ustar multixstaff"UID" = "Unieke Identificatie"; "CreationDate" = "Datum van creatie"; "ModificationDate" = "Modificatie Datum"; "FirstName" = "Voornaam"; "LastName" = "Achternaam"; "FirstNamePhonetic" = "Voornaam (Phonetisch)"; "LastNamePhonetic" = "Achternaam (Phonetisch)"; "BirthDate" = "Geboorte Datum"; "Organization" = "Organisatie"; "JobTitle" = "Functie"; "HomePage" = "Home Pagina"; "Email" = "E-mail"; "WorkEmail" = "Werk Email Adres"; "HomeEmail" = "Thuis Email Adres"; "Address" = "Adres"; "Street" = "Straat"; "City" = "Plaats"; "State" = "Provincie"; "ZIP" = "Postcode"; "Country" = "Land"; "CountryCode" = "Land Code"; "POBox" = "Postbus"; "ExtAddr" = "Adres Toevoegingen"; "HomeAddr" = "Thuis Adres"; "WorkAddr" = "Werk Adres"; "Phone" = "Telefoon"; "HomePhone" = "Thuis Telefoon"; "WorkPhone" = "Werk Telefoon"; "MobilePhone" = "Mobiele Telefoon"; "MainPhone" = "Basis Telefoon"; "HomeFax" = "Thuis Fax"; "WorkFax" = "Werk Fax"; "Pager" = "Pager"; "AIM" = "AOL Instant Messaging"; "WorkAIM" = "AIM Werk Adres"; "HomeAIM" = "AIM Thuis Adres"; "Jabber" = "Jabber"; "WorkJabber" = "Jabber Werk Adres"; "HomeJabber" = "Jabber Thuis Adres"; "MSN" = "Microsoft Network"; "WorkMSN" = "MSN Werk Adres"; "HomeMSN" = "MSN Thuis Adres"; "Yahoo" = "Yahoo"; "WorkYahoo" = "Yahoo Werk Adres"; "HomeYahoo" = "Yahoo Thuis Adres"; "ICQ" = "ICQ Nummer"; "WorkICQ" = "Werk ICQ Nummer"; "HomeICQ" = "Thuis ICQ Nummer"; "Note" = "Notitie"; "MiddleName" = "Midden Naam"; "MiddleNamePhonetic" = "Midden Naam (Phonetisch)"; "Title" = "Titel"; "Suffix" = "Toevoeging"; "Nickname" = "Nickname"; "MaidenName" = "Meisjesnaam"; "Image" = "Foto"; "GroupName" = "Groepsnaam"; "Work" = "Werk"; "Home" = "Thuis"; "Other" = "Anders"; Addresses-0.5.0/Frameworks/Addresses/ADAddressBook.h0000644000175000000240000000263012312144407021443 0ustar multixstaff// ADAddressBook.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADADDRESSBOOK_H_ #define _ADADDRESSBOOK_H_ #import #import #import @class ADRecord; @class ADPerson; @class ADGroup; @class ADSearchElement; @class ADConverter; @interface ADAddressBook: NSObject + (ADAddressBook*) sharedAddressBook; - (NSArray*) recordsMatchingSearchElement: (ADSearchElement*) search; - (BOOL) save; - (BOOL) hasUnsavedChanges; - (ADPerson*) me; - (void) setMe: (ADPerson*) me; - (ADRecord*) recordForUniqueId: (NSString*) uniqueId; - (BOOL) addRecord: (ADRecord*) record; - (BOOL) removeRecord: (ADRecord*) record; - (NSArray*) people; - (NSArray*) groups; @end @interface ADAddressBook(GroupAccess) - (NSArray*) membersForGroup: (ADGroup*) group; - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group; - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group; - (NSArray*) subgroupsForGroup: (ADGroup*) group; - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2; - (NSArray*) parentGroupsForGroup: (ADGroup*) group; @end @interface ADAddressBook(AddressesExtensions) - (NSArray*) groupsContainingRecord: (ADRecord*) record; - (NSDictionary*) addressBookDescription; @end #endif Addresses-0.5.0/Frameworks/Addresses/README0000644000175000000240000001135112312144410017537 0ustar multixstaff Addresses.framework - (c) 2003 Bjrn Giesler ========================================== This is a framework containing an implementation of Apple's AddressBook API. It's not called AddressBook.framework to avoid confusion and possible trademark issues and to be able to install it on Apple systems alongside Apple's implementation. The classes and header files are called "AD*" instead of "AB*" to be able to use both Addresses and Apple's AddressBook frameworks in the same application (e.g. to migrate between the two); there is, however, a compatibility header file named "AddressBook.h" containing define statements that will allow you to use the frameworks interchangeably. Additionally, the installation process on GNUstep will create a link called "AddressBook" to the Addresses header directory, so that you don't have to change any sourcecode that has the line #include in it. It is expandable to allow for different address storage locations (SQL databases, MS Exchange servers, etc.). The intent is to provide a framework which will handle anything from small personal address books to large corporate databases. No Apple code has been used, copied or even looked at in connection with developing this framework; this includes any of the original AddressBook Framework headers or libraries. The API has been entirely reverse-engineered from Apple's AddressBook Framework documentation. License ======= This framework is distributed under the LGPL; read the file COPYING.LIB for details. Implementation Notes ==================== This section contains some notes (instead of a full documentation, which I'm too lazy to write right now) about some implementation details and extensions Addresses.framework has over Apple's AddressBook.framework. Few people using the framework in their applications will probably need to read this section; but if you're extending the framework (for example, with converters or address book classes), you'll find this interesting. Different Address Books Look As One ----------------------------------- This framework comes with two subclasses of the AddressBook class. The first one, ADLocalAddressBook, accesses a user's personal database (located at ~/GNUstep/Library/Addresses). This database contains contacts as property list files and groups as directories. It is clear that this naive approach has its disadvantages, but it is easily maintained with standard tools, even if the framework fails. For large databases, storage in RDBMS can easily be implemented. The second subclass, ADEnvelopeAddressBook, acts as an envelope for other address books. [ADAddressBook sharedAddressBook] will return an instance of this class. You can add other address books to this instance; by default, it contains an instance of ADLocalAddressBook. Addresses added to ADEnvelopeAddressBook will be added to its primaryAddressBook (the local one, by default). The idea behind this system is to be able to transparently connect to arbitrary address sources (LDAP, Apple's address book, whatever). To add a new address book, just write a class, instantiate it and add it using [[ADEnvelopeAddressBook sharedAddressBook] addAddressBook: myBook]. Handling Notifications ---------------------- Addresses uses three notifications that an application can observe to be notified of database changes: ADRecordChangedNotification This is posted to the default notification center every time a record is changed. Its userInfo member is a dictionary containing the following: ADChangedPropertyKey = the changed property ADChangedValueKey = the new value of the changed property ADDatabaseChangedNotification This is posted to the default notification center every time a record is changed. Its userInfo member is a dictionary containing the following: ADAddressBookContainingChangedRecord = the record's address book ADUniqueIDOfChangedRecord = the ID of the changed record ADChangedPropertyKey = the changed property ADChangedValueKey = the new value of the changed property ADDatabaseChangedExternallyNotification This is posted to the default distributed notification center by a process saving a changed database. From there, it is caught by all other processes' shared ADAddressBook instances and re-thrown to their default notification centers. Its object member is a string specifying the ADAddressBook subclass that changed the database, its userInfo a dictionary specifying that class's specifics (e.g. a filesystem path to the database). Further Documentation ===================== Please see Apple's AddressBook documentation for a complete reference on the original AddressBook.framework. It is located at http://developer.apple.com/ue/addressbook/Addresses-0.5.0/Frameworks/Addresses/ADPlugin.m0000644000175000000240000000666414746005572020535 0ustar multixstaff// ADPlugin.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADPlugin.h" static ADPluginManager *manager = NULL; @implementation ADPluginManager - (id)init { if ((self = [super init])) { abClassPlugins = [[NSMutableArray alloc] init]; } return self; } - (void) dealloc { [abClassPlugins release]; [super dealloc]; } + (ADPluginManager*) sharedPluginManager { if(!manager) { manager = [[ADPluginManager alloc] init]; [manager checkForNewPlugins]; } return manager; } - (NSBundle*) pluginForClassNamed: (NSString*) className { NSEnumerator *e; NSBundle *b; e = [abClassPlugins objectEnumerator]; while((b = [e nextObject])) if([[[b principalClass] className] isEqualToString: className]) return b; return nil; } - (NSBundle*) pluginLoadedFromPath: (NSString*) aPath { NSEnumerator *e; NSBundle *b; e = [abClassPlugins objectEnumerator]; while((b = [e nextObject])) if([[b bundlePath] isEqualToString: aPath]) return b; return nil; } - (BOOL) checkForNewPlugins { NSArray *paths; NSEnumerator* pathEnum; NSString *curPath; NSFileManager *fm; BOOL allOk; allOk = YES; paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSAllDomainsMask, YES); fm = [NSFileManager defaultManager]; pathEnum = [paths objectEnumerator]; while((curPath = [pathEnum nextObject])) { NSArray *contents; NSString *curFile; NSEnumerator *fileEnum; curPath = [curPath stringByAppendingPathComponent: @"Addresses"]; contents = [fm directoryContentsAtPath: curPath]; if(!contents) continue; fileEnum = [contents objectEnumerator]; while((curFile = [fileEnum nextObject])) { if([[curFile pathExtension] isEqualToString: @"abclass"]) { NSString *fqfn; NSBundle *bundle; fqfn = [curPath stringByAppendingPathComponent: curFile]; if([self pluginLoadedFromPath: fqfn]) continue; bundle = [NSBundle bundleWithPath: fqfn]; if(!bundle) { NSLog(@"Couldn't load bundle %@\n", fqfn); allOk = NO; continue; } if(![[bundle principalClass] isSubclassOfClass: [ADAddressBook class]]) { NSLog(@"Principal class %@ of %@ is not an " @"ADPluggedInAddressBook!\n", [[bundle principalClass] className], fqfn); allOk = NO; continue; } if(![[bundle principalClass] conformsToProtocol: @protocol(ADPluggedInAddressBook)]) { NSLog(@"Principal class %@ of %@ doesn't conform to " @"ADPluggedInAddressBook!\n", [[bundle principalClass] className], fqfn); allOk = NO; continue; } if([self pluginForClassNamed: [[bundle principalClass] className]]) { NSLog(@"Already have plugin for class %@\n", [[bundle principalClass] className]); continue; } [abClassPlugins addObject: bundle]; } } } return allOk; } - (ADAddressBook*) newAddressBookWithSpecification: (NSDictionary*) aSpec { NSString *className; NSBundle *plugin; className = [aSpec objectForKey: @"Class"]; if(!className) { NSLog(@"Dictionary %@ doesn't contain an entry for ClassName!\n", [aSpec description]); return nil; } plugin = [self pluginForClassNamed: className]; if(plugin) return [[[plugin principalClass] alloc] initWithSpecification: aSpec]; return nil; } @end Addresses-0.5.0/Frameworks/Addresses/ADAddressBook.m0000644000175000000240000001072514746005572021470 0ustar multixstaff// ADAddressBook.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Implementation of Apple's AddressBook API // #import "ADAddressBook.h" #import "ADEnvelopeAddressBook.h" #import "ADRecord.h" #import "ADPerson.h" #import "ADGroup.h" @implementation ADAddressBook + (ADAddressBook*) sharedAddressBook { return [ADEnvelopeAddressBook sharedAddressBook]; } - (NSArray*) subgroupsOfGroup: (ADGroup*) group matchingSearchElement: (ADSearchElement*) search { NSMutableArray *arr; NSEnumerator *e; ADGroup *g; arr = [NSMutableArray array]; e = [[group subgroups] objectEnumerator]; while((g = [e nextObject])) { if([search matchesRecord: g]) [arr addObject: g]; [arr addObjectsFromArray: [self subgroupsOfGroup: g matchingSearchElement: search]]; } return [NSArray arrayWithArray: arr]; } - (NSArray*) recordsMatchingSearchElement: (ADSearchElement*) search { NSMutableArray *arr; NSEnumerator *e; ADPerson *p; ADGroup *g; arr = [NSMutableArray array]; e = [[self people] objectEnumerator]; while((p = [e nextObject])) if([search matchesRecord: p]) [arr addObject: p]; e = [[self groups] objectEnumerator]; while((g = [e nextObject])) { if([search matchesRecord: g]) [arr addObject: g]; [arr addObjectsFromArray: [self subgroupsOfGroup: g matchingSearchElement: search]]; } return [NSArray arrayWithArray: arr]; } - (BOOL) save { [self subclassResponsibility: _cmd]; return NO; } - (BOOL) hasUnsavedChanges { [self subclassResponsibility: _cmd]; return NO; } - (ADPerson*) me { [self subclassResponsibility: _cmd]; return nil; } - (void) setMe: (ADPerson*) me { [self subclassResponsibility: _cmd]; } - (ADRecord*) recordForUniqueId: (NSString*) uniqueId { [self subclassResponsibility: _cmd]; return nil; } - (BOOL) addRecord: (ADRecord*) record { [self subclassResponsibility: _cmd]; return NO; } - (BOOL) removeRecord: (ADRecord*) record { [self subclassResponsibility: _cmd]; return NO; } - (NSArray*) people { [self subclassResponsibility: _cmd]; return nil; } - (NSArray*) groups { [self subclassResponsibility: _cmd]; return nil; } @end @implementation ADAddressBook(GroupAccess) - (NSArray*) membersForGroup: (ADGroup*) group { [self subclassResponsibility: _cmd]; return nil; } - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group { [self subclassResponsibility: _cmd]; return NO; } - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group { [self subclassResponsibility: _cmd]; return NO; } - (NSArray*) subgroupsForGroup: (ADGroup*) group { [self subclassResponsibility: _cmd]; return nil; } - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { [self subclassResponsibility: _cmd]; return NO; } - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { [self subclassResponsibility: _cmd]; return NO; } - (NSArray*) parentGroupsForGroup: (ADGroup*) group; { [self subclassResponsibility: _cmd]; return nil; } @end @implementation ADAddressBook(AddressesExtensions) - (NSArray*) _groupOrSubgroups: (ADGroup*) g containingRecord: (ADRecord*) record { NSMutableArray *retval; NSArray *s; NSUInteger i; retval = [NSMutableArray array]; s = [g subgroups]; // is it a group? if([record isKindOfClass: [ADGroup class]]) { for(i = 0; i < [s count]; i++) if([[[s objectAtIndex: i] uniqueId] isEqualToString: [record uniqueId]]) { [retval addObject: self]; break; } } else { // no? then it's a person NSArray *m; m = [g members]; for(i=0; i<[m count]; i++) if([[[m objectAtIndex: i] uniqueId] isEqualToString: [record uniqueId]]) { [retval addObject: self]; break; } } for(i = 0; i < [s count]; i++) { NSArray *a; a = [self _groupOrSubgroups: [s objectAtIndex: i] containingRecord: record]; if([a count]) [retval addObjectsFromArray: a]; } return retval; } - (NSArray*) groupsContainingRecord: (ADRecord*) record { NSEnumerator *e; ADGroup *g; NSMutableArray *m; e = [[self groups] objectEnumerator]; m = [NSMutableArray array]; while((g = [e nextObject])) { NSArray *a; a = [self _groupOrSubgroups: g containingRecord: record]; if([a count]) [m addObjectsFromArray: a]; } return [NSArray arrayWithArray: m]; } - (NSDictionary*) addressBookDescription { return [NSDictionary dictionaryWithObjectsAndKeys: [self className], @"Class", nil]; } @end Addresses-0.5.0/Frameworks/Addresses/Addresses.h0000644000175000000240000000130412312144410020742 0ustar multixstaff// Addresses.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import #import Addresses-0.5.0/Frameworks/Addresses/ADRecord.h0000644000175000000240000000322214750127064020467 0ustar multixstaff// ADRecord.h (this is -*- ObjC -*-) // // Authors: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADRECORD_H_ #define _ADRECORD_H_ #import @class ADAddressBook; @interface ADRecord: NSObject { BOOL _readOnly; ADAddressBook *_book; NSDictionary *_dict; } - (id) valueForProperty: (NSString *) property; - (BOOL) setValue: (id) value forProperty: (NSString *) property; - (BOOL) removeValueForProperty: (NSString *) property; /*! \brief Return the address book this record is part of. Can return nil, if this is a new record which has not been added to any address book yet. \note This is a non-Apple extension; Apple's API doesn't need it as it knows nothing about multiple address books. */ - (ADAddressBook *) addressBook; /*! \brief Set the address book this record is part of. Can only be set once (since a record cannot be *moved* between address books); raises if it has been called before, or if book is nil. \note This is a non-Apple extension; Apple's API doesn't need it as it knows nothing about multiple address books. */ - (void) setAddressBook: (ADAddressBook *) book; @end @interface ADRecord(Convenience) - (NSString*) uniqueId; @end // Addresses Extensions @interface ADRecord(AddressesExtensions) - (instancetype) initWithRepresentation: (NSString*) str type: (NSString*) type; - (NSString*) representationWithType: (NSString*) type; - (BOOL) readOnly; // return whether this is a read-only record - (void) setReadOnly; // set this record to be read-only. cannot be reset. - (NSDictionary*) contentDictionary; @end #endif Addresses-0.5.0/Frameworks/Addresses/ADSearchElement.h0000644000175000000240000000162414750127455022000 0ustar multixstaff// ADSearchElement.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep #import #import #import #import @interface ADSearchElement: NSObject + (ADSearchElement*) searchElementForConjunction: (ADSearchConjunction) conj children: (NSArray*) children; - (BOOL) matchesRecord: (ADRecord*) record; @end @interface ADRecordSearchElement: ADSearchElement // EXTENSION { NSString *_property, *_label, *_key; id _val; ADSearchComparison _comp; } - (instancetype) initWithProperty: (NSString*) property label: (NSString*) label key: (NSString*) key value: (id) value comparison: (ADSearchComparison) comparison; - (void) dealloc; - (BOOL) matchesValue: (id) value; - (BOOL) matchesRecord: (ADRecord*) record; @end Addresses-0.5.0/Frameworks/Addresses/ADRecord.m0000644000175000000240000001256214750127424020503 0ustar multixstaff// ADRecord.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import "ADAddressBook.h" #import "ADGlobals.h" #import "ADConverter.h" #import "ADMultiValue.h" #import "ADRecord.h" #import "ADGroup.h" @implementation ADRecord - (instancetype) init { if ((self = [super init])) { _dict = nil; _book = nil; _readOnly = NO; if([self isKindOfClass: [ADPerson class]]) [self setValue: @"Person" forProperty: @"Type"]; else if([self isKindOfClass: [ADGroup class]]) [self setValue: @"Group" forProperty: @"Type"]; } return self; } - (void) dealloc { [_dict release]; [_book release]; [super dealloc]; } - (id) valueForProperty: (NSString *) property { return [_dict objectForKey: property]; } - (BOOL) setValue: (id) value forProperty: (NSString *) property { NSMutableDictionary *newDict; if(_readOnly) { NSLog(@"Trying to set value %@ for property %@ in read-only record %@\n", value, property, [self uniqueId]); return NO; } newDict = [NSMutableDictionary dictionaryWithDictionary: _dict]; if (!value || [value isEqual: @""]) [newDict removeObjectForKey: property]; else [newDict setObject: value forKey: property]; [_dict release]; _dict = [[NSDictionary alloc] initWithDictionary: newDict]; if ([property isEqualToString: ADModificationDateProperty]) return NO; [self setValue: [NSDate date] forProperty: ADModificationDateProperty]; if (![property isEqualToString: ADUIDProperty]) [[NSNotificationCenter defaultCenter] postNotificationName: ADRecordChangedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: value, ADChangedValueKey, property, ADChangedPropertyKey, nil]]; return YES; } - (BOOL) removeValueForProperty: (NSString*) property { NSMutableDictionary *newDict; if(_readOnly) { NSLog(@"Trying to remove value for property %@ in read-only record %@\n", property, [self uniqueId]); return NO; } newDict = [NSMutableDictionary dictionaryWithDictionary: _dict]; [newDict removeObjectForKey: property]; [_dict release]; _dict = [[NSDictionary alloc] initWithDictionary: newDict]; if (![property isEqualToString: ADUIDProperty]) [[NSNotificationCenter defaultCenter] postNotificationName: ADRecordChangedNotification object: self userInfo: [NSDictionary dictionaryWithObjectsAndKeys: property, ADChangedPropertyKey, nil]]; return YES; } - (ADAddressBook*) addressBook { return _book; } - (void) setAddressBook: (ADAddressBook*) book { if(_book) [NSException raise: ADAddressBookConsistencyError format: @"Cannot set address book on record '%@'" @" (already has one)", [self uniqueId]]; if(!book) [NSException raise: ADAddressBookConsistencyError format: @"Cannot set nil address book on record '%@'", [self uniqueId]]; _book = [book retain]; } - (id) copyWithZone: (NSZone*) z { ADRecord* obj = (ADRecord *)NSCopyObject(self, 0, z); obj->_readOnly = _readOnly; // delete UID if it has one if([_dict objectForKey: ADUIDProperty]) { NSMutableDictionary *d = [NSMutableDictionary dictionaryWithDictionary: [_dict copy]]; [d removeObjectForKey: ADUIDProperty]; obj->_dict = [[NSDictionary alloc] initWithDictionary: d]; } else obj->_dict = [_dict copy]; obj->_book = nil; return obj; } @end @implementation ADRecord(ADRecord_Convenience) - (NSString*) uniqueId { return [self valueForProperty: ADUIDProperty]; } @end @implementation ADRecord(AddressesExtensions) - (BOOL) readOnly { return _readOnly; } - (void) setReadOnly { _readOnly = YES; } - (id) initWithRepresentation: (NSString*) str type: (NSString*) type { id converter; id obj; Class c; c = [self class]; [self release]; converter = [[ADConverterManager sharedManager] inputConverterForType: type]; if(!converter) return nil; if(![converter useString: str]) return nil; obj = [converter nextRecord]; if(!obj) return nil; if(![[obj class] isSubclassOfClass: c]) { NSLog(@"It's of %@, not %@\n", [c className], [obj className]); return nil; } return [obj retain]; } - (NSString*) representationWithType: (NSString*) type { id converter; [self release]; converter = [[ADConverterManager sharedManager] outputConverterForType: type]; [converter storeRecord: self]; return [converter string]; } - (NSDictionary*) contentDictionary { NSMutableDictionary *dict; NSEnumerator *e; NSString *key; dict = [NSMutableDictionary dictionaryWithCapacity: [_dict count]]; e = [[_dict allKeys] objectEnumerator]; while((key = [e nextObject])) { NSObject *obj = [_dict objectForKey: key]; if ([obj isKindOfClass: [ADMultiValue class]]) [dict setObject: [(ADMultiValue*)obj contentArray] forKey: key]; else if([obj isKindOfClass: [NSString class]] || [obj isKindOfClass: [NSData class]] || [obj isKindOfClass: [NSDate class]] || [obj isKindOfClass: [NSArray class]] || [obj isKindOfClass: [NSDictionary class]]) [dict setObject: obj forKey: key]; else NSLog(@"Value for \"%@\" in record \"%@\" has invalid class %@\n", key, [self uniqueId], [obj className]); } return dict; } @end Addresses-0.5.0/Frameworks/Addresses/ADTypedefs.h0000644000175000000240000000324114746005572021041 0ustar multixstaff// ADTypedefs.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #ifndef _ADTYPEDEFS_H_ #define _ADTYPEDEFS_H_ #define ADMultiValueMask 0x100 typedef enum { ADErrorInProperty = 0x0, ADStringProperty = 0x1, ADIntegerProperty = 0x2, ADRealProperty = 0x3, // NOT SUPPORTED! ADDateProperty = 0x4, ADArrayProperty = 0x5, ADDictionaryProperty = 0x6, ADDataProperty = 0x7, ADMultiStringProperty = ADMultiValueMask | ADStringProperty, ADMultiIntegerProperty = ADMultiValueMask | ADIntegerProperty, ADMultiRealProperty = ADMultiValueMask | ADRealProperty, ADMultiDateProperty = ADMultiValueMask | ADDateProperty, ADMultiArrayProperty = ADMultiValueMask | ADArrayProperty, ADMultiDictionaryProperty = ADMultiValueMask | ADDictionaryProperty, ADMultiDataProperty = ADMultiValueMask | ADDataProperty } ADPropertyType; // ================================================================ // Search APIs // ================================================================ typedef enum { ADEqual, ADNotEqual, ADLessThan, ADLessThanOrEqual, ADGreaterThan, ADGreaterThanOrEqual, ADEqualCaseInsensitive, ADContainsSubString, ADContainsSubStringCaseInsensitive, ADPrefixMatch, ADPrefixMatchCaseInsensitive } ADSearchComparison; typedef enum { ADSearchAnd, ADSearchOr } ADSearchConjunction; typedef int ADImageTag; typedef enum { ADScreenNameLastNameFirst = 0, ADScreenNameFirstNameFirst = 1 } ADScreenNameFormat; // EXTENSION #endif Addresses-0.5.0/Frameworks/Addresses/ADPListConverter.h0000644000175000000240000000055414750126473022204 0ustar multixstaff// ADPListConverter.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // Address Book Framework for GNUstep // #import @interface ADPListConverter: NSObject { BOOL _done; id _plist; } - (instancetype)initForInput; - (BOOL) useString: (NSString*) str; - (ADRecord*) nextRecord; @end Addresses-0.5.0/Frameworks/GNUmakefile0000644000175000000240000000027512312144406017024 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = \ Addresses \ AddressView -include GNUMakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUMakefile.postambleAddresses-0.5.0/Goodies/0000755000175000000240000000000014746175542014241 5ustar multixstaffAddresses-0.5.0/Goodies/VCFViewer/0000755000175000000240000000000014752742752016041 5ustar multixstaffAddresses-0.5.0/Goodies/VCFViewer/VCFViewer.h0000644000175000000240000000161114746142326020003 0ustar multixstaff// VCFViewer.h (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // VCF Content Viewer for GWorkspace // #import #import #import #import @protocol ContentInspectorProtocol - (void)contentsReadyAt:(NSString *)path; @end @interface VCFViewer: NSView { BOOL valid; id panel; NSArray *people; int currentPerson; NSScrollView *sv; NSClipView *cv; ADPersonView *pv; NSButton *nb, *pb; NSTextField *lbl; NSButton *ifb, *dfb; NSTextField *errLabel; NSString *bundlePath; NSString *vcfPath; NSWorkspace *ws; id inspector; } - (void) nextPerson: (id) sender; - (void) previousPerson: (id) sender; - (void) increaseFontSize: (id) sender; - (void) decreaseFontSize: (id) sender; @end Addresses-0.5.0/Goodies/VCFViewer/GNUmakefile0000644000175000000240000000122212312144410020061 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME = VCFViewer BUNDLE_EXTENSION = .inspector VCFViewer_HAS_RESOURCE_BUNDLE = yes VCFViewer_OBJCFLAGS += -Wall VCFViewer_LDFLAGS += -L../../Frameworks/Addresses/Addresses.framework \ -L../../Frameworks/AddressView/AddressView.framework VCFViewer_TOOL_LIBS += -lAddresses VCFViewer_GUI_LIBS += -lInspector -lAddressView VCFViewer_OBJC_FILES = VCFViewer.m VCFViewer_PRINCIPAL_CLASS = VCFViewer VCFViewer_RESOURCE_FILES = InspectorInfo.plist VCFImage.tiff VCFViewer_INCLUDE_DIRS = -I../../Frameworks -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Addresses-0.5.0/Goodies/VCFViewer/VCFImage.tiff0000644000175000000240000001053012312144410020244 0ustar multixstaffII*sBQs~yyyyyyyyyyyyyyyyyyyz(w &Z! &%D~H###111444333+++k%yJ444===>>>>>>>>>>>>999((( y 9111>>>>>>>>>>>>>>>>>>>>><<<~ yy%%%<<<>>>>>>>>>>>>>>>>>>>>>>>>666Cyy ,///===>>>>>>>>>>>>>>>>>>>>>>>>;;;xyy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy 2111>>>>>>>>>>>>>>>>>>>>>>>>>>><<< yy***===>>>>>>>>>>>>>>>>>>>>>>>>888^yyj999>>>>>>>>>>>>>>>>>>>>>>>>,,,!yy###===>>>>>>>>>>>>>>>===777Ayy''';;;>>>>>>>>>===333Xyy -r Syy#mxyyyyyyyyyyyyuTyy###;;;===>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>===777:yy#222>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>tyy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &yy &444>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>444 &y} *222<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<222* }}yy yy}   D2@HP(R/home/giesler/Source/GNUstep/Addresses/AddressManager/VCFImage.tiffCreated with The GIMPHHAddresses-0.5.0/Goodies/VCFViewer/VCFViewer.m0000644000175000000240000001715614750145760020023 0ustar multixstaff// VCFViewer.m (this is -*- ObjC -*-) // // Author: Bjrn Giesler // // VCF Content Viewer for GWorkspace // #import "VCFViewer.h" @implementation VCFViewer - (void)dealloc { RELEASE (sv); RELEASE (errLabel); RELEASE (bundlePath); [super dealloc]; } - (id)initWithFrame:(NSRect)frameRect inspector:(id)insp { self = [super initWithFrame:frameRect]; if (self) { sv = [[NSScrollView alloc] initWithFrame: NSMakeRect(0, 30, 257, 215)]; [sv setHasVerticalScroller: YES]; [sv setHasHorizontalScroller: YES]; [sv setBorderType: NSBezelBorder]; [self addSubview: sv]; errLabel = [[NSTextField alloc] initWithFrame: NSMakeRect(0, 30, 257, 215)]; [errLabel setFont: [NSFont systemFontOfSize: 18]]; [errLabel setAlignment: NSCenterTextAlignment]; [errLabel setBackgroundColor: [NSColor windowBackgroundColor]]; [errLabel setTextColor: [NSColor darkGrayColor]]; [errLabel setBezeled: NO]; [errLabel setEditable: NO]; [errLabel setSelectable: NO]; [errLabel setStringValue: NSLocalizedString(@"Invalid Contents", @"")]; cv = [[NSClipView alloc] initWithFrame: [sv frame]]; [cv setAutoresizesSubviews: YES]; [sv setContentView: cv]; [cv release]; pv = [[ADPersonView alloc] initWithFrame: NSZeroRect]; [pv setFillsSuperview: YES]; [pv setFontSize: 6.0]; [pv setAcceptsDrop: NO]; [pv setDelegate: self]; [cv setDocumentView: pv]; [pv release]; pb = [[NSButton alloc] initWithFrame: NSMakeRect(80, 0, 20, 20)]; [pb setImage: [NSImage imageNamed: @"common_ArrowLeft"]]; [pb setImagePosition: NSImageOnly]; [pb setTarget: self]; [pb setAction: @selector(previousPerson:)]; [self addSubview: pb]; [pb release]; lbl = [[NSTextField alloc] initWithFrame: NSMakeRect(100, 0, 57, 20)]; [lbl setEditable: NO]; [lbl setSelectable: NO]; [lbl setBezeled: NO]; [lbl setDrawsBackground: NO]; [lbl setAlignment: NSCenterTextAlignment]; [self addSubview: lbl]; [lbl release]; nb = [[NSButton alloc] initWithFrame: NSMakeRect(157, 0, 20, 20)]; [nb setImage: [NSImage imageNamed: @"common_ArrowRight"]]; [nb setImagePosition: NSImageOnly]; [nb setTarget: self]; [nb setAction: @selector(nextPerson:)]; [self addSubview: nb]; [nb release]; dfb = [[NSButton alloc] initWithFrame: NSMakeRect(215, 0, 20, 20)]; [dfb setTitle: @"-"]; [dfb setTarget: self]; [dfb setAction: @selector(decreaseFontSize:)]; [dfb setContinuous: YES]; [self addSubview: dfb]; [dfb release]; ifb = [[NSButton alloc] initWithFrame: NSMakeRect(237, 0, 20, 20)]; [ifb setTitle: @"+"]; [ifb setTarget: self]; [ifb setAction: @selector(increaseFontSize:)]; [ifb setContinuous: YES]; [self addSubview: ifb]; [ifb release]; people = nil; bundlePath = nil; vcfPath = nil; ws = [NSWorkspace sharedWorkspace]; inspector = insp; valid = YES; } return self; } - (void) setBundlePath: (NSString*) path { [bundlePath release]; bundlePath = [path copy]; } - (NSString*) bundlePath { return bundlePath; } // TODO: right now this is runing on the same thread or process // It conversion should detach in a separate process like image resizers - (void)displayPath:(NSString *)path { id conv; ADRecord *r; NSMutableArray *ppl; BOOL decoded; ASSIGNCOPY(vcfPath, path); decoded = NO; if ([self canDisplayPath: vcfPath] == YES) { conv = [[ADConverterManager sharedManager] inputConverterWithFile: path]; DESTROY(people); if (conv == nil) { NSLog(@"failed to open file"); } ppl = [NSMutableArray array]; while((r = [conv nextRecord])) if([r isKindOfClass: [ADPerson class]]) [ppl addObject: r]; people = [[NSArray alloc] initWithArray: ppl]; currentPerson = 0; if([people count]) { decoded = YES; if (!valid) { valid = YES; [errLabel removeFromSuperview]; [self addSubview: sv]; } [pv setPerson: [people objectAtIndex: currentPerson]]; [ifb setEnabled: YES]; [dfb setEnabled: YES]; [lbl setStringValue: [NSString stringWithFormat: @"%d/%d", currentPerson+1, (int)[people count]]]; } else { NSLog(@"read, but no people found"); [pv setPerson: nil]; [ifb setEnabled: NO]; [dfb setEnabled: NO]; [lbl setStringValue: @""]; } if([people count] > 1) { [nb setEnabled: YES]; [pb setEnabled: YES]; } else { [nb setEnabled: NO]; [pb setEnabled: NO]; } } if (decoded) { [sv setNeedsDisplay: YES]; } else { if (valid) { valid = NO; [sv removeFromSuperview]; [self addSubview: errLabel]; } } [inspector contentsReadyAt: path]; return; } - (void)displayLastPath:(BOOL)forced { if (vcfPath) { if (forced) [self displayPath: vcfPath]; else [inspector contentsReadyAt: vcfPath]; } } - (BOOL)canDisplayDataOfType:(NSString *)type { return NO; } - (void)displayData: (NSData*) data ofType: (NSString*) type { } - (void) stopTasks { } - (void) deactivate { [self removeFromSuperview]; DESTROY(people); } - (NSString *)path { return vcfPath; } - (BOOL)canDisplayPath:(NSString *)path { NSDictionary *attributes; NSString *defApp, *fileType, *extension; NSArray *types; attributes = [[NSFileManager defaultManager] fileAttributesAtPath: path traverseLink: YES]; if ([attributes objectForKey: NSFileType] == NSFileTypeDirectory) { return NO; } [ws getInfoForFile: path application: &defApp type: &fileType]; if(([fileType isEqual: NSPlainFileType] == NO) && ([fileType isEqual: NSShellCommandFileType] == NO)) { return NO; } extension = [path pathExtension]; types = [NSArray arrayWithObjects: @"vcf", @"vcard", nil]; if ([types containsObject: [extension lowercaseString]]) { // maybe we can run some more heuristics without parsing the whole file? return YES; } return NO; } - (NSString *)description { return NSLocalizedString(@"This Inspector Displays content of vcard files", @""); } - (NSString *)winname { return NSLocalizedString(@"VCF Inspector", @""); } - (void) nextPerson: (id) sender { if (!people) return; currentPerson++; if(currentPerson > [people count]-1) currentPerson = 0; if([people count]) [pv setPerson: [people objectAtIndex: currentPerson]]; else [pv setPerson: nil]; [lbl setStringValue: [NSString stringWithFormat: @"%d/%d", currentPerson+1, (int)[people count]]]; } - (void) previousPerson: (id) sender { if (!people) return; currentPerson--; if(currentPerson < 0) currentPerson = [people count]-1; if([people count]) [pv setPerson: [people objectAtIndex: currentPerson]]; else [pv setPerson: nil]; [lbl setStringValue: [NSString stringWithFormat: @"%d/%d", currentPerson+1, (int)[people count]]]; } - (void) increaseFontSize: (id) sender { [pv setFontSize: [pv fontSize]+2]; if([pv fontSize] > 2) [dfb setEnabled: YES]; } - (void) decreaseFontSize: (id) sender { if([pv fontSize] <= 2) return; [pv setFontSize: [pv fontSize]-2]; if([pv fontSize] <= 2) [dfb setEnabled: NO]; } // // Delegate stuff // - (BOOL) personView: (ADPersonView*) aView willDragPerson: (ADPerson*) person { return YES; } - (BOOL) personView: (ADPersonView*) aView willDragProperty: (NSString*) property { return NO; } @end Addresses-0.5.0/Goodies/VCFViewer/InspectorInfo.plist0000644000175000000240000000032314750145760021670 0ustar multixstaff{ InspectorName = "VCF Inspector"; Author = "Bj\u00f6rn Giesler "; InspectorRelease = "1.1"; InspectorDescription = "This Inspector allows you view the content of a VCF file"; } Addresses-0.5.0/Goodies/LDAPAddressBook/0000755000175000000240000000000012312144410017053 5ustar multixstaffAddresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/0000755000175000000240000000000012312144410022702 5ustar multixstaffAddresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/utils.h0000644000175000000240000000072112312144410024213 0ustar multixstaff#ifndef UTILS_H #define UTILS_H #include #include #include #include #include NSString* authMethodToString(int authMethod); int stringToAuthMethod(NSString* str); NSString* scopeToString(int scope); int stringToScope(NSString* str); ADPerson* ldapEntryToPerson(GSLDAPEntry* entry); GSLDAPEntry* personToLDAPEntry(ADPerson* person); #endif // UTILS_H Addresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/GNUmakefile0000644000175000000240000000111612312144410024753 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make BUNDLE_NAME=LDAPAddressBook BUNDLE_EXTENSION=.abclass LDAPAddressBook_OBJC_FILES=LDAPAddressBook.m utils.m LDAPAddressBook_RESOURCE_FILES=LDAPPersonMapping.plist LDAPAddressBook_MAIN_CLASS=LDAPAddressBook LDAPAddressBook_OBJCFLAGS=-I../../Frameworks -Wall LDAPAddressBook_LDFLAGS += -L../../../Frameworks/Addresses/Addresses.framework \ -lAddresses -lgsldap LDAPAddressBook_INCLUDE_DIRS = -I../../../Frameworks -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/bundle.make -include GNUmakefile.postamble Addresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/utils.m0000644000175000000240000001234512312144410024225 0ustar multixstaff#include "utils.h" #include NSString* authMethodToString(int authMethod) { switch(authMethod) { case LDAP_AUTH_NONE: return @"NONE"; case LDAP_AUTH_SIMPLE: return @"SIMPLE"; case LDAP_AUTH_SASL: return @"SASL"; case LDAP_AUTH_KRBV4: return @"KRBV4"; case LDAP_AUTH_KRBV41: return @"KRBV41"; case LDAP_AUTH_KRBV42: return @"KRBV42"; default: return @"UNKNOWN"; } } int stringToAuthMethod(NSString* str) { str = [str uppercaseString]; if([str isEqualToString: @"NONE"]) return LDAP_AUTH_NONE; if([str isEqualToString: @"SIMPLE"]) return LDAP_AUTH_SIMPLE; if([str isEqualToString: @"SASL"]) return LDAP_AUTH_SASL; if([str isEqualToString: @"KRBV4"]) return LDAP_AUTH_KRBV4; if([str isEqualToString: @"KRBV41"]) return LDAP_AUTH_KRBV41; if([str isEqualToString: @"KRBV42"]) return LDAP_AUTH_KRBV42; return -1; } NSString* scopeToString(int scope) { switch(scope) { case LDAP_SCOPE_DEFAULT: return @"DEFAULT"; case LDAP_SCOPE_BASE: return @"BASE"; case LDAP_SCOPE_ONELEVEL: return @"ONELEVEL"; case LDAP_SCOPE_SUBTREE: return @"SUBTREE"; default: return @"UNKNOWN"; } } int stringToScope(NSString* str) { str = [str uppercaseString]; if([str isEqualToString: @"DEFAULT"]) return LDAP_SCOPE_DEFAULT; if([str isEqualToString: @"BASE"]) return LDAP_SCOPE_BASE; if([str isEqualToString: @"ONELEVEL"]) return LDAP_SCOPE_ONELEVEL; if([str isEqualToString: @"SUBTREE"]) return LDAP_SCOPE_SUBTREE; return -1; } NSArray *mapping = NULL; NSArray *skip = NULL; @class LDAPAddressBook; void initMapping(void) { if(!mapping) { NSBundle *currentBundle; NSString *path; currentBundle = [NSBundle bundleForClass: [LDAPAddressBook class]]; path = [currentBundle pathForResource: @"LDAPPersonMapping" ofType: @"plist"]; mapping = [[NSString stringWithContentsOfFile: path] propertyList]; [mapping retain]; } if(!skip) { skip = [[NSArray alloc] initWithObjects: @"cn", @"objectClass", NULL]; } } id addressesKeyForLDAPKey(NSString *key) { int i, j; if(!mapping) initMapping(); for(i=0; i<[mapping count]; i++) { NSArray *arr = [[mapping objectAtIndex: i] objectForKey: @"LDAPKeys"]; for(j=0; j<[arr count]; j++) if([[arr objectAtIndex: j] caseInsensitiveCompare: key] == NSOrderedSame) return [[mapping objectAtIndex: i] objectForKey: @"AddressesKey"]; } return nil; } ADPerson* ldapEntryToPerson(GSLDAPEntry* entry) { ADPerson *p; NSEnumerator *nameE; NSString *name; p = [[[ADPerson alloc] init] autorelease]; nameE = [entry attributeNameEnumerator]; while((name = [nameE nextObject])) { NSArray *val; id addrKey; int i; NSString *property = nil, *label = nil, *key = nil; ADPropertyType type; if([skip containsObject: name]) continue; val = [entry valuesForAttributeNamed: name]; addrKey = addressesKeyForLDAPKey(name); if(!addrKey) { NSLog(@"Can't handle LDAP key %@ yet\n", name); continue; } if([addrKey isEqualToString: @"Skip"]) continue; if([addrKey isKindOfClass: [NSString class]]) property = addrKey; else { property = [addrKey objectForKey: @"Property"]; label = [addrKey objectForKey: @"Label"]; key = [addrKey objectForKey: @"Key"]; } type = [[ADPerson class] typeOfProperty: property]; if(!type) { NSLog(@"Error in Property %@ for %@\n", property, name); continue; } // string? set it directly if(type == ADStringProperty) { [p setValue: [val objectAtIndex: 0] forProperty: property]; continue; } // multi-value, but not multi-dictionary else if(type == ADMultiStringProperty) { ADMultiValue *v; ADMutableMultiValue *mv; v = [p valueForProperty: property]; if(!v) mv = [[[ADMutableMultiValue alloc] init] autorelease]; else mv = [v mutableCopy]; for(i=0; i<[val count]; i++) [mv addValue: [val objectAtIndex: i] withLabel: label]; [p setValue: [[[ADMultiValue alloc] initWithMultiValue: mv] autorelease] forProperty: property]; } else if(type == ADMultiDictionaryProperty) { ADMultiValue *v; ADMutableMultiValue *mv; NSDictionary *d; NSMutableDictionary *md; int index; BOOL have; v = [p valueForProperty: property]; if(!v) mv = [[[ADMutableMultiValue alloc] init] autorelease]; else mv = [v mutableCopy]; d = nil; have = NO; for(index=0; index<[mv count]; index++) if([[mv labelAtIndex: index] isEqualToString: label]) { have = YES; d = [mv valueAtIndex: index]; break; } if(!d) md = [NSMutableDictionary dictionary]; else md = [[[NSMutableDictionary alloc] initWithDictionary: d] autorelease]; [md setObject: [val objectAtIndex: 0] forKey: key]; if(have) [mv replaceValueAtIndex: index withValue: [NSDictionary dictionaryWithDictionary: md]]; else [mv addValue: [NSDictionary dictionaryWithDictionary: md] withLabel: label]; [p setValue: [[[ADMultiValue alloc] initWithMultiValue: mv] autorelease] forProperty: property]; } else { NSLog(@"Can't handle values of type %d yet\n", type); } } return p; } GSLDAPEntry* personToLDAPEntry(ADPerson* person) { return nil; } Addresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/LDAPAddressBook.m0000644000175000000240000001053412312144410025724 0ustar multixstaff#include #include #include #include #include "utils.h" @interface LDAPAddressBook: ADAddressBook { GSLDAPConnection *connection; NSString *disabledReason; NSString *host; int port; unsigned int authMethod; NSString *bindDN, *bindPassword, *baseDN; unsigned int scope, flags; } @end @interface LDAPAddressBook (Private) - (BOOL) checkConnection; @end @implementation LDAPAddressBook (Private) - (BOOL) checkConnection { if(!connection || (![connection isConnected] && ![connection connect])) { disabledReason = @"Could not open connection"; return NO; } return YES; } @end @implementation LDAPAddressBook - initWithSpecification: (NSDictionary*) aSpec { disabledReason = nil; host = nil; port = 389; authMethod = LDAP_AUTH_NONE; bindDN = @""; bindPassword = @""; baseDN = @""; scope = 0; flags = (GSLDAPConnection__bindOnConnect | GSLDAPConnection__autoConnect); if([aSpec objectForKey: @"Host"]) host = [aSpec objectForKey: @"Host"]; if([aSpec objectForKey: @"Port"]) port = [[aSpec objectForKey: @"Port"] intValue]; if([aSpec objectForKey: @"AuthMethod"]) authMethod = stringToAuthMethod([aSpec objectForKey: @"AuthMethod"]); if([aSpec objectForKey: @"BindDN"]) bindDN = [aSpec objectForKey: @"BindDN"]; if([aSpec objectForKey: @"BindPassword"]) bindPassword = [aSpec objectForKey: @"BindPassword"]; if([aSpec objectForKey: @"BaseDN"]) baseDN = [aSpec objectForKey: @"BaseDN"]; if([aSpec objectForKey: @"Scope"]) scope = stringToScope([aSpec objectForKey: @"Scope"]); // Fixme method, etc. if(!host) { disabledReason = @"No host given"; return self; } NSLog(@"Auth method: %d\n", authMethod); connection = [[GSLDAPConnection alloc] initWithHost: host port: port authMethod: authMethod bindDN: bindDN bindPassword: bindPassword baseDN: baseDN scope: scope flags: flags]; [self checkConnection]; return self; } // LDAP can't change records - (BOOL) save { return YES; } - (BOOL) hasUnsavedChanges { return NO; } - (ADPerson*) me { return nil; } - (void) setMe: (ADPerson*) me {} - (BOOL) addRecord: (ADRecord*) record { return NO; } - (BOOL) removeRecord: (ADRecord*) record { return NO; } - (BOOL) addMember: (ADPerson*) person forGroup: (ADGroup*) group { return NO; } - (BOOL) removeMember: (ADPerson*) person forGroup: (ADGroup*) group { return NO; } - (BOOL) addSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { return NO; } - (BOOL) removeSubgroup: (ADGroup*) g1 forGroup: (ADGroup*) g2 { return NO; } - (ADRecord*) recordForUniqueId: (NSString*) uniqueId; { // FIXME [self subclassResponsibility: _cmd]; return nil; } - (NSArray*) people { NSArray *ldapResult; NSMutableArray *retval; int i; if(![self checkConnection]) return nil; ldapResult = [connection searchFilter: @"(objectclass=person)" attributes: nil]; if(![ldapResult count]) return [NSMutableArray array]; retval = [NSMutableArray arrayWithCapacity: [ldapResult count]]; for(i=0; i<[ldapResult count]; i++) { ADPerson *p = ldapEntryToPerson([ldapResult objectAtIndex: i]); [p setAddressBook: self]; [retval addObject: p]; } return retval; } - (NSArray*) groups { // FIXME [self subclassResponsibility: _cmd]; return nil; } - (NSArray*) membersForGroup: (ADGroup*) group { // FIXME [self subclassResponsibility: _cmd]; return nil; } - (NSArray*) subgroupsForGroup: (ADGroup*) group { // FIXME [self subclassResponsibility: _cmd]; return nil; } - (NSArray*) parentGroupsForGroup: (ADGroup*) group; { // FIXME [self subclassResponsibility: _cmd]; return nil; } - (NSDictionary*) addressBookDescription { NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObjectsAndKeys: [self className], @"Class", host, @"Host", [NSString stringWithFormat: @"%d", port], @"Port", bindDN, @"BindDN", bindPassword, @"BindPassword", baseDN, @"BaseDN", authMethodToString(authMethod), @"AuthMethod", scopeToString(scope), @"Scope", nil]; if(disabledReason) [dict setObject: disabledReason forKey: @"Error"]; return [NSDictionary dictionaryWithDictionary: dict]; } @end Addresses-0.5.0/Goodies/LDAPAddressBook/LDAPAddressBookClass/LDAPPersonMapping.plist0000644000175000000240000000431712312144410027207 0ustar multixstaff/* LDAPPersonMapping.plist This defines the mapping between LDAP attributes for persons and ADPerson properties. The mapping supports only a subset of the attributes valid to the inetOrgPerson object class, defined in inetorgperson.schema. There are some attributes (e.g. "audio") in inetOrgPerson that the Addresses framework doesn't support (yet?); those are not supported. Postal addresses are not supported at all; LDAP gives them as 30-line free-form, which are unparseable... */ ( /* skip these */ { LDAPKeys = (objectClass); AddressesKey = Skip; }, /* as valid for the person object class */ { LDAPKeys = (sn, surname); AddressesKey = LastName; }, /* cn: Unsupported */ /* userPassword: Unsupported */ { LDAPKeys = (telephoneNumber); AddressesKey = { Property = Phone; Label = WorkPhone; }; }, /* seeAlso: Unsupported */ /* description: Unsupported */ /* as valid for the organizationalPerson object class */ { LDAPKeys = (title); Addresseskey = Title; }, /* x121Address: Unsupported */ /* registeredAddress: Unsupported */ /* destinationIndicator: Unsupported */ /* preferredDeliveryMethod: Unsupported */ /* telexNumber: Unsupported */ /* teletexTerminalIdentifier: Unsupported */ /* internationaliSDNNumber: Unsupported */ { LDAPKeys = (facsimileTelephoneNumber); AddressesKey = { Property = Fax; Label = WorkFax; }; }, { LDAPKeys = (street); AddressesKey = { Property = Address; Label = WorkAddress; Key = Street; }; }, { LDAPKeys = (postOfficeBox); AddressesKey = { Property = Address; Label = WorkAddress; Key = POBox; }; }, { LDAPKeys = (postalCode); AddressesKey = { Property = Address; Label = WorkAddress; Key = ZIP; }; }, /* postalAddress: Unsupported */ { LDAPKeys = (physicalDeliveryOfficeName); AddressesKey = { Property = Address; Label = WorkAddress; Key = ExtAddr; }; }, { LDAPKeys = (st); AddressesKey = { Property = Address; Label = WorkAddress; Key = State; }; }, { LDAPKeys = (ou); AddressesKey = Organization; } )Addresses-0.5.0/Goodies/LDAPAddressBook/GNUmakefile0000644000175000000240000000026512312144410021130 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = LDAPAddressBookClass -include GNUMakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUMakefile.postambleAddresses-0.5.0/Goodies/adtool/0000755000175000000240000000000012312144411015475 5ustar multixstaffAddresses-0.5.0/Goodies/adtool/GNUmakefile0000644000175000000240000000061712312144411017553 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME=adtool adtool_OBJC_FILES=addresstool.m adtool_OBJCFLAGS=-I../Frameworks -Wall adtool_LDFLAGS += -L../../Frameworks/Addresses/Addresses.framework adtool_TOOL_LIBS += -lAddresses adtool_INCLUDE_DIRS = -I../../Frameworks -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/tool.make -include GNUmakefile.postamble Addresses-0.5.0/Goodies/adtool/addresstool.m0000644000175000000240000004050412312144411020201 0ustar multixstaff// abview.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // // // $Author: rmottola $ // $Locker: $ // $Revision: 1.1 $ // $Date: 2007/05/01 23:07:09 $ /* system includes */ #include #include /* my includes */ /* (none) */ extern char** environ; #define DIE(message...) do {fprintf(stderr, message); return -1;} while(0) @interface ADView: NSObject { ADAddressBook *book; NSString *progname, *command; NSArray *args; BOOL localize, header; } - initWithArguments: (char**) argv count: (int) count; - (int) people; - (int) showperson; - (int) setme; - (int) exportimage; - (int) importimage; - (int) groups; - (int) members; - (int) addmember; - (int) delmember; - (int) subgroups; - (int) addgroup; - (int) delgroup; - (int) tree; - (int) config; - (int) import; - (int) execute; - (int) die; @end; @implementation ADView - initWithArguments: (char**) argv count: (int) count { int start; NSArray *arr; [NSProcessInfo initializeWithArguments: argv count: count environment: environ]; arr = [[NSProcessInfo processInfo] arguments]; command = nil; header = YES; localize = NO; progname = [arr objectAtIndex: 0]; start = 1; while(start < [arr count]) { NSString *arg = [arr objectAtIndex: start]; if(![[arg substringWithRange: NSMakeRange(0, 1)] isEqualToString: @"-"]) { command = arg; start++; break; } else { if([arg isEqualToString: @"-l"]) localize = YES; else if([arg isEqualToString: @"-h"]) header = NO; else { [self die]; exit(-1); } } start++; } if(!command) { [self die]; exit(-1); } if(start < count) args = [arr subarrayWithRange: NSMakeRange(start, count-start)]; else args = nil; book = [ADAddressBook sharedAddressBook]; if(!book) { fprintf(stderr, "Error: NIL address book\n"); exit(-1); } return [super init]; } /* * person management */ - (int) people { NSEnumerator *e; ADPerson *p; if([args count] != 0) return [self die]; e = [[book people] objectEnumerator]; if(header) printf("ID Person Name\n"); while((p = [e nextObject])) printf("%-5s %s %s\n", [[p valueForProperty: ADUIDProperty] cString], [[p valueForProperty: ADFirstNameProperty] cString], [[p valueForProperty: ADLastNameProperty] cString]); return 0; } - (int) showperson { ADPerson *p; NSString *property; NSArray *props; NSEnumerator *e; if([args count] != 1) return [self die]; if([[args objectAtIndex: 0] isEqualToString: @"me"]) p = [book me]; else p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!p) DIE("No such record\n"); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with index %s is not a person\n", [[args objectAtIndex: 0] cString]); props = [[ADPerson properties] sortedArrayUsingSelector: @selector(compare:)]; e = [props objectEnumerator]; printf("%s %s\n", [[p valueForProperty: ADFirstNameProperty] cString], [[p valueForProperty: ADLastNameProperty] cString]); while((property = [e nextObject])) { id val; val = [p valueForProperty: property]; if(!val) continue; if([val isKindOfClass: [NSString class]] || [val isKindOfClass: [NSDate class]]) { if(localize) printf("%-20s: %s\n", [ADLocalizedPropertyOrLabel(property) cString], [[val description] cString]); else printf("%-20s: %s\n", [property cString], [[val description] cString]); } else if([val isKindOfClass: [ADMultiValue class]]) { int i; if(![val count]) continue; for(i=0; i<[val count]; i++) { NSString *label, *identifier; id v; v = [val valueAtIndex: i]; label = [val labelAtIndex: i]; identifier = [val identifierAtIndex: i]; if(i==0) { if(localize) printf("%-20s: %-5s ", [ADLocalizedPropertyOrLabel(property) cString], [identifier cString]); else printf("%-20s: %-5s", [property cString], [identifier cString]); } else printf("%-21s %-5s ", "", [identifier cString]); if(localize) printf("%-20s ", [ADLocalizedPropertyOrLabel(label) cString]); else printf("%-20s ", [label cString]); printf("%s\n", [[v description] cString]); } } else { if(localize) printf("%-20s: Undisplayable (class %s)\n", [ADLocalizedPropertyOrLabel(property) cString], [[val className] cString]); else printf("%-20s: Undisplayable (class %s)\n", [property cString], [[val className] cString]); } } return 0; } - (int) setme { ADPerson *p; if([args count] != 1) return [self die]; p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!p) DIE("No such record\n"); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with index %s is not a person\n", [[args objectAtIndex: 0] cString]); [book setMe: p]; return 0; } - (int) exportimage { ADPerson *p; NSString *filename; NSData *pic; if([args count] != 2) return [self die]; p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!p) DIE("No such record\n"); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with index %s is not a person\n", [[args objectAtIndex: 0] cString]); filename = [args objectAtIndex: 1]; pic = [p imageData]; if(!pic) DIE("No image associated with person\n"); if(![pic writeToFile: filename atomically: NO]) DIE("Couldn't write image file %s\n", [filename cString]); return 0; } - (int) importimage { ADPerson *p; NSString *filename; NSData *pic; if([args count] != 2) return [self die]; p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!p) DIE("No such record\n"); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with index %s is not a person\n", [[args objectAtIndex: 0] cString]); filename = [args objectAtIndex: 1]; pic = [NSData dataWithContentsOfFile: filename]; if(!pic) DIE("Couldn't read image file %s\n", [filename cString]); if(![p setImageData: pic]) DIE("Couldn't set image in person\n"); if(![book save]) DIE("Error saving address book!\n"); return 0; } /* * group management */ - (int) groups { ADGroup *g; NSEnumerator *e; if([args count] != 0) return [self die]; e = [[book groups] objectEnumerator]; if(header) printf("ID Group Name\n"); while((g = [e nextObject])) printf("%-5s %s\n", [[g valueForProperty: ADUIDProperty] cString], [[g valueForProperty: ADGroupNameProperty] cString]); return 0; } - (int) members { ADGroup *g; ADPerson *p; NSEnumerator *e; if([args count] != 1) return [self die]; g = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!g) DIE("No group with id %s\n", [[args objectAtIndex: 0] cString]); if(![g isKindOfClass: [ADGroup class]]) DIE("Record with index %s is not a group\n", [[args objectAtIndex: 0] cString]); e = [[g members] objectEnumerator]; if(header) printf("ID Person Name\n"); while((p = [e nextObject])) printf("%-5s %s %s\n", [[p valueForProperty: ADUIDProperty] cString], [[p valueForProperty: ADFirstNameProperty] cString], [[p valueForProperty: ADLastNameProperty] cString]); return 0; } - (int) addmember { ADGroup *g; ADPerson *p; if([args count] != 2) return [self die]; g = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 1]]; if(!g) DIE("No group with id %s\n", [[args objectAtIndex: 0] cString]); if(![g isKindOfClass: [ADGroup class]]) DIE("Record with id %s is not a group!\n", [[args objectAtIndex: 0] cString]); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with id %s is not a person!\n", [[args objectAtIndex: 0] cString]); if(![g addMember: p]) DIE("Error\n"); return 0; } - (int) delmember { ADGroup *g; ADPerson *p; if([args count] != 2) return [self die]; g = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; p = (ADPerson*)[book recordForUniqueId: [args objectAtIndex: 1]]; if(!g) DIE("No group with id %s\n", [[args objectAtIndex: 0] cString]); if(!p) DIE("No person with id %s\n", [[args objectAtIndex: 1] cString]); if(![g isKindOfClass: [ADGroup class]]) DIE("Record with id %s is not a group!\n", [[args objectAtIndex: 0] cString]); if(![p isKindOfClass: [ADPerson class]]) DIE("Record with id %s is not a person!\n", [[args objectAtIndex: 0] cString]); if(![g removeMember: p]) DIE("Error\n"); return 0; } - (int) subgroups { ADGroup *g; NSEnumerator *e; if([args count] != 1) return [self die]; g = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(!g) DIE("No group with id %s\n", [[args objectAtIndex: 0] cString]); if(![g isKindOfClass: [ADGroup class]]) DIE("Record with id %s is not a group!\n", [[args objectAtIndex: 0] cString]); e = [[g subgroups] objectEnumerator]; if(header) printf("ID Group Name\n"); while((g = [e nextObject])) printf("%-5s %s\n", [[g valueForProperty: ADUIDProperty] cString], [[g valueForProperty: ADGroupNameProperty] cString]); return 0; } - (int) addgroup { ADGroup *group; if([args count] != 1 && [args count] != 2) return [self die]; group = [[ADGroup alloc] init]; if([args count] == 1) { [group setValue: [args objectAtIndex: 0] forProperty: ADGroupNameProperty]; if(![book addRecord: group]) DIE("Error\n"); } else { id sg; [group setValue: [args objectAtIndex: 1] forProperty: ADGroupNameProperty]; sg = [book recordForUniqueId: [args objectAtIndex: 0]]; if(!sg) DIE("No group with id %s\n", [[args objectAtIndex: 0] cString]); else if(![sg isKindOfClass: [ADGroup class]]) DIE("Record with id %s is not a group\n", [[args objectAtIndex: 0] cString]); if(![sg addSubgroup: group]) DIE("Error\n"); } printf("%s\n", [[group uniqueId] cString]); return 0; } - (int) delgroup { if([args count] != 1 && [args count] != 2) return [self die]; if([args count] == 1) { ADGroup *group; group = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; if(![book removeRecord: group]) DIE("Error\n"); } else { ADGroup *g1, *g2; g1 = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 0]]; g2 = (ADGroup*)[book recordForUniqueId: [args objectAtIndex: 1]]; if(![g1 removeSubgroup: g2]) DIE("Error\n"); } return 0; } - (int) parentgroups { id record; ADGroup *g; NSArray *parents; NSEnumerator *e; if([args count] != 1) return [self die]; record = [book recordForUniqueId: [args objectAtIndex: 0]]; if(!record) DIE("No record with id %s\n", [[args objectAtIndex: 0] cString]); parents = [record parentGroups]; e = [parents objectEnumerator]; if(header) printf("ID Group Name\n"); while((g = [e nextObject])) printf("%-5s %s\n", [[g valueForProperty: ADUIDProperty] cString], [[g valueForProperty: ADGroupNameProperty] cString]); return 0; } - (int) _showTreeForGroup: (ADGroup*) group level: (int) level { NSArray *subgroups, *members; NSEnumerator *e; ADPerson *p; ADGroup *g; if(!group) { subgroups = [book groups]; members = [book people]; } else { subgroups = [group subgroups]; members = [group members]; } e = [subgroups objectEnumerator]; while((g = [e nextObject])) { printf("%*sGROUP %-5s %s\n", level, "", [[g uniqueId] cString], [[g valueForProperty: ADGroupNameProperty] cString]); [self _showTreeForGroup: g level: level+2]; } e = [members objectEnumerator]; while((p = [e nextObject])) printf("%*sPERSON %-5s %s, %s\n", level, "", [[p uniqueId] cString], [[p valueForProperty: ADLastNameProperty] cString], [[p valueForProperty: ADFirstNameProperty] cString]); return 0; } - (int) tree { if([args count] != 0) return [self die]; return [self _showTreeForGroup: nil level: 0]; } - (void) showInfoForAddressBook: (ADAddressBook*) ab { NSDictionary *descr; NSEnumerator *e; NSString *key; ADEnvelopeAddressBook *env = (ADEnvelopeAddressBook*) book; descr = [ab addressBookDescription]; fprintf(stderr, "%s", [[descr objectForKey: @"Class"] cString]); if(ab == [env primaryAddressBook]) fprintf(stderr, " (Primary)\n"); else fprintf(stderr, "\n"); e = [[[descr allKeys] sortedArrayUsingSelector: @selector(compare:)] objectEnumerator]; while((key = [e nextObject])) { if([key isEqualToString: @"Class"]) continue; fprintf(stderr, "\t%s: %s\n", [key cString], [[descr objectForKey: key] cString]); } } - (int) config { NSEnumerator *e; ADAddressBook *ab; ADEnvelopeAddressBook *env = (ADEnvelopeAddressBook*) book; if([args count] != 0) return [self die]; [self showInfoForAddressBook: [env primaryAddressBook]]; e = [env addressBooksEnumerator]; while((ab = [e nextObject])) { if(ab == [env primaryAddressBook]) continue; [self showInfoForAddressBook: ab]; } return 0; } - (int) import { NSEnumerator *e; NSString *str; if(!args) return [self die]; e = [args objectEnumerator]; while((str = [e nextObject])) { id obj; id conv = [[ADConverterManager sharedManager] inputConverterWithFile: str]; if(!conv) { fprintf(stderr, "Cannot import %s (no converter)\n", [str cString]); continue; } while((obj = [conv nextRecord])) [book addRecord: obj]; } return 0; } - (int) execute { int retval; NSMethodSignature *sig; NSInvocation *inv; if(![self respondsToSelector: NSSelectorFromString(command)]) return [self die]; sig = [self methodSignatureForSelector: @selector(execute)]; inv = [NSInvocation invocationWithMethodSignature: sig]; [inv setSelector: NSSelectorFromString(command)]; [inv invokeWithTarget: self]; [inv getReturnValue: &retval]; if(retval == 0) { if([book hasUnsavedChanges]) { fprintf(stderr, "Saving address book.\n"); if(![book save]) { fprintf(stderr, "Error saving address book.\n"); return -1; } } } return retval; } - (int) die; { const char *s = [progname cString]; NSArray *arr; fprintf(stderr, "\n%s: Command-line utility for the Addresses framework\n\n" "Usage: %s [OPTIONS] COMMAND [PARAMETERS]\n\n" "Options:\n" "\t-l\tturn on localization of property names\n" "\t-h\tturn off printing of header\n\n" "Person Management Commands:\n" "\tpeople\n\t\tShow all people (ID and name)\n" "\tshowperson {PERSONID|me}\n\t\tShow a person's complete record\n" "\tsetme PERSONID\n\t\tMark the given person as the 'me' record\n" "\texportimage PERSONID FILENAME\n\t\tExport a person's image\n" "\timportimage PERSONID FILENAME\n\t\tExport a person's image\n" "\n" "Group Management Commands:\n" "\tgroups\n\t\tShow toplevel groups\n" "\tmembers GROUPID\n\t\tDisplay the members of the given group\n" "\taddmember GROUPID PERSONID\n\t\tAdd a person to a group\n" "\tdelmember GROUPID PERSONID\n\t\tRemove a person from a group\n" "\tsubgroups SUPERGROUPID\n\t\tShow a group's subgroups\n" "\taddgroup [SUPERGROUPID] NAME\n" "\t\tAdd a group to toplevel or the given supergroup\n" "\tdelgroup [SUPERGROUPID] GROUPID\n" "\t\tRemove a group from toplevel or the given supergroup\n" "\tparentgroups {GROUPID|PERSONID}\n" "\t\tShow a record's parent group(s)\n" "\n" "General Commands:\n" "\ttree\n" "\t\tShow a tree view of all members and groups\n" "\tconfig\n" "\t\tShow the current address book configuration\n" "\timport FILE [FILE ...]\n" "\t\tMerge file(s) with the database\n\t\tSupported file types: ", s, s); arr = [[ADConverterManager sharedManager] inputConvertableFileTypes]; if(![arr count]) printf("None\n\n"); else { int i; for(i=0; i<[arr count]-1; i++) printf("%s, ", [[arr objectAtIndex: i] cString]); printf("%s\n\n", [[arr objectAtIndex: [arr count]-1] cString]); } return -1; } @end int main(int argc, char **argv, char **env) { int retval; NSAutoreleasePool *pool; pool = [[NSAutoreleasePool alloc] init]; retval = [[[ADView alloc] initWithArguments: argv count: argc] execute]; [pool release]; return retval; } Addresses-0.5.0/Goodies/adgnumailconverter/0000755000175000000240000000000012312144411020104 5ustar multixstaffAddresses-0.5.0/Goodies/adgnumailconverter/main.m0000644000175000000240000001003012312144411021200 0ustar multixstaff// main.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // // // $Author: rmottola $ // $Locker: $ // $Revision: 1.1 $ // $Date: 2007/05/01 23:07:09 $ /* system includes */ #include #include /* my includes */ /* (none) */ @class Group; @class Address; int groupsConverted = 0; int peopleConverted = 0; @interface AddressBook: NSObject { NSMutableArray *allGroups; } - (void) addToAddressBook; @end @interface Group: NSObject { NSString *name; NSMutableArray *addresses; } - (ADGroup*) addToAddressBook; @end @interface Address: NSObject { NSString *name; NSString *emailAddress; } - (ADPerson*) addToAddressBook; @end @implementation AddressBook - (id) initWithCoder: (NSCoder*) theCoder { allGroups = [[theCoder decodeObject] retain]; return self; } - (void) encodeWithCoder: (NSCoder*) theCoder {} - (void) addToAddressBook { NSEnumerator *e; Group *g; e = [allGroups objectEnumerator]; while((g = [e nextObject])) [g addToAddressBook]; [[ADAddressBook sharedAddressBook] save]; } @end @implementation Group - (id) initWithCoder: (NSCoder*) theCoder { name = [[theCoder decodeObject] retain]; addresses = [[theCoder decodeObject] retain]; return self; } - (void) encodeWithCoder: (NSCoder*) theCoder {} - (ADGroup*) addToAddressBook { ADPerson *p; Address *a; ADGroup *g; NSEnumerator *e; g = [[ADGroup alloc] init]; [g setValue: name forProperty: ADGroupNameProperty]; [[ADAddressBook sharedAddressBook] addRecord: g]; groupsConverted++; e = [addresses objectEnumerator]; while((a = [e nextObject])) { p = [a addToAddressBook]; [g addMember: p]; } return g; } @end @implementation Address - (id) initWithCoder: (NSCoder*) theCoder { name = [[theCoder decodeObject] retain]; emailAddress = [[theCoder decodeObject] retain]; return self; } - (void) encodeWithCoder: (NSCoder*) theCoder {} - (ADPerson*) addToAddressBook { ADPerson *p; ADMutableMultiValue *mv; p = [[ADPerson alloc] init]; if(name && ![name isEqualToString: @""]) { NSRange r; r = [name rangeOfString: @","]; if(r.location == NSNotFound) { NSArray *com = [name componentsSeparatedByString: @" "]; if([com count] > 1) { NSString *first, *last; first = [[com subarrayWithRange: NSMakeRange(0, [com count]-1)] componentsJoinedByString: @" "]; last = [com objectAtIndex: [com count]-1]; [p setValue: first forProperty: ADFirstNameProperty]; [p setValue: last forProperty: ADLastNameProperty]; } else [p setValue: name forProperty: ADLastNameProperty]; } else { NSArray *com = [name componentsSeparatedByString: @","]; if([com count] > 1) { NSString *last, *first; last = [com objectAtIndex: 0]; first = [com objectAtIndex: 1]; [p setValue: first forProperty: ADFirstNameProperty]; [p setValue: last forProperty: ADLastNameProperty]; } else [p setValue: name forProperty: ADLastNameProperty]; } } else { [p setValue: @"UNKNOWN" forProperty: ADLastNameProperty]; [p setValue: emailAddress forProperty: ADFirstNameProperty]; } mv = [[ADMutableMultiValue alloc] initWithMultiValue: [p valueForProperty: ADEmailProperty]]; [mv addValue: emailAddress withLabel: ADEmailWorkLabel]; [p setValue: mv forProperty: ADEmailProperty]; [[ADAddressBook sharedAddressBook] addRecord: p]; peopleConverted++; return p; } @end int main(int argc, const char **argv) { NSString *path; AddressBook *obj; [[NSAutoreleasePool alloc] init]; if(argc != 2) { fprintf(stderr, "Usage: %s PATH_TO_GNUMAIL_ADDRESS_BOOK\n", argv[0]); return -1; } path = [NSString stringWithCString: argv[1]]; printf("Converting from '%s'...\n", [path cString]); obj = [NSUnarchiver unarchiveObjectWithFile: path]; [obj addToAddressBook]; printf("Converted %d groups and %d people\n", groupsConverted, peopleConverted); return 0; } Addresses-0.5.0/Goodies/adgnumailconverter/GNUmakefile0000644000175000000240000000063512312144411022162 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME=adgnumailconverter adgnumailconverter_OBJC_FILES=main.m adgnumailconverter_LDFLAGS += -L../../Frameworks/Addresses/Addresses.framework adgnumailconverter_TOOL_LIBS += -lAddresses adgnumailconverter_INCLUDE_DIRS = -I../../Frameworks -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/tool.make -include GNUmakefile.postamble Addresses-0.5.0/Goodies/adgnumailconverter/README0000644000175000000240000000121312312144411020761 0ustar multixstaffThis is just a quick hack... call it with the path to your GNUMail address book (usually ~/GNUstep/Library/GNUMail/AddressBook). It will try to read everything from there and put it into Addresses format. The program uses the following heuristic to split GNUMail's name field into Addresses's first/last name fields: 1. Name contains a ",": Split it at the "," and put the first part into last name and the second part into first name. "Mller, Fritz" -> "Mller", "Fritz" 2. Name doesn't contain a ",": Split it at spaces and put the last part into last name and everything else into first name. "Johnny B. Goode" -> "Goode", "Johnny B."Addresses-0.5.0/Goodies/GNUmakefile0000644000175000000240000000077512312144411016276 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make SUBPROJECTS = ifneq (yes,$(disable-vcfviewer)) SUBPROJECTS += VCFViewer endif ifneq (yes,$(disable-adgnumailconverter)) SUBPROJECTS += adgnumailconverter endif ifneq (yes,$(disable-adserver)) SUBPROJECTS += adserver endif ifneq (yes,$(disable-adtool)) SUBPROJECTS += adtool endif ifneq (yes,$(disable-ldapaddressbook)) SUBPROJECTS += LDAPAddressBook endif -include GNUMakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUMakefile.postamble Addresses-0.5.0/Goodies/adserver/0000755000175000000240000000000014743556150016047 5ustar multixstaffAddresses-0.5.0/Goodies/adserver/adserver.m0000644000175000000240000002714214743556150020046 0ustar multixstaff// addressserver.m (this is -*- ObjC -*-) // // \author: Bjrn Giesler // // Dedicated Address Book Server for GNUstep // // $Author: buzzdee $ // $Locker: $ // $Revision: 1.5 $ // $Date: 2013/10/19 15:25:22 $ /* system includes */ #include #include /* my includes */ /* (none) */ extern char **environ; char *hello = "Hello\n"; char *error = "Error\n"; char *ok = "OK\n"; @interface FileHandleAuth: NSObject { BOOL _readOK, _writeOK; NSFileHandle *_handle; } - initWithFileHandle: (NSFileHandle*) handle; - (NSFileHandle*) fileHandle; - (BOOL) isReadOK; - (BOOL) isWriteOK; - (void) setReadOK: (BOOL) read writeOK: (BOOL) write; @end @implementation FileHandleAuth - initWithFileHandle: (NSFileHandle*) handle { _handle = handle; [_handle retain]; _readOK = NO; _writeOK = NO; return self; } - (void) dealloc { [_handle release]; [super dealloc]; } - (NSFileHandle*) fileHandle { return _handle; } - (BOOL) isReadOK { return _readOK; } - (BOOL) isWriteOK { return _writeOK; } - (void) setReadOK: (BOOL) read writeOK: (BOOL) write { _readOK = read; _writeOK = write; } @end @interface AddressBookServer: NSObject { ADAddressBook *_book; NSString *_roPwd, *_rwPwd; NSFileHandle *_handle; NSMutableArray *_connections; } - initWithAddressBook: (ADAddressBook*)book readOnlyPassword: (NSString*) roPwd readWritePassword: (NSString*) rwPwd socketServerAtPort: (int) port; - (ADAddressBook*) addressBookForReadOnlyAccessWithAuth: (id) auth; - (ADAddressBook*) addressBookForReadWriteAccessWithAuth: (id) auth; - (void) acceptConnection: (NSNotification*) note; - (void) handleDataOnConnection: (NSNotification*) note; - (void) handleInput: (NSString*) input withAuth: (FileHandleAuth*) auth; @end @implementation AddressBookServer - initWithAddressBook: (ADAddressBook*)book readOnlyPassword: (NSString*) roPwd readWritePassword: (NSString*) rwPwd socketServerAtPort: (int) port { _book = [book retain]; _roPwd = [roPwd copy]; _rwPwd = [rwPwd copy]; _connections = [[NSMutableArray alloc] initWithCapacity: 5]; if(port != -1) { int sock, reuse = 1; struct sockaddr_in sockaddr; memset(&sockaddr, 0, sizeof(struct sockaddr_in)); sockaddr.sin_addr.s_addr = GSSwapHostI32ToBig(INADDR_ANY); sockaddr.sin_port = GSSwapHostI16ToBig(port); if((sock = socket(AF_INET, SOCK_STREAM, PF_UNSPEC)) == -1) NSLog(@"Unable to create socket - %s\n", strerror(errno)); else if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&reuse, sizeof(int)) == -1) NSLog(@"Couldn't set reuse on socket - %s\n", strerror(errno)); else if(bind(sock, (struct sockaddr*)&sockaddr, sizeof(sockaddr))) NSLog(@"Couldn't bind to port %d - %s\n", port, strerror(errno)); else if(listen(sock, 5) == -1) NSLog(@"Couldn't listen on port %d - %s\n", port, strerror(errno)); else { _handle = [[NSFileHandle alloc] initWithFileDescriptor: sock closeOnDealloc: YES]; [_handle acceptConnectionInBackgroundAndNotify]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(acceptConnection:) name: NSFileHandleConnectionAcceptedNotification object: nil]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleDataOnConnection:) name: NSFileHandleDataAvailableNotification object: nil]; } } return self; } - (void) dealloc { [_book autorelease]; [_roPwd autorelease]; [_rwPwd autorelease]; [_handle autorelease]; [_connections autorelease]; [[NSNotificationCenter defaultCenter] removeObserver: self]; [super dealloc]; } - (ADAddressBook*) addressBookForReadOnlyAccessWithAuth: (id) auth { if(![_roPwd isEqualToString: auth]) return nil; return [[[ADPublicAddressBook alloc] initWithAddressBook: _book readOnly: YES] autorelease]; } - (ADAddressBook*) addressBookForReadWriteAccessWithAuth: (id) auth { if(![_rwPwd isEqualToString: auth]) return nil; return [[[ADPublicAddressBook alloc] initWithAddressBook: _book readOnly: NO] autorelease]; } - (void) acceptConnection: (NSNotification*) note { NSFileHandle *handle; FileHandleAuth *auth; handle = [[note userInfo] objectForKey: NSFileHandleNotificationFileHandleItem]; auth = [[[FileHandleAuth alloc] initWithFileHandle: handle] autorelease]; [_connections addObject: auth]; [handle writeData: [NSData dataWithBytes: hello length: strlen(hello)]]; [handle waitForDataInBackgroundAndNotify]; [_handle acceptConnectionInBackgroundAndNotify]; } - (void) handleDataOnConnection: (NSNotification*) note { NSFileHandle *handle; FileHandleAuth *auth; int i; NSData *data; NSString *str; char *buf; handle = [note object]; auth = nil; for(i=0; i<[_connections count]; i++) if([[_connections objectAtIndex: i] fileHandle] == handle) { auth = [_connections objectAtIndex: i]; break; } if(!auth) { NSLog(@"Huh?! Couldn't find auth object\n"); return; } data = [handle availableData]; if(![data length]) { [_connections removeObject: auth]; return; } buf = (char *)malloc([data length]+1); memset(buf, 0, [data length]+1); memcpy(buf, [data bytes], [data length]); str = [NSString stringWithCString: buf]; str = [str stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; [self handleInput: str withAuth: auth]; [handle waitForDataInBackgroundAndNotify]; } - (void) handleInput: (NSString*) input withAuth: (FileHandleAuth*) auth { NSArray *arr; NSString *cmd; #define ERROR \ do { \ [[auth fileHandle] \ writeData: [NSData dataWithBytes: error length: strlen(error)]]; \ return; \ } while(0); #define OK \ do { \ [[auth fileHandle] \ writeData: [NSData dataWithBytes: ok length: strlen(ok)]]; \ return; \ } while(0); arr = [input componentsSeparatedByString: @" "]; if(![arr count]) ERROR; cmd = [arr objectAtIndex: 0]; if([cmd isEqualToString: @"auth"]) { NSString *type, *pwd; if([arr count] != 3) ERROR; type = [arr objectAtIndex: 1]; pwd = [arr objectAtIndex: 2]; if([type isEqualToString: @"ro"]) { if([_roPwd isEqualToString: pwd]) { [auth setReadOK: YES writeOK: NO]; OK; } ERROR; } else if([type isEqualToString: @"rw"]) { if([_rwPwd isEqualToString: pwd]) { [auth setReadOK: YES writeOK: YES]; OK; } ERROR; } else ERROR; } else if([cmd isEqualToString: @"quit"]) [_connections removeObject: auth]; else ERROR; } @end void DiePrintingMessage(NSString *msg, int exitVal) { fprintf(stderr, "%s", [msg cString]); exit(exitVal); } void DiePrintingUsage(int exitval) { NSString *progname, *msg; progname = [[[NSProcessInfo processInfo] arguments] objectAtIndex: 0]; msg = [NSString stringWithFormat: @"Usage: %@\n" @" [--ab LOC] [--ro PWD] [--rw PWD] [--conf CFILE]\n" @" [--rp PORT] [--sp port]\n" @"Options:\n" @"\t--ab LOC Serve address book at the given location\n" @"\t--ro PWD Use PASS as read-only access password\n" @"\t--rw PWD Use PASS as read-write access password\n" @"\t--rp PORT Use PORT as receive port number\n" @"\t--sp PORT Use PORT as send port number\n" @"\t--sock PORT Use PORT as socket port number (default: 5000)\n" @"\t--conf CFILE Read values for AddressBookLocation, \n" @"\t ReadOnlyPassword, ReadWritePassword,\n" @"\t SendPort, ReceivePort from CONFIGFILE\n" @"\t (proplist dictionary). Values given on\n" @"\t the command line override these.\n", progname]; return DiePrintingMessage(msg, exitval); } int main(int argc, char **argv) { NSString *abLocation = nil, *roPassword = nil, *rwPassword = nil, *configFile = nil; int rport = -1, sport = -1, sock = 5000; NSAutoreleasePool *pool; NSEnumerator *e; NSString *arg; id config; NSConnection *conn; NSSocketPort *receivePort, *sendPort; ADLocalAddressBook *lbook; AddressBookServer *srv; pool = [[NSAutoreleasePool alloc] init]; [NSProcessInfo initializeWithArguments: argv count: argc environment: environ]; e = [[[NSProcessInfo processInfo] arguments] objectEnumerator]; [e nextObject]; // skip argv[0]; while((arg = [e nextObject])) { if([arg isEqualToString: @"--ab"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); abLocation = arg; } else if([arg isEqualToString: @"--ro"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); roPassword = arg; } else if([arg isEqualToString: @"--rw"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); rwPassword = arg; } else if([arg isEqualToString: @"--rp"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); rport = [arg intValue]; } else if([arg isEqualToString: @"--sp"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); sport = [arg intValue]; } else if([arg isEqualToString: @"--sock"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); sock = [arg intValue]; } else if([arg isEqualToString: @"--conf"]) { arg = [e nextObject]; if(!arg) DiePrintingUsage(-1); configFile = arg; } else DiePrintingUsage(-1); } if(configFile) { config = [[NSString stringWithContentsOfFile: configFile] propertyList]; if(!config || ![config isKindOfClass: [NSDictionary class]]) { fprintf(stderr, "Error: %s could not be read or doesn't contain" "a valid dictionary!\n", [configFile cString]); exit(-1); } if(!abLocation) abLocation = [config objectForKey: @"AddressBookLocation"]; if(!roPassword) roPassword = [config objectForKey: @"ReadOnlyPassword"]; if(!rwPassword) rwPassword = [config objectForKey: @"ReadWritePassword"]; if(rport == -1 && [config objectForKey: @"ReceivePort"]) rport = [[config objectForKey: @"ReceivePort"] intValue]; if(sport == -1 && [config objectForKey: @"SendPort"]) sport = [[config objectForKey: @"SendPort"] intValue]; } if(!abLocation) DiePrintingMessage(@"Error: No value for AddressBookLocation\n", -1); if(!roPassword) DiePrintingMessage(@"Error: No value for ReadOnlyPassword\n", -1); if(!rwPassword) DiePrintingMessage(@"Error: No value for ReadWritePassword\n", -1); if(rport == -1) DiePrintingMessage(@"Error: Receive port is invalid\n", -1); if(sport == -1) DiePrintingMessage(@"Error: Send port is invalid\n", -1); lbook = [[ADLocalAddressBook alloc] initWithLocation: abLocation]; if(!lbook) DiePrintingMessage([NSString stringWithFormat: @"Error: %@ isn't a valid " @"AddressBookLocation\n", lbook], -1); srv = [[AddressBookServer alloc] initWithAddressBook: lbook readOnlyPassword: roPassword readWritePassword: rwPassword socketServerAtPort: sock]; receivePort = [NSSocketPort portWithNumber: rport onHost: nil forceAddress: nil listener: YES]; sendPort = [NSSocketPort portWithNumber: sport onHost: nil forceAddress: nil listener: NO]; NSLog(@"Sendport at %d: %@\n", rport, receivePort); NSLog(@"Receiveport at %d: %@\n", sport, sendPort); conn = [[NSConnection alloc] initWithReceivePort: receivePort sendPort: sendPort]; [conn setRootObject: srv]; [conn registerName: @"AddressServer"]; fprintf(stderr, "Running.\n"); [[NSRunLoop currentRunLoop] run]; [pool release]; return 0; } Addresses-0.5.0/Goodies/adserver/GNUmakefile0000644000175000000240000000063012312144411020077 0ustar multixstaffinclude $(GNUSTEP_MAKEFILES)/common.make TOOL_NAME=adserver adserver_OBJC_FILES=adserver.m adserver_OBJCFLAGS=-I../Frameworks -Wall adserver_LDFLAGS += -L../../Frameworks/Addresses/Addresses.framework adserver_TOOL_LIBS += -lAddresses adserver_INCLUDE_DIRS = -I../../Frameworks -include GNUmakefile.preamble -include GNUmakefile.local include $(GNUSTEP_MAKEFILES)/tool.make -include GNUmakefile.postamble Addresses-0.5.0/Goodies/adserver/default.conf0000644000175000000240000000025012312144411020316 0ustar multixstaff{ AddressBookLocation = "~/GNUstep/Library/Addresses"; ReadOnlyPassword = "readonly"; ReadWritePassword = "readwrite"; SendPort = 4000; ReceivePort = 4001; } Addresses-0.5.0/Goodies/README0000644000175000000240000000170312312144411015074 0ustar multixstaffAddresses Goodies ================= This directory contains a couple of things that might be of use: o VCFInspector A content inspector bundle for GWorkspace. Since I can't be sure that everybody has GWorkspace installed, and this needs GWorkspace headers, it's not built by default. It's horribly useful nonetheless. You can use it to browse through VCFs and also to drag single addresses out of VCFs into the address book, terminal, any text field, ... o adgnumailconverter A tool that will merge your GNUMail address book into the Addresses database. o adserver A stand-alone Addresses network server. o adtool A command-line tool for address database manipulation o LDAPAddressBook An address book plugin to handle LDAP connections. Needs GSLDAP! Each of these can be built by cd'ing into the respective directory, or you can build and install them all at once simply by typing "make; make install" in the Goodies directory. Addresses-0.5.0/AUTHORS0000644000175000000240000000034112312144410013667 0ustar multixstaffBjrn Giesler Dennis Leeuw : Dutch language localization Nicolas Roard : French language localization Philippe Roussel: various patches, cleanups, Birthday support Addresses-0.5.0/TODO0000644000175000000240000000046012312144410013311 0ustar multixstaffFor 0.5: ======== General: o Sync via Bluetooth o Configurability: o Number and order of entries in view o Search o Preferred Identifier Later: ====== General: o Act as (cascadable?) server (*) o Import from OpenStep, Apple Address Book(*) o Talk with LDAP(*), MS Exchange(*)... Addresses-0.5.0/INSTALL0000644000175000000240000000173112312144410013654 0ustar multixstaff1. Make sure you have sourced the file $GNUSTEP_ROOT/System/Library/Makefiles/GNUstep.sh You can test this by typing "echo $GNUSTEP_ROOT". If that gives an empty line, you need to source the mentioned file. 2. Type make This will build everything for you. If you encounter an error please send mail to . (Warnings are sort of OK :-)) 3. As root, type make install 4. As a normal user again, type openapp AddressManager Bingo! There are a couple of things in the subdirectory Goodies, which for some reason aren't built by default. You can build all of them in precisely the same way (make, make install), or you can just type "make goodies" followed by "make goodies-install" in the main directory. Look at Goodies/README for details If you have toubles parsing certain VCF files because of special characters, be sure your LANG settings. For example, to get UTF8 and Italian support: setenv LANG "it_IT.UTF-8" Addresses-0.5.0/ChangeLog0000644000175000000240000001334114746005572014417 0ustar multixstaff2018-02-07 Riccardo Mottola * Frameworks/AddressView/GNUmakefile * Frameworks/Addresses/GNUmakefile Specify LIBRARIES_DEPEND_UPON for the frameworks. 2017-08-10 Riccardo Mottola * Frameworks/AddressView/ADPersonPropertyView.m Allocate NSMutableDictionary as other instances are. 2014-03-09 Riccardo Mottola * Frameworks/Addresses/ADLocalAddressBook.m Return nil, not NO 2013-10-19 Sebastian Reitenbach * Goodies/VCFViewer/VCFViewer.m Cast count to ints to please the format string * Goodies/adserver/adserver.m add missing parameter to format string 2013-09-03 Riccardo Mottola * Frameworks/Addresses/ADRecord.m Cast the result of copy which is itself to avoid warning. 2013-09-01 Riccardo Mottola * Frameworks/Addresses/AddressView/ADSinglePropertyView.m Check for class and then cast. By spec, the Record should be a Group. 2013-08-30 Riccardo Mottola * Frameworks/Addresses/ADRecord.m Fix warning. 2013-08-30 Riccardo Mottola * Frameworks/Addresses/ADLocalAddressBook.m Fix format string to unsigned long. 2013-05-15 Sebastian Reitenbach * Frameworks/Addresses/ADImageLoading.h add safeguard to prevent double inclusion * GNUmakefile, AddressManager/AddressManagerInfo.plist VERSION 0.4.9 2013-02-23 Sebastian Reitenbach * Frameworks/AddressView/ADImageView.m * Frameworks/AddressView/ADPersonPropertyView+Events.m * Frameworks/AddressView/ADPersonView.m * Adapt to use NSDragOperation 2013-02-10 Sebastian Reitenbach * AddressManager/Controller.m * AddressManager/DragDropMatrix.h * AddressManager/DragDropMatrix.m * Frameworks/AddressView/ADPersonView.m * Frameworks/AddressView/ADSinglePropertyView.m * Frameworks/Addresses/ADPerson.m * Goodies/adserver/adserver.m (unsigned) int -> NS(U)Integer and float -> CGFloat and get rid of some other warnings emitted by clang 2012-04-24 Sebastian Reitenbach * Goodies/GNUmakefile allow explicit disabling of Goodies to be installed 2012-04-02 Riccardo Mottola * Frameworks/AddressView/ADPersonView.h * Frameworks/Addresses/ADAddressBook.h * Frameworks/Addresses/ADPublicAddressBook.h * Frameworks/Addresses/ADTypedefs.h * Frameworks/Addresses/ADVCFConverter.h Clean up header imports 2012-03-28 Riccardo Mottola * Frameworks/AddressView/ADSinglePropertyView.h * Frameworks/AddressView/ADSinglePropertyView.m * Frameworks/AddressView/Main.m * Frameworks/Addresses/ADAddressBook.h Change include to import. 2012-03-27 Riccardo Mottola * Frameworks/Addresses/ADGlobals.h * Frameworks/Addresses/ADGlobals.m * Frameworks/Addresses/ADPlugin.h * Frameworks/Addresses/ADPlugin.m * Frameworks/Addresses/ADPublicAddressBook.h * Frameworks/Addresses/ADPublicAddressBook.m * Frameworks/Addresses/AddressBook.h * Frameworks/Addresses/Addresses.h Change from include to import. 2012-03-27 Riccardo Mottola * Frameworks/Addresses/ADAddressBook.m * Frameworks/Addresses/ADConverter.h * Frameworks/Addresses/ADConverter.m * Frameworks/Addresses/ADEnvelopeAddressBook.h * Frameworks/Addresses/ADEnvelopeAddressBook.m * Frameworks/Addresses/ADGroup.h * Frameworks/Addresses/ADGroup.m * Frameworks/Addresses/ADImageLoading.h * Frameworks/Addresses/ADImageLoading.m * Frameworks/Addresses/ADLocalAddressBook.h * Frameworks/Addresses/ADLocalAddressBook.m * Frameworks/Addresses/ADPListConverter.h * Frameworks/Addresses/ADPListConverter.m * Frameworks/Addresses/ADPerson.h * Frameworks/Addresses/ADPerson.m * Frameworks/Addresses/ADRecord.h * Frameworks/Addresses/ADRecord.m * Frameworks/Addresses/ADSearchElement.h * Frameworks/Addresses/ADSearchElement.m Use import for headers and fix warnings. 2012-03-26 Riccardo Mottola * Frameworks/AddressView/ADPersonPropertyView+Events.m * Frameworks/AddressView/ADPersonPropertyView.h * Frameworks/AddressView/ADPersonPropertyView.m * Frameworks/Addresses/ADMultiValue.h * Frameworks/Addresses/ADMultiValue.m Use NSUInteger as index. 2012-03-20 Riccardo Mottola * Frameworks/AddressView/ADPersonView.m When calculating size, take care not to generate negative sizes. 2012-03-07 Riccardo Mottola * Goodies/adgnumailconverter/GNUmakefile * Goodies/adserver/GNUmakefile * Goodies/adtool/GNUmakefile Use TOOL_LIBS instead of LDFLAGS to link the framework library. * Goodies/VCFViewer/GNUmakefile Use TOOL and GUI libs to link frameworks 2012-02-20: Sebastian Reitenbach * GNUmakefiles of the Goodies: Add the ${GNUSTEP_INSTANCE}_INCLUDE_DIRS where necessary, and fix the ${GNUSTEP_INSTANCE}_LDFLAGS where necessary 2012-01-28: Sebastian Reitenbach * Frameworks/AddressView/ADPersonView.m setPerson: return if aPerson == nil use NSInteger instead of int to compare safely with NSNotFound * Frameworks/AddressView/ADPersonPropertyView.m use NSInteger instead of int to compare safely with NSNotFound * Frameworks/Addresses/ADLocalAddressBook.m fix format string * AddressManager/Controller.m use NSApplicationTerminateReply, NSTerminateNow, and NSTerminateCancel in applicationShouldTerminate: use NSInteger instead of int to compare safely with NSNotFound * Frameworks/Addresses/ADMultiValue.{h|m} Switch return value of -count from unsigned int to NSUInteger 2012-01-28 Riccardo Mottola * Frameworks/AddressView/ADPersonView.m: Do not set string if note is nil. 2011-05-18 Riccardo Mottola * Frameworks/Addresses/ADRecord.h Warning fix (match implementation) Addresses-0.5.0/GNUmakefile0000644000175000000240000000174414752765735014736 0ustar multixstaff ifeq ($(GNUSTEP_MAKEFILES),) GNUSTEP_MAKEFILES := $(shell gnustep-config --variable=GNUSTEP_MAKEFILES 2>/dev/null) ifeq ($(GNUSTEP_MAKEFILES),) $(warning ) $(warning Unable to obtain GNUSTEP_MAKEFILES setting from gnustep-config!) $(warning Perhaps gnustep-make is not properly installed,) $(warning so gnustep-config is not in your PATH.) $(warning ) $(warning Your PATH is currently $(PATH)) $(warning ) endif endif ifeq ($(GNUSTEP_MAKEFILES),) $(error You need to set GNUSTEP_MAKEFILES before compiling!) endif include $(GNUSTEP_MAKEFILES)/common.make PACKAGE_NAME = Addresses SVN_MODULE_NAME = Addresses VERSION = 0.5.0 SUBPROJECTS = \ Frameworks \ AddressManager -include GNUMakefile.preamble include $(GNUSTEP_MAKEFILES)/aggregate.make -include GNUMakefile.postamble after-clean:: $(MAKE) -C Goodies clean after-distclean:: $(MAKE) -C Goodies distclean goodies: $(MAKE) -C Goodies goodies-install: $(MAKE) -C Goodies install Addresses-0.5.0/THANKS0000644000175000000240000000104312312144410013532 0ustar multixstaffMany people on #gnustep, especially Riccardo Mottola and Nicolas Roard, helped me locate and fix many bugs. Thanks very much for that. Many thanks also goes to Andreas Heppel, Frederic Praca, Peter Cooper and Riccardo again for helping with making Addresses compile on pre-C99 compilers. Rob Burns and Alex Malmberg cleared up a couple of encoding issues that are still hard to grasp for me. Calvin Mitchell provided me with a very non-standard VCF file which helped making VCF importing more robust. Guenther Noack for VCF Hex handling code Addresses-0.5.0/NEWS0000644000175000000240000001041612312144411013323 0ustar multixstaffCurrent version is 0.4.8 Since 0.4.8: ============== o relative link during framework installing, helps building in a separate root, like when building RPMs o fixed some portability issues of the Framework to solaris and windows o handle also PNG images o fixed a link in the framework from absolute to relative, for FHS (fix by Richard Stonehouse) o Many fixes in VCFviewer GWorkspace inspector, thanks also to Philippe Roussel o use GSMimeDocument to decode base64 instead of custom code o Makefiles work on windows o Birthday support (for SimpleAgenda) o fixes in VCF import (encoding, CR-LF) o fixed deleting of a person Since 0.4.7: ============ o Updated Makefiles to GNUstep Make 2.0 o Fixed text editing to work with current GNUstep gui o Improved import of VCF files: tries to interpret HEX (by Guenther Noack) and the escape \, from Apple cards Since 0.4.6: ============ o Fixed output that caused broken database files Since 0.4.5: ============ o Major bug fixed that caused the program to break with recent CVS versions of GNUstep, throwing "GSMutableStrting does not recognize count". This came from a broken save routine which would produce broken database files. Should work now, and should auto-correct errors introduced by the old version. o Some other bugs and minor annoyances fixed o Spanish localization added thanks to Pablo di Noto o Beginnings of LDAP backend added Since 0.4.4: ============ o More bugfixes o Nicer save format for local address book o Re-opens previously selected group/user on startup o Made VCF importing more foolproof; semi-silently ignores most errors now. I'm not *quite* sure that this is a good thing; it may lead to subtle breakage for "experts", but it's certainly better than crashing, and it might be argued that if you put garbage in you may just as well get garbage out. Thanks to Calvin M. for providing me with a broken VCF file. Since 0.4.3: ============ o Drag-and-Drop rewritten, unified and much enhanced: People and properties can now be dragged from almost anywhere to almost everywhere o New Goody: VCFViewer, a GWorkspace inspector for VCF files. Allows dragging of people out of VCF files directly into AddressManager o View classes cleaned up & delegatizified o More bugs fixed Since 0.4.2: ============ o Added GWorkspace inspector bundle for VCFs, it's under Goodies. o Some more bugs fixed Since 0.4.1: ============ o Drag and Drop: ADPersonView accepts Images, VCF files and VCard data o VCF files will be opened with AddressManager o Localization: Dutch, French o Some bugfixes o Build structure has changed so the entire tree can be built with just a single "make"... no need for the unintuitive "install.sh" any more Since 0.4.0: ============ o Some bugfixes o More C99 fixes, more Linuxisms removed o Duplicating of addresses o Cut/copy/paste works o Initial server support Since 0.3: ========== General: -------- o Code cleanups o Pre-C99 fixes; Linux'isms cleaned up AddressesFramework: ------------------- o Added shared, readonly attributes o no mutable dictionaries, arrays, multivalues anymore o re-added picture handling, extension for GNUstep's broken NSImage* o lots of cleanups & bugfixes o VCF export AddressViewFramework: --------------------- o Layout and edit AD[Multi]Dictionaries o Edit of ADMultiValues o Edit Notes o images re-added o clicking on email/url uses NSPerformService() again (w/newest GNUstep CVS) o lots of cleanups & bugfixes AddressManager: --------------- o Preferences panel added o lots of cleanups & bugfixes Since 0.2: ========== AddressesFramework: ------------------- o Enabled images o Fixed ADDatabaseChangedExternallyNotification sending o New globals: ADImageType, ADShared AddressManager: --------------- o Sourced out view(s) into separate framework o Many cleanups & bugfixes AddressViewFramework: --------------------- o Made views into separate framework o Added ADSinglePropertyView o Enabled images o Fixed a number of UI warts Since 0.1: ========== o Fixed Firstname/Lastname bug o Tab, Backtab, Return navigate between fields o Some cleanups and bugfixes o Made Apple API compatible addresses framework Addresses-0.5.0/COPYING.LIB0000644000175000000240000006347412312144411014300 0ustar multixstaff GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 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. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, 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 and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, 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 library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete 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 distribute a copy of this License along with the Library. 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 Library or any portion of it, thus forming a work based on the Library, 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) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, 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 Library, 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 Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you 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. If distribution of 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 satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be 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. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library 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. 9. 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 Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library 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 with this License. 11. 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 Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library 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 Library. 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. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library 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. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser 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 Library 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 Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, 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 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "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 LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. 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 LIBRARY 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 LIBRARY (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 LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), 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 Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. 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. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; 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. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! Addresses-0.5.0/README0000644000175000000240000001054712312144411013511 0ustar multixstaffAddresses for GNUstep ===================== (c) 2003 by Bjrn Giesler --------------------------------------------- This package constitutes a personal address manager for the GNUstep software system. It allows archiving complete personal contact information, organizing contacts in groups, integration with other software such as mail clients and sharing address information with other users over the network. TABLE OF CONTENTS ================= Technical Information Note on Incompleteness Extending via Plugins License TECHNICAL INFORMATION ===================== Addresses is organized in components. There is o a database API backend framework called Addresses.framework. This backend provides complete access to address information for applications. It is source-code compatible with Apple Corporation's AddressBook.framework. o a display/edit framework called AddressView.framework. This library provides specialized view classes to applications which want to display addresses to the user in a graphical form. There are two main classes: o ADPersonView, to display and edit complete information about a person in a visually appealing style. This view is intended for specialized Address Manager applications. o ADSinglePropertyView, to display person names together with values for a single other property (such as email address). This view is intended for applications such as Email clients, in which the user should select one or more contacts to perform some operation on them. o a dedicated Address Manager application, which uses both of these frameworks and acts as an easy-to-use and visually appealing database frontend. o a number of command-line helper tools, such as converters from/to specific address formats, an address book network server, etc. NOTE ON INCOMPLETENESS ====================== This software package is still in the early stages of development. Expect changes in database format, functionality, and just about anything else. There is no warranty, express or implied, that this package is good for any particular purpose, or if it is, will remain so in the future. Expect breakage. That said, if you find anything buggy or not to your liking, please send me mail at bjoern@giesler.de. Another thing, not to be taken personally: This software is clearly inspired by the Apple Address Book. If it's not NeXTish enough for you, please feel free to submit changes in the form of .gorm files or whatever. I am quite happy with the UI as it is, and quite unwilling to listen to any more complaints about what should be a panel and what shouldn't and what has to be grouped in a window and what shouldn't. None of us works for NeXT anymore, so none of us knows what THEY would have done. As I said, if you submit patches that make the look configurable, I'll be happy to integrate them. EXTENDING VIA PLUGINS ===================== To keep the library and application as open as possible, it is extensible via plugins. These are loaded from the usual places: $(GNUSTEP_SYSTEM_LIBRARY)/Addresses $(GNUSTEP_NETWORK_LIBRARY)/Addresses $(GNUSTEP_LOCAL_LIBRARY)/Addresses $(GNUSTEP_USER_LIBRARY)/Addresses There are currently two kinds of plugins, and they usually appear in pairs of two: plugins that provide new address book classes, and plugins that contain GUIs to configure them. One reason to write such plugins is that you might have a corporation-wide address book that you want to browse or synchronize with. Please look into Frameworks/Addresses/ADPlugin.h and AddressManager/Plugin.h, as well as the goodies/LDAPAddressBook directory, for documentation and examples on how to write such plugins. LICENSE ======= This software package is distributed under the terms of the GNU Lesser General Public License (LGPL); please see the file COPYING.LIB for details. There is one important license issue to note: In the case of the work at hand, a bundle containing class extensions to Addresses.framework or AddressView.framework is to be considered a "work that uses the library", not a "work based on the library" in terms of the LGPL. In layman's terms: If you write a bundle containing a subclass of ADAddressBook (eg a MS Exchange connector), this bundle does not have to be released as source code.