mass rename and rebranding from xwt to ibex - fixed to use ixt files
[org.ibex.core.git] / src / org / ibex / plat / DarwinCarbonHeaders.h
diff --git a/src/org/ibex/plat/DarwinCarbonHeaders.h b/src/org/ibex/plat/DarwinCarbonHeaders.h
new file mode 100644 (file)
index 0000000..4106ab7
--- /dev/null
@@ -0,0 +1,73557 @@
+// stuff needed from Mac OS headers that ARE NOT in /usr/include
+// this stuff usually comes from /System/Library/Frameworks/*/Headers
+
+#include <math.h>
+
+typedef u_int8_t uint8_t;
+typedef u_int16_t uint16_t;
+typedef u_int32_t uint32_t;
+typedef u_int64_t uint64_t;
+
+
+
+typedef int8_t int_least8_t;
+typedef int16_t int_least16_t;
+typedef int32_t int_least32_t;
+typedef int64_t int_least64_t;
+typedef uint8_t uint_least8_t;
+typedef uint16_t uint_least16_t;
+typedef uint32_t uint_least32_t;
+typedef uint64_t uint_least64_t;
+
+
+
+typedef int8_t int_fast8_t;
+typedef int16_t int_fast16_t;
+typedef int32_t int_fast32_t;
+typedef int64_t int_fast64_t;
+typedef uint8_t uint_fast8_t;
+typedef uint16_t uint_fast16_t;
+typedef uint32_t uint_fast32_t;
+typedef uint64_t uint_fast64_t;
+typedef long long intmax_t;
+typedef unsigned long long uintmax_t;
+
+
+
+extern "C" {
+
+
+typedef unsigned char UInt8;
+typedef signed char SInt8;
+typedef unsigned short UInt16;
+typedef signed short SInt16;
+typedef unsigned long UInt32;
+typedef signed long SInt32;
+
+struct wide {
+  SInt32 hi;
+  UInt32 lo;
+};
+typedef struct wide wide;
+struct UnsignedWide {
+  UInt32 hi;
+  UInt32 lo;
+};
+typedef struct UnsignedWide UnsignedWide;
+      typedef signed long long SInt64;
+        typedef unsigned long long UInt64;
+typedef long Fixed;
+typedef Fixed * FixedPtr;
+typedef long Fract;
+typedef Fract * FractPtr;
+typedef unsigned long UnsignedFixed;
+typedef UnsignedFixed * UnsignedFixedPtr;
+typedef short ShortFixed;
+typedef ShortFixed * ShortFixedPtr;
+typedef float Float32;
+typedef double Float64;
+struct Float80 {
+    SInt16 exp;
+    UInt16 man[4];
+};
+typedef struct Float80 Float80;
+
+struct Float96 {
+    SInt16 exp[2];
+    UInt16 man[4];
+};
+typedef struct Float96 Float96;
+struct Float32Point {
+    Float32 x;
+    Float32 y;
+};
+typedef struct Float32Point Float32Point;
+typedef char * Ptr;
+typedef Ptr * Handle;
+typedef long Size;
+typedef SInt16 OSErr;
+typedef SInt32 OSStatus;
+typedef void * LogicalAddress;
+typedef const void * ConstLogicalAddress;
+typedef void * PhysicalAddress;
+typedef UInt8 * BytePtr;
+typedef UInt32 ByteCount;
+typedef UInt32 ByteOffset;
+typedef SInt32 Duration;
+typedef UnsignedWide AbsoluteTime;
+typedef UInt32 OptionBits;
+typedef UInt32 ItemCount;
+typedef UInt32 PBVersion;
+typedef SInt16 ScriptCode;
+typedef SInt16 LangCode;
+typedef SInt16 RegionCode;
+typedef unsigned long FourCharCode;
+typedef FourCharCode OSType;
+typedef FourCharCode ResType;
+typedef OSType * OSTypePtr;
+typedef ResType * ResTypePtr;
+typedef unsigned char Boolean;
+typedef long ( * ProcPtr)();
+typedef void ( * Register68kProcPtr)();
+
+
+
+
+typedef ProcPtr UniversalProcPtr;
+
+
+typedef ProcPtr * ProcHandle;
+typedef UniversalProcPtr * UniversalProcHandle;
+enum {
+  noErr = 0
+};
+
+enum {
+  kNilOptions = 0
+};
+
+
+enum {
+  kVariableLengthArray = 1
+};
+
+enum {
+  kUnknownType = 0x3F3F3F3F
+};
+typedef UInt32 UnicodeScalarValue;
+typedef UInt32 UTF32Char;
+typedef UInt16 UniChar;
+typedef UInt16 UTF16Char;
+typedef UInt8 UTF8Char;
+typedef UniChar * UniCharPtr;
+typedef UInt32 UniCharCount;
+typedef UniCharCount * UniCharCountPtr;
+typedef unsigned char Str255[256];
+typedef unsigned char Str63[64];
+typedef unsigned char Str32[33];
+typedef unsigned char Str31[32];
+typedef unsigned char Str27[28];
+typedef unsigned char Str15[16];
+typedef unsigned char Str32Field[34];
+typedef Str63 StrFileName;
+typedef unsigned char * StringPtr;
+typedef StringPtr * StringHandle;
+typedef const unsigned char * ConstStringPtr;
+typedef const unsigned char * ConstStr255Param;
+typedef const unsigned char * ConstStr63Param;
+typedef const unsigned char * ConstStr32Param;
+typedef const unsigned char * ConstStr31Param;
+typedef const unsigned char * ConstStr27Param;
+typedef const unsigned char * ConstStr15Param;
+typedef ConstStr63Param ConstStrFileNameParam;
+
+inline unsigned char StrLength(ConstStr255Param string) { return (*string); }
+struct Point {
+  short v;
+  short h;
+};
+typedef struct Point Point;
+typedef Point * PointPtr;
+struct Rect {
+  short top;
+  short left;
+  short bottom;
+  short right;
+};
+typedef struct Rect Rect;
+typedef Rect * RectPtr;
+struct FixedPoint {
+  Fixed x;
+  Fixed y;
+};
+typedef struct FixedPoint FixedPoint;
+struct FixedRect {
+  Fixed left;
+  Fixed top;
+  Fixed right;
+  Fixed bottom;
+};
+typedef struct FixedRect FixedRect;
+
+typedef short CharParameter;
+enum {
+  normal = 0,
+  bold = 1,
+  italic = 2,
+  underline = 4,
+  outline = 8,
+  shadow = 0x10,
+  condense = 0x20,
+  extend = 0x40
+};
+
+typedef unsigned char Style;
+typedef short StyleParameter;
+typedef Style StyleField;
+typedef long TimeValue;
+typedef long TimeScale;
+typedef wide CompTimeValue;
+typedef SInt64 TimeValue64;
+typedef struct TimeBaseRecord* TimeBase;
+struct TimeRecord {
+  CompTimeValue value;
+  TimeScale scale;
+  TimeBase base;
+};
+typedef struct TimeRecord TimeRecord;
+struct NumVersion {
+
+  UInt8 majorRev;
+  UInt8 minorAndBugRev;
+  UInt8 stage;
+  UInt8 nonRelRev;
+};
+typedef struct NumVersion NumVersion;
+enum {
+
+  developStage = 0x20,
+  alphaStage = 0x40,
+  betaStage = 0x60,
+  finalStage = 0x80
+};
+
+union NumVersionVariant {
+
+  NumVersion parts;
+  unsigned long whole;
+};
+typedef union NumVersionVariant NumVersionVariant;
+typedef NumVersionVariant * NumVersionVariantPtr;
+typedef NumVersionVariantPtr * NumVersionVariantHandle;
+struct VersRec {
+
+  NumVersion numericVersion;
+  short countryCode;
+  Str255 shortVersion;
+  Str255 reserved;
+};
+typedef struct VersRec VersRec;
+typedef VersRec * VersRecPtr;
+typedef VersRecPtr * VersRecHndl;
+
+
+
+
+
+typedef UInt8 Byte;
+typedef SInt8 SignedByte;
+typedef wide * WidePtr;
+typedef UnsignedWide * UnsignedWidePtr;
+typedef Float80 extended80;
+typedef Float96 extended96;
+typedef SInt8 VHSelect;
+extern void
+Debugger(void) ;
+extern void
+DebugStr(ConstStr255Param debuggerMsg) ;
+extern void
+SysBreak(void) ;
+extern void
+SysBreakStr(ConstStr255Param debuggerMsg) ;
+extern void
+SysBreakFunc(ConstStr255Param debuggerMsg) ;
+
+
+}
+extern "C" {
+extern double kCFCoreFoundationVersionNumber;
+
+
+
+
+
+
+
+typedef UInt32 CFTypeID;
+typedef UInt32 CFOptionFlags;
+typedef UInt32 CFHashCode;
+typedef SInt32 CFIndex;
+
+
+typedef const void * CFTypeRef;
+
+typedef const struct __CFString * CFStringRef;
+typedef struct __CFString * CFMutableStringRef;
+
+
+
+
+
+
+typedef CFTypeRef CFPropertyListRef;
+
+
+typedef enum {
+    kCFCompareLessThan = -1,
+    kCFCompareEqualTo = 0,
+    kCFCompareGreaterThan = 1
+} CFComparisonResult;
+
+
+typedef CFComparisonResult (*CFComparatorFunction)(const void *val1, const void *val2, void *context);
+
+
+
+enum {
+    kCFNotFound = -1
+};
+
+
+
+typedef struct {
+    CFIndex location;
+    CFIndex length;
+} CFRange;
+
+
+static __inline__ CFRange CFRangeMake(CFIndex loc, CFIndex len) {
+    CFRange range;
+    range.location = loc;
+    range.length = len;
+    return range;
+}
+
+
+
+
+
+extern
+CFRange __CFRangeMake(CFIndex loc, CFIndex len);
+
+
+
+
+
+typedef const struct __CFNull * CFNullRef;
+
+extern
+CFTypeID CFNullGetTypeID(void);
+
+extern
+const CFNullRef kCFNull;
+typedef const struct __CFAllocator * CFAllocatorRef;
+
+
+extern
+const CFAllocatorRef kCFAllocatorDefault;
+
+
+extern
+const CFAllocatorRef kCFAllocatorSystemDefault;
+
+
+
+
+
+
+
+extern
+const CFAllocatorRef kCFAllocatorMalloc;
+
+
+
+
+
+extern
+const CFAllocatorRef kCFAllocatorNull;
+
+
+
+
+
+extern
+const CFAllocatorRef kCFAllocatorUseContext;
+
+typedef const void * (*CFAllocatorRetainCallBack)(const void *info);
+typedef void (*CFAllocatorReleaseCallBack)(const void *info);
+typedef CFStringRef (*CFAllocatorCopyDescriptionCallBack)(const void *info);
+typedef void * (*CFAllocatorAllocateCallBack)(CFIndex allocSize, CFOptionFlags hint, void *info);
+typedef void * (*CFAllocatorReallocateCallBack)(void *ptr, CFIndex newsize, CFOptionFlags hint, void *info);
+typedef void (*CFAllocatorDeallocateCallBack)(void *ptr, void *info);
+typedef CFIndex (*CFAllocatorPreferredSizeCallBack)(CFIndex size, CFOptionFlags hint, void *info);
+typedef struct {
+    CFIndex version;
+    void * info;
+    CFAllocatorRetainCallBack retain;
+    CFAllocatorReleaseCallBack release;
+    CFAllocatorCopyDescriptionCallBack copyDescription;
+    CFAllocatorAllocateCallBack allocate;
+    CFAllocatorReallocateCallBack reallocate;
+    CFAllocatorDeallocateCallBack deallocate;
+    CFAllocatorPreferredSizeCallBack preferredSize;
+} CFAllocatorContext;
+
+extern
+CFTypeID CFAllocatorGetTypeID(void);
+extern
+void CFAllocatorSetDefault(CFAllocatorRef allocator);
+
+extern
+CFAllocatorRef CFAllocatorGetDefault(void);
+
+extern
+CFAllocatorRef CFAllocatorCreate(CFAllocatorRef allocator, CFAllocatorContext *context);
+
+extern
+void *CFAllocatorAllocate(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint);
+
+extern
+void *CFAllocatorReallocate(CFAllocatorRef allocator, void *ptr, CFIndex newsize, CFOptionFlags hint);
+
+extern
+void CFAllocatorDeallocate(CFAllocatorRef allocator, void *ptr);
+
+extern
+CFIndex CFAllocatorGetPreferredSizeForSize(CFAllocatorRef allocator, CFIndex size, CFOptionFlags hint);
+
+extern
+void CFAllocatorGetContext(CFAllocatorRef allocator, CFAllocatorContext *context);
+
+
+
+
+extern
+CFTypeID CFGetTypeID(CFTypeRef cf);
+
+extern
+CFStringRef CFCopyTypeIDDescription(CFTypeID type_id);
+
+extern
+CFTypeRef CFRetain(CFTypeRef cf);
+
+extern
+void CFRelease(CFTypeRef cf);
+
+extern
+CFIndex CFGetRetainCount(CFTypeRef cf);
+
+extern
+Boolean CFEqual(CFTypeRef cf1, CFTypeRef cf2);
+
+extern
+CFHashCode CFHash(CFTypeRef cf);
+
+extern
+CFStringRef CFCopyDescription(CFTypeRef cf);
+
+extern
+CFAllocatorRef CFGetAllocator(CFTypeRef cf);
+
+
+}
+extern "C" {
+typedef const void * (*CFArrayRetainCallBack)(CFAllocatorRef allocator, const void *value);
+typedef void (*CFArrayReleaseCallBack)(CFAllocatorRef allocator, const void *value);
+typedef CFStringRef (*CFArrayCopyDescriptionCallBack)(const void *value);
+typedef Boolean (*CFArrayEqualCallBack)(const void *value1, const void *value2);
+typedef struct {
+    CFIndex version;
+    CFArrayRetainCallBack retain;
+    CFArrayReleaseCallBack release;
+    CFArrayCopyDescriptionCallBack copyDescription;
+    CFArrayEqualCallBack equal;
+} CFArrayCallBacks;
+
+
+
+
+
+
+extern
+const CFArrayCallBacks kCFTypeArrayCallBacks;
+typedef void (*CFArrayApplierFunction)(const void *value, void *context);
+
+
+
+
+
+typedef const struct __CFArray * CFArrayRef;
+
+
+
+
+
+typedef struct __CFArray * CFMutableArrayRef;
+
+
+
+
+
+extern
+CFTypeID CFArrayGetTypeID(void);
+extern
+CFArrayRef CFArrayCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFArrayCallBacks *callBacks);
+extern
+CFArrayRef CFArrayCreateCopy(CFAllocatorRef allocator, CFArrayRef theArray);
+extern
+CFMutableArrayRef CFArrayCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFArrayCallBacks *callBacks);
+extern
+CFMutableArrayRef CFArrayCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFArrayRef theArray);
+extern
+CFIndex CFArrayGetCount(CFArrayRef theArray);
+extern
+CFIndex CFArrayGetCountOfValue(CFArrayRef theArray, CFRange range, const void *value);
+extern
+Boolean CFArrayContainsValue(CFArrayRef theArray, CFRange range, const void *value);
+extern
+const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);
+extern
+void CFArrayGetValues(CFArrayRef theArray, CFRange range, const void **values);
+extern
+void CFArrayApplyFunction(CFArrayRef theArray, CFRange range, CFArrayApplierFunction applier, void *context);
+extern
+CFIndex CFArrayGetFirstIndexOfValue(CFArrayRef theArray, CFRange range, const void *value);
+extern
+CFIndex CFArrayGetLastIndexOfValue(CFArrayRef theArray, CFRange range, const void *value);
+extern
+CFIndex CFArrayBSearchValues(CFArrayRef theArray, CFRange range, const void *value, CFComparatorFunction comparator, void *context);
+extern
+void CFArrayAppendValue(CFMutableArrayRef theArray, const void *value);
+extern
+void CFArrayInsertValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value);
+extern
+void CFArraySetValueAtIndex(CFMutableArrayRef theArray, CFIndex idx, const void *value);
+extern
+void CFArrayRemoveValueAtIndex(CFMutableArrayRef theArray, CFIndex idx);
+extern
+void CFArrayRemoveAllValues(CFMutableArrayRef theArray);
+extern
+void CFArrayReplaceValues(CFMutableArrayRef theArray, CFRange range, const void **newValues, CFIndex newCount);
+extern
+void CFArrayExchangeValuesAtIndices(CFMutableArrayRef theArray, CFIndex idx1, CFIndex idx2);
+extern
+void CFArraySortValues(CFMutableArrayRef theArray, CFRange range, CFComparatorFunction comparator, void *context);
+extern
+void CFArrayAppendArray(CFMutableArrayRef theArray, CFArrayRef otherArray, CFRange otherRange);
+
+
+}
+extern "C" {
+
+
+typedef const void * (*CFBagRetainCallBack)(CFAllocatorRef allocator, const void *value);
+typedef void (*CFBagReleaseCallBack)(CFAllocatorRef allocator, const void *value);
+typedef CFStringRef (*CFBagCopyDescriptionCallBack)(const void *value);
+typedef Boolean (*CFBagEqualCallBack)(const void *value1, const void *value2);
+typedef CFHashCode (*CFBagHashCallBack)(const void *value);
+typedef struct {
+    CFIndex version;
+    CFBagRetainCallBack retain;
+    CFBagReleaseCallBack release;
+    CFBagCopyDescriptionCallBack copyDescription;
+    CFBagEqualCallBack equal;
+    CFBagHashCallBack hash;
+} CFBagCallBacks;
+
+extern
+const CFBagCallBacks kCFTypeBagCallBacks;
+extern
+const CFBagCallBacks kCFCopyStringBagCallBacks;
+
+typedef void (*CFBagApplierFunction)(const void *value, void *context);
+
+typedef const struct __CFBag * CFBagRef;
+typedef struct __CFBag * CFMutableBagRef;
+
+extern
+CFTypeID CFBagGetTypeID(void);
+
+extern
+CFBagRef CFBagCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFBagCallBacks *callBacks);
+
+extern
+CFBagRef CFBagCreateCopy(CFAllocatorRef allocator, CFBagRef theBag);
+
+extern
+CFMutableBagRef CFBagCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFBagCallBacks *callBacks);
+
+extern
+CFMutableBagRef CFBagCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBagRef theBag);
+
+extern
+CFIndex CFBagGetCount(CFBagRef theBag);
+
+extern
+CFIndex CFBagGetCountOfValue(CFBagRef theBag, const void *value);
+
+extern
+Boolean CFBagContainsValue(CFBagRef theBag, const void *value);
+
+extern
+const void *CFBagGetValue(CFBagRef theBag, const void *value);
+
+extern
+Boolean CFBagGetValueIfPresent(CFBagRef theBag, const void *candidate, const void **value);
+
+extern
+void CFBagGetValues(CFBagRef theBag, const void **values);
+
+extern
+void CFBagApplyFunction(CFBagRef theBag, CFBagApplierFunction applier, void *context);
+
+extern
+void CFBagAddValue(CFMutableBagRef theBag, const void *value);
+
+extern
+void CFBagReplaceValue(CFMutableBagRef theBag, const void *value);
+
+extern
+void CFBagSetValue(CFMutableBagRef theBag, const void *value);
+
+extern
+void CFBagRemoveValue(CFMutableBagRef theBag, const void *value);
+
+extern
+void CFBagRemoveAllValues(CFMutableBagRef theBag);
+
+
+}
+extern "C" {
+
+
+typedef const struct __CFData * CFDataRef;
+typedef struct __CFData * CFMutableDataRef;
+
+extern
+CFTypeID CFDataGetTypeID(void);
+
+extern
+CFDataRef CFDataCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length);
+
+extern
+CFDataRef CFDataCreateWithBytesNoCopy(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator);
+
+
+extern
+CFDataRef CFDataCreateCopy(CFAllocatorRef allocator, CFDataRef theData);
+
+extern
+CFMutableDataRef CFDataCreateMutable(CFAllocatorRef allocator, CFIndex capacity);
+
+extern
+CFMutableDataRef CFDataCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDataRef theData);
+
+extern
+CFIndex CFDataGetLength(CFDataRef theData);
+
+extern
+const UInt8 *CFDataGetBytePtr(CFDataRef theData);
+
+extern
+UInt8 *CFDataGetMutableBytePtr(CFMutableDataRef theData);
+
+extern
+void CFDataGetBytes(CFDataRef theData, CFRange range, UInt8 *buffer);
+
+extern
+void CFDataSetLength(CFMutableDataRef theData, CFIndex length);
+
+extern
+void CFDataIncreaseLength(CFMutableDataRef theData, CFIndex extraLength);
+
+extern
+void CFDataAppendBytes(CFMutableDataRef theData, const UInt8 *bytes, CFIndex length);
+
+extern
+void CFDataReplaceBytes(CFMutableDataRef theData, CFRange range, const UInt8 *newBytes, CFIndex newLength);
+
+extern
+void CFDataDeleteBytes(CFMutableDataRef theData, CFRange range);
+
+
+}
+
+
+extern "C" {
+
+
+
+
+
+
+typedef const struct __CFCharacterSet * CFCharacterSetRef;
+
+
+
+
+
+typedef struct __CFCharacterSet * CFMutableCharacterSetRef;
+
+
+
+
+
+typedef enum {
+    kCFCharacterSetControl = 1,
+    kCFCharacterSetWhitespace,
+    kCFCharacterSetWhitespaceAndNewline,
+    kCFCharacterSetDecimalDigit,
+    kCFCharacterSetLetter,
+    kCFCharacterSetLowercaseLetter,
+    kCFCharacterSetUppercaseLetter,
+    kCFCharacterSetNonBase,
+    kCFCharacterSetDecomposable,
+    kCFCharacterSetAlphaNumeric,
+    kCFCharacterSetPunctuation,
+    kCFCharacterSetIllegal
+
+    ,
+    kCFCharacterSetCapitalizedLetter
+
+} CFCharacterSetPredefinedSet;
+
+
+
+
+
+extern
+CFTypeID CFCharacterSetGetTypeID(void);
+extern
+CFCharacterSetRef CFCharacterSetGetPredefined(CFCharacterSetPredefinedSet theSetIdentifier);
+extern
+CFCharacterSetRef CFCharacterSetCreateWithCharactersInRange(CFAllocatorRef alloc, CFRange theRange);
+extern
+CFCharacterSetRef CFCharacterSetCreateWithCharactersInString(CFAllocatorRef alloc, CFStringRef theString);
+extern
+CFCharacterSetRef CFCharacterSetCreateWithBitmapRepresentation(CFAllocatorRef alloc, CFDataRef theData);
+extern CFCharacterSetRef CFCharacterSetCreateInvertedSet(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+extern Boolean CFCharacterSetIsSupersetOfSet(CFCharacterSetRef theSet, CFCharacterSetRef theOtherset);
+extern Boolean CFCharacterSetHasMemberInPlane(CFCharacterSetRef theSet, CFIndex thePlane);
+extern
+CFMutableCharacterSetRef CFCharacterSetCreateMutable(CFAllocatorRef alloc);
+extern
+CFMutableCharacterSetRef CFCharacterSetCreateMutableCopy(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+extern
+Boolean CFCharacterSetIsCharacterMember(CFCharacterSetRef theSet, UniChar theChar);
+extern Boolean CFCharacterSetIsLongCharacterMember(CFCharacterSetRef theSet, UTF32Char theChar);
+extern
+CFDataRef CFCharacterSetCreateBitmapRepresentation(CFAllocatorRef alloc, CFCharacterSetRef theSet);
+extern
+void CFCharacterSetAddCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);
+extern
+void CFCharacterSetRemoveCharactersInRange(CFMutableCharacterSetRef theSet, CFRange theRange);
+extern
+void CFCharacterSetAddCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString);
+extern
+void CFCharacterSetRemoveCharactersInString(CFMutableCharacterSetRef theSet, CFStringRef theString);
+extern
+void CFCharacterSetUnion(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);
+extern
+void CFCharacterSetIntersect(CFMutableCharacterSetRef theSet, CFCharacterSetRef theOtherSet);
+extern
+void CFCharacterSetInvert(CFMutableCharacterSetRef theSet);
+
+
+}
+
+extern "C" {
+
+
+typedef double CFTimeInterval;
+typedef CFTimeInterval CFAbsoluteTime;
+
+
+
+extern
+CFAbsoluteTime CFAbsoluteTimeGetCurrent(void);
+
+extern
+const CFTimeInterval kCFAbsoluteTimeIntervalSince1970;
+extern
+const CFTimeInterval kCFAbsoluteTimeIntervalSince1904;
+
+typedef const struct __CFDate * CFDateRef;
+
+extern
+CFTypeID CFDateGetTypeID(void);
+
+extern
+CFDateRef CFDateCreate(CFAllocatorRef allocator, CFAbsoluteTime at);
+
+extern
+CFAbsoluteTime CFDateGetAbsoluteTime(CFDateRef theDate);
+
+extern
+CFTimeInterval CFDateGetTimeIntervalSinceDate(CFDateRef theDate, CFDateRef otherDate);
+
+extern
+CFComparisonResult CFDateCompare(CFDateRef theDate, CFDateRef otherDate, void *context);
+
+typedef const struct __CFTimeZone * CFTimeZoneRef;
+
+typedef struct {
+    SInt32 year;
+    SInt8 month;
+    SInt8 day;
+    SInt8 hour;
+    SInt8 minute;
+    double second;
+} CFGregorianDate;
+
+typedef struct {
+    SInt32 years;
+    SInt32 months;
+    SInt32 days;
+    SInt32 hours;
+    SInt32 minutes;
+    double seconds;
+} CFGregorianUnits;
+
+typedef enum {
+    kCFGregorianUnitsYears = (1 << 0),
+    kCFGregorianUnitsMonths = (1 << 1),
+    kCFGregorianUnitsDays = (1 << 2),
+    kCFGregorianUnitsHours = (1 << 3),
+    kCFGregorianUnitsMinutes = (1 << 4),
+    kCFGregorianUnitsSeconds = (1 << 5),
+
+
+
+
+    kCFGregorianAllUnits = 0x00FFFFFF
+} CFGregorianUnitFlags;
+
+extern
+Boolean CFGregorianDateIsValid(CFGregorianDate gdate, CFOptionFlags unitFlags);
+
+extern
+CFAbsoluteTime CFGregorianDateGetAbsoluteTime(CFGregorianDate gdate, CFTimeZoneRef tz);
+
+extern
+CFGregorianDate CFAbsoluteTimeGetGregorianDate(CFAbsoluteTime at, CFTimeZoneRef tz);
+
+extern
+CFAbsoluteTime CFAbsoluteTimeAddGregorianUnits(CFAbsoluteTime at, CFTimeZoneRef tz, CFGregorianUnits units);
+
+extern
+CFGregorianUnits CFAbsoluteTimeGetDifferenceAsGregorianUnits(CFAbsoluteTime at1, CFAbsoluteTime at2, CFTimeZoneRef tz, CFOptionFlags unitFlags);
+
+extern
+SInt32 CFAbsoluteTimeGetDayOfWeek(CFAbsoluteTime at, CFTimeZoneRef tz);
+
+extern
+SInt32 CFAbsoluteTimeGetDayOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);
+
+extern
+SInt32 CFAbsoluteTimeGetWeekOfYear(CFAbsoluteTime at, CFTimeZoneRef tz);
+
+
+}
+extern "C" {
+typedef const void * (*CFDictionaryRetainCallBack)(CFAllocatorRef allocator, const void *value);
+typedef void (*CFDictionaryReleaseCallBack)(CFAllocatorRef allocator, const void *value);
+typedef CFStringRef (*CFDictionaryCopyDescriptionCallBack)(const void *value);
+typedef Boolean (*CFDictionaryEqualCallBack)(const void *value1, const void *value2);
+typedef CFHashCode (*CFDictionaryHashCallBack)(const void *value);
+typedef struct {
+    CFIndex version;
+    CFDictionaryRetainCallBack retain;
+    CFDictionaryReleaseCallBack release;
+    CFDictionaryCopyDescriptionCallBack copyDescription;
+    CFDictionaryEqualCallBack equal;
+    CFDictionaryHashCallBack hash;
+} CFDictionaryKeyCallBacks;
+
+
+
+
+
+
+
+extern
+const CFDictionaryKeyCallBacks kCFTypeDictionaryKeyCallBacks;
+extern
+const CFDictionaryKeyCallBacks kCFCopyStringDictionaryKeyCallBacks;
+typedef struct {
+    CFIndex version;
+    CFDictionaryRetainCallBack retain;
+    CFDictionaryReleaseCallBack release;
+    CFDictionaryCopyDescriptionCallBack copyDescription;
+    CFDictionaryEqualCallBack equal;
+} CFDictionaryValueCallBacks;
+
+
+
+
+
+
+
+extern
+const CFDictionaryValueCallBacks kCFTypeDictionaryValueCallBacks;
+typedef void (*CFDictionaryApplierFunction)(const void *key, const void *value, void *context);
+
+
+
+
+
+typedef const struct __CFDictionary * CFDictionaryRef;
+
+
+
+
+
+typedef struct __CFDictionary * CFMutableDictionaryRef;
+
+
+
+
+
+extern
+CFTypeID CFDictionaryGetTypeID(void);
+extern
+CFDictionaryRef CFDictionaryCreate(CFAllocatorRef allocator, const void **keys, const void **values, CFIndex numValues, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
+extern
+CFDictionaryRef CFDictionaryCreateCopy(CFAllocatorRef allocator, CFDictionaryRef theDict);
+extern
+CFMutableDictionaryRef CFDictionaryCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFDictionaryKeyCallBacks *keyCallBacks, const CFDictionaryValueCallBacks *valueCallBacks);
+extern
+CFMutableDictionaryRef CFDictionaryCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFDictionaryRef theDict);
+extern
+CFIndex CFDictionaryGetCount(CFDictionaryRef theDict);
+extern
+CFIndex CFDictionaryGetCountOfKey(CFDictionaryRef theDict, const void *key);
+extern
+CFIndex CFDictionaryGetCountOfValue(CFDictionaryRef theDict, const void *value);
+extern
+Boolean CFDictionaryContainsKey(CFDictionaryRef theDict, const void *key);
+extern
+Boolean CFDictionaryContainsValue(CFDictionaryRef theDict, const void *value);
+extern
+const void *CFDictionaryGetValue(CFDictionaryRef theDict, const void *key);
+extern
+Boolean CFDictionaryGetValueIfPresent(CFDictionaryRef theDict, const void *key, const void **value);
+extern
+void CFDictionaryGetKeysAndValues(CFDictionaryRef theDict, const void **keys, const void **values);
+extern
+void CFDictionaryApplyFunction(CFDictionaryRef theDict, CFDictionaryApplierFunction applier, void *context);
+extern
+void CFDictionaryAddValue(CFMutableDictionaryRef theDict, const void *key, const void *value);
+extern
+void CFDictionarySetValue(CFMutableDictionaryRef theDict, const void *key, const void *value);
+extern
+void CFDictionaryReplaceValue(CFMutableDictionaryRef theDict, const void *key, const void *value);
+extern
+void CFDictionaryRemoveValue(CFMutableDictionaryRef theDict, const void *key);
+extern
+void CFDictionaryRemoveAllValues(CFMutableDictionaryRef theDict);
+
+
+}
+extern "C" {
+
+
+typedef const struct __CFBoolean * CFBooleanRef;
+
+extern
+const CFBooleanRef kCFBooleanTrue;
+extern
+const CFBooleanRef kCFBooleanFalse;
+
+extern
+CFTypeID CFBooleanGetTypeID(void);
+
+extern
+Boolean CFBooleanGetValue(CFBooleanRef boolean);
+
+typedef enum {
+
+    kCFNumberSInt8Type = 1,
+    kCFNumberSInt16Type = 2,
+    kCFNumberSInt32Type = 3,
+    kCFNumberSInt64Type = 4,
+    kCFNumberFloat32Type = 5,
+    kCFNumberFloat64Type = 6,
+
+    kCFNumberCharType = 7,
+    kCFNumberShortType = 8,
+    kCFNumberIntType = 9,
+    kCFNumberLongType = 10,
+    kCFNumberLongLongType = 11,
+    kCFNumberFloatType = 12,
+    kCFNumberDoubleType = 13,
+
+    kCFNumberCFIndexType = 14,
+    kCFNumberMaxType = 14
+} CFNumberType;
+
+typedef const struct __CFNumber * CFNumberRef;
+
+extern
+const CFNumberRef kCFNumberPositiveInfinity;
+extern
+const CFNumberRef kCFNumberNegativeInfinity;
+extern
+const CFNumberRef kCFNumberNaN;
+
+extern
+CFTypeID CFNumberGetTypeID(void);
+extern
+CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);
+
+
+
+
+
+extern
+CFNumberType CFNumberGetType(CFNumberRef number);
+
+
+
+
+extern
+CFIndex CFNumberGetByteSize(CFNumberRef number);
+
+
+
+
+
+extern
+Boolean CFNumberIsFloatType(CFNumberRef number);
+extern
+Boolean CFNumberGetValue(CFNumberRef number, CFNumberType theType, void *valuePtr);
+extern
+CFComparisonResult CFNumberCompare(CFNumberRef number, CFNumberRef otherNumber, void *context);
+
+
+}
+typedef __builtin_va_list __gnuc_va_list;
+typedef __gnuc_va_list va_list;
+
+
+extern "C" {
+typedef UInt32 CFStringEncoding;
+
+
+
+
+
+typedef enum {
+    kCFStringEncodingMacRoman = 0,
+    kCFStringEncodingWindowsLatin1 = 0x0500,
+    kCFStringEncodingISOLatin1 = 0x0201,
+    kCFStringEncodingNextStepLatin = 0x0B01,
+    kCFStringEncodingASCII = 0x0600,
+    kCFStringEncodingUnicode = 0x0100,
+    kCFStringEncodingUTF8 = 0x08000100,
+    kCFStringEncodingNonLossyASCII = 0x0BFF
+} CFStringBuiltInEncodings;
+
+
+extern
+CFTypeID CFStringGetTypeID(void);
+extern
+CFStringRef CFStringCreateWithPascalString(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding);
+
+extern
+CFStringRef CFStringCreateWithCString(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding);
+
+extern
+CFStringRef CFStringCreateWithCharacters(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars);
+extern
+CFStringRef CFStringCreateWithPascalStringNoCopy(CFAllocatorRef alloc, ConstStr255Param pStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
+
+extern
+CFStringRef CFStringCreateWithCStringNoCopy(CFAllocatorRef alloc, const char *cStr, CFStringEncoding encoding, CFAllocatorRef contentsDeallocator);
+
+extern
+CFStringRef CFStringCreateWithCharactersNoCopy(CFAllocatorRef alloc, const UniChar *chars, CFIndex numChars, CFAllocatorRef contentsDeallocator);
+
+
+
+extern
+CFStringRef CFStringCreateWithSubstring(CFAllocatorRef alloc, CFStringRef str, CFRange range);
+
+extern
+CFStringRef CFStringCreateCopy(CFAllocatorRef alloc, CFStringRef theString);
+
+
+
+extern
+CFStringRef CFStringCreateWithFormat(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, ...);
+
+extern
+CFStringRef CFStringCreateWithFormatAndArguments(CFAllocatorRef alloc, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
+
+
+
+extern
+CFMutableStringRef CFStringCreateMutable(CFAllocatorRef alloc, CFIndex maxLength);
+
+extern
+CFMutableStringRef CFStringCreateMutableCopy(CFAllocatorRef alloc, CFIndex maxLength, CFStringRef theString);
+
+
+
+
+
+
+
+extern
+CFMutableStringRef CFStringCreateMutableWithExternalCharactersNoCopy(CFAllocatorRef alloc, UniChar *chars, CFIndex numChars, CFIndex capacity, CFAllocatorRef externalCharactersAllocator);
+
+
+
+
+
+extern
+CFIndex CFStringGetLength(CFStringRef theString);
+
+
+
+
+
+
+extern
+UniChar CFStringGetCharacterAtIndex(CFStringRef theString, CFIndex idx);
+
+extern
+void CFStringGetCharacters(CFStringRef theString, CFRange range, UniChar *buffer);
+extern
+Boolean CFStringGetPascalString(CFStringRef theString, StringPtr buffer, CFIndex bufferSize, CFStringEncoding encoding);
+
+extern
+Boolean CFStringGetCString(CFStringRef theString, char *buffer, CFIndex bufferSize, CFStringEncoding encoding);
+
+
+
+
+
+
+extern
+ConstStringPtr CFStringGetPascalStringPtr(CFStringRef theString, CFStringEncoding encoding);
+
+extern
+const char *CFStringGetCStringPtr(CFStringRef theString, CFStringEncoding encoding);
+
+extern
+const UniChar *CFStringGetCharactersPtr(CFStringRef theString);
+extern
+CFIndex CFStringGetBytes(CFStringRef theString, CFRange range, CFStringEncoding encoding, UInt8 lossByte, Boolean isExternalRepresentation, UInt8 *buffer, CFIndex maxBufLen, CFIndex *usedBufLen);
+
+
+
+
+
+
+
+extern
+CFStringRef CFStringCreateWithBytes(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex numBytes, CFStringEncoding encoding, Boolean isExternalRepresentation);
+
+
+
+
+
+
+
+extern
+CFStringRef CFStringCreateFromExternalRepresentation(CFAllocatorRef alloc, CFDataRef data, CFStringEncoding encoding);
+
+extern
+CFDataRef CFStringCreateExternalRepresentation(CFAllocatorRef alloc, CFStringRef theString, CFStringEncoding encoding, UInt8 lossByte);
+
+
+
+extern
+CFStringEncoding CFStringGetSmallestEncoding(CFStringRef theString);
+
+extern
+CFStringEncoding CFStringGetFastestEncoding(CFStringRef theString);
+
+
+
+extern
+CFStringEncoding CFStringGetSystemEncoding(void);
+
+extern
+CFIndex CFStringGetMaximumSizeForEncoding(CFIndex length, CFStringEncoding encoding);
+
+
+
+
+
+
+typedef enum {
+    kCFCompareCaseInsensitive = 1,
+    kCFCompareBackwards = 4,
+    kCFCompareAnchored = 8,
+    kCFCompareNonliteral = 16,
+    kCFCompareLocalized = 32,
+    kCFCompareNumerically = 64
+} CFStringCompareFlags;
+
+
+
+
+
+
+extern
+CFComparisonResult CFStringCompareWithOptions(CFStringRef theString1, CFStringRef theString2, CFRange rangeToCompare, CFOptionFlags compareOptions);
+
+
+
+
+
+extern
+CFComparisonResult CFStringCompare(CFStringRef theString1, CFStringRef theString2, CFOptionFlags compareOptions);
+
+
+
+
+
+extern
+Boolean CFStringFindWithOptions(CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags searchOptions, CFRange *result);
+extern
+CFArrayRef CFStringCreateArrayWithFindResults(CFAllocatorRef alloc, CFStringRef theString, CFStringRef stringToFind, CFRange rangeToSearch, CFOptionFlags compareOptions);
+
+
+
+extern
+CFRange CFStringFind(CFStringRef theString, CFStringRef stringToFind, CFOptionFlags compareOptions);
+
+extern
+Boolean CFStringHasPrefix(CFStringRef theString, CFStringRef prefix);
+
+extern
+Boolean CFStringHasSuffix(CFStringRef theString, CFStringRef suffix);
+extern CFRange CFStringGetRangeOfComposedCharactersAtIndex(CFStringRef theString, CFIndex theIndex);
+extern Boolean CFStringFindCharacterFromSet(CFStringRef theString, CFCharacterSetRef theSet, CFRange rangeToSearch, CFOptionFlags searchOptions, CFRange *result);
+extern
+void CFStringGetLineBounds(CFStringRef theString, CFRange range, CFIndex *lineBeginIndex, CFIndex *lineEndIndex, CFIndex *contentsEndIndex);
+
+
+
+extern
+CFStringRef CFStringCreateByCombiningStrings(CFAllocatorRef alloc, CFArrayRef theArray, CFStringRef separatorString);
+
+extern
+CFArrayRef CFStringCreateArrayBySeparatingStrings(CFAllocatorRef alloc, CFStringRef theString, CFStringRef separatorString);
+
+
+
+extern
+SInt32 CFStringGetIntValue(CFStringRef str);
+
+extern
+double CFStringGetDoubleValue(CFStringRef str);
+extern
+void CFStringAppend(CFMutableStringRef theString, CFStringRef appendedString);
+
+extern
+void CFStringAppendCharacters(CFMutableStringRef theString, const UniChar *chars, CFIndex numChars);
+
+extern
+void CFStringAppendPascalString(CFMutableStringRef theString, ConstStr255Param pStr, CFStringEncoding encoding);
+
+extern
+void CFStringAppendCString(CFMutableStringRef theString, const char *cStr, CFStringEncoding encoding);
+
+extern
+void CFStringAppendFormat(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, ...);
+
+extern
+void CFStringAppendFormatAndArguments(CFMutableStringRef theString, CFDictionaryRef formatOptions, CFStringRef format, va_list arguments);
+
+extern
+void CFStringInsert(CFMutableStringRef str, CFIndex idx, CFStringRef insertedStr);
+
+extern
+void CFStringDelete(CFMutableStringRef theString, CFRange range);
+
+extern
+void CFStringReplace(CFMutableStringRef theString, CFRange range, CFStringRef replacement);
+
+extern
+void CFStringReplaceAll(CFMutableStringRef theString, CFStringRef replacement);
+extern
+CFIndex CFStringFindAndReplace(CFMutableStringRef theString, CFStringRef stringToFind, CFStringRef replacementString, CFRange rangeToSearch, CFOptionFlags compareOptions);
+extern
+void CFStringSetExternalCharactersNoCopy(CFMutableStringRef theString, UniChar *chars, CFIndex length, CFIndex capacity);
+extern
+void CFStringPad(CFMutableStringRef theString, CFStringRef padString, CFIndex length, CFIndex indexIntoPad);
+
+extern
+void CFStringTrim(CFMutableStringRef theString, CFStringRef trimString);
+
+extern
+void CFStringTrimWhitespace(CFMutableStringRef theString);
+
+extern
+void CFStringLowercase(CFMutableStringRef theString, const void *localeTBD);
+
+extern
+void CFStringUppercase(CFMutableStringRef theString, const void *localeTBD);
+
+extern
+void CFStringCapitalize(CFMutableStringRef theString, const void *localeTBD);
+
+
+
+
+
+
+
+typedef enum {
+        kCFStringNormalizationFormD = 0,
+        kCFStringNormalizationFormKD,
+        kCFStringNormalizationFormC,
+        kCFStringNormalizationFormKC
+} CFStringNormalizationForm;
+extern void CFStringNormalize(CFMutableStringRef theString, CFStringNormalizationForm theForm);
+
+
+
+
+extern
+Boolean CFStringIsEncodingAvailable(CFStringEncoding encoding);
+
+
+
+extern
+const CFStringEncoding *CFStringGetListOfAvailableEncodings(void);
+
+
+
+extern
+CFStringRef CFStringGetNameOfEncoding(CFStringEncoding encoding);
+
+
+
+extern
+UInt32 CFStringConvertEncodingToNSStringEncoding(CFStringEncoding encoding);
+
+extern
+CFStringEncoding CFStringConvertNSStringEncodingToEncoding(UInt32 encoding);
+
+
+
+extern
+UInt32 CFStringConvertEncodingToWindowsCodepage(CFStringEncoding encoding);
+
+extern
+CFStringEncoding CFStringConvertWindowsCodepageToEncoding(UInt32 codepage);
+
+
+
+extern
+CFStringEncoding CFStringConvertIANACharSetNameToEncoding(CFStringRef theString);
+
+extern
+CFStringRef CFStringConvertEncodingToIANACharSetName(CFStringEncoding encoding);
+
+
+
+
+
+extern
+CFStringEncoding CFStringGetMostCompatibleMacStringEncoding(CFStringEncoding encoding);
+typedef struct {
+    UniChar buffer[64];
+    CFStringRef theString;
+    const UniChar *directBuffer;
+    CFRange rangeToBuffer;
+    CFIndex bufferedRangeStart;
+    CFIndex bufferedRangeEnd;
+} CFStringInlineBuffer;
+
+
+static __inline__ void CFStringInitInlineBuffer(CFStringRef str, CFStringInlineBuffer *buf, CFRange range) {
+    buf->theString = str;
+    buf->rangeToBuffer = range;
+    buf->directBuffer = CFStringGetCharactersPtr(str);
+    buf->bufferedRangeStart = buf->bufferedRangeEnd = 0;
+}
+
+static __inline__ UniChar CFStringGetCharacterFromInlineBuffer(CFStringInlineBuffer *buf, CFIndex idx) {
+    if (buf->directBuffer) return buf->directBuffer[idx + buf->rangeToBuffer.location];
+    if (idx >= buf->bufferedRangeEnd || idx < buf->bufferedRangeStart) {
+        if (idx < 0 || idx > buf->rangeToBuffer.length) return 0;
+        if ((buf->bufferedRangeStart = idx - 4) < 0) buf->bufferedRangeStart = 0;
+        buf->bufferedRangeEnd = buf->bufferedRangeStart + 64;
+        if (buf->bufferedRangeEnd > buf->rangeToBuffer.length) buf->bufferedRangeEnd = buf->rangeToBuffer.length;
+        CFStringGetCharacters(buf->theString, CFRangeMake(buf->rangeToBuffer.location + buf->bufferedRangeStart, buf->bufferedRangeEnd - buf->bufferedRangeStart), buf->buffer);
+    }
+    return buf->buffer[idx - buf->bufferedRangeStart];
+}
+extern
+void CFShow(CFTypeRef obj);
+
+extern
+void CFShowStr(CFStringRef str);
+
+
+extern
+CFStringRef __CFStringMakeConstantString(const char *cStr);
+
+
+}
+extern "C" {
+
+
+typedef enum {
+    kCFURLPOSIXPathStyle = 0,
+    kCFURLHFSPathStyle,
+    kCFURLWindowsPathStyle
+} CFURLPathStyle;
+
+typedef const struct __CFURL * CFURLRef;
+extern
+CFTypeID CFURLGetTypeID(void);
+
+
+
+extern
+CFURLRef CFURLCreateWithBytes(CFAllocatorRef allocator, const UInt8 *URLBytes, CFIndex length, CFStringEncoding encoding, CFURLRef baseURL);
+
+
+
+
+
+extern
+CFDataRef CFURLCreateData(CFAllocatorRef allocator, CFURLRef url, CFStringEncoding encoding, Boolean escapeWhitespace);
+
+
+extern
+CFURLRef CFURLCreateWithString(CFAllocatorRef allocator, CFStringRef URLString, CFURLRef baseURL);
+
+
+
+
+
+
+
+extern
+CFURLRef CFURLCreateWithFileSystemPath(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory);
+
+extern
+CFURLRef CFURLCreateFromFileSystemRepresentation(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory);
+
+extern
+CFURLRef CFURLCreateWithFileSystemPathRelativeToBase(CFAllocatorRef allocator, CFStringRef filePath, CFURLPathStyle pathStyle, Boolean isDirectory, CFURLRef baseURL);
+
+extern
+CFURLRef CFURLCreateFromFileSystemRepresentationRelativeToBase(CFAllocatorRef allocator, const UInt8 *buffer, CFIndex bufLen, Boolean isDirectory, CFURLRef baseURL);
+extern
+Boolean CFURLGetFileSystemRepresentation(CFURLRef url, Boolean resolveAgainstBase, UInt8 *buffer, CFIndex maxBufLen);
+
+
+extern
+CFURLRef CFURLCopyAbsoluteURL(CFURLRef relativeURL);
+
+
+extern
+CFStringRef CFURLGetString(CFURLRef anURL);
+
+
+extern
+CFURLRef CFURLGetBaseURL(CFURLRef anURL);
+extern
+Boolean CFURLCanBeDecomposed(CFURLRef anURL);
+
+
+
+extern
+CFStringRef CFURLCopyScheme(CFURLRef anURL);
+
+
+extern
+CFStringRef CFURLCopyNetLocation(CFURLRef anURL);
+extern
+CFStringRef CFURLCopyPath(CFURLRef anURL);
+
+extern
+CFStringRef CFURLCopyStrictPath(CFURLRef anURL, Boolean *isAbsolute);
+
+extern
+CFStringRef CFURLCopyFileSystemPath(CFURLRef anURL, CFURLPathStyle pathStyle);
+
+
+
+extern
+Boolean CFURLHasDirectoryPath(CFURLRef anURL);
+
+
+
+extern
+CFStringRef CFURLCopyResourceSpecifier(CFURLRef anURL);
+
+extern
+CFStringRef CFURLCopyHostName(CFURLRef anURL);
+
+extern
+SInt32 CFURLGetPortNumber(CFURLRef anURL);
+
+extern
+CFStringRef CFURLCopyUserName(CFURLRef anURL);
+
+extern
+CFStringRef CFURLCopyPassword(CFURLRef anURL);
+
+
+
+
+
+
+extern
+CFStringRef CFURLCopyParameterString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);
+
+extern
+CFStringRef CFURLCopyQueryString(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);
+
+extern
+CFStringRef CFURLCopyFragment(CFURLRef anURL, CFStringRef charactersToLeaveEscaped);
+
+extern
+CFStringRef CFURLCopyLastPathComponent(CFURLRef url);
+
+extern
+CFStringRef CFURLCopyPathExtension(CFURLRef url);
+
+
+
+
+
+extern
+CFURLRef CFURLCreateCopyAppendingPathComponent(CFAllocatorRef allocator, CFURLRef url, CFStringRef pathComponent, Boolean isDirectory);
+
+extern
+CFURLRef CFURLCreateCopyDeletingLastPathComponent(CFAllocatorRef allocator, CFURLRef url);
+
+extern
+CFURLRef CFURLCreateCopyAppendingPathExtension(CFAllocatorRef allocator, CFURLRef url, CFStringRef extension);
+
+extern
+CFURLRef CFURLCreateCopyDeletingPathExtension(CFAllocatorRef allocator, CFURLRef url);
+extern
+CFStringRef CFURLCreateStringByReplacingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveEscaped);
+extern
+CFStringRef CFURLCreateStringByAddingPercentEscapes(CFAllocatorRef allocator, CFStringRef originalString, CFStringRef charactersToLeaveUnescaped, CFStringRef legalURLCharactersToBeEscaped, CFStringEncoding encoding);
+
+
+
+struct FSRef;
+
+extern
+CFURLRef CFURLCreateFromFSRef(CFAllocatorRef allocator, const struct FSRef *fsRef);
+
+extern
+Boolean CFURLGetFSRef(CFURLRef url, struct FSRef *fsRef);
+
+
+
+}
+
+extern "C" {
+
+
+
+
+
+
+typedef struct __CFRunLoop * CFRunLoopRef;
+
+
+
+
+
+typedef struct __CFRunLoopSource * CFRunLoopSourceRef;
+
+
+
+
+
+typedef struct __CFRunLoopObserver * CFRunLoopObserverRef;
+
+
+
+
+
+typedef struct __CFRunLoopTimer * CFRunLoopTimerRef;
+
+
+enum {
+    kCFRunLoopRunFinished = 1,
+    kCFRunLoopRunStopped = 2,
+    kCFRunLoopRunTimedOut = 3,
+    kCFRunLoopRunHandledSource = 4
+};
+
+
+typedef enum {
+    kCFRunLoopEntry = (1 << 0),
+    kCFRunLoopBeforeTimers = (1 << 1),
+    kCFRunLoopBeforeSources = (1 << 2),
+    kCFRunLoopBeforeWaiting = (1 << 5),
+    kCFRunLoopAfterWaiting = (1 << 6),
+    kCFRunLoopExit = (1 << 7),
+    kCFRunLoopAllActivities = 0x0FFFFFFFU
+} CFRunLoopActivity;
+
+extern const CFStringRef kCFRunLoopDefaultMode;
+extern const CFStringRef kCFRunLoopCommonModes;
+
+
+
+
+
+extern CFTypeID CFRunLoopGetTypeID(void);
+
+
+
+
+
+
+extern CFRunLoopRef CFRunLoopGetCurrent(void);
+extern CFStringRef CFRunLoopCopyCurrentMode(CFRunLoopRef rl);
+
+
+
+
+
+
+
+extern CFArrayRef CFRunLoopCopyAllModes(CFRunLoopRef rl);
+extern void CFRunLoopAddCommonMode(CFRunLoopRef rl, CFStringRef mode);
+extern CFAbsoluteTime CFRunLoopGetNextTimerFireDate(CFRunLoopRef rl, CFStringRef mode);
+
+
+
+
+
+extern void CFRunLoopRun(void);
+extern SInt32 CFRunLoopRunInMode(CFStringRef mode, CFTimeInterval seconds, Boolean returnAfterSourceHandled);
+extern Boolean CFRunLoopIsWaiting(CFRunLoopRef rl);
+extern void CFRunLoopWakeUp(CFRunLoopRef rl);
+extern void CFRunLoopStop(CFRunLoopRef rl);
+
+extern Boolean CFRunLoopContainsSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+extern void CFRunLoopAddSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+extern void CFRunLoopRemoveSource(CFRunLoopRef rl, CFRunLoopSourceRef source, CFStringRef mode);
+
+extern Boolean CFRunLoopContainsObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+extern void CFRunLoopAddObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+extern void CFRunLoopRemoveObserver(CFRunLoopRef rl, CFRunLoopObserverRef observer, CFStringRef mode);
+
+extern Boolean CFRunLoopContainsTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+extern void CFRunLoopAddTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+extern void CFRunLoopRemoveTimer(CFRunLoopRef rl, CFRunLoopTimerRef timer, CFStringRef mode);
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+    Boolean (*equal)(const void *info1, const void *info2);
+    CFHashCode (*hash)(const void *info);
+    void (*schedule)(void *info, CFRunLoopRef rl, CFStringRef mode);
+    void (*cancel)(void *info, CFRunLoopRef rl, CFStringRef mode);
+    void (*perform)(void *info);
+} CFRunLoopSourceContext;
+
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+    Boolean (*equal)(const void *info1, const void *info2);
+    CFHashCode (*hash)(const void *info);
+    mach_port_t (*getPort)(void *info);
+    void * (*perform)(void *msg, CFIndex size, CFAllocatorRef allocator, void *info);
+} CFRunLoopSourceContext1;
+
+
+
+
+
+
+extern CFTypeID CFRunLoopSourceGetTypeID(void);
+extern CFRunLoopSourceRef CFRunLoopSourceCreate(CFAllocatorRef allocator, CFIndex order, CFRunLoopSourceContext *context);
+
+
+
+
+
+
+
+extern CFIndex CFRunLoopSourceGetOrder(CFRunLoopSourceRef source);
+extern void CFRunLoopSourceInvalidate(CFRunLoopSourceRef source);
+
+
+
+
+
+
+
+extern Boolean CFRunLoopSourceIsValid(CFRunLoopSourceRef source);
+extern void CFRunLoopSourceGetContext(CFRunLoopSourceRef source, CFRunLoopSourceContext *context);
+extern void CFRunLoopSourceSignal(CFRunLoopSourceRef source);
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFRunLoopObserverContext;
+
+typedef void (*CFRunLoopObserverCallBack)(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info);
+
+
+
+
+
+extern CFTypeID CFRunLoopObserverGetTypeID(void);
+
+extern CFRunLoopObserverRef CFRunLoopObserverCreate(CFAllocatorRef allocator, CFOptionFlags activities, Boolean repeats, CFIndex order, CFRunLoopObserverCallBack callout, CFRunLoopObserverContext *context);
+
+extern CFOptionFlags CFRunLoopObserverGetActivities(CFRunLoopObserverRef observer);
+extern Boolean CFRunLoopObserverDoesRepeat(CFRunLoopObserverRef observer);
+extern CFIndex CFRunLoopObserverGetOrder(CFRunLoopObserverRef observer);
+extern void CFRunLoopObserverInvalidate(CFRunLoopObserverRef observer);
+extern Boolean CFRunLoopObserverIsValid(CFRunLoopObserverRef observer);
+extern void CFRunLoopObserverGetContext(CFRunLoopObserverRef observer, CFRunLoopObserverContext *context);
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFRunLoopTimerContext;
+
+typedef void (*CFRunLoopTimerCallBack)(CFRunLoopTimerRef timer, void *info);
+
+
+
+
+
+extern CFTypeID CFRunLoopTimerGetTypeID(void);
+
+extern CFRunLoopTimerRef CFRunLoopTimerCreate(CFAllocatorRef allocator, CFAbsoluteTime fireDate, CFTimeInterval interval, CFOptionFlags flags, CFIndex order, CFRunLoopTimerCallBack callout, CFRunLoopTimerContext *context);
+extern CFAbsoluteTime CFRunLoopTimerGetNextFireDate(CFRunLoopTimerRef timer);
+extern void CFRunLoopTimerSetNextFireDate(CFRunLoopTimerRef timer, CFAbsoluteTime fireDate);
+extern CFTimeInterval CFRunLoopTimerGetInterval(CFRunLoopTimerRef timer);
+extern Boolean CFRunLoopTimerDoesRepeat(CFRunLoopTimerRef timer);
+extern CFIndex CFRunLoopTimerGetOrder(CFRunLoopTimerRef timer);
+extern void CFRunLoopTimerInvalidate(CFRunLoopTimerRef timer);
+extern Boolean CFRunLoopTimerIsValid(CFRunLoopTimerRef timer);
+extern void CFRunLoopTimerGetContext(CFRunLoopTimerRef timer, CFRunLoopTimerContext *context);
+
+
+}
+extern "C" {
+
+
+
+
+
+
+typedef int CFSocketNativeHandle;
+
+typedef struct __CFSocket * CFSocketRef;
+typedef enum {
+    kCFSocketSuccess = 0,
+    kCFSocketError = -1,
+    kCFSocketTimeout = -2
+} CFSocketError;
+
+typedef struct {
+    SInt32 protocolFamily;
+    SInt32 socketType;
+    SInt32 protocol;
+    CFDataRef address;
+} CFSocketSignature;
+
+typedef enum {
+    kCFSocketNoCallBack = 0,
+    kCFSocketReadCallBack = 1,
+    kCFSocketAcceptCallBack = 2,
+    kCFSocketDataCallBack = 3,
+    kCFSocketConnectCallBack = 4
+
+    ,
+    kCFSocketWriteCallBack = 8
+
+} CFSocketCallBackType;
+
+
+
+enum {
+    kCFSocketAutomaticallyReenableReadCallBack = 1,
+    kCFSocketAutomaticallyReenableAcceptCallBack = 2,
+    kCFSocketAutomaticallyReenableDataCallBack = 3,
+    kCFSocketAutomaticallyReenableWriteCallBack = 8,
+    kCFSocketCloseOnInvalidate = 128
+};
+
+
+typedef void (*CFSocketCallBack)(CFSocketRef s, CFSocketCallBackType type, CFDataRef address, const void *data, void *info);
+
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFSocketContext;
+
+extern CFTypeID CFSocketGetTypeID(void);
+
+extern CFSocketRef CFSocketCreate(CFAllocatorRef allocator, SInt32 protocolFamily, SInt32 socketType, SInt32 protocol, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);
+extern CFSocketRef CFSocketCreateWithNative(CFAllocatorRef allocator, CFSocketNativeHandle sock, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);
+extern CFSocketRef CFSocketCreateWithSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context);
+extern CFSocketRef CFSocketCreateConnectedToSocketSignature(CFAllocatorRef allocator, const CFSocketSignature *signature, CFOptionFlags callBackTypes, CFSocketCallBack callout, const CFSocketContext *context, CFTimeInterval timeout);
+
+
+extern CFSocketError CFSocketSetAddress(CFSocketRef s, CFDataRef address);
+extern CFSocketError CFSocketConnectToAddress(CFSocketRef s, CFDataRef address, CFTimeInterval timeout);
+extern void CFSocketInvalidate(CFSocketRef s);
+
+extern Boolean CFSocketIsValid(CFSocketRef s);
+extern CFDataRef CFSocketCopyAddress(CFSocketRef s);
+extern CFDataRef CFSocketCopyPeerAddress(CFSocketRef s);
+extern void CFSocketGetContext(CFSocketRef s, CFSocketContext *context);
+extern CFSocketNativeHandle CFSocketGetNative(CFSocketRef s);
+
+extern CFRunLoopSourceRef CFSocketCreateRunLoopSource(CFAllocatorRef allocator, CFSocketRef s, CFIndex order);
+
+
+extern CFOptionFlags CFSocketGetSocketFlags(CFSocketRef s);
+extern void CFSocketSetSocketFlags(CFSocketRef s, CFOptionFlags flags);
+extern void CFSocketDisableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes);
+extern void CFSocketEnableCallBacks(CFSocketRef s, CFOptionFlags callBackTypes);
+
+
+
+extern CFSocketError CFSocketSendData(CFSocketRef s, CFDataRef address, CFDataRef data, CFTimeInterval timeout);
+extern CFSocketError CFSocketRegisterValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef value);
+extern CFSocketError CFSocketCopyRegisteredValue(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFPropertyListRef *value, CFDataRef *nameServerAddress);
+
+extern CFSocketError CFSocketRegisterSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, const CFSocketSignature *signature);
+extern CFSocketError CFSocketCopyRegisteredSocketSignature(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name, CFSocketSignature *signature, CFDataRef *nameServerAddress);
+
+extern CFSocketError CFSocketUnregister(const CFSocketSignature *nameServerSignature, CFTimeInterval timeout, CFStringRef name);
+
+extern void CFSocketSetDefaultNameRegistryPortNumber(UInt16 port);
+extern UInt16 CFSocketGetDefaultNameRegistryPortNumber(void);
+
+
+extern const CFStringRef kCFSocketCommandKey;
+extern const CFStringRef kCFSocketNameKey;
+extern const CFStringRef kCFSocketValueKey;
+extern const CFStringRef kCFSocketResultKey;
+extern const CFStringRef kCFSocketErrorKey;
+extern const CFStringRef kCFSocketRegisterCommand;
+extern const CFStringRef kCFSocketRetrieveCommand;
+
+
+}
+
+
+extern "C" {
+
+
+typedef enum {
+    kCFStreamStatusNotOpen = 0,
+    kCFStreamStatusOpening,
+    kCFStreamStatusOpen,
+    kCFStreamStatusReading,
+    kCFStreamStatusWriting,
+    kCFStreamStatusAtEnd,
+    kCFStreamStatusClosed,
+    kCFStreamStatusError
+} CFStreamStatus;
+
+typedef enum {
+    kCFStreamErrorDomainCustom = -1,
+    kCFStreamErrorDomainPOSIX = 1,
+    kCFStreamErrorDomainMacOSStatus
+} CFStreamErrorDomain;
+
+typedef struct {
+    CFStreamErrorDomain domain;
+    SInt32 error;
+} CFStreamError;
+
+typedef enum {
+    kCFStreamEventNone = 0,
+    kCFStreamEventOpenCompleted = 1,
+    kCFStreamEventHasBytesAvailable = 2,
+    kCFStreamEventCanAcceptBytes = 4,
+    kCFStreamEventErrorOccurred = 8,
+    kCFStreamEventEndEncountered = 16
+} CFStreamEventType;
+
+typedef struct {
+    CFIndex version;
+    void *info;
+    void *(*retain)(void *info);
+    void (*release)(void *info);
+    CFStringRef (*copyDescription)(void *info);
+} CFStreamClientContext;
+
+typedef struct __CFReadStream * CFReadStreamRef;
+typedef struct __CFWriteStream * CFWriteStreamRef;
+
+typedef void (*CFReadStreamClientCallBack)(CFReadStreamRef stream, CFStreamEventType type, void *clientCallBackInfo);
+typedef void (*CFWriteStreamClientCallBack)(CFWriteStreamRef stream, CFStreamEventType type, void *clientCallBackInfo);
+
+extern
+CFTypeID CFReadStreamGetTypeID(void);
+extern
+CFTypeID CFWriteStreamGetTypeID(void);
+
+
+
+
+extern
+const CFStringRef kCFStreamPropertyDataWritten;
+
+
+extern
+CFReadStreamRef CFReadStreamCreateWithBytesNoCopy(CFAllocatorRef alloc, const UInt8 *bytes, CFIndex length, CFAllocatorRef bytesDeallocator);
+
+
+extern
+CFWriteStreamRef CFWriteStreamCreateWithBuffer(CFAllocatorRef alloc, UInt8 *buffer, CFIndex bufferCapacity);
+
+
+extern
+CFWriteStreamRef CFWriteStreamCreateWithAllocatedBuffers(CFAllocatorRef alloc, CFAllocatorRef bufferAllocator);
+
+
+extern
+CFReadStreamRef CFReadStreamCreateWithFile(CFAllocatorRef alloc, CFURLRef fileURL);
+extern
+CFWriteStreamRef CFWriteStreamCreateWithFile(CFAllocatorRef alloc, CFURLRef fileURL);
+
+
+
+extern
+const CFStringRef kCFStreamPropertyAppendToFile;
+
+
+
+
+
+extern
+const CFStringRef kCFStreamPropertySocketNativeHandle;
+
+
+extern
+const CFStringRef kCFStreamPropertySocketRemoteHostName;
+
+
+extern
+const CFStringRef kCFStreamPropertySocketRemotePortNumber;
+
+
+extern
+void CFStreamCreatePairWithSocket(CFAllocatorRef alloc, CFSocketNativeHandle sock, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);
+extern
+void CFStreamCreatePairWithSocketToHost(CFAllocatorRef alloc, CFStringRef host, UInt32 port, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);
+
+extern
+void CFStreamCreatePairWithPeerSocketSignature(CFAllocatorRef alloc, const CFSocketSignature *signature, CFReadStreamRef *readStream, CFWriteStreamRef *writeStream);
+
+
+
+
+extern
+CFStreamStatus CFReadStreamGetStatus(CFReadStreamRef stream);
+extern
+CFStreamStatus CFWriteStreamGetStatus(CFWriteStreamRef stream);
+
+
+
+
+extern
+CFStreamError CFReadStreamGetError(CFReadStreamRef stream);
+extern
+CFStreamError CFWriteStreamGetError(CFWriteStreamRef stream);
+
+
+
+
+
+
+extern
+Boolean CFReadStreamOpen(CFReadStreamRef stream);
+extern
+Boolean CFWriteStreamOpen(CFWriteStreamRef stream);
+
+
+
+
+extern
+void CFReadStreamClose(CFReadStreamRef stream);
+extern
+void CFWriteStreamClose(CFWriteStreamRef stream);
+
+
+
+extern
+Boolean CFReadStreamHasBytesAvailable(CFReadStreamRef stream);
+extern
+CFIndex CFReadStreamRead(CFReadStreamRef stream, UInt8 *buffer, CFIndex bufferLength);
+extern
+const UInt8 *CFReadStreamGetBuffer(CFReadStreamRef stream, CFIndex maxBytesToRead, CFIndex *numBytesRead);
+
+
+
+extern
+Boolean CFWriteStreamCanAcceptBytes(CFWriteStreamRef stream);
+
+
+
+
+
+
+extern
+CFIndex CFWriteStreamWrite(CFWriteStreamRef stream, const UInt8 *buffer, CFIndex bufferLength);
+extern
+CFTypeRef CFReadStreamCopyProperty(CFReadStreamRef stream, CFStringRef propertyName);
+extern
+CFTypeRef CFWriteStreamCopyProperty(CFWriteStreamRef stream, CFStringRef propertyName);
+
+
+
+
+extern
+Boolean CFReadStreamSetProperty(CFReadStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue);
+extern
+Boolean CFWriteStreamSetProperty(CFWriteStreamRef stream, CFStringRef propertyName, CFTypeRef propertyValue);
+extern
+Boolean CFReadStreamSetClient(CFReadStreamRef stream, CFOptionFlags streamEvents, CFReadStreamClientCallBack clientCB, CFStreamClientContext *clientContext);
+extern
+Boolean CFWriteStreamSetClient(CFWriteStreamRef stream, CFOptionFlags streamEvents, CFWriteStreamClientCallBack clientCB, CFStreamClientContext *clientContext);
+
+extern
+void CFReadStreamScheduleWithRunLoop(CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);
+extern
+void CFWriteStreamScheduleWithRunLoop(CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);
+
+extern
+void CFReadStreamUnscheduleFromRunLoop(CFReadStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);
+extern
+void CFWriteStreamUnscheduleFromRunLoop(CFWriteStreamRef stream, CFRunLoopRef runLoop, CFStringRef runLoopMode);
+
+
+}
+
+
+extern "C" {
+
+
+typedef enum {
+    kCFPropertyListImmutable = 0,
+    kCFPropertyListMutableContainers,
+    kCFPropertyListMutableContainersAndLeaves
+} CFPropertyListMutabilityOptions;
+extern
+CFPropertyListRef CFPropertyListCreateFromXMLData(CFAllocatorRef allocator, CFDataRef xmlData, CFOptionFlags mutabilityOption, CFStringRef *errorString);
+extern
+CFDataRef CFPropertyListCreateXMLData(CFAllocatorRef allocator, CFPropertyListRef propertyList);
+
+
+
+
+
+
+
+extern
+CFPropertyListRef CFPropertyListCreateDeepCopy(CFAllocatorRef allocator, CFPropertyListRef propertyList, CFOptionFlags mutabilityOption);
+
+
+
+typedef enum {
+    kCFPropertyListOpenStepFormat = 1,
+    kCFPropertyListXMLFormat_v1_0 = 100,
+    kCFPropertyListBinaryFormat_v1_0 = 200
+} CFPropertyListFormat;
+
+extern
+Boolean CFPropertyListIsValid(CFPropertyListRef plist, CFPropertyListFormat format);
+
+
+
+
+
+
+
+extern
+CFIndex CFPropertyListWriteToStream(CFPropertyListRef propertyList, CFWriteStreamRef stream, CFPropertyListFormat format, CFStringRef *errorString);
+extern
+CFPropertyListRef CFPropertyListCreateFromStream(CFAllocatorRef allocator, CFReadStreamRef stream, CFIndex streamLength, CFOptionFlags mutabilityOption, CFPropertyListFormat *format, CFStringRef *errorString);
+}
+extern "C" {
+typedef const void * (*CFSetRetainCallBack)(CFAllocatorRef allocator, const void *value);
+
+
+
+
+
+
+
+typedef void (*CFSetReleaseCallBack)(CFAllocatorRef allocator, const void *value);
+
+
+
+
+
+
+
+typedef CFStringRef (*CFSetCopyDescriptionCallBack)(const void *value);
+typedef Boolean (*CFSetEqualCallBack)(const void *value1, const void *value2);
+
+
+
+
+
+
+
+typedef CFHashCode (*CFSetHashCallBack)(const void *value);
+typedef struct {
+    CFIndex version;
+    CFSetRetainCallBack retain;
+    CFSetReleaseCallBack release;
+    CFSetCopyDescriptionCallBack copyDescription;
+    CFSetEqualCallBack equal;
+    CFSetHashCallBack hash;
+} CFSetCallBacks;
+
+
+
+
+
+
+extern
+const CFSetCallBacks kCFTypeSetCallBacks;
+
+
+
+
+
+
+
+extern
+const CFSetCallBacks kCFCopyStringSetCallBacks;
+typedef void (*CFSetApplierFunction)(const void *value, void *context);
+
+
+
+
+
+typedef const struct __CFSet * CFSetRef;
+
+
+
+
+
+typedef struct __CFSet * CFMutableSetRef;
+
+
+
+
+
+extern
+CFTypeID CFSetGetTypeID(void);
+extern
+CFSetRef CFSetCreate(CFAllocatorRef allocator, const void **values, CFIndex numValues, const CFSetCallBacks *callBacks);
+extern
+CFSetRef CFSetCreateCopy(CFAllocatorRef allocator, CFSetRef theSet);
+extern
+CFMutableSetRef CFSetCreateMutable(CFAllocatorRef allocator, CFIndex capacity, const CFSetCallBacks *callBacks);
+extern
+CFMutableSetRef CFSetCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFSetRef theSet);
+extern
+CFIndex CFSetGetCount(CFSetRef theSet);
+extern
+CFIndex CFSetGetCountOfValue(CFSetRef theSet, const void *value);
+extern
+Boolean CFSetContainsValue(CFSetRef theSet, const void *value);
+extern
+const void *CFSetGetValue(CFSetRef theSet, const void *value);
+extern
+Boolean CFSetGetValueIfPresent(CFSetRef theSet, const void *candidate, const void **value);
+extern
+void CFSetGetValues(CFSetRef theSet, const void **values);
+extern
+void CFSetApplyFunction(CFSetRef theSet, CFSetApplierFunction applier, void *context);
+extern
+void CFSetAddValue(CFMutableSetRef theSet, const void *value);
+extern
+void CFSetReplaceValue(CFMutableSetRef theSet, const void *value);
+extern
+void CFSetSetValue(CFMutableSetRef theSet, const void *value);
+extern
+void CFSetRemoveValue(CFMutableSetRef theSet, const void *value);
+extern
+void CFSetRemoveAllValues(CFMutableSetRef theSet);
+
+
+}
+
+extern "C" {
+
+
+extern
+CFTypeID CFTimeZoneGetTypeID(void);
+
+extern
+CFTimeZoneRef CFTimeZoneCopySystem(void);
+
+extern
+void CFTimeZoneResetSystem(void);
+
+extern
+CFTimeZoneRef CFTimeZoneCopyDefault(void);
+
+extern
+void CFTimeZoneSetDefault(CFTimeZoneRef tz);
+
+extern
+CFArrayRef CFTimeZoneCopyKnownNames(void);
+
+extern
+CFDictionaryRef CFTimeZoneCopyAbbreviationDictionary(void);
+
+extern
+void CFTimeZoneSetAbbreviationDictionary(CFDictionaryRef dict);
+
+extern
+CFTimeZoneRef CFTimeZoneCreate(CFAllocatorRef allocator, CFStringRef name, CFDataRef data);
+
+extern
+CFTimeZoneRef CFTimeZoneCreateWithTimeIntervalFromGMT(CFAllocatorRef allocator, CFTimeInterval ti);
+
+extern
+CFTimeZoneRef CFTimeZoneCreateWithName(CFAllocatorRef allocator, CFStringRef name, Boolean tryAbbrev);
+
+extern
+CFStringRef CFTimeZoneGetName(CFTimeZoneRef tz);
+
+extern
+CFDataRef CFTimeZoneGetData(CFTimeZoneRef tz);
+
+extern
+CFTimeInterval CFTimeZoneGetSecondsFromGMT(CFTimeZoneRef tz, CFAbsoluteTime at);
+
+extern
+CFStringRef CFTimeZoneCopyAbbreviation(CFTimeZoneRef tz, CFAbsoluteTime at);
+
+extern
+Boolean CFTimeZoneIsDaylightSavingTime(CFTimeZoneRef tz, CFAbsoluteTime at);
+
+
+}
+extern "C" {
+typedef const void * (*CFTreeRetainCallBack)(const void *info);
+
+
+
+
+
+
+
+typedef void (*CFTreeReleaseCallBack)(const void *info);
+typedef CFStringRef (*CFTreeCopyDescriptionCallBack)(const void *info);
+typedef struct {
+    CFIndex version;
+    void * info;
+    CFTreeRetainCallBack retain;
+    CFTreeReleaseCallBack release;
+    CFTreeCopyDescriptionCallBack copyDescription;
+} CFTreeContext;
+typedef void (*CFTreeApplierFunction)(const void *value, void *context);
+
+
+
+
+
+typedef struct __CFTree * CFTreeRef;
+
+
+
+
+
+extern
+CFTypeID CFTreeGetTypeID(void);
+extern
+CFTreeRef CFTreeCreate(CFAllocatorRef allocator, const CFTreeContext *context);
+extern
+CFTreeRef CFTreeGetParent(CFTreeRef tree);
+extern
+CFTreeRef CFTreeGetNextSibling(CFTreeRef tree);
+extern
+CFTreeRef CFTreeGetFirstChild(CFTreeRef tree);
+extern
+void CFTreeGetContext(CFTreeRef tree, CFTreeContext *context);
+extern
+CFIndex CFTreeGetChildCount(CFTreeRef tree);
+extern
+CFTreeRef CFTreeGetChildAtIndex(CFTreeRef tree, CFIndex idx);
+extern
+void CFTreeGetChildren(CFTreeRef tree, CFTreeRef *children);
+extern
+void CFTreeApplyFunctionToChildren(CFTreeRef tree, CFTreeApplierFunction applier, void *context);
+extern
+CFTreeRef CFTreeFindRoot(CFTreeRef tree);
+extern
+void CFTreeSetContext(CFTreeRef tree, const CFTreeContext *context);
+extern
+void CFTreePrependChild(CFTreeRef tree, CFTreeRef newChild);
+extern
+void CFTreeAppendChild(CFTreeRef tree, CFTreeRef newChild);
+extern
+void CFTreeInsertSibling(CFTreeRef tree, CFTreeRef newSibling);
+
+
+
+
+
+
+
+extern
+void CFTreeRemove(CFTreeRef tree);
+
+
+
+
+
+
+
+extern
+void CFTreeRemoveAllChildren(CFTreeRef tree);
+extern
+void CFTreeSortChildren(CFTreeRef tree, CFComparatorFunction comparator, void *context);
+
+
+}
+
+extern "C" {
+
+
+enum {
+        kCFXMLNodeCurrentVersion = 1
+};
+
+typedef const struct __CFXMLNode * CFXMLNodeRef;
+typedef CFTreeRef CFXMLTreeRef;
+typedef enum {
+    kCFXMLNodeTypeDocument = 1,
+    kCFXMLNodeTypeElement = 2,
+    kCFXMLNodeTypeAttribute = 3,
+    kCFXMLNodeTypeProcessingInstruction = 4,
+    kCFXMLNodeTypeComment = 5,
+    kCFXMLNodeTypeText = 6,
+    kCFXMLNodeTypeCDATASection = 7,
+    kCFXMLNodeTypeDocumentFragment = 8,
+    kCFXMLNodeTypeEntity = 9,
+    kCFXMLNodeTypeEntityReference = 10,
+    kCFXMLNodeTypeDocumentType = 11,
+    kCFXMLNodeTypeWhitespace = 12,
+    kCFXMLNodeTypeNotation = 13,
+    kCFXMLNodeTypeElementTypeDeclaration = 14,
+    kCFXMLNodeTypeAttributeListDeclaration = 15
+} CFXMLNodeTypeCode;
+
+typedef struct {
+    CFDictionaryRef attributes;
+    CFArrayRef attributeOrder;
+    Boolean isEmpty;
+    char _reserved[3];
+} CFXMLElementInfo;
+
+typedef struct {
+    CFStringRef dataString;
+} CFXMLProcessingInstructionInfo;
+
+typedef struct {
+    CFURLRef sourceURL;
+    CFStringEncoding encoding;
+} CFXMLDocumentInfo;
+
+typedef struct {
+    CFURLRef systemID;
+    CFStringRef publicID;
+} CFXMLExternalID;
+
+typedef struct {
+    CFXMLExternalID externalID;
+} CFXMLDocumentTypeInfo;
+
+typedef struct {
+    CFXMLExternalID externalID;
+} CFXMLNotationInfo;
+
+typedef struct {
+
+    CFStringRef contentDescription;
+} CFXMLElementTypeDeclarationInfo;
+
+typedef struct {
+
+    CFStringRef attributeName;
+    CFStringRef typeString;
+    CFStringRef defaultString;
+} CFXMLAttributeDeclarationInfo;
+
+typedef struct {
+    CFIndex numberOfAttributes;
+    CFXMLAttributeDeclarationInfo *attributes;
+} CFXMLAttributeListDeclarationInfo;
+
+typedef enum {
+    kCFXMLEntityTypeParameter,
+    kCFXMLEntityTypeParsedInternal,
+    kCFXMLEntityTypeParsedExternal,
+    kCFXMLEntityTypeUnparsed,
+    kCFXMLEntityTypeCharacter
+} CFXMLEntityTypeCode;
+
+typedef struct {
+    CFXMLEntityTypeCode entityType;
+    CFStringRef replacementText;
+    CFXMLExternalID entityID;
+    CFStringRef notationName;
+} CFXMLEntityInfo;
+
+typedef struct {
+    CFXMLEntityTypeCode entityType;
+} CFXMLEntityReferenceInfo;
+extern
+CFTypeID CFXMLNodeGetTypeID(void);
+
+
+extern
+CFXMLNodeRef CFXMLNodeCreate(CFAllocatorRef alloc, CFXMLNodeTypeCode xmlType, CFStringRef dataString, const void *additionalInfoPtr, CFIndex version);
+
+
+extern
+CFXMLNodeRef CFXMLNodeCreateCopy(CFAllocatorRef alloc, CFXMLNodeRef origNode);
+
+extern
+CFXMLNodeTypeCode CFXMLNodeGetTypeCode(CFXMLNodeRef node);
+
+extern
+CFStringRef CFXMLNodeGetString(CFXMLNodeRef node);
+
+extern
+const void *CFXMLNodeGetInfoPtr(CFXMLNodeRef node);
+
+extern
+CFIndex CFXMLNodeGetVersion(CFXMLNodeRef node);
+
+
+
+
+extern
+CFXMLTreeRef CFXMLTreeCreateWithNode(CFAllocatorRef allocator, CFXMLNodeRef node);
+
+
+extern
+CFXMLNodeRef CFXMLTreeGetNode(CFXMLTreeRef xmlTree);
+
+
+}
+extern "C" {
+
+
+typedef struct __CFXMLParser * CFXMLParserRef;
+typedef enum {
+    kCFXMLParserValidateDocument = (1 << 0),
+    kCFXMLParserSkipMetaData = (1 << 1),
+    kCFXMLParserReplacePhysicalEntities = (1 << 2),
+    kCFXMLParserSkipWhitespace = (1 << 3),
+    kCFXMLParserResolveExternalEntities = (1 << 4),
+    kCFXMLParserAddImpliedAttributes = (1 << 5),
+    kCFXMLParserAllOptions = 0x00FFFFFF,
+    kCFXMLParserNoOptions = 0
+} CFXMLParserOptions;
+
+
+typedef enum {
+    kCFXMLStatusParseNotBegun = -2,
+    kCFXMLStatusParseInProgress = -1,
+    kCFXMLStatusParseSuccessful = 0,
+    kCFXMLErrorUnexpectedEOF = 1,
+    kCFXMLErrorUnknownEncoding,
+    kCFXMLErrorEncodingConversionFailure,
+    kCFXMLErrorMalformedProcessingInstruction,
+    kCFXMLErrorMalformedDTD,
+    kCFXMLErrorMalformedName,
+    kCFXMLErrorMalformedCDSect,
+    kCFXMLErrorMalformedCloseTag,
+    kCFXMLErrorMalformedStartTag,
+    kCFXMLErrorMalformedDocument,
+    kCFXMLErrorElementlessDocument,
+    kCFXMLErrorMalformedComment,
+    kCFXMLErrorMalformedCharacterReference,
+    kCFXMLErrorMalformedParsedCharacterData,
+    kCFXMLErrorNoData
+} CFXMLParserStatusCode;
+typedef void * (*CFXMLParserCreateXMLStructureCallBack)(CFXMLParserRef parser, CFXMLNodeRef nodeDesc, void *info);
+typedef void (*CFXMLParserAddChildCallBack)(CFXMLParserRef parser, void *parent, void *child, void *info);
+typedef void (*CFXMLParserEndXMLStructureCallBack)(CFXMLParserRef parser, void *xmlType, void *info);
+typedef CFDataRef (*CFXMLParserResolveExternalEntityCallBack)(CFXMLParserRef parser, CFXMLExternalID *extID, void *info);
+typedef Boolean (*CFXMLParserHandleErrorCallBack)(CFXMLParserRef parser, CFXMLParserStatusCode error, void *info);
+typedef struct {
+    CFIndex version;
+    CFXMLParserCreateXMLStructureCallBack createXMLStructure;
+    CFXMLParserAddChildCallBack addChild;
+    CFXMLParserEndXMLStructureCallBack endXMLStructure;
+    CFXMLParserResolveExternalEntityCallBack resolveExternalEntity;
+    CFXMLParserHandleErrorCallBack handleError;
+} CFXMLParserCallBacks;
+
+typedef const void * (*CFXMLParserRetainCallBack)(const void *info);
+typedef void (*CFXMLParserReleaseCallBack)(const void *info);
+typedef CFStringRef (*CFXMLParserCopyDescriptionCallBack)(const void *info);
+typedef struct {
+    CFIndex version;
+    void * info;
+    CFXMLParserRetainCallBack retain;
+    CFXMLParserReleaseCallBack release;
+    CFXMLParserCopyDescriptionCallBack copyDescription;
+} CFXMLParserContext;
+
+extern
+CFTypeID CFXMLParserGetTypeID(void);
+extern
+CFXMLParserRef CFXMLParserCreate(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);
+
+
+
+
+extern
+CFXMLParserRef CFXMLParserCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes, CFXMLParserCallBacks *callBacks, CFXMLParserContext *context);
+
+
+extern
+void CFXMLParserGetContext(CFXMLParserRef parser, CFXMLParserContext *context);
+
+extern
+void CFXMLParserGetCallBacks(CFXMLParserRef parser, CFXMLParserCallBacks *callBacks);
+
+extern
+CFURLRef CFXMLParserGetSourceURL(CFXMLParserRef parser);
+
+
+extern
+CFIndex CFXMLParserGetLocation(CFXMLParserRef parser);
+
+
+extern
+CFIndex CFXMLParserGetLineNumber(CFXMLParserRef parser);
+
+
+extern
+void *CFXMLParserGetDocument(CFXMLParserRef parser);
+
+
+
+
+extern
+CFXMLParserStatusCode CFXMLParserGetStatusCode(CFXMLParserRef parser);
+
+extern
+CFStringRef CFXMLParserCopyErrorDescription(CFXMLParserRef parser);
+
+
+
+
+extern
+void CFXMLParserAbort(CFXMLParserRef parser, CFXMLParserStatusCode errorCode, CFStringRef errorDescription);
+
+
+
+
+
+
+extern
+Boolean CFXMLParserParse(CFXMLParserRef parser);
+
+
+
+
+
+
+
+extern
+CFXMLTreeRef CFXMLTreeCreateFromData(CFAllocatorRef allocator, CFDataRef xmlData, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);
+
+
+
+extern
+CFXMLTreeRef CFXMLTreeCreateWithDataFromURL(CFAllocatorRef allocator, CFURLRef dataSource, CFOptionFlags parseOptions, CFIndex versionOfNodes);
+
+
+
+
+
+
+
+extern
+CFDataRef CFXMLTreeCreateXMLData(CFAllocatorRef allocator, CFXMLTreeRef xmlTree);
+
+
+}
+
+extern "C" {
+
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFBinaryHeapCompareContext;
+typedef struct {
+    CFIndex version;
+    const void *(*retain)(CFAllocatorRef allocator, const void *ptr);
+    void (*release)(CFAllocatorRef allocator, const void *ptr);
+    CFStringRef (*copyDescription)(const void *ptr);
+    CFComparisonResult (*compare)(const void *ptr1, const void *ptr2, void *context);
+} CFBinaryHeapCallBacks;
+
+
+
+
+
+
+
+extern const CFBinaryHeapCallBacks kCFStringBinaryHeapCallBacks;
+typedef void (*CFBinaryHeapApplierFunction)(const void *val, void *context);
+
+
+
+
+
+typedef struct __CFBinaryHeap * CFBinaryHeapRef;
+
+
+
+
+
+extern CFTypeID CFBinaryHeapGetTypeID(void);
+extern CFBinaryHeapRef CFBinaryHeapCreate(CFAllocatorRef allocator, CFIndex capacity, const CFBinaryHeapCallBacks *callBacks, const CFBinaryHeapCompareContext *compareContext);
+extern CFBinaryHeapRef CFBinaryHeapCreateCopy(CFAllocatorRef allocator, CFIndex capacity, CFBinaryHeapRef heap);
+extern CFIndex CFBinaryHeapGetCount(CFBinaryHeapRef heap);
+extern CFIndex CFBinaryHeapGetCountOfValue(CFBinaryHeapRef heap, const void *value);
+extern Boolean CFBinaryHeapContainsValue(CFBinaryHeapRef heap, const void *value);
+extern const void * CFBinaryHeapGetMinimum(CFBinaryHeapRef heap);
+extern Boolean CFBinaryHeapGetMinimumIfPresent(CFBinaryHeapRef heap, const void **value);
+extern void CFBinaryHeapGetValues(CFBinaryHeapRef heap, const void **values);
+extern void CFBinaryHeapApplyFunction(CFBinaryHeapRef heap, CFBinaryHeapApplierFunction applier, void *context);
+extern void CFBinaryHeapAddValue(CFBinaryHeapRef heap, const void *value);
+
+
+
+
+
+
+
+extern void CFBinaryHeapRemoveMinimumValue(CFBinaryHeapRef heap);
+extern void CFBinaryHeapRemoveAllValues(CFBinaryHeapRef heap);
+
+
+}
+extern "C" {
+
+
+typedef UInt32 CFBit;
+
+typedef const struct __CFBitVector * CFBitVectorRef;
+typedef struct __CFBitVector * CFMutableBitVectorRef;
+
+extern CFTypeID CFBitVectorGetTypeID(void);
+
+extern CFBitVectorRef CFBitVectorCreate(CFAllocatorRef allocator, const UInt8 *bytes, CFIndex numBits);
+extern CFBitVectorRef CFBitVectorCreateCopy(CFAllocatorRef allocator, CFBitVectorRef bv);
+extern CFMutableBitVectorRef CFBitVectorCreateMutable(CFAllocatorRef allocator, CFIndex capacity);
+extern CFMutableBitVectorRef CFBitVectorCreateMutableCopy(CFAllocatorRef allocator, CFIndex capacity, CFBitVectorRef bv);
+
+extern CFIndex CFBitVectorGetCount(CFBitVectorRef bv);
+extern CFIndex CFBitVectorGetCountOfBit(CFBitVectorRef bv, CFRange range, CFBit value);
+extern Boolean CFBitVectorContainsBit(CFBitVectorRef bv, CFRange range, CFBit value);
+extern CFBit CFBitVectorGetBitAtIndex(CFBitVectorRef bv, CFIndex idx);
+extern void CFBitVectorGetBits(CFBitVectorRef bv, CFRange range, UInt8 *bytes);
+extern CFIndex CFBitVectorGetFirstIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value);
+extern CFIndex CFBitVectorGetLastIndexOfBit(CFBitVectorRef bv, CFRange range, CFBit value);
+
+extern void CFBitVectorSetCount(CFMutableBitVectorRef bv, CFIndex count);
+extern void CFBitVectorFlipBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx);
+extern void CFBitVectorFlipBits(CFMutableBitVectorRef bv, CFRange range);
+extern void CFBitVectorSetBitAtIndex(CFMutableBitVectorRef bv, CFIndex idx, CFBit value);
+extern void CFBitVectorSetBits(CFMutableBitVectorRef bv, CFRange range, CFBit value);
+extern void CFBitVectorSetAllBits(CFMutableBitVectorRef bv, CFBit value);
+
+
+}
+extern "C" {
+
+
+typedef struct __CFBundle *CFBundleRef;
+typedef struct __CFBundle *CFPlugInRef;
+
+
+extern
+const CFStringRef kCFBundleInfoDictionaryVersionKey;
+
+extern
+const CFStringRef kCFBundleExecutableKey;
+
+extern
+const CFStringRef kCFBundleIdentifierKey;
+
+extern
+const CFStringRef kCFBundleVersionKey;
+
+
+extern
+const CFStringRef kCFBundleDevelopmentRegionKey;
+
+extern
+const CFStringRef kCFBundleNameKey;
+
+
+extern
+const CFStringRef kCFBundleLocalizationsKey;
+
+
+
+
+
+extern
+CFBundleRef CFBundleGetMainBundle(void);
+
+extern
+CFBundleRef CFBundleGetBundleWithIdentifier(CFStringRef bundleID);
+
+
+
+
+
+extern
+CFArrayRef CFBundleGetAllBundles(void);
+
+
+
+
+extern
+UInt32 CFBundleGetTypeID(void);
+
+extern
+CFBundleRef CFBundleCreate(CFAllocatorRef allocator, CFURLRef bundleURL);
+
+
+extern
+CFArrayRef CFBundleCreateBundlesFromDirectory(CFAllocatorRef allocator, CFURLRef directoryURL, CFStringRef bundleType);
+
+
+
+
+
+extern
+CFURLRef CFBundleCopyBundleURL(CFBundleRef bundle);
+
+extern
+CFTypeRef CFBundleGetValueForInfoDictionaryKey(CFBundleRef bundle, CFStringRef key);
+
+
+extern
+CFDictionaryRef CFBundleGetInfoDictionary(CFBundleRef bundle);
+
+
+
+extern
+CFDictionaryRef CFBundleGetLocalInfoDictionary(CFBundleRef bundle);
+
+
+extern
+void CFBundleGetPackageInfo(CFBundleRef bundle, UInt32 *packageType, UInt32 *packageCreator);
+
+extern
+CFStringRef CFBundleGetIdentifier(CFBundleRef bundle);
+
+extern
+UInt32 CFBundleGetVersionNumber(CFBundleRef bundle);
+
+extern
+CFStringRef CFBundleGetDevelopmentRegion(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopySupportFilesDirectoryURL(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopyResourcesDirectoryURL(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopyPrivateFrameworksURL(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopySharedFrameworksURL(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopySharedSupportURL(CFBundleRef bundle);
+
+extern
+CFURLRef CFBundleCopyBuiltInPlugInsURL(CFBundleRef bundle);
+
+
+
+
+extern
+CFDictionaryRef CFBundleCopyInfoDictionaryInDirectory(CFURLRef bundleURL);
+
+extern
+Boolean CFBundleGetPackageInfoInDirectory(CFURLRef url, UInt32 *packageType, UInt32 *packageCreator);
+
+
+
+extern
+CFURLRef CFBundleCopyResourceURL(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName);
+
+extern
+CFArrayRef CFBundleCopyResourceURLsOfType(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName);
+
+extern
+CFStringRef CFBundleCopyLocalizedString(CFBundleRef bundle, CFStringRef key, CFStringRef value, CFStringRef tableName);
+extern
+CFURLRef CFBundleCopyResourceURLInDirectory(CFURLRef bundleURL, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName);
+
+extern
+CFArrayRef CFBundleCopyResourceURLsOfTypeInDirectory(CFURLRef bundleURL, CFStringRef resourceType, CFStringRef subDirName);
+
+
+
+
+
+
+extern
+CFArrayRef CFBundleCopyBundleLocalizations(CFBundleRef bundle);
+
+
+extern
+CFArrayRef CFBundleCopyPreferredLocalizationsFromArray(CFArrayRef locArray);
+
+
+
+
+
+
+
+extern
+CFArrayRef CFBundleCopyLocalizationsForPreferences(CFArrayRef locArray, CFArrayRef prefArray);
+extern
+CFURLRef CFBundleCopyResourceURLForLocalization(CFBundleRef bundle, CFStringRef resourceName, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName);
+
+extern
+CFArrayRef CFBundleCopyResourceURLsOfTypeForLocalization(CFBundleRef bundle, CFStringRef resourceType, CFStringRef subDirName, CFStringRef localizationName);
+
+
+
+
+
+extern
+CFDictionaryRef CFBundleCopyInfoDictionaryForURL(CFURLRef url);
+
+
+
+
+
+extern
+CFArrayRef CFBundleCopyLocalizationsForURL(CFURLRef url);
+extern
+CFURLRef CFBundleCopyExecutableURL(CFBundleRef bundle);
+
+extern
+Boolean CFBundleIsExecutableLoaded(CFBundleRef bundle);
+
+extern
+Boolean CFBundleLoadExecutable(CFBundleRef bundle);
+
+extern
+void CFBundleUnloadExecutable(CFBundleRef bundle);
+
+extern
+void *CFBundleGetFunctionPointerForName(CFBundleRef bundle, CFStringRef functionName);
+
+extern
+void CFBundleGetFunctionPointersForNames(CFBundleRef bundle, CFArrayRef functionNames, void *ftbl[]);
+
+extern
+void *CFBundleGetDataPointerForName(CFBundleRef bundle, CFStringRef symbolName);
+
+extern
+void CFBundleGetDataPointersForNames(CFBundleRef bundle, CFArrayRef symbolNames, void *stbl[]);
+
+extern
+CFURLRef CFBundleCopyAuxiliaryExecutableURL(CFBundleRef bundle, CFStringRef executableName);
+extern
+CFPlugInRef CFBundleGetPlugIn(CFBundleRef bundle);
+
+
+
+extern
+short CFBundleOpenBundleResourceMap(CFBundleRef bundle);
+
+
+
+
+
+
+extern
+SInt32 CFBundleOpenBundleResourceFiles(CFBundleRef bundle, short *refNum, short *localizedRefNum);
+
+
+
+extern
+void CFBundleCloseBundleResourceMap(CFBundleRef bundle, short refNum);
+
+
+}
+extern "C" {
+
+
+typedef enum __CFByteOrder {
+    CFByteOrderUnknown,
+    CFByteOrderLittleEndian,
+    CFByteOrderBigEndian
+} CFByteOrder;
+
+static __inline__ CFByteOrder CFByteOrderGetCurrent(void) {
+    uint32_t x = (CFByteOrderBigEndian << 24) | CFByteOrderLittleEndian;
+    return (CFByteOrder)*((UInt8 *)&x);
+}
+
+static __inline__ uint16_t CFSwapInt16(uint16_t arg) {
+
+
+
+
+
+    uint16_t result;
+    __asm__ volatile("lhbrx %0, 0, %1" : "=r" (result) : "r" (&arg) : "r0");
+    return result;
+}
+
+static __inline__ uint32_t CFSwapInt32(uint32_t arg) {
+
+
+
+
+
+    uint32_t result;
+    __asm__ volatile("lwbrx %0, 0, %1" : "=r" (result) : "r" (&arg) : "r0");
+    return result;
+}
+
+static __inline__ uint64_t CFSwapInt64(uint64_t arg) {
+    union CFSwap {
+        uint64_t sv;
+        UInt8 uc[8];
+    } result, *argp = (union CFSwap *)&arg;
+    result.uc[0] = argp->uc[7];
+    result.uc[1] = argp->uc[6];
+    result.uc[2] = argp->uc[5];
+    result.uc[3] = argp->uc[4];
+    result.uc[4] = argp->uc[3];
+    result.uc[5] = argp->uc[2];
+    result.uc[6] = argp->uc[1];
+    result.uc[7] = argp->uc[0];
+    return result.sv;
+
+}
+
+static __inline__ uint16_t CFSwapInt16BigToHost(uint16_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint32_t CFSwapInt32BigToHost(uint32_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint64_t CFSwapInt64BigToHost(uint64_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint16_t CFSwapInt16HostToBig(uint16_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint32_t CFSwapInt32HostToBig(uint32_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint64_t CFSwapInt64HostToBig(uint64_t arg) {
+
+    return arg;
+
+
+
+}
+
+static __inline__ uint16_t CFSwapInt16LittleToHost(uint16_t arg) {
+
+
+
+    return CFSwapInt16(arg);
+
+}
+
+static __inline__ uint32_t CFSwapInt32LittleToHost(uint32_t arg) {
+
+
+
+    return CFSwapInt32(arg);
+
+}
+
+static __inline__ uint64_t CFSwapInt64LittleToHost(uint64_t arg) {
+
+
+
+    return CFSwapInt64(arg);
+
+}
+
+static __inline__ uint16_t CFSwapInt16HostToLittle(uint16_t arg) {
+
+
+
+    return CFSwapInt16(arg);
+
+}
+
+static __inline__ uint32_t CFSwapInt32HostToLittle(uint32_t arg) {
+
+
+
+    return CFSwapInt32(arg);
+
+}
+
+static __inline__ uint64_t CFSwapInt64HostToLittle(uint64_t arg) {
+
+
+
+    return CFSwapInt64(arg);
+
+}
+
+typedef struct {uint32_t v;} CFSwappedFloat32;
+typedef struct {uint64_t v;} CFSwappedFloat64;
+
+static __inline__ CFSwappedFloat32 CFConvertFloat32HostToSwapped(Float32 arg) {
+    union CFSwap {
+        Float32 v;
+        CFSwappedFloat32 sv;
+    } result;
+    result.v = arg;
+
+
+
+    return result.sv;
+}
+
+static __inline__ Float32 CFConvertFloat32SwappedToHost(CFSwappedFloat32 arg) {
+    union CFSwap {
+        Float32 v;
+        CFSwappedFloat32 sv;
+    } result;
+    result.sv = arg;
+
+
+
+    return result.v;
+}
+
+static __inline__ CFSwappedFloat64 CFConvertFloat64HostToSwapped(Float64 arg) {
+    union CFSwap {
+        Float64 v;
+        CFSwappedFloat64 sv;
+    } result;
+    result.v = arg;
+
+
+
+    return result.sv;
+}
+
+static __inline__ Float64 CFConvertFloat64SwappedToHost(CFSwappedFloat64 arg) {
+    union CFSwap {
+        Float64 v;
+        CFSwappedFloat64 sv;
+    } result;
+    result.sv = arg;
+
+
+
+    return result.v;
+}
+
+static __inline__ CFSwappedFloat32 CFConvertFloatHostToSwapped(float arg) {
+    union CFSwap {
+        float v;
+        CFSwappedFloat32 sv;
+    } result;
+    result.v = arg;
+
+
+
+    return result.sv;
+}
+
+static __inline__ float CFConvertFloatSwappedToHost(CFSwappedFloat32 arg) {
+    union CFSwap {
+        float v;
+        CFSwappedFloat32 sv;
+    } result;
+    result.sv = arg;
+
+
+
+    return result.v;
+}
+
+static __inline__ CFSwappedFloat64 CFConvertDoubleHostToSwapped(double arg) {
+    union CFSwap {
+        double v;
+        CFSwappedFloat64 sv;
+    } result;
+    result.v = arg;
+
+
+
+    return result.sv;
+}
+
+static __inline__ double CFConvertDoubleSwappedToHost(CFSwappedFloat64 arg) {
+    union CFSwap {
+        double v;
+        CFSwappedFloat64 sv;
+    } result;
+    result.sv = arg;
+
+
+
+    return result.v;
+}
+
+
+}
+extern "C" {
+
+
+typedef const struct __CFUUID * CFUUIDRef;
+
+typedef struct {
+    UInt8 byte0;
+    UInt8 byte1;
+    UInt8 byte2;
+    UInt8 byte3;
+    UInt8 byte4;
+    UInt8 byte5;
+    UInt8 byte6;
+    UInt8 byte7;
+    UInt8 byte8;
+    UInt8 byte9;
+    UInt8 byte10;
+    UInt8 byte11;
+    UInt8 byte12;
+    UInt8 byte13;
+    UInt8 byte14;
+    UInt8 byte15;
+} CFUUIDBytes;
+
+
+
+
+
+
+extern
+CFTypeID CFUUIDGetTypeID(void);
+
+extern
+CFUUIDRef CFUUIDCreate(CFAllocatorRef alloc);
+
+
+extern
+CFUUIDRef CFUUIDCreateWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15);
+
+
+extern
+CFUUIDRef CFUUIDCreateFromString(CFAllocatorRef alloc, CFStringRef uuidStr);
+
+
+extern
+CFStringRef CFUUIDCreateString(CFAllocatorRef alloc, CFUUIDRef uuid);
+
+
+extern
+CFUUIDRef CFUUIDGetConstantUUIDWithBytes(CFAllocatorRef alloc, UInt8 byte0, UInt8 byte1, UInt8 byte2, UInt8 byte3, UInt8 byte4, UInt8 byte5, UInt8 byte6, UInt8 byte7, UInt8 byte8, UInt8 byte9, UInt8 byte10, UInt8 byte11, UInt8 byte12, UInt8 byte13, UInt8 byte14, UInt8 byte15);
+
+
+extern
+CFUUIDBytes CFUUIDGetUUIDBytes(CFUUIDRef uuid);
+
+extern
+CFUUIDRef CFUUIDCreateFromUUIDBytes(CFAllocatorRef alloc, CFUUIDBytes bytes);
+
+
+}
+
+
+extern "C" {
+
+
+
+
+extern
+const CFStringRef kCFPlugInDynamicRegistrationKey;
+extern
+const CFStringRef kCFPlugInDynamicRegisterFunctionKey;
+extern
+const CFStringRef kCFPlugInUnloadFunctionKey;
+extern
+const CFStringRef kCFPlugInFactoriesKey;
+extern
+const CFStringRef kCFPlugInTypesKey;
+
+
+
+
+typedef void (*CFPlugInDynamicRegisterFunction)(CFPlugInRef plugIn);
+typedef void (*CFPlugInUnloadFunction)(CFPlugInRef plugIn);
+typedef void *(*CFPlugInFactoryFunction)(CFAllocatorRef allocator, CFUUIDRef typeUUID);
+
+
+
+extern
+UInt32 CFPlugInGetTypeID(void);
+
+extern
+CFPlugInRef CFPlugInCreate(CFAllocatorRef allocator, CFURLRef plugInURL);
+
+
+extern
+CFBundleRef CFPlugInGetBundle(CFPlugInRef plugIn);
+
+
+
+
+
+
+
+extern
+void CFPlugInSetLoadOnDemand(CFPlugInRef plugIn, Boolean flag);
+
+extern
+Boolean CFPlugInIsLoadOnDemand(CFPlugInRef plugIn);
+
+
+
+
+
+extern
+CFArrayRef CFPlugInFindFactoriesForPlugInType(CFUUIDRef typeUUID);
+
+
+extern
+CFArrayRef CFPlugInFindFactoriesForPlugInTypeInPlugIn(CFUUIDRef typeUUID, CFPlugInRef plugIn);
+
+
+extern
+void *CFPlugInInstanceCreate(CFAllocatorRef allocator, CFUUIDRef factoryUUID, CFUUIDRef typeUUID);
+
+
+
+
+
+
+extern
+Boolean CFPlugInRegisterFactoryFunction(CFUUIDRef factoryUUID, CFPlugInFactoryFunction func);
+
+extern
+Boolean CFPlugInRegisterFactoryFunctionByName(CFUUIDRef factoryUUID, CFPlugInRef plugIn, CFStringRef functionName);
+
+extern
+Boolean CFPlugInUnregisterFactory(CFUUIDRef factoryUUID);
+
+extern
+Boolean CFPlugInRegisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID);
+
+extern
+Boolean CFPlugInUnregisterPlugInType(CFUUIDRef factoryUUID, CFUUIDRef typeUUID);
+
+
+
+
+
+extern
+void CFPlugInAddInstanceForFactory(CFUUIDRef factoryID);
+
+extern
+void CFPlugInRemoveInstanceForFactory(CFUUIDRef factoryID);
+
+
+
+
+typedef struct __CFPlugInInstance *CFPlugInInstanceRef;
+
+typedef Boolean (*CFPlugInInstanceGetInterfaceFunction)(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl);
+typedef void (*CFPlugInInstanceDeallocateInstanceDataFunction)(void *instanceData);
+
+extern
+Boolean CFPlugInInstanceGetInterfaceFunctionTable(CFPlugInInstanceRef instance, CFStringRef interfaceName, void **ftbl);
+extern
+CFStringRef CFPlugInInstanceGetFactoryName(CFPlugInInstanceRef instance);
+extern
+void *CFPlugInInstanceGetInstanceData(CFPlugInInstanceRef instance);
+extern
+UInt32 CFPlugInInstanceGetTypeID(void);
+extern
+CFPlugInInstanceRef CFPlugInInstanceCreateWithInstanceDataSize(CFAllocatorRef allocator, CFIndex instanceDataSize, CFPlugInInstanceDeallocateInstanceDataFunction deallocateInstanceFunction, CFStringRef factoryName, CFPlugInInstanceGetInterfaceFunction getInterfaceFunction);
+
+
+}
+extern "C" {
+extern
+Boolean CFURLCreateDataAndPropertiesFromResource(CFAllocatorRef alloc, CFURLRef url, CFDataRef *resourceData, CFDictionaryRef *properties, CFArrayRef desiredProperties, SInt32 *errorCode);
+extern
+Boolean CFURLWriteDataAndPropertiesToResource(CFURLRef url, CFDataRef dataToWrite, CFDictionaryRef propertiesToWrite, SInt32 *errorCode);
+
+
+
+extern
+Boolean CFURLDestroyResource(CFURLRef url, SInt32 *errorCode);
+
+
+
+extern
+CFTypeRef CFURLCreatePropertyFromResource(CFAllocatorRef alloc, CFURLRef url, CFStringRef property, SInt32 *errorCode);
+
+
+typedef enum {
+    kCFURLUnknownError = -10,
+    kCFURLUnknownSchemeError = -11,
+    kCFURLResourceNotFoundError = -12,
+    kCFURLResourceAccessViolationError = -13,
+    kCFURLRemoteHostUnavailableError = -14,
+    kCFURLImproperArgumentsError = -15,
+    kCFURLUnknownPropertyKeyError = -16,
+    kCFURLPropertyKeyUnavailableError = -17,
+    kCFURLTimeoutError = -18
+} CFURLError;
+
+
+
+extern
+const CFStringRef kCFURLFileExists;
+extern
+const CFStringRef kCFURLFileDirectoryContents;
+extern
+const CFStringRef kCFURLFileLength;
+extern
+const CFStringRef kCFURLFileLastModificationTime;
+extern
+const CFStringRef kCFURLFilePOSIXMode;
+extern
+const CFStringRef kCFURLFileOwnerID;
+extern
+const CFStringRef kCFURLHTTPStatusCode;
+extern
+const CFStringRef kCFURLHTTPStatusLine;
+}
+
+
+
+extern "C" {
+
+
+typedef struct __CFMachPort * CFMachPortRef;
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFMachPortContext;
+
+typedef void (*CFMachPortCallBack)(CFMachPortRef port, void *msg, CFIndex size, void *info);
+typedef void (*CFMachPortInvalidationCallBack)(CFMachPortRef port, void *info);
+
+extern CFTypeID CFMachPortGetTypeID(void);
+
+extern CFMachPortRef CFMachPortCreate(CFAllocatorRef allocator, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo);
+extern CFMachPortRef CFMachPortCreateWithPort(CFAllocatorRef allocator, mach_port_t portNum, CFMachPortCallBack callout, CFMachPortContext *context, Boolean *shouldFreeInfo);
+
+extern mach_port_t CFMachPortGetPort(CFMachPortRef port);
+extern void CFMachPortGetContext(CFMachPortRef port, CFMachPortContext *context);
+extern void CFMachPortInvalidate(CFMachPortRef port);
+extern Boolean CFMachPortIsValid(CFMachPortRef port);
+extern CFMachPortInvalidationCallBack CFMachPortGetInvalidationCallBack(CFMachPortRef port);
+extern void CFMachPortSetInvalidationCallBack(CFMachPortRef port, CFMachPortInvalidationCallBack callout);
+
+extern CFRunLoopSourceRef CFMachPortCreateRunLoopSource(CFAllocatorRef allocator, CFMachPortRef port, CFIndex order);
+
+
+}
+extern "C" {
+
+
+typedef struct __CFMessagePort * CFMessagePortRef;
+
+enum {
+    kCFMessagePortSuccess = 0,
+    kCFMessagePortSendTimeout = -1,
+    kCFMessagePortReceiveTimeout = -2,
+    kCFMessagePortIsInvalid = -3,
+    kCFMessagePortTransportError = -4
+};
+
+typedef struct {
+    CFIndex version;
+    void * info;
+    const void *(*retain)(const void *info);
+    void (*release)(const void *info);
+    CFStringRef (*copyDescription)(const void *info);
+} CFMessagePortContext;
+
+typedef CFDataRef (*CFMessagePortCallBack)(CFMessagePortRef local, SInt32 msgid, CFDataRef data, void *info);
+
+typedef void (*CFMessagePortInvalidationCallBack)(CFMessagePortRef ms, void *info);
+
+extern CFTypeID CFMessagePortGetTypeID(void);
+
+extern CFMessagePortRef CFMessagePortCreateLocal(CFAllocatorRef allocator, CFStringRef name, CFMessagePortCallBack callout, CFMessagePortContext *context, Boolean *shouldFreeInfo);
+extern CFMessagePortRef CFMessagePortCreateRemote(CFAllocatorRef allocator, CFStringRef name);
+
+extern Boolean CFMessagePortIsRemote(CFMessagePortRef ms);
+extern CFStringRef CFMessagePortGetName(CFMessagePortRef ms);
+extern Boolean CFMessagePortSetName(CFMessagePortRef ms, CFStringRef newName);
+extern void CFMessagePortGetContext(CFMessagePortRef ms, CFMessagePortContext *context);
+extern void CFMessagePortInvalidate(CFMessagePortRef ms);
+extern Boolean CFMessagePortIsValid(CFMessagePortRef ms);
+extern CFMessagePortInvalidationCallBack CFMessagePortGetInvalidationCallBack(CFMessagePortRef ms);
+extern void CFMessagePortSetInvalidationCallBack(CFMessagePortRef ms, CFMessagePortInvalidationCallBack callout);
+
+
+extern SInt32 CFMessagePortSendRequest(CFMessagePortRef remote, SInt32 msgid, CFDataRef data, CFTimeInterval sendTimeout, CFTimeInterval rcvTimeout, CFStringRef replyMode, CFDataRef *returnData);
+
+extern CFRunLoopSourceRef CFMessagePortCreateRunLoopSource(CFAllocatorRef allocator, CFMessagePortRef local, CFIndex order);
+
+
+}
+
+
+
+
+
+
+extern "C" {
+
+
+typedef struct __CFNotificationCenter * CFNotificationCenterRef;
+
+typedef void (*CFNotificationCallback)(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo);
+
+typedef enum {
+    CFNotificationSuspensionBehaviorDrop = 1,
+
+    CFNotificationSuspensionBehaviorCoalesce = 2,
+
+    CFNotificationSuspensionBehaviorHold = 3,
+
+    CFNotificationSuspensionBehaviorDeliverImmediately = 4
+
+} CFNotificationSuspensionBehavior;
+
+extern CFTypeID CFNotificationCenterGetTypeID(void);
+
+
+extern CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);
+
+
+extern void CFNotificationCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior);
+
+extern void CFNotificationCenterRemoveObserver(CFNotificationCenterRef center, const void *observer, CFStringRef name, const void *object);
+extern void CFNotificationCenterRemoveEveryObserver(CFNotificationCenterRef center, const void *observer);
+
+
+extern void CFNotificationCenterPostNotification(CFNotificationCenterRef center, CFStringRef name, const void *object, CFDictionaryRef userInfo, Boolean deliverImmediately);
+
+
+}
+extern "C" {
+
+
+extern
+const CFStringRef kCFPreferencesAnyApplication;
+extern
+const CFStringRef kCFPreferencesCurrentApplication;
+extern
+const CFStringRef kCFPreferencesAnyHost;
+extern
+const CFStringRef kCFPreferencesCurrentHost;
+extern
+const CFStringRef kCFPreferencesAnyUser;
+extern
+const CFStringRef kCFPreferencesCurrentUser;
+extern
+CFPropertyListRef CFPreferencesCopyAppValue(CFStringRef key, CFStringRef applicationID);
+
+
+
+
+extern
+Boolean CFPreferencesGetAppBooleanValue(CFStringRef key, CFStringRef applicationID, Boolean *keyExistsAndHasValidFormat);
+
+
+
+
+extern
+CFIndex CFPreferencesGetAppIntegerValue(CFStringRef key, CFStringRef applicationID, Boolean *keyExistsAndHasValidFormat);
+
+
+
+
+extern
+void CFPreferencesSetAppValue(CFStringRef key, CFPropertyListRef value, CFStringRef applicationID);
+
+
+
+
+
+extern
+void CFPreferencesAddSuitePreferencesToApp(CFStringRef applicationID, CFStringRef suiteID);
+
+extern
+void CFPreferencesRemoveSuitePreferencesFromApp(CFStringRef applicationID, CFStringRef suiteID);
+
+
+
+extern
+Boolean CFPreferencesAppSynchronize(CFStringRef applicationID);
+
+
+
+
+
+extern
+CFPropertyListRef CFPreferencesCopyValue(CFStringRef key, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+
+
+
+
+extern
+CFDictionaryRef CFPreferencesCopyMultiple(CFArrayRef keysToFetch, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+
+
+extern
+void CFPreferencesSetValue(CFStringRef key, CFPropertyListRef value, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+
+
+extern
+void CFPreferencesSetMultiple(CFDictionaryRef keysToSet, CFArrayRef keysToRemove, CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+extern
+Boolean CFPreferencesSynchronize(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+
+
+
+
+extern
+CFArrayRef CFPreferencesCopyApplicationList(CFStringRef userName, CFStringRef hostName);
+
+
+
+
+extern
+CFArrayRef CFPreferencesCopyKeyList(CFStringRef applicationID, CFStringRef userName, CFStringRef hostName);
+
+
+
+
+
+
+
+extern
+Boolean CFPreferencesAppValueIsForced(CFStringRef key, CFStringRef applicationID);
+
+
+
+
+}
+
+extern "C" {
+
+
+typedef enum {
+
+    kCFStringEncodingMacJapanese = 1,
+    kCFStringEncodingMacChineseTrad = 2,
+    kCFStringEncodingMacKorean = 3,
+    kCFStringEncodingMacArabic = 4,
+    kCFStringEncodingMacHebrew = 5,
+    kCFStringEncodingMacGreek = 6,
+    kCFStringEncodingMacCyrillic = 7,
+    kCFStringEncodingMacDevanagari = 9,
+    kCFStringEncodingMacGurmukhi = 10,
+    kCFStringEncodingMacGujarati = 11,
+    kCFStringEncodingMacOriya = 12,
+    kCFStringEncodingMacBengali = 13,
+    kCFStringEncodingMacTamil = 14,
+    kCFStringEncodingMacTelugu = 15,
+    kCFStringEncodingMacKannada = 16,
+    kCFStringEncodingMacMalayalam = 17,
+    kCFStringEncodingMacSinhalese = 18,
+    kCFStringEncodingMacBurmese = 19,
+    kCFStringEncodingMacKhmer = 20,
+    kCFStringEncodingMacThai = 21,
+    kCFStringEncodingMacLaotian = 22,
+    kCFStringEncodingMacGeorgian = 23,
+    kCFStringEncodingMacArmenian = 24,
+    kCFStringEncodingMacChineseSimp = 25,
+    kCFStringEncodingMacTibetan = 26,
+    kCFStringEncodingMacMongolian = 27,
+    kCFStringEncodingMacEthiopic = 28,
+    kCFStringEncodingMacCentralEurRoman = 29,
+    kCFStringEncodingMacVietnamese = 30,
+    kCFStringEncodingMacExtArabic = 31,
+
+    kCFStringEncodingMacSymbol = 33,
+    kCFStringEncodingMacDingbats = 34,
+    kCFStringEncodingMacTurkish = 35,
+    kCFStringEncodingMacCroatian = 36,
+    kCFStringEncodingMacIcelandic = 37,
+    kCFStringEncodingMacRomanian = 38,
+    kCFStringEncodingMacCeltic = 39,
+    kCFStringEncodingMacGaelic = 40,
+
+    kCFStringEncodingMacFarsi = 0x8C,
+
+    kCFStringEncodingMacUkrainian = 0x98,
+
+    kCFStringEncodingMacInuit = 0xEC,
+    kCFStringEncodingMacVT100 = 0xFC,
+
+    kCFStringEncodingMacHFS = 0xFF,
+
+
+
+
+
+
+    kCFStringEncodingISOLatin2 = 0x0202,
+    kCFStringEncodingISOLatin3 = 0x0203,
+    kCFStringEncodingISOLatin4 = 0x0204,
+    kCFStringEncodingISOLatinCyrillic = 0x0205,
+    kCFStringEncodingISOLatinArabic = 0x0206,
+    kCFStringEncodingISOLatinGreek = 0x0207,
+    kCFStringEncodingISOLatinHebrew = 0x0208,
+    kCFStringEncodingISOLatin5 = 0x0209,
+    kCFStringEncodingISOLatin6 = 0x020A,
+    kCFStringEncodingISOLatinThai = 0x020B,
+    kCFStringEncodingISOLatin7 = 0x020D,
+    kCFStringEncodingISOLatin8 = 0x020E,
+    kCFStringEncodingISOLatin9 = 0x020F,
+
+
+    kCFStringEncodingDOSLatinUS = 0x0400,
+    kCFStringEncodingDOSGreek = 0x0405,
+    kCFStringEncodingDOSBalticRim = 0x0406,
+    kCFStringEncodingDOSLatin1 = 0x0410,
+    kCFStringEncodingDOSGreek1 = 0x0411,
+    kCFStringEncodingDOSLatin2 = 0x0412,
+    kCFStringEncodingDOSCyrillic = 0x0413,
+    kCFStringEncodingDOSTurkish = 0x0414,
+    kCFStringEncodingDOSPortuguese = 0x0415,
+    kCFStringEncodingDOSIcelandic = 0x0416,
+    kCFStringEncodingDOSHebrew = 0x0417,
+    kCFStringEncodingDOSCanadianFrench = 0x0418,
+    kCFStringEncodingDOSArabic = 0x0419,
+    kCFStringEncodingDOSNordic = 0x041A,
+    kCFStringEncodingDOSRussian = 0x041B,
+    kCFStringEncodingDOSGreek2 = 0x041C,
+    kCFStringEncodingDOSThai = 0x041D,
+    kCFStringEncodingDOSJapanese = 0x0420,
+    kCFStringEncodingDOSChineseSimplif = 0x0421,
+    kCFStringEncodingDOSKorean = 0x0422,
+    kCFStringEncodingDOSChineseTrad = 0x0423,
+
+    kCFStringEncodingWindowsLatin2 = 0x0501,
+    kCFStringEncodingWindowsCyrillic = 0x0502,
+    kCFStringEncodingWindowsGreek = 0x0503,
+    kCFStringEncodingWindowsLatin5 = 0x0504,
+    kCFStringEncodingWindowsHebrew = 0x0505,
+    kCFStringEncodingWindowsArabic = 0x0506,
+    kCFStringEncodingWindowsBalticRim = 0x0507,
+    kCFStringEncodingWindowsKoreanJohab = 0x0510,
+    kCFStringEncodingWindowsVietnamese = 0x0508,
+
+
+
+    kCFStringEncodingJIS_X0201_76 = 0x0620,
+    kCFStringEncodingJIS_X0208_83 = 0x0621,
+    kCFStringEncodingJIS_X0208_90 = 0x0622,
+    kCFStringEncodingJIS_X0212_90 = 0x0623,
+    kCFStringEncodingJIS_C6226_78 = 0x0624,
+    kCFStringEncodingShiftJIS_X0213_00 = 0x0628,
+    kCFStringEncodingGB_2312_80 = 0x0630,
+    kCFStringEncodingGBK_95 = 0x0631,
+    kCFStringEncodingGB_18030_2000 = 0x0632,
+    kCFStringEncodingKSC_5601_87 = 0x0640,
+    kCFStringEncodingKSC_5601_92_Johab = 0x0641,
+    kCFStringEncodingCNS_11643_92_P1 = 0x0651,
+    kCFStringEncodingCNS_11643_92_P2 = 0x0652,
+    kCFStringEncodingCNS_11643_92_P3 = 0x0653,
+
+
+    kCFStringEncodingISO_2022_JP = 0x0820,
+    kCFStringEncodingISO_2022_JP_2 = 0x0821,
+    kCFStringEncodingISO_2022_JP_1 = 0x0822,
+    kCFStringEncodingISO_2022_JP_3 = 0x0823,
+    kCFStringEncodingISO_2022_CN = 0x0830,
+    kCFStringEncodingISO_2022_CN_EXT = 0x0831,
+    kCFStringEncodingISO_2022_KR = 0x0840,
+
+
+    kCFStringEncodingEUC_JP = 0x0920,
+    kCFStringEncodingEUC_CN = 0x0930,
+    kCFStringEncodingEUC_TW = 0x0931,
+    kCFStringEncodingEUC_KR = 0x0940,
+
+
+    kCFStringEncodingShiftJIS = 0x0A01,
+    kCFStringEncodingKOI8_R = 0x0A02,
+    kCFStringEncodingBig5 = 0x0A03,
+    kCFStringEncodingMacRomanLatin1 = 0x0A04,
+    kCFStringEncodingHZ_GB_2312 = 0x0A05,
+    kCFStringEncodingBig5_HKSCS_1999 = 0x0A06,
+
+
+
+
+
+    kCFStringEncodingEBCDIC_US = 0x0C01,
+    kCFStringEncodingEBCDIC_CP037 = 0x0C02
+} CFStringEncodings;
+
+
+}
+extern "C" {
+
+
+typedef struct __CFUserNotification * CFUserNotificationRef;
+typedef void (*CFUserNotificationCallBack)(CFUserNotificationRef userNotification, CFOptionFlags responseFlags);
+
+extern
+CFTypeID CFUserNotificationGetTypeID(void);
+
+extern
+CFUserNotificationRef CFUserNotificationCreate(CFAllocatorRef allocator, CFTimeInterval timeout, CFOptionFlags flags, SInt32 *error, CFDictionaryRef dictionary);
+
+extern
+SInt32 CFUserNotificationReceiveResponse(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags *responseFlags);
+
+extern
+CFStringRef CFUserNotificationGetResponseValue(CFUserNotificationRef userNotification, CFStringRef key, CFIndex idx);
+
+extern
+CFDictionaryRef CFUserNotificationGetResponseDictionary(CFUserNotificationRef userNotification);
+
+extern
+SInt32 CFUserNotificationUpdate(CFUserNotificationRef userNotification, CFTimeInterval timeout, CFOptionFlags flags, CFDictionaryRef dictionary);
+
+extern
+SInt32 CFUserNotificationCancel(CFUserNotificationRef userNotification);
+
+extern
+CFRunLoopSourceRef CFUserNotificationCreateRunLoopSource(CFAllocatorRef allocator, CFUserNotificationRef userNotification, CFUserNotificationCallBack callout, CFIndex order);
+
+
+
+
+extern
+SInt32 CFUserNotificationDisplayNotice(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle);
+
+extern
+SInt32 CFUserNotificationDisplayAlert(CFTimeInterval timeout, CFOptionFlags flags, CFURLRef iconURL, CFURLRef soundURL, CFURLRef localizationURL, CFStringRef alertHeader, CFStringRef alertMessage, CFStringRef defaultButtonTitle, CFStringRef alternateButtonTitle, CFStringRef otherButtonTitle, CFOptionFlags *responseFlags);
+
+
+
+
+enum {
+    kCFUserNotificationStopAlertLevel = 0,
+    kCFUserNotificationNoteAlertLevel = 1,
+    kCFUserNotificationCautionAlertLevel = 2,
+    kCFUserNotificationPlainAlertLevel = 3
+};
+
+enum {
+    kCFUserNotificationDefaultResponse = 0,
+    kCFUserNotificationAlternateResponse = 1,
+    kCFUserNotificationOtherResponse = 2,
+    kCFUserNotificationCancelResponse = 3
+};
+
+enum {
+    kCFUserNotificationNoDefaultButtonFlag = (1 << 5),
+    kCFUserNotificationUseRadioButtonsFlag = (1 << 6)
+};
+
+static __inline__ CFOptionFlags CFUserNotificationCheckBoxChecked(CFIndex i) {return (1 << (8 + i));}
+static __inline__ CFOptionFlags CFUserNotificationSecureTextField(CFIndex i) {return (1 << (16 + i));}
+static __inline__ CFOptionFlags CFUserNotificationPopUpSelection(CFIndex n) {return (n << 24);}
+
+
+
+
+extern
+const CFStringRef kCFUserNotificationIconURLKey;
+
+extern
+const CFStringRef kCFUserNotificationSoundURLKey;
+
+extern
+const CFStringRef kCFUserNotificationLocalizationURLKey;
+
+extern
+const CFStringRef kCFUserNotificationAlertHeaderKey;
+
+extern
+const CFStringRef kCFUserNotificationAlertMessageKey;
+
+extern
+const CFStringRef kCFUserNotificationDefaultButtonTitleKey;
+
+extern
+const CFStringRef kCFUserNotificationAlternateButtonTitleKey;
+
+extern
+const CFStringRef kCFUserNotificationOtherButtonTitleKey;
+
+extern
+const CFStringRef kCFUserNotificationProgressIndicatorValueKey;
+
+extern
+const CFStringRef kCFUserNotificationPopUpTitlesKey;
+
+extern
+const CFStringRef kCFUserNotificationTextFieldTitlesKey;
+
+extern
+const CFStringRef kCFUserNotificationCheckBoxTitlesKey;
+
+extern
+const CFStringRef kCFUserNotificationTextFieldValuesKey;
+
+
+}
+
+
+enum {
+  kClippingCreator = 'drag',
+  kClippingPictureType = 'clpp',
+  kClippingTextType = 'clpt',
+  kClippingSoundType = 'clps',
+  kClippingUnknownType = 'clpu'
+};
+
+
+
+enum {
+  kInternetLocationCreator = 'drag',
+  kInternetLocationHTTP = 'ilht',
+  kInternetLocationFTP = 'ilft',
+  kInternetLocationFile = 'ilfi',
+  kInternetLocationMail = 'ilma',
+  kInternetLocationNNTP = 'ilnw',
+  kInternetLocationAFP = 'ilaf',
+  kInternetLocationAppleTalk = 'ilat',
+  kInternetLocationNSL = 'ilns',
+  kInternetLocationGeneric = 'ilge'
+};
+
+
+
+enum {
+  kCustomIconResource = -16455
+};
+
+
+
+
+
+
+enum {
+  kCustomBadgeResourceType = 'badg',
+  kCustomBadgeResourceID = kCustomIconResource,
+  kCustomBadgeResourceVersion = 0
+};
+
+struct CustomBadgeResource {
+  SInt16 version;
+  SInt16 customBadgeResourceID;
+
+  OSType customBadgeType;
+  OSType customBadgeCreator;
+  OSType windowBadgeType;
+  OSType windowBadgeCreator;
+
+  OSType overrideType;
+  OSType overrideCreator;
+};
+typedef struct CustomBadgeResource CustomBadgeResource;
+typedef CustomBadgeResource * CustomBadgeResourcePtr;
+typedef CustomBadgeResourcePtr * CustomBadgeResourceHandle;
+enum {
+  kRoutingResourceType = 'rout',
+  kRoutingResourceID = 0
+};
+
+struct RoutingResourceEntry {
+  OSType creator;
+  OSType fileType;
+  OSType targetFolder;
+  OSType destinationFolder;
+  OSType reservedField;
+};
+typedef struct RoutingResourceEntry RoutingResourceEntry;
+typedef RoutingResourceEntry * RoutingResourcePtr;
+typedef RoutingResourcePtr * RoutingResourceHandle;
+
+
+enum {
+  kContainerFolderAliasType = 'fdrp',
+  kContainerTrashAliasType = 'trsh',
+  kContainerHardDiskAliasType = 'hdsk',
+  kContainerFloppyAliasType = 'flpy',
+  kContainerServerAliasType = 'srvr',
+  kApplicationAliasType = 'adrp',
+  kContainerAliasType = 'drop',
+  kDesktopPrinterAliasType = 'dtpa',
+  kContainerCDROMAliasType = 'cddr',
+  kApplicationCPAliasType = 'acdp',
+  kApplicationDAAliasType = 'addp',
+  kPackageAliasType = 'fpka',
+  kAppPackageAliasType = 'fapa'
+};
+
+
+enum {
+  kSystemFolderAliasType = 'fasy',
+  kAppleMenuFolderAliasType = 'faam',
+  kStartupFolderAliasType = 'fast',
+  kPrintMonitorDocsFolderAliasType = 'fapn',
+  kPreferencesFolderAliasType = 'fapf',
+  kControlPanelFolderAliasType = 'fact',
+  kExtensionFolderAliasType = 'faex'
+};
+
+
+enum {
+  kExportedFolderAliasType = 'faet',
+  kDropFolderAliasType = 'fadr',
+  kSharedFolderAliasType = 'fash',
+  kMountedFolderAliasType = 'famn'
+};
+
+
+
+
+
+enum {
+  kIsOnDesk = 0x0001,
+  kColor = 0x000E,
+
+  kIsShared = 0x0040,
+
+
+
+  kHasNoINITs = 0x0080,
+
+  kHasBeenInited = 0x0100,
+
+
+
+
+
+  kHasCustomIcon = 0x0400,
+  kIsStationery = 0x0800,
+  kNameLocked = 0x1000,
+  kHasBundle = 0x2000,
+  kIsInvisible = 0x4000,
+  kIsAlias = 0x8000
+};
+
+
+enum {
+  fOnDesk = kIsOnDesk,
+  fHasBundle = kHasBundle,
+  fInvisible = kIsInvisible
+};
+
+
+enum {
+  fTrash = -3,
+  fDesktop = -2,
+  fDisk = 0
+};
+enum {
+  kExtendedFlagsAreInvalid = 0x8000,
+  kExtendedFlagHasCustomBadge = 0x0100,
+  kExtendedFlagHasRoutingInfo = 0x0004
+};
+enum {
+  kFirstMagicBusyFiletype = 'bzy ',
+  kLastMagicBusyFiletype = 'bzy?'
+};
+
+
+
+
+
+
+enum {
+  kMagicBusyCreationDate = 0x4F3AFDB0
+};
+struct FileInfo {
+  OSType fileType;
+  OSType fileCreator;
+  UInt16 finderFlags;
+  Point location;
+
+  UInt16 reservedField;
+};
+typedef struct FileInfo FileInfo;
+struct FolderInfo {
+  Rect windowBounds;
+  UInt16 finderFlags;
+  Point location;
+
+  UInt16 reservedField;
+};
+typedef struct FolderInfo FolderInfo;
+struct ExtendedFileInfo {
+  SInt16 reserved1[4];
+  UInt16 extendedFinderFlags;
+  SInt16 reserved2;
+  SInt32 putAwayFolderID;
+};
+typedef struct ExtendedFileInfo ExtendedFileInfo;
+struct ExtendedFolderInfo {
+  Point scrollPosition;
+  SInt32 reserved1;
+  UInt16 extendedFinderFlags;
+  SInt16 reserved2;
+  SInt32 putAwayFolderID;
+};
+typedef struct ExtendedFolderInfo ExtendedFolderInfo;
+struct FInfo {
+  OSType fdType;
+  OSType fdCreator;
+  UInt16 fdFlags;
+  Point fdLocation;
+
+  SInt16 fdFldr;
+};
+typedef struct FInfo FInfo;
+
+
+
+
+
+
+
+struct FXInfo {
+  SInt16 fdIconID;
+  SInt16 fdReserved[3];
+  SInt8 fdScript;
+  SInt8 fdXFlags;
+  SInt16 fdComment;
+  SInt32 fdPutAway;
+};
+typedef struct FXInfo FXInfo;
+
+
+
+
+
+
+struct DInfo {
+  Rect frRect;
+  UInt16 frFlags;
+  Point frLocation;
+
+  SInt16 frView;
+};
+typedef struct DInfo DInfo;
+
+
+
+
+
+
+
+struct DXInfo {
+  Point frScroll;
+  SInt32 frOpenChain;
+  SInt8 frScript;
+  SInt8 frXFlags;
+  SInt16 frComment;
+  SInt32 frPutAway;
+};
+typedef struct DXInfo DXInfo;
+
+
+
+
+
+extern "C" {
+extern Fixed
+FixRatio(
+  short numer,
+  short denom) ;
+extern Fixed
+FixMul(
+  Fixed a,
+  Fixed b) ;
+extern short
+FixRound(Fixed x) ;
+extern Fract
+Fix2Frac(Fixed x) ;
+extern long
+Fix2Long(Fixed x) ;
+extern Fixed
+Long2Fix(long x) ;
+extern Fixed
+Frac2Fix(Fract x) ;
+extern Fract
+FracMul(
+  Fract x,
+  Fract y) ;
+extern Fixed
+FixDiv(
+  Fixed x,
+  Fixed y) ;
+extern Fract
+FracDiv(
+  Fract x,
+  Fract y) ;
+extern Fract
+FracSqrt(Fract x) ;
+extern Fract
+FracSin(Fixed x) ;
+extern Fract
+FracCos(Fixed x) ;
+extern Fixed
+FixATan2(
+  long x,
+  long y) ;
+extern double
+Frac2X(Fract x) ;
+extern double
+Fix2X(Fixed x) ;
+extern Fixed
+X2Fix(double x) ;
+extern Fract
+X2Frac(double x) ;
+extern short
+WideCompare(
+  const wide * target,
+  const wide * source) ;
+extern wide *
+WideAdd(
+  wide * target,
+  const wide * source) ;
+extern wide *
+WideSubtract(
+  wide * target,
+  const wide * source) ;
+extern wide *
+WideNegate(wide * target) ;
+extern wide *
+WideShift(
+  wide * target,
+  long shift) ;
+extern unsigned long
+WideSquareRoot(const wide * source) ;
+extern wide *
+WideMultiply(
+  long multiplicand,
+  long multiplier,
+  wide * target) ;
+extern long
+WideDivide(
+  const wide * dividend,
+  long divisor,
+  long * remainder) ;
+extern wide *
+WideWideDivide(
+  wide * dividend,
+  long divisor,
+  long * remainder) ;
+extern wide *
+WideBitShift(
+  wide * src,
+  long shift) ;
+
+
+
+
+
+
+
+}
+
+
+
+
+enum {
+
+  itlcShowIcon = 7,
+  itlcDualCaret = 6,
+
+  itlcSysDirection = 15
+};
+
+enum {
+
+  itlcDisableKeyScriptSync = 3
+};
+
+enum {
+
+  itlcDisableKeyScriptSyncMask = 1 << itlcDisableKeyScriptSync
+};
+
+
+enum {
+  tokLeftQuote = 1,
+  tokRightQuote = 2,
+  tokLeadPlacer = 3,
+  tokLeader = 4,
+  tokNonLeader = 5,
+  tokZeroLead = 6,
+  tokPercent = 7,
+  tokPlusSign = 8,
+  tokMinusSign = 9,
+  tokThousands = 10,
+  tokReserved = 11,
+  tokSeparator = 12,
+  tokEscape = 13,
+  tokDecPoint = 14,
+  tokEPlus = 15,
+  tokEMinus = 16,
+  tokMaxSymbols = 31,
+  curNumberPartsVersion = 1
+};
+
+enum {
+  currSymLead = 16,
+  currNegSym = 32,
+  currTrailingZ = 64,
+  currLeadingZ = 128
+};
+
+enum {
+  mdy = 0,
+  dmy = 1,
+  ymd = 2,
+  myd = 3,
+  dym = 4,
+  ydm = 5
+};
+
+typedef SInt8 DateOrders;
+enum {
+  timeCycle24 = 0,
+  timeCycleZero = 1,
+  timeCycle12 = 255,
+  zeroCycle = 1,
+  longDay = 0,
+  longWeek = 1,
+  longMonth = 2,
+  longYear = 3,
+  supDay = 1,
+  supWeek = 2,
+  supMonth = 4,
+  supYear = 8,
+  dayLdingZ = 32,
+  mntLdingZ = 64,
+  century = 128,
+  secLeadingZ = 32,
+  minLeadingZ = 64,
+  hrLeadingZ = 128
+};
+
+
+struct OffPair {
+  short offFirst;
+  short offSecond;
+};
+typedef struct OffPair OffPair;
+typedef OffPair OffsetTable[3];
+struct Intl0Rec {
+  char decimalPt;
+  char thousSep;
+  char listSep;
+  char currSym1;
+  char currSym2;
+  char currSym3;
+  UInt8 currFmt;
+  UInt8 dateOrder;
+  UInt8 shrtDateFmt;
+  char dateSep;
+  UInt8 timeCycle;
+  UInt8 timeFmt;
+  char mornStr[4];
+  char eveStr[4];
+  char timeSep;
+  char time1Suff;
+  char time2Suff;
+  char time3Suff;
+  char time4Suff;
+  char time5Suff;
+  char time6Suff;
+  char time7Suff;
+  char time8Suff;
+  UInt8 metricSys;
+  short intl0Vers;
+};
+typedef struct Intl0Rec Intl0Rec;
+typedef Intl0Rec * Intl0Ptr;
+typedef Intl0Ptr * Intl0Hndl;
+struct Intl1Rec {
+  Str15 days[7];
+  Str15 months[12];
+  UInt8 suppressDay;
+  UInt8 lngDateFmt;
+  UInt8 dayLeading0;
+  UInt8 abbrLen;
+  char st0[4];
+  char st1[4];
+  char st2[4];
+  char st3[4];
+  char st4[4];
+  short intl1Vers;
+  short localRtn[1];
+};
+typedef struct Intl1Rec Intl1Rec;
+typedef Intl1Rec * Intl1Ptr;
+typedef Intl1Ptr * Intl1Hndl;
+
+struct Itl1ExtRec {
+  Intl1Rec base;
+  short version;
+  short format;
+  short calendarCode;
+  long extraDaysTableOffset;
+  long extraDaysTableLength;
+  long extraMonthsTableOffset;
+  long extraMonthsTableLength;
+  long abbrevDaysTableOffset;
+  long abbrevDaysTableLength;
+  long abbrevMonthsTableOffset;
+  long abbrevMonthsTableLength;
+  long extraSepsTableOffset;
+  long extraSepsTableLength;
+  short tables[1];
+};
+typedef struct Itl1ExtRec Itl1ExtRec;
+struct UntokenTable {
+  short len;
+  short lastToken;
+  short index[256];
+};
+typedef struct UntokenTable UntokenTable;
+typedef UntokenTable * UntokenTablePtr;
+typedef UntokenTablePtr * UntokenTableHandle;
+union WideChar {
+  char a[2];
+  short b;
+};
+typedef union WideChar WideChar;
+struct WideCharArr {
+  short size;
+  WideChar data[10];
+};
+typedef struct WideCharArr WideCharArr;
+struct NumberParts {
+  short version;
+  WideChar data[31];
+  WideCharArr pePlus;
+  WideCharArr peMinus;
+  WideCharArr peMinusPlus;
+  WideCharArr altNumTable;
+  char reserved[20];
+};
+typedef struct NumberParts NumberParts;
+typedef NumberParts * NumberPartsPtr;
+
+struct Itl4Rec {
+  short flags;
+  long resourceType;
+  short resourceNum;
+  short version;
+  long resHeader1;
+  long resHeader2;
+  short numTables;
+  long mapOffset;
+  long strOffset;
+  long fetchOffset;
+  long unTokenOffset;
+  long defPartsOffset;
+  long resOffset6;
+  long resOffset7;
+  long resOffset8;
+};
+typedef struct Itl4Rec Itl4Rec;
+typedef Itl4Rec * Itl4Ptr;
+typedef Itl4Ptr * Itl4Handle;
+
+struct NItl4Rec {
+  short flags;
+  long resourceType;
+  short resourceNum;
+  short version;
+  short format;
+  short resHeader;
+  long resHeader2;
+  short numTables;
+  long mapOffset;
+  long strOffset;
+  long fetchOffset;
+  long unTokenOffset;
+  long defPartsOffset;
+  long whtSpListOffset;
+  long resOffset7;
+  long resOffset8;
+  short resLength1;
+  short resLength2;
+  short resLength3;
+  short unTokenLength;
+  short defPartsLength;
+  short whtSpListLength;
+  short resLength7;
+  short resLength8;
+};
+typedef struct NItl4Rec NItl4Rec;
+typedef NItl4Rec * NItl4Ptr;
+typedef NItl4Ptr * NItl4Handle;
+
+struct TableDirectoryRecord {
+  OSType tableSignature;
+  unsigned long reserved;
+  unsigned long tableStartOffset;
+  unsigned long tableSize;
+};
+typedef struct TableDirectoryRecord TableDirectoryRecord;
+struct Itl5Record {
+  Fixed versionNumber;
+  unsigned short numberOfTables;
+  unsigned short reserved[3];
+  TableDirectoryRecord tableDirectory[1];
+};
+typedef struct Itl5Record Itl5Record;
+struct RuleBasedTrslRecord {
+  short sourceType;
+  short targetType;
+  short formatNumber;
+  short propertyFlag;
+  short numberOfRules;
+};
+typedef struct RuleBasedTrslRecord RuleBasedTrslRecord;
+
+struct ItlcRecord {
+  short itlcSystem;
+  short itlcReserved;
+  SInt8 itlcFontForce;
+  SInt8 itlcIntlForce;
+  SInt8 itlcOldKybd;
+  SInt8 itlcFlags;
+  short itlcIconOffset;
+  SInt8 itlcIconSide;
+  SInt8 itlcIconRsvd;
+  short itlcRegionCode;
+  short itlcSysFlags;
+  SInt8 itlcReserved4[32];
+};
+typedef struct ItlcRecord ItlcRecord;
+struct ItlbRecord {
+  short itlbNumber;
+  short itlbDate;
+  short itlbSort;
+  short itlbFlags;
+  short itlbToken;
+  short itlbEncoding;
+  short itlbLang;
+  SInt8 itlbNumRep;
+  SInt8 itlbDateRep;
+  short itlbKeys;
+  short itlbIcon;
+};
+typedef struct ItlbRecord ItlbRecord;
+
+struct ItlbExtRecord {
+  ItlbRecord base;
+  long itlbLocalSize;
+  short itlbMonoFond;
+  short itlbMonoSize;
+  short itlbPrefFond;
+  short itlbPrefSize;
+  short itlbSmallFond;
+  short itlbSmallSize;
+  short itlbSysFond;
+  short itlbSysSize;
+  short itlbAppFond;
+  short itlbAppSize;
+  short itlbHelpFond;
+  short itlbHelpSize;
+  Style itlbValidStyles;
+  Style itlbAliasStyle;
+};
+typedef struct ItlbExtRecord ItlbExtRecord;
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  smSystemScript = -1,
+  smCurrentScript = -2,
+  smAllScripts = -3
+};
+enum {
+  smRoman = 0,
+  smJapanese = 1,
+  smTradChinese = 2,
+  smKorean = 3,
+  smArabic = 4,
+  smHebrew = 5,
+  smGreek = 6,
+  smCyrillic = 7,
+  smRSymbol = 8,
+  smDevanagari = 9,
+  smGurmukhi = 10,
+  smGujarati = 11,
+  smOriya = 12,
+  smBengali = 13,
+  smTamil = 14,
+  smTelugu = 15,
+  smKannada = 16,
+  smMalayalam = 17,
+  smSinhalese = 18,
+  smBurmese = 19,
+  smKhmer = 20,
+  smThai = 21,
+  smLao = 22,
+  smGeorgian = 23,
+  smArmenian = 24,
+  smSimpChinese = 25,
+  smTibetan = 26,
+  smMongolian = 27,
+  smEthiopic = 28,
+  smGeez = 28,
+  smCentralEuroRoman = 29,
+  smVietnamese = 30,
+  smExtArabic = 31,
+  smUninterp = 32
+};
+
+
+enum {
+  smUnicodeScript = 0x7E
+};
+
+
+enum {
+  smChinese = 2,
+  smRussian = 7,
+
+  smLaotian = 22,
+  smAmharic = 28,
+  smSlavic = 29,
+  smEastEurRoman = 29,
+  smSindhi = 31,
+  smKlingon = 32
+};
+
+
+
+
+
+
+enum {
+  langEnglish = 0,
+  langFrench = 1,
+  langGerman = 2,
+  langItalian = 3,
+  langDutch = 4,
+  langSwedish = 5,
+  langSpanish = 6,
+  langDanish = 7,
+  langPortuguese = 8,
+  langNorwegian = 9,
+  langHebrew = 10,
+  langJapanese = 11,
+  langArabic = 12,
+  langFinnish = 13,
+  langGreek = 14,
+  langIcelandic = 15,
+  langMaltese = 16,
+  langTurkish = 17,
+  langCroatian = 18,
+  langTradChinese = 19,
+  langUrdu = 20,
+  langHindi = 21,
+  langThai = 22,
+  langKorean = 23
+};
+
+enum {
+  langLithuanian = 24,
+  langPolish = 25,
+  langHungarian = 26,
+  langEstonian = 27,
+  langLatvian = 28,
+  langSami = 29,
+  langFaroese = 30,
+  langFarsi = 31,
+  langPersian = 31,
+  langRussian = 32,
+  langSimpChinese = 33,
+  langFlemish = 34,
+  langIrishGaelic = 35,
+  langAlbanian = 36,
+  langRomanian = 37,
+  langCzech = 38,
+  langSlovak = 39,
+  langSlovenian = 40,
+  langYiddish = 41,
+  langSerbian = 42,
+  langMacedonian = 43,
+  langBulgarian = 44,
+  langUkrainian = 45,
+  langByelorussian = 46,
+  langBelorussian = 46
+};
+
+enum {
+  langUzbek = 47,
+  langKazakh = 48,
+  langAzerbaijani = 49,
+  langAzerbaijanAr = 50,
+  langArmenian = 51,
+  langGeorgian = 52,
+  langMoldavian = 53,
+  langKirghiz = 54,
+  langTajiki = 55,
+  langTurkmen = 56,
+  langMongolian = 57,
+  langMongolianCyr = 58,
+  langPashto = 59,
+  langKurdish = 60,
+  langKashmiri = 61,
+  langSindhi = 62,
+  langTibetan = 63,
+  langNepali = 64,
+  langSanskrit = 65,
+  langMarathi = 66,
+  langBengali = 67,
+  langAssamese = 68,
+  langGujarati = 69,
+  langPunjabi = 70
+};
+
+enum {
+  langOriya = 71,
+  langMalayalam = 72,
+  langKannada = 73,
+  langTamil = 74,
+  langTelugu = 75,
+  langSinhalese = 76,
+  langBurmese = 77,
+  langKhmer = 78,
+  langLao = 79,
+  langVietnamese = 80,
+  langIndonesian = 81,
+  langTagalog = 82,
+  langMalayRoman = 83,
+  langMalayArabic = 84,
+  langAmharic = 85,
+  langTigrinya = 86,
+  langOromo = 87,
+  langSomali = 88,
+  langSwahili = 89,
+  langKinyarwanda = 90,
+  langRuanda = 90,
+  langRundi = 91,
+  langNyanja = 92,
+  langChewa = 92,
+  langMalagasy = 93,
+  langEsperanto = 94
+};
+
+enum {
+  langWelsh = 128,
+  langBasque = 129,
+  langCatalan = 130,
+  langLatin = 131,
+  langQuechua = 132,
+  langGuarani = 133,
+  langAymara = 134,
+  langTatar = 135,
+  langUighur = 136,
+  langDzongkha = 137,
+  langJavaneseRom = 138,
+  langSundaneseRom = 139,
+  langGalician = 140,
+  langAfrikaans = 141
+};
+
+enum {
+  langBreton = 142,
+  langInuktitut = 143,
+  langScottishGaelic = 144,
+  langManxGaelic = 145,
+  langIrishGaelicScript = 146,
+  langTongan = 147,
+  langGreekPoly = 148,
+  langGreenlandic = 149,
+  langAzerbaijanRoman = 150
+};
+
+enum {
+  langUnspecified = 32767
+};
+
+
+
+
+
+enum {
+  langPortugese = 8,
+  langMalta = 16,
+  langYugoslavian = 18,
+  langChinese = 19,
+  langLettish = 28,
+  langLapponian = 29,
+  langLappish = 29,
+  langSaamisk = 29,
+  langFaeroese = 30,
+  langIrish = 35,
+  langGalla = 87,
+  langAfricaans = 141
+};
+enum {
+
+  verUS = 0,
+  verFrance = 1,
+  verBritain = 2,
+  verGermany = 3,
+  verItaly = 4,
+  verNetherlands = 5,
+  verFlemish = 6,
+  verSweden = 7,
+  verSpain = 8,
+  verDenmark = 9,
+  verPortugal = 10,
+  verFrCanada = 11,
+  verNorway = 12,
+  verIsrael = 13,
+  verJapan = 14,
+  verAustralia = 15,
+  verArabic = 16,
+  verFinland = 17,
+  verFrSwiss = 18,
+  verGrSwiss = 19,
+  verGreece = 20,
+  verIceland = 21,
+  verMalta = 22,
+  verCyprus = 23,
+  verTurkey = 24,
+  verYugoCroatian = 25
+};
+
+enum {
+  verNetherlandsComma = 26,
+  verBelgiumLuxPoint = 27,
+  verCanadaComma = 28,
+  verCanadaPoint = 29,
+  vervariantPortugal = 30,
+  vervariantNorway = 31,
+  vervariantDenmark = 32
+};
+
+enum {
+  verIndiaHindi = 33,
+  verPakistanUrdu = 34,
+  verTurkishModified = 35,
+  verItalianSwiss = 36,
+  verInternational = 37,
+
+  verRomania = 39,
+  verGreecePoly = 40,
+  verLithuania = 41,
+  verPoland = 42,
+  verHungary = 43,
+  verEstonia = 44,
+  verLatvia = 45,
+  verSami = 46,
+  verFaroeIsl = 47,
+  verIran = 48,
+  verRussia = 49,
+  verIreland = 50,
+  verKorea = 51,
+  verChina = 52,
+  verTaiwan = 53,
+  verThailand = 54,
+  verScriptGeneric = 55,
+  verCzech = 56,
+  verSlovak = 57,
+  verFarEastGeneric = 58,
+  verMagyar = 59,
+  verBengali = 60,
+  verByeloRussian = 61
+};
+
+enum {
+  verUkraine = 62,
+
+  verGreeceAlt = 64,
+  verSerbian = 65,
+  verSlovenian = 66,
+  verMacedonian = 67,
+  verCroatia = 68,
+
+  verGermanReformed = 70,
+  verBrazil = 71,
+  verBulgaria = 72,
+  verCatalonia = 73,
+  verMultilingual = 74,
+  verScottishGaelic = 75,
+  verManxGaelic = 76,
+  verBreton = 77,
+  verNunavut = 78,
+  verWelsh = 79,
+
+  verIrishGaelicScript = 81,
+  verEngCanada = 82,
+  verBhutan = 83,
+  verArmenian = 84,
+  verGeorgian = 85,
+  verSpLatinAmerica = 86,
+
+  verTonga = 88,
+
+
+  verFrenchUniversal = 91,
+  verAustria = 92,
+
+  verGujarati = 94,
+  verPunjabi = 95,
+  verIndiaUrdu = 96,
+  verVietnam = 97
+};
+
+enum {
+  verFrBelgium = 98,
+  verUzbek = 99,
+  verSingapore = 100,
+  verNynorsk = 101,
+  verAfrikaans = 102,
+  verEsperanto = 103,
+  verMarathi = 104,
+  verTibetan = 105,
+  verNepal = 106,
+  verGreenland = 107,
+  verIrelandEnglish = 108
+};
+enum {
+  verFrBelgiumLux = 6,
+  verBelgiumLux = 6,
+  verArabia = 16,
+  verYugoslavia = 25,
+  verIndia = 33,
+  verPakistan = 34,
+  verRumania = 39,
+  verGreekAncient = 40,
+  verLapland = 46,
+  verFaeroeIsl = 47,
+  verGenericFE = 58,
+  verBelarus = 61,
+  verUkrania = 62,
+  verAlternateGr = 64,
+  verSerbia = 65,
+  verSlovenia = 66,
+  verMacedonia = 67,
+  verBrittany = 77,
+  verWales = 79,
+  verArmenia = 84,
+  verGeorgia = 85,
+  verAustriaGerman = 92,
+  verTibet = 105
+};
+
+enum {
+  minCountry = verUS,
+  maxCountry = verGreenland
+};
+
+enum {
+
+  calGregorian = 0,
+  calArabicCivil = 1,
+  calArabicLunar = 2,
+  calJapanese = 3,
+  calJewish = 4,
+  calCoptic = 5,
+  calPersian = 6
+};
+
+enum {
+
+  intWestern = 0,
+  intArabic = 1,
+  intRoman = 2,
+  intJapanese = 3,
+  intEuropean = 4,
+  intOutputMask = 0x8000
+};
+
+enum {
+
+  smSingleByte = 0,
+  smFirstByte = -1,
+  smLastByte = 1,
+  smMiddleByte = 2
+};
+
+enum {
+
+  smcTypeMask = 0x000F,
+  smcReserved = 0x00F0,
+  smcClassMask = 0x0F00,
+  smcOrientationMask = 0x1000,
+  smcRightMask = 0x2000,
+  smcUpperMask = 0x4000,
+  smcDoubleMask = 0x8000
+};
+
+enum {
+
+  smCharPunct = 0x0000,
+  smCharAscii = 0x0001,
+  smCharEuro = 0x0007,
+  smCharExtAscii = 0x0007,
+
+  smCharKatakana = 0x0002,
+  smCharHiragana = 0x0003,
+  smCharIdeographic = 0x0004,
+  smCharTwoByteGreek = 0x0005,
+  smCharTwoByteRussian = 0x0006,
+  smCharBidirect = 0x0008,
+  smCharContextualLR = 0x0009,
+  smCharNonContextualLR = 0x000A,
+  smCharHangul = 0x000C,
+  smCharJamo = 0x000D,
+  smCharBopomofo = 0x000E,
+  smCharGanaKana = 0x000F,
+
+  smCharFISKana = 0x0002,
+  smCharFISGana = 0x0003,
+  smCharFISIdeo = 0x0004
+};
+
+enum {
+  smCharFISGreek = 0x0005,
+  smCharFISRussian = 0x0006,
+
+  smPunctNormal = 0x0000,
+  smPunctNumber = 0x0100,
+  smPunctSymbol = 0x0200,
+  smPunctBlank = 0x0300,
+  smPunctRepeat = 0x0400,
+  smPunctGraphic = 0x0500,
+
+  smKanaSmall = 0x0100,
+  smKanaHardOK = 0x0200,
+  smKanaSoftOK = 0x0300,
+
+  smIdeographicLevel1 = 0x0000,
+  smIdeographicLevel2 = 0x0100,
+  smIdeographicUser = 0x0200,
+
+  smFISClassLvl1 = 0x0000,
+  smFISClassLvl2 = 0x0100,
+  smFISClassUser = 0x0200,
+
+  smJamoJaeum = 0x0000,
+  smJamoBogJaeum = 0x0100,
+  smJamoMoeum = 0x0200,
+  smJamoBogMoeum = 0x0300
+};
+
+enum {
+
+  smCharHorizontal = 0x0000,
+  smCharVertical = 0x1000,
+
+  smCharLeft = 0x0000,
+  smCharRight = 0x2000,
+  smCharLower = 0x0000,
+  smCharUpper = 0x4000,
+  smChar1byte = 0x0000,
+  smChar2byte = 0x8000
+};
+
+enum {
+
+  smTransAscii = 0,
+  smTransNative = 1,
+  smTransCase = 0xFE,
+  smTransSystem = 0xFF,
+
+  smTransAscii1 = 2,
+  smTransAscii2 = 3,
+  smTransKana1 = 4,
+  smTransKana2 = 5
+};
+
+enum {
+  smTransGana2 = 7,
+  smTransHangul2 = 8,
+  smTransJamo2 = 9,
+  smTransBopomofo2 = 10,
+
+  smTransLower = 0x4000,
+  smTransUpper = 0x8000,
+
+  smTransRuleBaseFormat = 1,
+  smTransHangulFormat = 2,
+
+  smTransPreDoubleByting = 1,
+  smTransPreLowerCasing = 2
+};
+
+enum {
+
+  smMaskAll = (long)0xFFFFFFFF,
+
+  smMaskAscii = 0x00000001,
+  smMaskNative = 0x00000002,
+
+  smMaskAscii1 = 0x00000004,
+  smMaskAscii2 = 0x00000008,
+  smMaskKana1 = 0x00000010,
+  smMaskKana2 = 0x00000020,
+  smMaskGana2 = 0x00000080,
+  smMaskHangul2 = 0x00000100,
+  smMaskJamo2 = 0x00000200,
+  smMaskBopomofo2 = 0x00000400
+};
+
+enum {
+
+  smNotInstalled = 0,
+  smBadVerb = -1,
+  smBadScript = -2
+};
+
+enum {
+
+  smRedrawChar = 0,
+  smRedrawWord = 1,
+  smRedrawLine = -1
+};
+
+enum {
+
+  smVersion = 0,
+  smMunged = 2,
+  smEnabled = 4,
+  smBidirect = 6,
+  smFontForce = 8,
+  smIntlForce = 10,
+  smForced = 12,
+  smDefault = 14,
+  smPrint = 16,
+  smSysScript = 18,
+  smLastScript = 20,
+  smKeyScript = 22,
+  smSysRef = 24,
+  smKeyCache = 26,
+  smKeySwap = 28,
+  smGenFlags = 30,
+  smOverride = 32,
+  smCharPortion = 34,
+
+  smDoubleByte = 36,
+  smKCHRCache = 38,
+  smRegionCode = 40,
+  smKeyDisableState = 42
+};
+
+enum {
+
+
+
+  smScriptVersion = 0,
+  smScriptMunged = 2,
+  smScriptEnabled = 4,
+  smScriptRight = 6,
+  smScriptJust = 8,
+  smScriptRedraw = 10,
+  smScriptSysFond = 12,
+  smScriptAppFond = 14,
+  smScriptBundle = 16,
+  smScriptNumber = 16,
+  smScriptDate = 18,
+  smScriptSort = 20,
+  smScriptFlags = 22,
+  smScriptToken = 24,
+  smScriptEncoding = 26,
+  smScriptLang = 28
+};
+
+enum {
+  smScriptNumDate = 30,
+  smScriptKeys = 32,
+  smScriptIcon = 34,
+  smScriptPrint = 36,
+  smScriptTrap = 38,
+  smScriptCreator = 40,
+  smScriptFile = 42,
+  smScriptName = 44,
+
+
+  smScriptMonoFondSize = 78,
+  smScriptPrefFondSize = 80,
+  smScriptSmallFondSize = 82,
+  smScriptSysFondSize = 84,
+  smScriptAppFondSize = 86,
+  smScriptHelpFondSize = 88,
+  smScriptValidStyles = 90,
+  smScriptAliasStyle = 92
+};
+
+
+
+enum {
+
+  smLayoutCache = -309,
+  smOldVerbSupport = -311,
+  smSetKashidas = -291,
+  smSetKashProp = -287,
+  smScriptSysBase = -281,
+  smScriptAppBase = -283,
+  smScriptFntBase = -285,
+  smScriptLigatures = -263,
+  smScriptNumbers = -267
+};
+
+enum {
+
+  iuSystemScript = -1,
+  iuCurrentScript = -2
+};
+
+enum {
+
+  smKeyNextScript = -1,
+  smKeySysScript = -2,
+  smKeySwapScript = -3,
+
+  smKeyNextKybd = -4,
+  smKeySwapKybd = -5,
+  smKeyDisableKybds = -6,
+  smKeyEnableKybds = -7,
+  smKeyToggleInline = -8,
+  smKeyToggleDirection = -9,
+  smKeyNextInputMethod = -10,
+  smKeySwapInputMethod = -11,
+  smKeyDisableKybdSwitch = -12,
+  smKeySetDirLeftRight = -15,
+  smKeySetDirRightLeft = -16,
+  smKeyRoman = -17
+};
+
+
+enum {
+
+  smfDisableKeyScriptSync = 27
+};
+
+enum {
+
+  smfDisableKeyScriptSyncMask = 1L << smfDisableKeyScriptSync
+};
+
+enum {
+
+  smKeyForceKeyScriptBit = 7,
+  smKeyForceKeyScriptMask = 1 << smKeyForceKeyScriptBit
+};
+
+enum {
+
+
+  smsfIntellCP = 0,
+  smsfSingByte = 1,
+  smsfNatCase = 2,
+  smsfContext = 3,
+  smsfNoForceFont = 4,
+  smsfB0Digits = 5,
+  smsfAutoInit = 6,
+  smsfUnivExt = 7,
+  smsfSynchUnstyledTE = 8,
+  smsfForms = 13,
+  smsfLigatures = 14,
+  smsfReverse = 15,
+
+
+  smfShowIcon = 31,
+  smfDualCaret = 30,
+  smfNameTagEnab = 29,
+  smfUseAssocFontInfo = 28
+};
+
+enum {
+
+
+
+  romanSysFond = 0x3FFF,
+  romanAppFond = 3,
+  romanFlags = 0x0007,
+
+  smFondStart = 0x4000,
+  smFondEnd = 0xC000,
+
+  smUprHalfCharSet = 0x80
+};
+
+enum {
+
+  diaeresisUprY = 0xD9,
+  fraction = 0xDA,
+  intlCurrency = 0xDB,
+  leftSingGuillemet = 0xDC,
+  rightSingGuillemet = 0xDD,
+  fiLigature = 0xDE,
+  flLigature = 0xDF,
+  dblDagger = 0xE0,
+  centeredDot = 0xE1,
+  baseSingQuote = 0xE2,
+  baseDblQuote = 0xE3,
+  perThousand = 0xE4,
+  circumflexUprA = 0xE5,
+  circumflexUprE = 0xE6,
+  acuteUprA = 0xE7,
+  diaeresisUprE = 0xE8,
+  graveUprE = 0xE9,
+  acuteUprI = 0xEA,
+  circumflexUprI = 0xEB,
+  diaeresisUprI = 0xEC,
+  graveUprI = 0xED,
+  acuteUprO = 0xEE,
+  circumflexUprO = 0xEF,
+  appleLogo = 0xF0,
+  graveUprO = 0xF1,
+  acuteUprU = 0xF2,
+  circumflexUprU = 0xF3,
+  graveUprU = 0xF4,
+  dotlessLwrI = 0xF5,
+  circumflex = 0xF6,
+  tilde = 0xF7,
+  macron = 0xF8,
+  breveMark = 0xF9,
+  overDot = 0xFA,
+  ringMark = 0xFB,
+  cedilla = 0xFC,
+  doubleAcute = 0xFD,
+  ogonek = 0xFE,
+  hachek = 0xFF
+};
+
+enum {
+
+  tokenIntl = 4,
+  tokenEmpty = -1
+};
+
+enum {
+  tokenUnknown = 0,
+  tokenWhite = 1,
+  tokenLeftLit = 2,
+  tokenRightLit = 3,
+  tokenAlpha = 4,
+  tokenNumeric = 5,
+  tokenNewLine = 6,
+  tokenLeftComment = 7,
+  tokenRightComment = 8,
+  tokenLiteral = 9,
+  tokenEscape = 10,
+  tokenAltNum = 11,
+  tokenRealNum = 12,
+  tokenAltReal = 13,
+  tokenReserve1 = 14,
+  tokenReserve2 = 15,
+  tokenLeftParen = 16,
+  tokenRightParen = 17,
+  tokenLeftBracket = 18,
+  tokenRightBracket = 19
+};
+
+enum {
+  tokenLeftCurly = 20,
+  tokenRightCurly = 21,
+  tokenLeftEnclose = 22,
+  tokenRightEnclose = 23,
+  tokenPlus = 24,
+  tokenMinus = 25,
+  tokenAsterisk = 26,
+  tokenDivide = 27,
+  tokenPlusMinus = 28,
+  tokenSlash = 29,
+  tokenBackSlash = 30,
+  tokenLess = 31,
+  tokenGreat = 32,
+  tokenEqual = 33,
+  tokenLessEqual2 = 34,
+  tokenLessEqual1 = 35,
+  tokenGreatEqual2 = 36,
+  tokenGreatEqual1 = 37,
+  token2Equal = 38,
+  tokenColonEqual = 39
+};
+
+enum {
+  tokenNotEqual = 40,
+  tokenLessGreat = 41,
+  tokenExclamEqual = 42,
+  tokenExclam = 43,
+  tokenTilde = 44,
+  tokenComma = 45,
+  tokenPeriod = 46,
+  tokenLeft2Quote = 47,
+  tokenRight2Quote = 48,
+  tokenLeft1Quote = 49,
+  tokenRight1Quote = 50,
+  token2Quote = 51,
+  token1Quote = 52,
+  tokenSemicolon = 53,
+  tokenPercent = 54,
+  tokenCaret = 55,
+  tokenUnderline = 56,
+  tokenAmpersand = 57,
+  tokenAtSign = 58,
+  tokenBar = 59
+};
+
+enum {
+  tokenQuestion = 60,
+  tokenPi = 61,
+  tokenRoot = 62,
+  tokenSigma = 63,
+  tokenIntegral = 64,
+  tokenMicro = 65,
+  tokenCapPi = 66,
+  tokenInfinity = 67,
+  tokenColon = 68,
+  tokenHash = 69,
+  tokenDollar = 70,
+  tokenNoBreakSpace = 71,
+  tokenFraction = 72,
+  tokenIntlCurrency = 73,
+  tokenLeftSingGuillemet = 74,
+  tokenRightSingGuillemet = 75,
+  tokenPerThousand = 76,
+  tokenEllipsis = 77,
+  tokenCenterDot = 78,
+  tokenNil = 127
+};
+
+enum {
+  delimPad = -2,
+  tokenTilda = 44,
+  tokenCarat = 55
+};
+
+enum {
+
+  smWordSelectTable = 0,
+  smWordWrapTable = 1,
+  smNumberPartsTable = 2,
+  smUnTokenTable = 3,
+  smWhiteSpaceList = 4,
+  iuWordSelectTable = 0,
+  iuWordWrapTable = 1,
+  iuNumberPartsTable = 2,
+  iuUnTokenTable = 3,
+  iuWhiteSpaceList = 4
+};
+
+
+enum {
+  tokenOK = 0,
+  tokenOverflow = 1,
+  stringOverflow = 2,
+  badDelim = 3,
+  badEnding = 4,
+  crash = 5
+};
+
+typedef SInt8 TokenResults;
+typedef char CharByteTable[256];
+
+typedef short ScriptTokenType;
+typedef ScriptTokenType DelimType[2];
+typedef ScriptTokenType CommentType[4];
+struct TokenRec {
+  ScriptTokenType theToken;
+  Ptr position;
+  long length;
+  StringPtr stringPosition;
+};
+typedef struct TokenRec TokenRec;
+typedef TokenRec * TokenRecPtr;
+struct TokenBlock {
+  Ptr source;
+  long sourceLength;
+  Ptr tokenList;
+  long tokenLength;
+  long tokenCount;
+  Ptr stringList;
+  long stringLength;
+  long stringCount;
+  Boolean doString;
+  Boolean doAppend;
+  Boolean doAlphanumeric;
+  Boolean doNest;
+  ScriptTokenType leftDelims[2];
+  ScriptTokenType rightDelims[2];
+  ScriptTokenType leftComment[4];
+  ScriptTokenType rightComment[4];
+  ScriptTokenType escapeCode;
+  ScriptTokenType decimalCode;
+  Handle itlResource;
+  long reserved[8];
+};
+typedef struct TokenBlock TokenBlock;
+typedef TokenBlock * TokenBlockPtr;
+extern short
+GetSysDirection(void) ;
+extern void
+SetSysDirection(short value) ;
+extern short
+FontScript(void) ;
+extern short
+IntlScript(void) ;
+extern short
+FontToScript(short fontNumber) ;
+extern long
+GetScriptManagerVariable(short selector) ;
+extern OSErr
+SetScriptManagerVariable(
+  short selector,
+  long param) ;
+extern long
+GetScriptVariable(
+  short script,
+  short selector) ;
+extern OSErr
+SetScriptVariable(
+  short script,
+  short selector,
+  long param) ;
+extern short
+CharacterByteType(
+  Ptr textBuf,
+  short textOffset,
+  ScriptCode script) ;
+extern short
+CharacterType(
+  Ptr textBuf,
+  short textOffset,
+  ScriptCode script) ;
+extern OSErr
+TransliterateText(
+  Handle srcHandle,
+  Handle dstHandle,
+  short target,
+  long srcMask,
+  ScriptCode script) ;
+extern Boolean
+FillParseTable(
+  CharByteTable table,
+  ScriptCode script) ;
+extern Handle
+GetIntlResource(short theID) ;
+extern void
+ClearIntlResourceCache(void) ;
+extern void
+GetIntlResourceTable(
+  ScriptCode script,
+  short tableCode,
+  Handle * itlHandle,
+  long * offset,
+  long * length) ;
+extern TokenResults
+IntlTokenize(TokenBlockPtr tokenParam) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  paramErr = -50,
+  noHardwareErr = -200,
+  notEnoughHardwareErr = -201,
+  userCanceledErr = -128,
+  qErr = -1,
+  vTypErr = -2,
+  corErr = -3,
+  unimpErr = -4,
+  SlpTypeErr = -5,
+  seNoDB = -8,
+  controlErr = -17,
+  statusErr = -18,
+  readErr = -19,
+  writErr = -20,
+  badUnitErr = -21,
+  unitEmptyErr = -22,
+  openErr = -23,
+  closErr = -24,
+  dRemovErr = -25,
+  dInstErr = -26
+};
+
+enum {
+  abortErr = -27,
+  iIOAbortErr = -27,
+  notOpenErr = -28,
+  unitTblFullErr = -29,
+  dceExtErr = -30,
+  slotNumErr = -360,
+  gcrOnMFMErr = -400,
+  dirFulErr = -33,
+  dskFulErr = -34,
+  nsvErr = -35,
+  ioErr = -36,
+  bdNamErr = -37,
+  fnOpnErr = -38,
+  eofErr = -39,
+  posErr = -40,
+  mFulErr = -41,
+  tmfoErr = -42,
+  fnfErr = -43,
+  wPrErr = -44,
+  fLckdErr = -45
+};
+
+enum {
+  vLckdErr = -46,
+  fBsyErr = -47,
+  dupFNErr = -48,
+  opWrErr = -49,
+  rfNumErr = -51,
+  gfpErr = -52,
+  volOffLinErr = -53,
+  permErr = -54,
+  volOnLinErr = -55,
+  nsDrvErr = -56,
+  noMacDskErr = -57,
+  extFSErr = -58,
+  fsRnErr = -59,
+  badMDBErr = -60,
+  wrPermErr = -61,
+  dirNFErr = -120,
+  tmwdoErr = -121,
+  badMovErr = -122,
+  wrgVolTypErr = -123,
+  volGoneErr = -124
+};
+
+enum {
+  fidNotFound = -1300,
+  fidExists = -1301,
+  notAFileErr = -1302,
+  diffVolErr = -1303,
+  catChangedErr = -1304,
+  desktopDamagedErr = -1305,
+  sameFileErr = -1306,
+  badFidErr = -1307,
+  notARemountErr = -1308,
+  fileBoundsErr = -1309,
+  fsDataTooBigErr = -1310,
+  volVMBusyErr = -1311,
+  badFCBErr = -1327,
+  errFSUnknownCall = -1400,
+  errFSBadFSRef = -1401,
+  errFSBadForkName = -1402,
+  errFSBadBuffer = -1403,
+  errFSBadForkRef = -1404,
+  errFSBadInfoBitmap = -1405,
+  errFSMissingCatInfo = -1406,
+  errFSNotAFolder = -1407,
+  errFSForkNotFound = -1409,
+  errFSNameTooLong = -1410,
+  errFSMissingName = -1411,
+  errFSBadPosMode = -1412,
+  errFSBadAllocFlags = -1413,
+  errFSNoMoreItems = -1417,
+  errFSBadItemCount = -1418,
+  errFSBadSearchParams = -1419,
+  errFSRefsDifferent = -1420,
+  errFSForkExists = -1421,
+  errFSBadIteratorFlags = -1422,
+  errFSIteratorNotFound = -1423,
+  errFSIteratorNotSupported = -1424,
+  errFSQuotaExceeded = -1425,
+  envNotPresent = -5500,
+  envBadVers = -5501,
+  envVersTooBig = -5502,
+  fontDecError = -64,
+  fontNotDeclared = -65,
+  fontSubErr = -66,
+  fontNotOutlineErr = -32615,
+  firstDskErr = -84,
+  lastDskErr = -64,
+  noDriveErr = -64,
+  offLinErr = -65,
+  noNybErr = -66
+};
+
+enum {
+  noAdrMkErr = -67,
+  dataVerErr = -68,
+  badCksmErr = -69,
+  badBtSlpErr = -70,
+  noDtaMkErr = -71,
+  badDCksum = -72,
+  badDBtSlp = -73,
+  wrUnderrun = -74,
+  cantStepErr = -75,
+  tk0BadErr = -76,
+  initIWMErr = -77,
+  twoSideErr = -78,
+  spdAdjErr = -79,
+  seekErr = -80,
+  sectNFErr = -81,
+  fmt1Err = -82,
+  fmt2Err = -83,
+  verErr = -84,
+  clkRdErr = -85,
+  clkWrErr = -86,
+  prWrErr = -87,
+  prInitErr = -88,
+  rcvrErr = -89,
+  breakRecd = -90
+};
+
+enum {
+
+  noScrapErr = -100,
+  noTypeErr = -102
+};
+
+enum {
+
+  eLenErr = -92,
+  eMultiErr = -91
+};
+
+enum {
+  ddpSktErr = -91,
+  ddpLenErr = -92,
+  noBridgeErr = -93,
+  lapProtErr = -94,
+  excessCollsns = -95,
+  portNotPwr = -96,
+  portInUse = -97,
+  portNotCf = -98
+};
+
+enum {
+
+  memROZWarn = -99,
+  memROZError = -99,
+  memROZErr = -99,
+  memFullErr = -108,
+  nilHandleErr = -109,
+  memWZErr = -111,
+  memPurErr = -112,
+  memAdrErr = -110,
+  memAZErr = -113,
+  memPCErr = -114,
+  memBCErr = -115,
+  memSCErr = -116,
+  memLockedErr = -117
+};
+
+enum {
+
+  iMemFullErr = -108,
+  iIOAbort = -27
+};
+
+
+enum {
+  resourceInMemory = -188,
+  writingPastEnd = -189,
+  inputOutOfBounds = -190,
+  resNotFound = -192,
+  resFNotFound = -193,
+  addResFailed = -194,
+  addRefFailed = -195,
+  rmvResFailed = -196,
+  rmvRefFailed = -197,
+  resAttrErr = -198,
+  mapReadErr = -199,
+  CantDecompress = -186,
+  badExtResource = -185,
+  noMemForPictPlaybackErr = -145,
+  rgnOverflowErr = -147,
+  rgnTooBigError = -147,
+  pixMapTooDeepErr = -148,
+  insufficientStackErr = -149,
+  nsStackErr = -149
+};
+
+enum {
+  evtNotEnb = 1
+};
+
+
+enum {
+  cMatchErr = -150,
+  cTempMemErr = -151,
+  cNoMemErr = -152,
+  cRangeErr = -153,
+  cProtectErr = -154,
+  cDevErr = -155,
+  cResErr = -156,
+  cDepthErr = -157,
+  rgnTooBigErr = -500,
+  updPixMemErr = -125,
+  pictInfoVersionErr = -11000,
+  pictInfoIDErr = -11001,
+  pictInfoVerbErr = -11002,
+  cantLoadPickMethodErr = -11003,
+  colorsRequestedErr = -11004,
+  pictureDataErr = -11005
+};
+
+
+enum {
+
+  cmProfileError = -170,
+  cmMethodError = -171,
+  cmMethodNotFound = -175,
+  cmProfileNotFound = -176,
+  cmProfilesIdentical = -177,
+  cmCantConcatenateError = -178,
+  cmCantXYZ = -179,
+  cmCantDeleteProfile = -180,
+  cmUnsupportedDataType = -181,
+  cmNoCurrentProfile = -182
+};
+
+
+enum {
+
+  noHardware = noHardwareErr,
+  notEnoughHardware = notEnoughHardwareErr,
+  queueFull = -203,
+  resProblem = -204,
+  badChannel = -205,
+  badFormat = -206,
+  notEnoughBufferSpace = -207,
+  badFileFormat = -208,
+  channelBusy = -209,
+  buffersTooSmall = -210,
+  channelNotBusy = -211,
+  noMoreRealTime = -212,
+  siVBRCompressionNotSupported = -213,
+  siNoSoundInHardware = -220,
+  siBadSoundInDevice = -221,
+  siNoBufferSpecified = -222,
+  siInvalidCompression = -223,
+  siHardDriveTooSlow = -224,
+  siInvalidSampleRate = -225,
+  siInvalidSampleSize = -226,
+  siDeviceBusyErr = -227,
+  siBadDeviceName = -228,
+  siBadRefNum = -229,
+  siInputDeviceErr = -230,
+  siUnknownInfoType = -231,
+  siUnknownQuality = -232
+};
+
+
+enum {
+  noSynthFound = -240,
+  synthOpenFailed = -241,
+  synthNotReady = -242,
+  bufTooSmall = -243,
+  voiceNotFound = -244,
+  incompatibleVoice = -245,
+  badDictFormat = -246,
+  badInputText = -247
+};
+
+
+enum {
+  midiNoClientErr = -250,
+  midiNoPortErr = -251,
+  midiTooManyPortsErr = -252,
+  midiTooManyConsErr = -253,
+  midiVConnectErr = -254,
+  midiVConnectMade = -255,
+  midiVConnectRmvd = -256,
+  midiNoConErr = -257,
+  midiWriteErr = -258,
+  midiNameLenErr = -259,
+  midiDupIDErr = -260,
+  midiInvalidCmdErr = -261
+};
+
+
+enum {
+  nmTypErr = -299
+};
+
+
+enum {
+  siInitSDTblErr = 1,
+  siInitVBLQsErr = 2,
+  siInitSPTblErr = 3,
+  sdmJTInitErr = 10,
+  sdmInitErr = 11,
+  sdmSRTInitErr = 12,
+  sdmPRAMInitErr = 13,
+  sdmPriInitErr = 14
+};
+
+enum {
+  smSDMInitErr = -290,
+  smSRTInitErr = -291,
+  smPRAMInitErr = -292,
+  smPriInitErr = -293,
+  smEmptySlot = -300,
+  smCRCFail = -301,
+  smFormatErr = -302,
+  smRevisionErr = -303,
+  smNoDir = -304,
+  smDisabledSlot = -305,
+  smNosInfoArray = -306
+};
+
+
+enum {
+  smResrvErr = -307,
+  smUnExBusErr = -308,
+  smBLFieldBad = -309,
+  smFHBlockRdErr = -310,
+  smFHBlkDispErr = -311,
+  smDisposePErr = -312,
+  smNoBoardSRsrc = -313,
+  smGetPRErr = -314,
+  smNoBoardId = -315,
+  smInitStatVErr = -316,
+  smInitTblVErr = -317,
+  smNoJmpTbl = -318,
+  smReservedSlot = -318,
+  smBadBoardId = -319,
+  smBusErrTO = -320,
+
+  svTempDisable = -32768L,
+  svDisabled = -32640,
+  smBadRefId = -330,
+  smBadsList = -331,
+  smReservedErr = -332,
+  smCodeRevErr = -333
+};
+
+enum {
+  smCPUErr = -334,
+  smsPointerNil = -335,
+  smNilsBlockErr = -336,
+  smSlotOOBErr = -337,
+  smSelOOBErr = -338,
+  smNewPErr = -339,
+  smBlkMoveErr = -340,
+  smCkStatusErr = -341,
+  smGetDrvrNamErr = -342,
+  smDisDrvrNamErr = -343,
+  smNoMoresRsrcs = -344,
+  smsGetDrvrErr = -345,
+  smBadsPtrErr = -346,
+  smByteLanesErr = -347,
+  smOffsetErr = -348,
+  smNoGoodOpens = -349,
+  smSRTOvrFlErr = -350,
+  smRecNotFnd = -351
+};
+
+
+enum {
+
+  notBTree = -410,
+  btNoSpace = -413,
+  btDupRecErr = -414,
+  btRecNotFnd = -415,
+  btKeyLenErr = -416,
+  btKeyAttrErr = -417,
+  unknownInsertModeErr = -20000,
+  recordDataTooBigErr = -20001,
+  invalidIndexErr = -20002
+};
+
+
+
+
+
+enum {
+  fsmFFSNotFoundErr = -431,
+  fsmBusyFFSErr = -432,
+  fsmBadFFSNameErr = -433,
+  fsmBadFSDLenErr = -434,
+  fsmDuplicateFSIDErr = -435,
+  fsmBadFSDVersionErr = -436,
+  fsmNoAlternateStackErr = -437,
+  fsmUnknownFSMMessageErr = -438
+};
+
+
+enum {
+
+  editionMgrInitErr = -450,
+  badSectionErr = -451,
+  notRegisteredSectionErr = -452,
+  badEditionFileErr = -453,
+  badSubPartErr = -454,
+  multiplePublisherWrn = -460,
+  containerNotFoundWrn = -461,
+  containerAlreadyOpenWrn = -462,
+  notThePublisherWrn = -463
+};
+
+enum {
+  teScrapSizeErr = -501,
+  hwParamErr = -502,
+  driverHardwareGoneErr = -503
+};
+
+enum {
+
+  procNotFound = -600,
+  memFragErr = -601,
+  appModeErr = -602,
+  protocolErr = -603,
+  hardwareConfigErr = -604,
+  appMemFullErr = -605,
+  appIsDaemon = -606,
+  bufferIsSmall = -607,
+  noOutstandingHLE = -608,
+  connectionInvalid = -609,
+  noUserInteractionAllowed = -610
+};
+
+enum {
+
+  wrongApplicationPlatform = -875,
+  appVersionTooOld = -876,
+  notAppropriateForClassic = -877
+};
+
+
+enum {
+  threadTooManyReqsErr = -617,
+  threadNotFoundErr = -618,
+  threadProtocolErr = -619
+};
+
+enum {
+  threadBadAppContextErr = -616
+};
+
+
+enum {
+  notEnoughMemoryErr = -620,
+  notHeldErr = -621,
+  cannotMakeContiguousErr = -622,
+  notLockedErr = -623,
+  interruptsMaskedErr = -624,
+  cannotDeferErr = -625,
+  noMMUErr = -626
+};
+
+
+enum {
+  vmMorePhysicalThanVirtualErr = -628,
+  vmKernelMMUInitErr = -629,
+  vmOffErr = -630,
+  vmMemLckdErr = -631,
+  vmBadDriver = -632,
+  vmNoVectorErr = -633
+};
+
+
+enum {
+  vmInvalidBackingFileIDErr = -640,
+  vmMappingPrivilegesErr = -641,
+  vmBusyBackingFileErr = -642,
+  vmNoMoreBackingFilesErr = -643,
+  vmInvalidFileViewIDErr = -644,
+  vmFileViewAccessErr = -645,
+  vmNoMoreFileViewsErr = -646,
+  vmAddressNotInFileViewErr = -647,
+  vmInvalidOwningProcessErr = -648
+};
+
+
+enum {
+  rcDBNull = -800,
+  rcDBValue = -801,
+  rcDBError = -802,
+  rcDBBadType = -803,
+  rcDBBreak = -804,
+  rcDBExec = -805,
+  rcDBBadSessID = -806,
+  rcDBBadSessNum = -807,
+  rcDBBadDDEV = -808,
+  rcDBAsyncNotSupp = -809,
+  rcDBBadAsyncPB = -810,
+  rcDBNoHandler = -811,
+  rcDBWrongVersion = -812,
+  rcDBPackNotInited = -813
+};
+
+
+
+enum {
+  hmHelpDisabled = -850,
+  hmBalloonAborted = -853,
+  hmSameAsLastBalloon = -854,
+  hmHelpManagerNotInited = -855,
+  hmSkippedBalloon = -857,
+  hmWrongVersion = -858,
+  hmUnknownHelpType = -859,
+  hmOperationUnsupported = -861,
+  hmNoBalloonUp = -862,
+  hmCloseViewActive = -863
+};
+
+
+
+enum {
+
+  notInitErr = -900,
+  nameTypeErr = -902,
+  noPortErr = -903,
+
+
+  noGlobalsErr = -904,
+  localOnlyErr = -905,
+  destPortErr = -906,
+  sessTableErr = -907,
+  noSessionErr = -908,
+  badReqErr = -909,
+  portNameExistsErr = -910,
+  noUserNameErr = -911,
+  userRejectErr = -912,
+  noMachineNameErr = -913,
+  noToolboxNameErr = -914,
+  noResponseErr = -915,
+  portClosedErr = -916,
+  sessClosedErr = -917,
+  badPortNameErr = -919,
+  noDefaultUserErr = -922,
+  notLoggedInErr = -923,
+  noUserRefErr = -924,
+  networkErr = -925,
+  noInformErr = -926,
+  authFailErr = -927,
+  noUserRecErr = -928,
+  badServiceMethodErr = -930,
+  badLocNameErr = -931,
+  guestNotAllowedErr = -932
+};
+
+
+enum {
+  kFMIterationCompleted = -980L,
+  kFMInvalidFontFamilyErr = -981L,
+  kFMInvalidFontErr = -982L,
+  kFMIterationScopeModifiedErr = -983L,
+  kFMFontTableAccessErr = -984L,
+  kFMFontContainerAccessErr = -985L
+};
+
+enum {
+  noMaskFoundErr = -1000
+};
+
+enum {
+  nbpBuffOvr = -1024,
+  nbpNoConfirm = -1025,
+  nbpConfDiff = -1026,
+  nbpDuplicate = -1027,
+  nbpNotFound = -1028,
+  nbpNISErr = -1029
+};
+
+enum {
+  aspBadVersNum = -1066,
+  aspBufTooSmall = -1067,
+  aspNoMoreSess = -1068,
+  aspNoServers = -1069,
+  aspParamErr = -1070,
+  aspServerBusy = -1071,
+  aspSessClosed = -1072,
+  aspSizeErr = -1073,
+  aspTooMany = -1074,
+  aspNoAck = -1075
+};
+
+enum {
+  reqFailed = -1096,
+  tooManyReqs = -1097,
+  tooManySkts = -1098,
+  badATPSkt = -1099,
+  badBuffNum = -1100,
+  noRelErr = -1101,
+  cbNotFound = -1102,
+  noSendResp = -1103,
+  noDataArea = -1104,
+  reqAborted = -1105
+};
+
+
+enum {
+
+  errRefNum = -1280,
+  errAborted = -1279,
+  errState = -1278,
+  errOpening = -1277,
+  errAttention = -1276,
+  errFwdReset = -1275,
+  errDSPQueueSize = -1274,
+  errOpenDenied = -1273
+};
+
+
+
+
+
+
+enum {
+  errAECoercionFail = -1700,
+  errAEDescNotFound = -1701,
+  errAECorruptData = -1702,
+  errAEWrongDataType = -1703,
+  errAENotAEDesc = -1704,
+  errAEBadListItem = -1705,
+  errAENewerVersion = -1706,
+  errAENotAppleEvent = -1707,
+  errAEEventNotHandled = -1708,
+  errAEReplyNotValid = -1709,
+  errAEUnknownSendMode = -1710,
+  errAEWaitCanceled = -1711,
+  errAETimeout = -1712,
+  errAENoUserInteraction = -1713,
+  errAENotASpecialFunction = -1714,
+  errAEParamMissed = -1715,
+  errAEUnknownAddressType = -1716,
+  errAEHandlerNotFound = -1717,
+  errAEReplyNotArrived = -1718,
+  errAEIllegalIndex = -1719,
+  errAEImpossibleRange = -1720,
+  errAEWrongNumberArgs = -1721,
+  errAEAccessorNotFound = -1723,
+  errAENoSuchLogical = -1725,
+  errAEBadTestKey = -1726,
+  errAENotAnObjSpec = -1727,
+  errAENoSuchObject = -1728,
+  errAENegativeCount = -1729,
+  errAEEmptyListContainer = -1730,
+  errAEUnknownObjectType = -1731,
+  errAERecordingIsAlreadyOn = -1732,
+  errAEReceiveTerminate = -1733,
+  errAEReceiveEscapeCurrent = -1734,
+  errAEEventFiltered = -1735,
+  errAEDuplicateHandler = -1736,
+  errAEStreamBadNesting = -1737,
+  errAEStreamAlreadyConverted = -1738,
+  errAEDescIsNull = -1739,
+  errAEBuildSyntaxError = -1740,
+  errAEBufferTooSmall = -1741
+};
+
+enum {
+  errOSASystemError = -1750,
+  errOSAInvalidID = -1751,
+  errOSABadStorageType = -1752,
+  errOSAScriptError = -1753,
+  errOSABadSelector = -1754,
+  errOSASourceNotAvailable = -1756,
+  errOSANoSuchDialect = -1757,
+  errOSADataFormatObsolete = -1758,
+  errOSADataFormatTooNew = -1759,
+  errOSACorruptData = errAECorruptData,
+  errOSARecordingIsAlreadyOn = errAERecordingIsAlreadyOn,
+  errOSAComponentMismatch = -1761,
+  errOSACantOpenComponent = -1762
+};
+
+
+
+
+enum {
+  errOffsetInvalid = -1800,
+  errOffsetIsOutsideOfView = -1801,
+  errTopOfDocument = -1810,
+  errTopOfBody = -1811,
+  errEndOfDocument = -1812,
+  errEndOfBody = -1813
+};
+
+
+enum {
+
+  badDragRefErr = -1850,
+  badDragItemErr = -1851,
+  badDragFlavorErr = -1852,
+  duplicateFlavorErr = -1853,
+  cantGetFlavorErr = -1854,
+  duplicateHandlerErr = -1855,
+  handlerNotFoundErr = -1856,
+  dragNotAcceptedErr = -1857,
+  unsupportedForPlatformErr = -1858,
+  noSuitableDisplaysErr = -1859,
+  badImageRgnErr = -1860,
+  badImageErr = -1861,
+  nonDragOriginatorErr = -1862
+};
+
+
+
+enum {
+  couldNotResolveDataRef = -2000,
+  badImageDescription = -2001,
+  badPublicMovieAtom = -2002,
+  cantFindHandler = -2003,
+  cantOpenHandler = -2004,
+  badComponentType = -2005,
+  noMediaHandler = -2006,
+  noDataHandler = -2007,
+  invalidMedia = -2008,
+  invalidTrack = -2009,
+  invalidMovie = -2010,
+  invalidSampleTable = -2011,
+  invalidDataRef = -2012,
+  invalidHandler = -2013,
+  invalidDuration = -2014,
+  invalidTime = -2015,
+  cantPutPublicMovieAtom = -2016,
+  badEditList = -2017,
+  mediaTypesDontMatch = -2018,
+  progressProcAborted = -2019,
+  movieToolboxUninitialized = -2020,
+  noRecordOfApp = movieToolboxUninitialized,
+  wfFileNotFound = -2021,
+  cantCreateSingleForkFile = -2022,
+  invalidEditState = -2023,
+  nonMatchingEditState = -2024,
+  staleEditState = -2025,
+  userDataItemNotFound = -2026,
+  maxSizeToGrowTooSmall = -2027,
+  badTrackIndex = -2028,
+  trackIDNotFound = -2029,
+  trackNotInMovie = -2030,
+  timeNotInTrack = -2031,
+  timeNotInMedia = -2032,
+  badEditIndex = -2033,
+  internalQuickTimeError = -2034,
+  cantEnableTrack = -2035,
+  invalidRect = -2036,
+  invalidSampleNum = -2037,
+  invalidChunkNum = -2038,
+  invalidSampleDescIndex = -2039,
+  invalidChunkCache = -2040,
+  invalidSampleDescription = -2041,
+  dataNotOpenForRead = -2042,
+  dataNotOpenForWrite = -2043,
+  dataAlreadyOpenForWrite = -2044,
+  dataAlreadyClosed = -2045,
+  endOfDataReached = -2046,
+  dataNoDataRef = -2047,
+  noMovieFound = -2048,
+  invalidDataRefContainer = -2049,
+  badDataRefIndex = -2050,
+  noDefaultDataRef = -2051,
+  couldNotUseAnExistingSample = -2052,
+  featureUnsupported = -2053,
+  noVideoTrackInMovieErr = -2054,
+  noSoundTrackInMovieErr = -2055,
+  soundSupportNotAvailableErr = -2056,
+  unsupportedAuxiliaryImportData = -2057,
+  auxiliaryExportDataUnavailable = -2058,
+  samplesAlreadyInMediaErr = -2059,
+  noSourceTreeFoundErr = -2060,
+  sourceNotFoundErr = -2061,
+  movieTextNotFoundErr = -2062,
+  missingRequiredParameterErr = -2063,
+  invalidSpriteWorldPropertyErr = -2064,
+  invalidSpritePropertyErr = -2065,
+  gWorldsNotSameDepthAndSizeErr = -2066,
+  invalidSpriteIndexErr = -2067,
+  invalidImageIndexErr = -2068,
+  invalidSpriteIDErr = -2069
+};
+
+enum {
+  internalComponentErr = -2070,
+  notImplementedMusicOSErr = -2071,
+  cantSendToSynthesizerOSErr = -2072,
+  cantReceiveFromSynthesizerOSErr = -2073,
+  illegalVoiceAllocationOSErr = -2074,
+  illegalPartOSErr = -2075,
+  illegalChannelOSErr = -2076,
+  illegalKnobOSErr = -2077,
+  illegalKnobValueOSErr = -2078,
+  illegalInstrumentOSErr = -2079,
+  illegalControllerOSErr = -2080,
+  midiManagerAbsentOSErr = -2081,
+  synthesizerNotRespondingOSErr = -2082,
+  synthesizerOSErr = -2083,
+  illegalNoteChannelOSErr = -2084,
+  noteChannelNotAllocatedOSErr = -2085,
+  tunePlayerFullOSErr = -2086,
+  tuneParseOSErr = -2087,
+  noExportProcAvailableErr = -2089,
+  videoOutputInUseErr = -2090
+};
+
+enum {
+  componentDllLoadErr = -2091,
+  componentDllEntryNotFoundErr = -2092,
+  qtmlDllLoadErr = -2093,
+  qtmlDllEntryNotFoundErr = -2094,
+  qtmlUninitialized = -2095,
+  unsupportedOSErr = -2096,
+  unsupportedProcessorErr = -2097
+};
+
+enum {
+  cannotFindAtomErr = -2101,
+  notLeafAtomErr = -2102,
+  atomsNotOfSameTypeErr = -2103,
+  atomIndexInvalidErr = -2104,
+  duplicateAtomTypeAndIDErr = -2105,
+  invalidAtomErr = -2106,
+  invalidAtomContainerErr = -2107,
+  invalidAtomTypeErr = -2108,
+  cannotBeLeafAtomErr = -2109,
+  pathTooLongErr = -2110,
+  emptyPathErr = -2111,
+  noPathMappingErr = -2112,
+  pathNotVerifiedErr = -2113,
+  unknownFormatErr = -2114,
+  wackBadFileErr = -2115,
+  wackForkNotFoundErr = -2116,
+  wackBadMetaDataErr = -2117,
+  qfcbNotFoundErr = -2118,
+  qfcbNotCreatedErr = -2119,
+  AAPNotCreatedErr = -2120,
+  AAPNotFoundErr = -2121,
+  ASDBadHeaderErr = -2122,
+  ASDBadForkErr = -2123,
+  ASDEntryNotFoundErr = -2124,
+  fileOffsetTooBigErr = -2125,
+  notAllowedToSaveMovieErr = -2126,
+  qtNetworkAlreadyAllocatedErr = -2127,
+  urlDataHHTTPProtocolErr = -2129,
+  urlDataHHTTPNoNetDriverErr = -2130,
+  urlDataHHTTPURLErr = -2131,
+  urlDataHHTTPRedirectErr = -2132,
+  urlDataHFTPProtocolErr = -2133,
+  urlDataHFTPShutdownErr = -2134,
+  urlDataHFTPBadUserErr = -2135,
+  urlDataHFTPBadPasswordErr = -2136,
+  urlDataHFTPServerErr = -2137,
+  urlDataHFTPDataConnectionErr = -2138,
+  urlDataHFTPNoDirectoryErr = -2139,
+  urlDataHFTPQuotaErr = -2140,
+  urlDataHFTPPermissionsErr = -2141,
+  urlDataHFTPFilenameErr = -2142,
+  urlDataHFTPNoNetDriverErr = -2143,
+  urlDataHFTPBadNameListErr = -2144,
+  urlDataHFTPNeedPasswordErr = -2145,
+  urlDataHFTPNoPasswordErr = -2146,
+  urlDataHFTPServerDisconnectedErr = -2147,
+  urlDataHFTPURLErr = -2148,
+  notEnoughDataErr = -2149,
+  qtActionNotHandledErr = -2157,
+  qtXMLParseErr = -2158,
+  qtXMLApplicationErr = -2159
+};
+
+
+enum {
+  digiUnimpErr = -2201,
+  qtParamErr = -2202,
+  matrixErr = -2203,
+  notExactMatrixErr = -2204,
+  noMoreKeyColorsErr = -2205,
+  notExactSizeErr = -2206,
+  badDepthErr = -2207,
+  noDMAErr = -2208,
+  badCallOrderErr = -2209
+};
+
+
+
+enum {
+  kernelIncompleteErr = -2401,
+  kernelCanceledErr = -2402,
+  kernelOptionsErr = -2403,
+  kernelPrivilegeErr = -2404,
+  kernelUnsupportedErr = -2405,
+  kernelObjectExistsErr = -2406,
+  kernelWritePermissionErr = -2407,
+  kernelReadPermissionErr = -2408,
+  kernelExecutePermissionErr = -2409,
+  kernelDeletePermissionErr = -2410,
+  kernelExecutionLevelErr = -2411,
+  kernelAttributeErr = -2412,
+  kernelAsyncSendLimitErr = -2413,
+  kernelAsyncReceiveLimitErr = -2414,
+  kernelTimeoutErr = -2415,
+  kernelInUseErr = -2416,
+  kernelTerminatedErr = -2417,
+  kernelExceptionErr = -2418,
+  kernelIDErr = -2419,
+  kernelAlreadyFreeErr = -2421,
+  kernelReturnValueErr = -2422,
+  kernelUnrecoverableErr = -2499
+};
+
+
+
+enum {
+
+  tsmComponentNoErr = 0,
+  tsmUnsupScriptLanguageErr = -2500,
+  tsmInputMethodNotFoundErr = -2501,
+  tsmNotAnAppErr = -2502,
+  tsmAlreadyRegisteredErr = -2503,
+  tsmNeverRegisteredErr = -2504,
+  tsmInvalidDocIDErr = -2505,
+  tsmTSMDocBusyErr = -2506,
+  tsmDocNotActiveErr = -2507,
+  tsmNoOpenTSErr = -2508,
+  tsmCantOpenComponentErr = -2509,
+  tsmTextServiceNotFoundErr = -2510,
+  tsmDocumentOpenErr = -2511,
+  tsmUseInputWindowErr = -2512,
+  tsmTSHasNoMenuErr = -2513,
+  tsmTSNotOpenErr = -2514,
+  tsmComponentAlreadyOpenErr = -2515,
+  tsmInputMethodIsOldErr = -2516,
+  tsmScriptHasNoIMErr = -2517,
+  tsmUnsupportedTypeErr = -2518,
+  tsmUnknownErr = -2519,
+  tsmInvalidContext = -2520,
+  tsmNoHandler = -2521,
+  tsmNoMoreTokens = -2522,
+  tsmNoStem = -2523,
+  tsmDefaultIsNotInputMethodErr = -2524,
+  tsmDocPropertyNotFoundErr = -2528,
+  tsmDocPropertyBufferTooSmallErr = -2529,
+  tsmCantChangeForcedClassStateErr = -2530
+};
+
+
+enum {
+
+  mmInternalError = -2526
+};
+
+
+enum {
+  nrLockedErr = -2536,
+  nrNotEnoughMemoryErr = -2537,
+  nrInvalidNodeErr = -2538,
+  nrNotFoundErr = -2539,
+  nrNotCreatedErr = -2540,
+  nrNameErr = -2541,
+  nrNotSlotDeviceErr = -2542,
+  nrDataTruncatedErr = -2543,
+  nrPowerErr = -2544,
+  nrPowerSwitchAbortErr = -2545,
+  nrTypeMismatchErr = -2546,
+  nrNotModifiedErr = -2547,
+  nrOverrunErr = -2548,
+  nrResultCodeBase = -2549,
+  nrPathNotFound = -2550,
+  nrPathBufferTooSmall = -2551,
+  nrInvalidEntryIterationOp = -2552,
+  nrPropertyAlreadyExists = -2553,
+  nrIterationDone = -2554,
+  nrExitedIteratorScope = -2555,
+  nrTransactionAborted = -2556,
+  nrCallNotSupported = -2557
+};
+
+
+enum {
+  invalidIconRefErr = -2580,
+  noSuchIconErr = -2581,
+  noIconDataAvailableErr = -2582
+};
+enum {
+  errOSACantCoerce = errAECoercionFail,
+  errOSACantAccess = errAENoSuchObject,
+  errOSACantAssign = -10006,
+  errOSAGeneralError = -2700,
+  errOSADivideByZero = -2701,
+  errOSANumericOverflow = -2702,
+  errOSACantLaunch = -2703,
+  errOSAAppNotHighLevelEventAware = -2704,
+  errOSACorruptTerminology = -2705,
+  errOSAStackOverflow = -2706,
+  errOSAInternalTableOverflow = -2707,
+  errOSADataBlockTooLarge = -2708,
+  errOSACantGetTerminology = -2709,
+  errOSACantCreate = -2710
+};
+enum {
+  errOSATypeError = errAEWrongDataType,
+  OSAMessageNotUnderstood = errAEEventNotHandled,
+  OSAUndefinedHandler = errAEHandlerNotFound,
+  OSAIllegalAccess = errAEAccessorNotFound,
+  OSAIllegalIndex = errAEIllegalIndex,
+  OSAIllegalRange = errAEImpossibleRange,
+  OSAIllegalAssign = -10003,
+  OSASyntaxError = -2740,
+  OSASyntaxTypeError = -2741,
+  OSATokenTooLong = -2742,
+  OSAMissingParameter = errAEDescNotFound,
+  OSAParameterMismatch = errAEWrongNumberArgs,
+  OSADuplicateParameter = -2750,
+  OSADuplicateProperty = -2751,
+  OSADuplicateHandler = -2752,
+  OSAUndefinedVariable = -2753,
+  OSAInconsistentDeclarations = -2754,
+  OSAControlFlowError = -2755
+};
+enum {
+  errASCantConsiderAndIgnore = -2720,
+  errASCantCompareMoreThan32k = -2721,
+  errASTerminologyNestingTooDeep = -2760,
+  errASIllegalFormalParameter = -2761,
+  errASParameterNotForEvent = -2762,
+  errASNoResultReturned = -2763,
+  errASInconsistentNames = -2780
+};
+
+
+
+enum {
+  cfragFirstErrCode = -2800,
+  cfragContextIDErr = -2800,
+  cfragConnectionIDErr = -2801,
+  cfragNoSymbolErr = -2802,
+  cfragNoSectionErr = -2803,
+  cfragNoLibraryErr = -2804,
+  cfragDupRegistrationErr = -2805,
+  cfragFragmentFormatErr = -2806,
+  cfragUnresolvedErr = -2807,
+  cfragNoPositionErr = -2808,
+  cfragNoPrivateMemErr = -2809,
+  cfragNoClientMemErr = -2810,
+  cfragNoIDsErr = -2811,
+  cfragInitOrderErr = -2812,
+  cfragImportTooOldErr = -2813,
+  cfragImportTooNewErr = -2814,
+  cfragInitLoopErr = -2815,
+  cfragInitAtBootErr = -2816,
+  cfragLibConnErr = -2817,
+  cfragCFMStartupErr = -2818,
+  cfragCFMInternalErr = -2819,
+  cfragFragmentCorruptErr = -2820,
+  cfragInitFunctionErr = -2821,
+  cfragNoApplicationErr = -2822,
+  cfragArchitectureErr = -2823,
+  cfragFragmentUsageErr = -2824,
+  cfragFileSizeErr = -2825,
+  cfragNotClosureErr = -2826,
+  cfragNoRegistrationErr = -2827,
+  cfragContainerIDErr = -2828,
+  cfragClosureIDErr = -2829,
+  cfragAbortClosureErr = -2830,
+  cfragOutputLengthErr = -2831,
+  cfragLastErrCode = -2899
+};
+
+enum {
+
+  cfragFirstReservedCode = -2897,
+  cfragReservedCode_3 = -2897,
+  cfragReservedCode_2 = -2898,
+  cfragReservedCode_1 = -2899
+};
+enum {
+  invalidComponentID = -3000,
+  validInstancesExist = -3001,
+  componentNotCaptured = -3002,
+  componentDontRegister = -3003,
+  unresolvedComponentDLLErr = -3004,
+  retryComponentRegistrationErr = -3005
+};
+
+
+enum {
+  invalidTranslationPathErr = -3025,
+  couldNotParseSourceFileErr = -3026,
+  noTranslationPathErr = -3030,
+  badTranslationSpecErr = -3031,
+  noPrefAppErr = -3032
+};
+
+enum {
+  buf2SmallErr = -3101,
+  noMPPErr = -3102,
+  ckSumErr = -3103,
+  extractErr = -3104,
+  readQErr = -3105,
+  atpLenErr = -3106,
+  atpBadRsp = -3107,
+  recNotFnd = -3108,
+  sktClosedErr = -3109
+};
+
+
+
+enum {
+  kOTNoError = 0,
+  kOTOutOfMemoryErr = -3211,
+  kOTNotFoundErr = -3201,
+  kOTDuplicateFoundErr = -3216,
+  kOTBadAddressErr = -3150,
+  kOTBadOptionErr = -3151,
+  kOTAccessErr = -3152,
+  kOTBadReferenceErr = -3153,
+  kOTNoAddressErr = -3154,
+  kOTOutStateErr = -3155,
+  kOTBadSequenceErr = -3156,
+  kOTSysErrorErr = -3157,
+  kOTLookErr = -3158,
+  kOTBadDataErr = -3159,
+  kOTBufferOverflowErr = -3160,
+  kOTFlowErr = -3161,
+  kOTNoDataErr = -3162,
+  kOTNoDisconnectErr = -3163,
+  kOTNoUDErrErr = -3164,
+  kOTBadFlagErr = -3165,
+  kOTNoReleaseErr = -3166,
+  kOTNotSupportedErr = -3167,
+  kOTStateChangeErr = -3168,
+  kOTNoStructureTypeErr = -3169,
+  kOTBadNameErr = -3170,
+  kOTBadQLenErr = -3171,
+  kOTAddressBusyErr = -3172,
+  kOTIndOutErr = -3173,
+  kOTProviderMismatchErr = -3174,
+  kOTResQLenErr = -3175,
+  kOTResAddressErr = -3176,
+  kOTQFullErr = -3177,
+  kOTProtocolErr = -3178,
+  kOTBadSyncErr = -3179,
+  kOTCanceledErr = -3180,
+  kEPERMErr = -3200,
+  kENOENTErr = -3201,
+  kENORSRCErr = -3202,
+  kEINTRErr = -3203,
+  kEIOErr = -3204,
+  kENXIOErr = -3205,
+  kEBADFErr = -3208,
+  kEAGAINErr = -3210,
+  kENOMEMErr = -3211,
+  kEACCESErr = -3212,
+  kEFAULTErr = -3213,
+  kEBUSYErr = -3215,
+  kEEXISTErr = -3216,
+  kENODEVErr = -3218,
+  kEINVALErr = -3221,
+  kENOTTYErr = -3224,
+  kEPIPEErr = -3231,
+  kERANGEErr = -3233,
+  kEWOULDBLOCKErr = -3234,
+  kEDEADLKErr = -3234,
+  kEALREADYErr = -3236,
+  kENOTSOCKErr = -3237,
+  kEDESTADDRREQErr = -3238,
+  kEMSGSIZEErr = -3239,
+  kEPROTOTYPEErr = -3240,
+  kENOPROTOOPTErr = -3241,
+  kEPROTONOSUPPORTErr = -3242,
+  kESOCKTNOSUPPORTErr = -3243,
+  kEOPNOTSUPPErr = -3244,
+  kEADDRINUSEErr = -3247,
+  kEADDRNOTAVAILErr = -3248,
+  kENETDOWNErr = -3249,
+  kENETUNREACHErr = -3250,
+  kENETRESETErr = -3251,
+  kECONNABORTEDErr = -3252,
+  kECONNRESETErr = -3253,
+  kENOBUFSErr = -3254,
+  kEISCONNErr = -3255,
+  kENOTCONNErr = -3256,
+  kESHUTDOWNErr = -3257,
+  kETOOMANYREFSErr = -3258,
+  kETIMEDOUTErr = -3259,
+  kECONNREFUSEDErr = -3260,
+  kEHOSTDOWNErr = -3263,
+  kEHOSTUNREACHErr = -3264,
+  kEPROTOErr = -3269,
+  kETIMEErr = -3270,
+  kENOSRErr = -3271,
+  kEBADMSGErr = -3272,
+  kECANCELErr = -3273,
+  kENOSTRErr = -3274,
+  kENODATAErr = -3275,
+  kEINPROGRESSErr = -3276,
+  kESRCHErr = -3277,
+  kENOMSGErr = -3278,
+  kOTClientNotInittedErr = -3279,
+  kOTPortHasDiedErr = -3280,
+  kOTPortWasEjectedErr = -3281,
+  kOTBadConfigurationErr = -3282,
+  kOTConfigurationChangedErr = -3283,
+  kOTUserRequestedErr = -3284,
+  kOTPortLostConnection = -3285
+};
+
+
+
+enum {
+  kQDNoPalette = -3950,
+  kQDNoColorHWCursorSupport = -3951,
+  kQDCursorAlreadyRegistered = -3952,
+  kQDCursorNotRegistered = -3953,
+  kQDCorruptPICTDataErr = -3954
+};
+
+
+
+
+enum {
+  firstPickerError = -4000,
+  invalidPickerType = firstPickerError,
+  requiredFlagsDontMatch = -4001,
+  pickerResourceError = -4002,
+  cantLoadPicker = -4003,
+  cantCreatePickerWindow = -4004,
+  cantLoadPackage = -4005,
+  pickerCantLive = -4006,
+  colorSyncNotInstalled = -4007,
+  badProfileError = -4008,
+  noHelpForItem = -4009
+};
+
+
+
+
+enum {
+  kNSL68kContextNotSupported = -4170,
+  kNSLSchedulerError = -4171,
+  kNSLBadURLSyntax = -4172,
+  kNSLNoCarbonLib = -4173,
+  kNSLUILibraryNotAvailable = -4174,
+  kNSLNotImplementedYet = -4175,
+  kNSLErrNullPtrError = -4176,
+  kNSLSomePluginsFailedToLoad = -4177,
+  kNSLNullNeighborhoodPtr = -4178,
+  kNSLNoPluginsForSearch = -4179,
+  kNSLSearchAlreadyInProgress = -4180,
+  kNSLNoPluginsFound = -4181,
+  kNSLPluginLoadFailed = -4182,
+  kNSLBadProtocolTypeErr = -4183,
+  kNSLNullListPtr = -4184,
+  kNSLBadClientInfoPtr = -4185,
+  kNSLCannotContinueLookup = -4186,
+  kNSLBufferTooSmallForData = -4187,
+  kNSLNoContextAvailable = -4188,
+  kNSLRequestBufferAlreadyInList = -4189,
+  kNSLInvalidPluginSpec = -4190,
+  kNSLNoSupportForService = -4191,
+  kNSLBadNetConnection = -4192,
+  kNSLBadDataTypeErr = -4193,
+  kNSLBadServiceTypeErr = -4194,
+  kNSLBadReferenceErr = -4195,
+  kNSLNoElementsInList = -4196,
+  kNSLInsufficientOTVer = -4197,
+  kNSLInsufficientSysVer = -4198,
+  kNSLNotInitialized = -4199,
+  kNSLInitializationFailed = -4200
+};
+
+
+
+
+enum {
+  kDTPHoldJobErr = -4200,
+  kDTPStopQueueErr = -4201,
+  kDTPTryAgainErr = -4202,
+  kDTPAbortJobErr = 128
+};
+
+
+
+enum {
+
+  cmElementTagNotFound = -4200,
+  cmIndexRangeErr = -4201,
+  cmCantDeleteElement = -4202,
+  cmFatalProfileErr = -4203,
+  cmInvalidProfile = -4204,
+  cmInvalidProfileLocation = -4205,
+  cmCantCopyModifiedV1Profile = -4215,
+
+  cmInvalidSearch = -4206,
+  cmSearchError = -4207,
+  cmErrIncompatibleProfile = -4208,
+  cmInvalidColorSpace = -4209,
+  cmInvalidSrcMap = -4210,
+  cmInvalidDstMap = -4211,
+  cmNoGDevicesError = -4212,
+  cmInvalidProfileComment = -4213,
+  cmRangeOverFlow = -4214,
+  cmNamedColorNotFound = -4216,
+  cmCantGamutCheckError = -4217
+};
+
+
+enum {
+  badFolderDescErr = -4270,
+  duplicateFolderDescErr = -4271,
+  noMoreFolderDescErr = -4272,
+  invalidFolderTypeErr = -4273,
+  duplicateRoutingErr = -4274,
+  routingNotFoundErr = -4275,
+  badRoutingSizeErr = -4276
+};
+
+
+
+enum {
+  coreFoundationUnknownErr = -4960
+};
+
+
+enum {
+  internalScrapErr = -4988,
+  duplicateScrapFlavorErr = -4989,
+  badScrapRefErr = -4990,
+  processStateIncorrectErr = -4991,
+  scrapPromiseNotKeptErr = -4992,
+  noScrapPromiseKeeperErr = -4993,
+  nilScrapFlavorDataErr = -4994,
+  scrapFlavorFlagsMismatchErr = -4995,
+  scrapFlavorSizeMismatchErr = -4996,
+  illegalScrapFlavorFlagsErr = -4997,
+  illegalScrapFlavorTypeErr = -4998,
+  illegalScrapFlavorSizeErr = -4999,
+  scrapFlavorNotFoundErr = -102,
+  needClearScrapErr = -100
+};
+
+
+enum {
+
+  afpAccessDenied = -5000,
+  afpAuthContinue = -5001,
+  afpBadUAM = -5002,
+  afpBadVersNum = -5003,
+  afpBitmapErr = -5004,
+  afpCantMove = -5005,
+  afpDenyConflict = -5006,
+  afpDirNotEmpty = -5007,
+  afpDiskFull = -5008,
+  afpEofError = -5009,
+  afpFileBusy = -5010,
+  afpFlatVol = -5011,
+  afpItemNotFound = -5012,
+  afpLockErr = -5013,
+  afpMiscErr = -5014,
+  afpNoMoreLocks = -5015,
+  afpNoServer = -5016,
+  afpObjectExists = -5017,
+  afpObjectNotFound = -5018,
+  afpParmErr = -5019,
+  afpRangeNotLocked = -5020,
+  afpRangeOverlap = -5021,
+  afpSessClosed = -5022,
+  afpUserNotAuth = -5023,
+  afpCallNotSupported = -5024,
+  afpObjectTypeErr = -5025,
+  afpTooManyFilesOpen = -5026,
+  afpServerGoingDown = -5027,
+  afpCantRename = -5028,
+  afpDirNotFound = -5029,
+  afpIconTypeError = -5030,
+  afpVolLocked = -5031,
+  afpObjectLocked = -5032,
+  afpContainsSharedErr = -5033,
+  afpIDNotFound = -5034,
+  afpIDExists = -5035,
+  afpDiffVolErr = -5036,
+  afpCatalogChanged = -5037,
+  afpSameObjectErr = -5038,
+  afpBadIDErr = -5039,
+  afpPwdSameErr = -5040,
+  afpPwdTooShortErr = -5041,
+  afpPwdExpiredErr = -5042,
+  afpInsideSharedErr = -5043,
+
+  afpInsideTrashErr = -5044,
+
+  afpPwdNeedsChangeErr = -5045,
+  afpPwdPolicyErr = -5046,
+  afpAlreadyLoggedInErr = -5047,
+  afpCallNotAllowed = -5048
+};
+
+enum {
+
+  afpBadDirIDType = -5060,
+  afpCantMountMoreSrvre = -5061,
+  afpAlreadyMounted = -5062,
+  afpSameNodeErr = -5063
+};
+
+
+
+
+
+
+enum {
+  numberFormattingNotANumberErr = -5200,
+  numberFormattingOverflowInDestinationErr = -5201,
+  numberFormattingBadNumberFormattingObjectErr = -5202,
+  numberFormattingSpuriousCharErr = -5203,
+  numberFormattingLiteralMissingErr = -5204,
+  numberFormattingDelimiterMissingErr = -5205,
+  numberFormattingEmptyFormatErr = -5206,
+  numberFormattingBadFormatErr = -5207,
+  numberFormattingBadOptionsErr = -5208,
+  numberFormattingBadTokenErr = -5209,
+  numberFormattingUnOrderedCurrencyRangeErr = -5210,
+  numberFormattingBadCurrencyPositionErr = -5211,
+  numberFormattingNotADigitErr = -5212,
+  numberFormattingUnOrdredCurrencyRangeErr = -5210,
+  numberFortmattingNotADigitErr = -5212
+};
+
+
+enum {
+  textParserBadParamErr = -5220,
+  textParserObjectNotFoundErr = -5221,
+  textParserBadTokenValueErr = -5222,
+  textParserBadParserObjectErr = -5223,
+  textParserParamErr = -5224,
+  textParserNoMoreTextErr = -5225,
+  textParserBadTextLanguageErr = -5226,
+  textParserBadTextEncodingErr = -5227,
+  textParserNoSuchTokenFoundErr = -5228,
+  textParserNoMoreTokensErr = -5229
+};
+
+enum {
+  errUnknownAttributeTag = -5240,
+  errMarginWilllNotFit = -5241,
+  errNotInImagingMode = -5242,
+  errAlreadyInImagingMode = -5243,
+  errEngineNotFound = -5244,
+  errIteratorReachedEnd = -5245,
+  errInvalidRange = -5246,
+  errOffsetNotOnElementBounday = -5247,
+  errNoHiliteText = -5248,
+  errEmptyScrap = -5249,
+  errReadOnlyText = -5250,
+  errUnknownElement = -5251,
+  errNonContiuousAttribute = -5252,
+  errCannotUndo = -5253
+};
+
+
+
+enum {
+  hrHTMLRenderingLibNotInstalledErr = -5360,
+  hrMiscellaneousExceptionErr = -5361,
+  hrUnableToResizeHandleErr = -5362,
+  hrURLNotHandledErr = -5363
+};
+
+
+
+enum {
+  errIANoErr = 0,
+  errIAUnknownErr = -5380,
+  errIAAllocationErr = -5381,
+  errIAParamErr = -5382,
+  errIANoMoreItems = -5383,
+  errIABufferTooSmall = -5384,
+  errIACanceled = -5385,
+  errIAInvalidDocument = -5386,
+  errIATextExtractionErr = -5387,
+  errIAEndOfTextRun = -5388
+};
+
+
+
+enum {
+  qtsBadSelectorErr = -5400,
+  qtsBadStateErr = -5401,
+  qtsBadDataErr = -5402,
+  qtsUnsupportedDataTypeErr = -5403,
+  qtsUnsupportedRateErr = -5404,
+  qtsUnsupportedFeatureErr = -5405,
+  qtsTooMuchDataErr = -5406,
+  qtsUnknownValueErr = -5407,
+  qtsTimeoutErr = -5408,
+  qtsConnectionFailedErr = -5420,
+  qtsAddressBusyErr = -5421
+};
+
+
+enum {
+
+  gestaltUnknownErr = -5550,
+  gestaltUndefSelectorErr = -5551,
+  gestaltDupSelectorErr = -5552,
+  gestaltLocationErr = -5553
+};
+
+
+
+enum {
+  menuPropertyInvalidErr = -5603,
+  menuPropertyInvalid = menuPropertyInvalidErr,
+  menuPropertyNotFoundErr = -5604,
+  menuNotFoundErr = -5620,
+  menuUsesSystemDefErr = -5621,
+  menuItemNotFoundErr = -5622,
+  menuInvalidErr = -5623
+};
+
+
+
+enum {
+  errInvalidWindowPtr = -5600,
+  errInvalidWindowRef = -5600,
+  errUnsupportedWindowAttributesForClass = -5601,
+  errWindowDoesNotHaveProxy = -5602,
+  errInvalidWindowProperty = -5603,
+  errWindowPropertyNotFound = -5604,
+  errUnrecognizedWindowClass = -5605,
+  errCorruptWindowDescription = -5606,
+  errUserWantsToDragWindow = -5607,
+  errWindowsAlreadyInitialized = -5608,
+  errFloatingWindowsNotInitialized = -5609,
+  errWindowNotFound = -5610,
+  errWindowDoesNotFitOnscreen = -5611,
+  windowAttributeImmutableErr = -5612,
+  windowAttributesConflictErr = -5613,
+  windowManagerInternalErr = -5614,
+  windowWrongStateErr = -5615,
+  windowGroupInvalidErr = -5616,
+  windowAppModalStateAlreadyExistsErr = -5617,
+  windowNoAppModalStateErr = -5618,
+  errWindowDoesntSupportFocus = -30583,
+  errWindowRegionCodeInvalid = -30593
+};
+
+
+
+enum {
+  dialogNoTimeoutErr = -5640
+};
+
+
+
+enum {
+  kNavWrongDialogStateErr = -5694,
+  kNavWrongDialogClassErr = -5695,
+  kNavInvalidSystemConfigErr = -5696,
+  kNavCustomControlMessageFailedErr = -5697,
+  kNavInvalidCustomControlMessageErr = -5698,
+  kNavMissingKindStringErr = -5699
+};
+
+
+
+enum {
+  collectionItemLockedErr = -5750,
+  collectionItemNotFoundErr = -5751,
+  collectionIndexRangeErr = -5752,
+  collectionVersionErr = -5753
+};
+
+
+
+enum {
+  kQTSSUnknownErr = -6150
+};
+
+
+enum {
+
+  kDMGenErr = -6220,
+
+  kDMMirroringOnAlready = -6221,
+  kDMWrongNumberOfDisplays = -6222,
+  kDMMirroringBlocked = -6223,
+  kDMCantBlock = -6224,
+  kDMMirroringNotOn = -6225,
+
+  kSysSWTooOld = -6226,
+  kDMSWNotInitializedErr = -6227,
+  kDMDriverNotDisplayMgrAwareErr = -6228,
+  kDMDisplayNotFoundErr = -6229,
+  kDMNotFoundErr = -6229,
+  kDMDisplayAlreadyInstalledErr = -6230,
+  kDMMainDisplayCannotMoveErr = -6231,
+  kDMNoDeviceTableclothErr = -6231,
+  kDMFoundErr = -6232
+};
+
+
+
+
+
+enum {
+  laTooSmallBufferErr = -6984,
+  laEnvironmentBusyErr = -6985,
+  laEnvironmentNotFoundErr = -6986,
+  laEnvironmentExistErr = -6987,
+  laInvalidPathErr = -6988,
+  laNoMoreMorphemeErr = -6989,
+  laFailAnalysisErr = -6990,
+  laTextOverFlowErr = -6991,
+  laDictionaryNotOpenedErr = -6992,
+  laDictionaryUnknownErr = -6993,
+  laDictionaryTooManyErr = -6994,
+  laPropertyValueErr = -6995,
+  laPropertyUnknownErr = -6996,
+  laPropertyIsReadOnlyErr = -6997,
+  laPropertyNotFoundErr = -6998,
+  laPropertyErr = -6999,
+  laEngineNotFoundErr = -7000
+};
+
+
+enum {
+  kUSBNoErr = 0,
+  kUSBNoTran = 0,
+  kUSBNoDelay = 0,
+  kUSBPending = 1
+};
+enum {
+  kUSBNotSent2Err = -6901,
+  kUSBNotSent1Err = -6902,
+  kUSBBufUnderRunErr = -6903,
+  kUSBBufOvrRunErr = -6904,
+  kUSBRes2Err = -6905,
+  kUSBRes1Err = -6906,
+  kUSBUnderRunErr = -6907,
+  kUSBOverRunErr = -6908,
+  kUSBWrongPIDErr = -6909,
+  kUSBPIDCheckErr = -6910,
+  kUSBNotRespondingErr = -6911,
+  kUSBEndpointStallErr = -6912,
+  kUSBDataToggleErr = -6913,
+  kUSBBitstufErr = -6914,
+  kUSBCRCErr = -6915,
+  kUSBLinkErr = -6916
+};
+
+
+
+
+
+
+enum {
+  kUSBQueueFull = -6948,
+  kUSBNotHandled = -6987,
+  kUSBUnknownNotification = -6949,
+  kUSBBadDispatchTable = -6950
+};
+
+
+
+
+
+
+
+enum {
+  kUSBInternalReserved10 = -6951,
+  kUSBInternalReserved9 = -6952,
+  kUSBInternalReserved8 = -6953,
+  kUSBInternalReserved7 = -6954,
+  kUSBInternalReserved6 = -6955,
+  kUSBInternalReserved5 = -6956,
+  kUSBInternalReserved4 = -6957,
+  kUSBInternalReserved3 = -6958,
+  kUSBInternalReserved2 = -6959,
+  kUSBInternalReserved1 = -6960
+};
+
+
+enum {
+  kUSBPortDisabled = -6969,
+  kUSBQueueAborted = -6970,
+  kUSBTimedOut = -6971,
+  kUSBDeviceDisconnected = -6972,
+  kUSBDeviceNotSuspended = -6973,
+  kUSBDeviceSuspended = -6974,
+  kUSBInvalidBuffer = -6975,
+  kUSBDevicePowerProblem = -6976,
+  kUSBDeviceBusy = -6977,
+  kUSBUnknownInterfaceErr = -6978,
+  kUSBPipeStalledError = -6979,
+  kUSBPipeIdleError = -6980,
+  kUSBNoBandwidthError = -6981,
+  kUSBAbortedError = -6982,
+  kUSBFlagsError = -6983,
+  kUSBCompletionError = -6984,
+  kUSBPBLengthError = -6985,
+  kUSBPBVersionError = -6986,
+  kUSBNotFound = -6987,
+  kUSBOutOfMemoryErr = -6988,
+  kUSBDeviceErr = -6989,
+  kUSBNoDeviceErr = -6990,
+  kUSBAlreadyOpenErr = -6991,
+  kUSBTooManyTransactionsErr = -6992,
+  kUSBUnknownRequestErr = -6993,
+  kUSBRqErr = -6994,
+  kUSBIncorrectTypeErr = -6995,
+  kUSBTooManyPipesErr = -6996,
+  kUSBUnknownPipeErr = -6997,
+  kUSBUnknownDeviceErr = -6998,
+  kUSBInternalErr = -6999
+};
+
+
+
+
+
+enum {
+  dcmParamErr = -7100,
+  dcmNotDictionaryErr = -7101,
+  dcmBadDictionaryErr = -7102,
+  dcmPermissionErr = -7103,
+  dcmDictionaryNotOpenErr = -7104,
+  dcmDictionaryBusyErr = -7105,
+  dcmBlockFullErr = -7107,
+  dcmNoRecordErr = -7108,
+  dcmDupRecordErr = -7109,
+  dcmNecessaryFieldErr = -7110,
+  dcmBadFieldInfoErr = -7111,
+  dcmBadFieldTypeErr = -7112,
+  dcmNoFieldErr = -7113,
+  dcmBadKeyErr = -7115,
+  dcmTooManyKeyErr = -7116,
+  dcmBadDataSizeErr = -7117,
+  dcmBadFindMethodErr = -7118,
+  dcmBadPropertyErr = -7119,
+  dcmProtectedErr = -7121,
+  dcmNoAccessMethodErr = -7122,
+  dcmBadFeatureErr = -7124,
+  dcmIterationCompleteErr = -7126,
+  dcmBufferOverflowErr = -7127
+};
+
+
+
+enum {
+  kRAInvalidParameter = -7100,
+  kRAInvalidPort = -7101,
+  kRAStartupFailed = -7102,
+  kRAPortSetupFailed = -7103,
+  kRAOutOfMemory = -7104,
+  kRANotSupported = -7105,
+  kRAMissingResources = -7106,
+  kRAIncompatiblePrefs = -7107,
+  kRANotConnected = -7108,
+  kRAConnectionCanceled = -7109,
+  kRAUnknownUser = -7110,
+  kRAInvalidPassword = -7111,
+  kRAInternalError = -7112,
+  kRAInstallationDamaged = -7113,
+  kRAPortBusy = -7114,
+  kRAUnknownPortState = -7115,
+  kRAInvalidPortState = -7116,
+  kRAInvalidSerialProtocol = -7117,
+  kRAUserLoginDisabled = -7118,
+  kRAUserPwdChangeRequired = -7119,
+  kRAUserPwdEntryRequired = -7120,
+  kRAUserInteractionRequired = -7121,
+  kRAInitOpenTransportFailed = -7122,
+  kRARemoteAccessNotReady = -7123,
+  kRATCPIPInactive = -7124,
+  kRATCPIPNotConfigured = -7125,
+  kRANotPrimaryInterface = -7126,
+  kRAConfigurationDBInitErr = -7127,
+  kRAPPPProtocolRejected = -7128,
+  kRAPPPAuthenticationFailed = -7129,
+  kRAPPPNegotiationFailed = -7130,
+  kRAPPPUserDisconnected = -7131,
+  kRAPPPPeerDisconnected = -7132,
+  kRAPeerNotResponding = -7133,
+  kRAATalkInactive = -7134,
+  kRAExtAuthenticationFailed = -7135,
+  kRANCPRejectedbyPeer = -7136,
+  kRADuplicateIPAddr = -7137,
+  kRACallBackFailed = -7138,
+  kRANotEnabled = -7139
+};
+enum {
+  kATSUInvalidTextLayoutErr = -8790,
+
+
+  kATSUInvalidStyleErr = -8791,
+
+
+  kATSUInvalidTextRangeErr = -8792,
+
+
+  kATSUFontsMatched = -8793,
+
+
+  kATSUFontsNotMatched = -8794,
+
+
+  kATSUNoCorrespondingFontErr = -8795,
+
+
+
+
+
+
+  kATSUInvalidFontErr = -8796,
+  kATSUInvalidAttributeValueErr = -8797,
+
+  kATSUInvalidAttributeSizeErr = -8798,
+
+  kATSUInvalidAttributeTagErr = -8799,
+
+  kATSUInvalidCacheErr = -8800,
+
+
+
+
+  kATSUNotSetErr = -8801,
+
+
+
+  kATSUNoStyleRunsAssignedErr = -8802,
+
+  kATSUQuickDrawTextErr = -8803,
+
+  kATSULowLevelErr = -8804,
+
+  kATSUNoFontCmapAvailableErr = -8805,
+
+  kATSUNoFontScalerAvailableErr = -8806,
+
+  kATSUCoordinateOverflowErr = -8807,
+
+  kATSULineBreakInWord = -8808,
+
+
+  kATSUBusyObjectErr = -8809
+};
+enum {
+
+  kTextUnsupportedEncodingErr = -8738,
+  kTextMalformedInputErr = -8739,
+  kTextUndefinedElementErr = -8740,
+  kTECMissingTableErr = -8745,
+  kTECTableChecksumErr = -8746,
+  kTECTableFormatErr = -8747,
+  kTECCorruptConverterErr = -8748,
+  kTECNoConversionPathErr = -8749,
+  kTECBufferBelowMinimumSizeErr = -8750,
+  kTECArrayFullErr = -8751,
+  kTECBadTextRunErr = -8752,
+  kTECPartialCharErr = -8753,
+  kTECUnmappableElementErr = -8754,
+  kTECIncompleteElementErr = -8755,
+  kTECDirectionErr = -8756,
+  kTECGlobalsUnavailableErr = -8770,
+  kTECItemUnavailableErr = -8771,
+
+  kTECUsedFallbacksStatus = -8783,
+  kTECNeedFlushStatus = -8784,
+  kTECOutputBufferFullStatus = -8785,
+
+  unicodeChecksumErr = -8769,
+  unicodeNoTableErr = -8768,
+  unicodeVariantErr = -8767,
+  unicodeFallbacksErr = -8766,
+  unicodePartConvertErr = -8765,
+  unicodeBufErr = -8764,
+  unicodeCharErr = -8763,
+  unicodeElementErr = -8762,
+  unicodeNotFoundErr = -8761,
+  unicodeTableFormatErr = -8760,
+  unicodeDirectionErr = -8759,
+  unicodeContextualErr = -8758,
+  unicodeTextEncodingDataErr = -8757
+};
+
+
+
+enum {
+  kUTCUnderflowErr = -8850,
+  kUTCOverflowErr = -8851,
+  kIllegalClockValueErr = -8852
+};
+
+
+
+
+
+enum {
+  kATSUInvalidFontFallbacksErr = -8900,
+
+  kATSUUnsupportedStreamFormatErr = -8901,
+
+  kATSUBadStreamErr = -8902,
+
+
+  kATSUOutputBufferTooSmallErr = -8903,
+
+  kATSUInvalidCallInsideCallbackErr = -8904,
+
+  kATSULastErr = -8959
+};
+
+
+
+enum {
+  codecErr = -8960,
+  noCodecErr = -8961,
+  codecUnimpErr = -8962,
+  codecSizeErr = -8963,
+  codecScreenBufErr = -8964,
+  codecImageBufErr = -8965,
+  codecSpoolErr = -8966,
+  codecAbortErr = -8967,
+  codecWouldOffscreenErr = -8968,
+  codecBadDataErr = -8969,
+  codecDataVersErr = -8970,
+  codecExtensionNotFoundErr = -8971,
+  scTypeNotFoundErr = codecExtensionNotFoundErr,
+  codecConditionErr = -8972,
+  codecOpenErr = -8973,
+  codecCantWhenErr = -8974,
+  codecCantQueueErr = -8975,
+  codecNothingToBlitErr = -8976,
+  codecNoMemoryPleaseWaitErr = -8977,
+  codecDisabledErr = -8978,
+  codecNeedToFlushChainErr = -8979,
+  lockPortBitsBadSurfaceErr = -8980,
+  lockPortBitsWindowMovedErr = -8981,
+  lockPortBitsWindowResizedErr = -8982,
+  lockPortBitsWindowClippedErr = -8983,
+  lockPortBitsBadPortErr = -8984,
+  lockPortBitsSurfaceLostErr = -8985,
+  codecParameterDialogConfirm = -8986,
+  codecNeedAccessKeyErr = -8987,
+  codecOffscreenFailedErr = -8988,
+  codecDroppedFrameErr = -8989,
+  directXObjectAlreadyExists = -8990,
+  lockPortBitsWrongGDeviceErr = -8991,
+  codecOffscreenFailedPleaseRetryErr = -8992,
+  badCodecCharacterizationErr = -8993,
+  noThumbnailFoundErr = -8994
+};
+
+
+
+enum {
+  kBadAdapterErr = -9050,
+  kBadAttributeErr = -9051,
+  kBadBaseErr = -9052,
+  kBadEDCErr = -9053,
+  kBadIRQErr = -9054,
+  kBadOffsetErr = -9055,
+  kBadPageErr = -9056,
+  kBadSizeErr = -9057,
+  kBadSocketErr = -9058,
+  kBadTypeErr = -9059,
+  kBadVccErr = -9060,
+  kBadVppErr = -9061,
+  kBadWindowErr = -9062,
+  kBadArgLengthErr = -9063,
+  kBadArgsErr = -9064,
+  kBadHandleErr = -9065,
+  kBadCISErr = -9066,
+  kBadSpeedErr = -9067,
+  kReadFailureErr = -9068,
+  kWriteFailureErr = -9069,
+  kGeneralFailureErr = -9070,
+  kNoCardErr = -9071,
+  kUnsupportedFunctionErr = -9072,
+  kUnsupportedModeErr = -9073,
+  kBusyErr = -9074,
+  kWriteProtectedErr = -9075,
+  kConfigurationLockedErr = -9076,
+  kInUseErr = -9077,
+  kNoMoreItemsErr = -9078,
+  kOutOfResourceErr = -9079,
+  kNoCardSevicesSocketsErr = -9080,
+  kInvalidRegEntryErr = -9081,
+  kBadLinkErr = -9082,
+  kBadDeviceErr = -9083,
+  k16BitCardErr = -9084,
+  kCardBusCardErr = -9085,
+  kPassCallToChainErr = -9086,
+  kCantConfigureCardErr = -9087,
+  kPostCardEventErr = -9088,
+  kInvalidDeviceNumber = -9089,
+  kUnsupportedVsErr = -9090,
+  kInvalidCSClientErr = -9091,
+  kBadTupleDataErr = -9092,
+  kBadCustomIFIDErr = -9093,
+  kNoIOWindowRequestedErr = -9094,
+  kNoMoreTimerClientsErr = -9095,
+  kNoMoreInterruptSlotsErr = -9096,
+  kNoClientTableErr = -9097,
+  kUnsupportedCardErr = -9098,
+  kNoCardEnablersFoundErr = -9099,
+  kNoEnablerForCardErr = -9100,
+  kNoCompatibleNameErr = -9101,
+  kClientRequestDenied = -9102,
+
+  kNotReadyErr = -9103,
+  kTooManyIOWindowsErr = -9104,
+  kAlreadySavedStateErr = -9105,
+  kAttemptDupCardEntryErr = -9106,
+  kCardPowerOffErr = -9107,
+  kNotZVCapableErr = -9108,
+  kNoCardBusCISErr = -9109
+};
+
+
+enum {
+  noDeviceForChannel = -9400,
+  grabTimeComplete = -9401,
+  cantDoThatInCurrentMode = -9402,
+  notEnoughMemoryToGrab = -9403,
+  notEnoughDiskSpaceToGrab = -9404,
+  couldntGetRequiredComponent = -9405,
+  badSGChannel = -9406,
+  seqGrabInfoNotAvailable = -9407,
+  deviceCantMeetRequest = -9408,
+  badControllerHeight = -9994,
+  editingNotAllowed = -9995,
+  controllerBoundsNotExact = -9996,
+  cannotSetWidthOfAttachedController = -9997,
+  controllerHasFixedHeight = -9998,
+  cannotMoveAttachedController = -9999
+};
+
+
+enum {
+  errAEBadKeyForm = -10002,
+  errAECantHandleClass = -10010,
+  errAECantSupplyType = -10009,
+  errAECantUndo = -10015,
+  errAEEventFailed = -10000,
+  errAEIndexTooLarge = -10007,
+  errAEInTransaction = -10011,
+  errAELocalOnly = -10016,
+  errAENoSuchTransaction = -10012,
+  errAENotAnElement = -10008,
+  errAENotASingleObject = -10014,
+  errAENotModifiable = -10003,
+  errAENoUserSelection = -10013,
+  errAEPrivilegeError = -10004,
+  errAEReadDenied = -10005,
+  errAETypeError = -10001,
+  errAEWriteDenied = -10006,
+  errAENotAnEnumMember = -10023,
+  errAECantPutThatThere = -10024,
+  errAEPropertiesClash = -10025
+};
+
+
+enum {
+  telGenericError = -1,
+  telNoErr = 0,
+  telNoTools = 8,
+  telBadTermErr = -10001,
+  telBadDNErr = -10002,
+  telBadCAErr = -10003,
+  telBadHandErr = -10004,
+  telBadProcErr = -10005,
+  telCAUnavail = -10006,
+  telNoMemErr = -10007,
+  telNoOpenErr = -10008,
+  telBadHTypeErr = -10010,
+  telHTypeNotSupp = -10011,
+  telBadLevelErr = -10012,
+  telBadVTypeErr = -10013,
+  telVTypeNotSupp = -10014,
+  telBadAPattErr = -10015,
+  telAPattNotSupp = -10016,
+  telBadIndex = -10017,
+  telIndexNotSupp = -10018,
+  telBadStateErr = -10019,
+  telStateNotSupp = -10020,
+  telBadIntExt = -10021,
+  telIntExtNotSupp = -10022,
+  telBadDNDType = -10023,
+  telDNDTypeNotSupp = -10024,
+  telFeatNotSub = -10030,
+  telFeatNotAvail = -10031,
+  telFeatActive = -10032,
+  telFeatNotSupp = -10033,
+  telConfLimitErr = -10040,
+  telConfNoLimit = -10041,
+  telConfErr = -10042,
+  telConfRej = -10043,
+  telTransferErr = -10044,
+  telTransferRej = -10045,
+  telCBErr = -10046,
+  telConfLimitExceeded = -10047,
+  telBadDNType = -10050,
+  telBadPageID = -10051,
+  telBadIntercomID = -10052,
+  telBadFeatureID = -10053,
+  telBadFwdType = -10054,
+  telBadPickupGroupID = -10055,
+  telBadParkID = -10056,
+  telBadSelect = -10057,
+  telBadBearerType = -10058,
+  telBadRate = -10059,
+  telDNTypeNotSupp = -10060,
+  telFwdTypeNotSupp = -10061,
+  telBadDisplayMode = -10062,
+  telDisplayModeNotSupp = -10063,
+  telNoCallbackRef = -10064,
+  telAlreadyOpen = -10070,
+  telStillNeeded = -10071,
+  telTermNotOpen = -10072,
+  telCANotAcceptable = -10080,
+  telCANotRejectable = -10081,
+  telCANotDeflectable = -10082,
+  telPBErr = -10090,
+  telBadFunction = -10091,
+
+  telNoSuchTool = -10102,
+  telUnknownErr = -10103,
+  telNoCommFolder = -10106,
+  telInitFailed = -10107,
+  telBadCodeResource = -10108,
+  telDeviceNotFound = -10109,
+  telBadProcID = -10110,
+  telValidateFailed = -10111,
+  telAutoAnsNotOn = -10112,
+  telDetAlreadyOn = -10113,
+  telBadSWErr = -10114,
+  telBadSampleRate = -10115,
+  telNotEnoughdspBW = -10116
+};
+
+enum {
+  errTaskNotFound = -10780
+};
+
+
+
+
+
+enum {
+
+  pmBusyErr = -13000,
+  pmReplyTOErr = -13001,
+  pmSendStartErr = -13002,
+  pmSendEndErr = -13003,
+  pmRecvStartErr = -13004,
+  pmRecvEndErr = -13005
+};
+
+
+enum {
+  kPowerHandlerExistsForDeviceErr = -13006,
+  kPowerHandlerNotFoundForDeviceErr = -13007,
+  kPowerHandlerNotFoundForProcErr = -13008,
+  kPowerMgtMessageNotHandled = -13009,
+  kPowerMgtRequestDenied = -13010,
+  kCantReportProcessorTemperatureErr = -13013,
+  kProcessorTempRoutineRequiresMPLib2 = -13014,
+  kNoSuchPowerSource = -13020,
+  kBridgeSoftwareRunningCantSleep = -13038
+};
+
+
+
+enum {
+  debuggingExecutionContextErr = -13880,
+  debuggingDuplicateSignatureErr = -13881,
+  debuggingDuplicateOptionErr = -13882,
+  debuggingInvalidSignatureErr = -13883,
+  debuggingInvalidOptionErr = -13884,
+  debuggingInvalidNameErr = -13885,
+  debuggingNoCallbackErr = -13886,
+  debuggingNoMatchErr = -13887
+};
+
+
+
+enum {
+  kHIDVersionIncompatibleErr = -13909,
+  kHIDDeviceNotReady = -13910
+};
+
+
+
+enum {
+  kHIDSuccess = 0,
+  kHIDInvalidRangePageErr = -13923,
+  kHIDReportIDZeroErr = -13924,
+  kHIDReportCountZeroErr = -13925,
+  kHIDReportSizeZeroErr = -13926,
+  kHIDUnmatchedDesignatorRangeErr = -13927,
+  kHIDUnmatchedStringRangeErr = -13928,
+  kHIDInvertedUsageRangeErr = -13929,
+  kHIDUnmatchedUsageRangeErr = -13930,
+  kHIDInvertedPhysicalRangeErr = -13931,
+  kHIDInvertedLogicalRangeErr = -13932,
+  kHIDBadLogicalMaximumErr = -13933,
+  kHIDBadLogicalMinimumErr = -13934,
+  kHIDUsagePageZeroErr = -13935,
+  kHIDEndOfDescriptorErr = -13936,
+  kHIDNotEnoughMemoryErr = -13937,
+  kHIDBadParameterErr = -13938,
+  kHIDNullPointerErr = -13939,
+  kHIDInvalidReportLengthErr = -13940,
+  kHIDInvalidReportTypeErr = -13941,
+  kHIDBadLogPhysValuesErr = -13942,
+  kHIDIncompatibleReportErr = -13943,
+  kHIDInvalidPreparsedDataErr = -13944,
+  kHIDNotValueArrayErr = -13945,
+  kHIDUsageNotFoundErr = -13946,
+  kHIDValueOutOfRangeErr = -13947,
+  kHIDBufferTooSmallErr = -13948,
+  kHIDNullStateErr = -13949,
+  kHIDBaseError = -13950
+};
+
+
+
+enum {
+  kModemOutOfMemory = -14000,
+  kModemPreferencesMissing = -14001,
+  kModemScriptMissing = -14002
+};
+
+
+
+
+enum {
+  kTXNEndIterationErr = -22000,
+  kTXNCannotAddFrameErr = -22001,
+  kTXNInvalidFrameIDErr = -22002,
+  kTXNIllegalToCrossDataBoundariesErr = -22003,
+  kTXNUserCanceledOperationErr = -22004,
+  kTXNBadDefaultFileTypeWarning = -22005,
+  kTXNCannotSetAutoIndentErr = -22006,
+  kTXNRunIndexOutofBoundsErr = -22007,
+  kTXNNoMatchErr = -22008,
+  kTXNAttributeTagInvalidForRunErr = -22009,
+  kTXNSomeOrAllTagsInvalidForRunErr = -22010,
+  kTXNInvalidRunIndex = -22011,
+  kTXNAlreadyInitializedErr = -22012,
+  kTXNCannotTurnTSMOffWhenUsingUnicodeErr = -22013,
+  kTXNCopyNotAllowedInEchoModeErr = -22014,
+  kTXNDataTypeNotAllowedErr = -22015,
+  kTXNATSUIIsNotInstalledErr = -22016,
+  kTXNOutsideOfLineErr = -22017,
+  kTXNOutsideOfFrameErr = -22018
+};
+
+
+
+
+
+enum {
+  printerStatusOpCodeNotSupportedErr = -25280
+};
+
+
+
+enum {
+  errKCNotAvailable = -25291,
+  errKCReadOnly = -25292,
+  errKCAuthFailed = -25293,
+  errKCNoSuchKeychain = -25294,
+  errKCInvalidKeychain = -25295,
+  errKCDuplicateKeychain = -25296,
+  errKCDuplicateCallback = -25297,
+  errKCInvalidCallback = -25298,
+  errKCDuplicateItem = -25299,
+  errKCItemNotFound = -25300,
+  errKCBufferTooSmall = -25301,
+  errKCDataTooLarge = -25302,
+  errKCNoSuchAttr = -25303,
+  errKCInvalidItemRef = -25304,
+  errKCInvalidSearchRef = -25305,
+  errKCNoSuchClass = -25306,
+  errKCNoDefaultKeychain = -25307,
+  errKCInteractionNotAllowed = -25308,
+  errKCReadOnlyAttr = -25309,
+  errKCWrongKCVersion = -25310,
+  errKCKeySizeNotAllowed = -25311,
+  errKCNoStorageModule = -25312,
+  errKCNoCertificateModule = -25313,
+  errKCNoPolicyModule = -25314,
+  errKCInteractionRequired = -25315,
+  errKCDataNotAvailable = -25316,
+  errKCDataNotModifiable = -25317,
+  errKCCreateChainFailed = -25318
+};
+
+
+
+enum {
+  kUCOutputBufferTooSmall = -25340,
+  kUCTextBreakLocatorMissingType = -25341
+};
+
+enum {
+  kUCTSNoKeysAddedToObjectErr = -25342,
+  kUCTSSearchListErr = -25343
+};
+
+
+enum {
+  kMPIterationEndErr = -29275,
+  kMPPrivilegedErr = -29276,
+  kMPProcessCreatedErr = -29288,
+  kMPProcessTerminatedErr = -29289,
+  kMPTaskCreatedErr = -29290,
+  kMPTaskBlockedErr = -29291,
+  kMPTaskStoppedErr = -29292,
+  kMPBlueBlockingErr = -29293,
+  kMPDeletedErr = -29295,
+  kMPTimeoutErr = -29296,
+  kMPTaskAbortedErr = -29297,
+  kMPInsufficientResourcesErr = -29298,
+  kMPInvalidIDErr = -29299
+};
+
+enum {
+  kMPNanokernelNeedsMemoryErr = -29294
+};
+
+
+enum {
+  kCollateAttributesNotFoundErr = -29500,
+  kCollateInvalidOptions = -29501,
+  kCollateMissingUnicodeTableErr = -29502,
+  kCollateUnicodeConvertFailedErr = -29503,
+  kCollatePatternNotFoundErr = -29504,
+  kCollateInvalidChar = -29505,
+  kCollateBufferTooSmall = -29506,
+  kCollateInvalidCollationRef = -29507
+};
+
+
+
+enum {
+  kFNSInvalidReferenceErr = -29580,
+  kFNSBadReferenceVersionErr = -29581,
+  kFNSInvalidProfileErr = -29582,
+  kFNSBadProfileVersionErr = -29583,
+  kFNSDuplicateReferenceErr = -29584,
+  kFNSMismatchErr = -29585,
+  kFNSInsufficientDataErr = -29586,
+  kFNSBadFlattenedSizeErr = -29587,
+  kFNSNameNotFoundErr = -29589
+};
+
+
+
+
+enum {
+  kLocalesBufferTooSmallErr = -30001,
+  kLocalesTableFormatErr = -30002,
+  kLocalesDefaultDisplayStatus = -30029
+};
+
+
+
+enum {
+  kALMInternalErr = -30049,
+  kALMGroupNotFoundErr = -30048,
+  kALMNoSuchModuleErr = -30047,
+  kALMModuleCommunicationErr = -30046,
+  kALMDuplicateModuleErr = -30045,
+  kALMInstallationErr = -30044,
+  kALMDeferSwitchErr = -30043,
+  kALMRebootFlagsLevelErr = -30042
+};
+
+enum {
+  kALMLocationNotFoundErr = kALMGroupNotFoundErr
+};
+
+
+
+enum {
+  kSSpInternalErr = -30340,
+  kSSpVersionErr = -30341,
+  kSSpCantInstallErr = -30342,
+  kSSpParallelUpVectorErr = -30343,
+  kSSpScaleToZeroErr = -30344
+};
+
+
+
+enum {
+  kNSpInitializationFailedErr = -30360,
+  kNSpAlreadyInitializedErr = -30361,
+  kNSpTopologyNotSupportedErr = -30362,
+  kNSpPipeFullErr = -30364,
+  kNSpHostFailedErr = -30365,
+  kNSpProtocolNotAvailableErr = -30366,
+  kNSpInvalidGameRefErr = -30367,
+  kNSpInvalidParameterErr = -30369,
+  kNSpOTNotPresentErr = -30370,
+  kNSpOTVersionTooOldErr = -30371,
+  kNSpMemAllocationErr = -30373,
+  kNSpAlreadyAdvertisingErr = -30374,
+  kNSpNotAdvertisingErr = -30376,
+  kNSpInvalidAddressErr = -30377,
+  kNSpFreeQExhaustedErr = -30378,
+  kNSpRemovePlayerFailedErr = -30379,
+  kNSpAddressInUseErr = -30380,
+  kNSpFeatureNotImplementedErr = -30381,
+  kNSpNameRequiredErr = -30382,
+  kNSpInvalidPlayerIDErr = -30383,
+  kNSpInvalidGroupIDErr = -30384,
+  kNSpNoPlayersErr = -30385,
+  kNSpNoGroupsErr = -30386,
+  kNSpNoHostVolunteersErr = -30387,
+  kNSpCreateGroupFailedErr = -30388,
+  kNSpAddPlayerFailedErr = -30389,
+  kNSpInvalidDefinitionErr = -30390,
+  kNSpInvalidProtocolRefErr = -30391,
+  kNSpInvalidProtocolListErr = -30392,
+  kNSpTimeoutErr = -30393,
+  kNSpGameTerminatedErr = -30394,
+  kNSpConnectFailedErr = -30395,
+  kNSpSendFailedErr = -30396,
+  kNSpMessageTooBigErr = -30397,
+  kNSpCantBlockErr = -30398,
+  kNSpJoinFailedErr = -30399
+};
+
+
+
+enum {
+  kISpInternalErr = -30420,
+  kISpSystemListErr = -30421,
+  kISpBufferToSmallErr = -30422,
+  kISpElementInListErr = -30423,
+  kISpElementNotInListErr = -30424,
+  kISpSystemInactiveErr = -30425,
+  kISpDeviceInactiveErr = -30426,
+  kISpSystemActiveErr = -30427,
+  kISpDeviceActiveErr = -30428,
+  kISpListBusyErr = -30429
+};
+
+
+enum {
+  kDSpNotInitializedErr = -30440L,
+  kDSpSystemSWTooOldErr = -30441L,
+  kDSpInvalidContextErr = -30442L,
+  kDSpInvalidAttributesErr = -30443L,
+  kDSpContextAlreadyReservedErr = -30444L,
+  kDSpContextNotReservedErr = -30445L,
+  kDSpContextNotFoundErr = -30446L,
+  kDSpFrameRateNotReadyErr = -30447L,
+  kDSpConfirmSwitchWarning = -30448L,
+  kDSpInternalErr = -30449L,
+  kDSpStereoContextErr = -30450L
+};
+
+
+
+
+
+
+
+enum {
+  kFBCvTwinExceptionErr = -30500,
+  kFBCnoIndexesFound = -30501,
+  kFBCallocFailed = -30502,
+  kFBCbadParam = -30503,
+  kFBCfileNotIndexed = -30504,
+  kFBCbadIndexFile = -30505,
+  kFBCcompactionFailed = -30506,
+  kFBCvalidationFailed = -30507,
+  kFBCindexingFailed = -30508,
+  kFBCcommitFailed = -30509,
+  kFBCdeletionFailed = -30510,
+  kFBCmoveFailed = -30511,
+  kFBCtokenizationFailed = -30512,
+  kFBCmergingFailed = -30513,
+  kFBCindexCreationFailed = -30514,
+  kFBCaccessorStoreFailed = -30515,
+  kFBCaddDocFailed = -30516,
+  kFBCflushFailed = -30517,
+  kFBCindexNotFound = -30518,
+  kFBCnoSearchSession = -30519,
+  kFBCindexingCanceled = -30520,
+  kFBCaccessCanceled = -30521,
+  kFBCindexFileDestroyed = -30522,
+  kFBCindexNotAvailable = -30523,
+  kFBCsearchFailed = -30524,
+  kFBCsomeFilesNotIndexed = -30525,
+  kFBCillegalSessionChange = -30526,
+
+  kFBCanalysisNotAvailable = -30527,
+  kFBCbadIndexFileVersion = -30528,
+  kFBCsummarizationCanceled = -30529,
+  kFBCindexDiskIOFailed = -30530,
+  kFBCbadSearchSession = -30531,
+  kFBCnoSuchHit = -30532
+};
+
+
+
+enum {
+  notAQTVRMovieErr = -30540,
+  constraintReachedErr = -30541,
+  callNotSupportedByNodeErr = -30542,
+  selectorNotSupportedByNodeErr = -30543,
+  invalidNodeIDErr = -30544,
+  invalidViewStateErr = -30545,
+  timeNotInViewErr = -30546,
+  propertyNotSupportedByNodeErr = -30547,
+  settingNotSupportedByNodeErr = -30548,
+  limitReachedErr = -30549,
+  invalidNodeFormatErr = -30550,
+  invalidHotSpotIDErr = -30551,
+  noMemoryNodeFailedInitialize = -30552,
+  streamingNodeNotReadyErr = -30553,
+  qtvrLibraryLoadErr = -30554,
+  qtvrUninitialized = -30555
+};
+
+
+
+enum {
+  themeInvalidBrushErr = -30560,
+  themeProcessRegisteredErr = -30561,
+  themeProcessNotRegisteredErr = -30562,
+  themeBadTextColorErr = -30563,
+  themeHasNoAccentsErr = -30564,
+  themeBadCursorIndexErr = -30565,
+  themeScriptFontNotFoundErr = -30566,
+  themeMonitorDepthNotSupportedErr = -30567,
+  themeNoAppropriateBrushErr = -30568
+};
+
+
+
+enum {
+  errMessageNotSupported = -30580,
+  errDataNotSupported = -30581,
+  errControlDoesntSupportFocus = -30582,
+  errUnknownControl = -30584,
+  errCouldntSetFocus = -30585,
+  errNoRootControl = -30586,
+  errRootAlreadyExists = -30587,
+  errInvalidPartCode = -30588,
+  errControlsAlreadyExist = -30589,
+  errControlIsNotEmbedder = -30590,
+  errDataSizeMismatch = -30591,
+  errControlHiddenOrDisabled = -30592,
+  errCantEmbedIntoSelf = -30594,
+  errCantEmbedRoot = -30595,
+  errItemNotControl = -30596,
+  controlInvalidDataVersionErr = -30597,
+  controlPropertyInvalid = -5603,
+  controlPropertyNotFoundErr = -5604,
+  controlHandleInvalidErr = -30599
+};
+
+
+
+
+
+enum {
+  kURLInvalidURLReferenceError = -30770,
+  kURLProgressAlreadyDisplayedError = -30771,
+  kURLDestinationExistsError = -30772,
+  kURLInvalidURLError = -30773,
+  kURLUnsupportedSchemeError = -30774,
+  kURLServerBusyError = -30775,
+  kURLAuthenticationError = -30776,
+  kURLPropertyNotYetKnownError = -30777,
+  kURLUnknownPropertyError = -30778,
+  kURLPropertyBufferTooSmallError = -30779,
+  kURLUnsettablePropertyError = -30780,
+  kURLInvalidCallError = -30781,
+  kURLFileEmptyError = -30783,
+  kURLExtensionFailureError = -30785,
+  kURLInvalidConfigurationError = -30786,
+  kURLAccessNotAvailableError = -30787,
+  kURL68kNotSupportedError = -30788
+};
+
+
+
+enum {
+  badComponentInstance = (long)0x80008001,
+  badComponentSelector = (long)0x80008002
+};
+
+
+
+enum {
+  dsBusError = 1,
+  dsAddressErr = 2,
+  dsIllInstErr = 3,
+  dsZeroDivErr = 4,
+  dsChkErr = 5,
+  dsOvflowErr = 6,
+  dsPrivErr = 7,
+  dsTraceErr = 8,
+  dsLineAErr = 9,
+  dsLineFErr = 10,
+  dsMiscErr = 11,
+  dsCoreErr = 12,
+  dsIrqErr = 13,
+  dsIOCoreErr = 14,
+  dsLoadErr = 15,
+  dsFPErr = 16,
+  dsNoPackErr = 17,
+  dsNoPk1 = 18,
+  dsNoPk2 = 19
+};
+
+enum {
+  dsNoPk3 = 20,
+  dsNoPk4 = 21,
+  dsNoPk5 = 22,
+  dsNoPk6 = 23,
+  dsNoPk7 = 24,
+  dsMemFullErr = 25,
+  dsBadLaunch = 26,
+  dsFSErr = 27,
+  dsStknHeap = 28,
+  negZcbFreeErr = 33,
+  dsFinderErr = 41,
+  dsBadSlotInt = 51,
+  dsBadSANEOpcode = 81,
+  dsBadPatchHeader = 83,
+  menuPrgErr = 84,
+  dsMBarNFnd = 85,
+  dsHMenuFindErr = 86,
+  dsWDEFNotFound = 87,
+  dsCDEFNotFound = 88,
+  dsMDEFNotFound = 89
+};
+
+enum {
+  dsNoFPU = 90,
+  dsNoPatch = 98,
+  dsBadPatch = 99,
+  dsParityErr = 101,
+  dsOldSystem = 102,
+  ds32BitMode = 103,
+  dsNeedToWriteBootBlocks = 104,
+  dsNotEnoughRAMToBoot = 105,
+  dsBufPtrTooLow = 106,
+  dsVMDeferredFuncTableFull = 112,
+  dsVMBadBackingStore = 113,
+  dsCantHoldSystemHeap = 114,
+  dsSystemRequiresPowerPC = 116,
+  dsGibblyMovedToDisabledFolder = 117,
+  dsUnBootableSystem = 118,
+  dsMustUseFCBAccessors = 119,
+  dsMacOSROMVersionTooOld = 120,
+  dsLostConnectionToNetworkDisk = 121,
+  dsRAMDiskTooBig = 122,
+  dsWriteToSupervisorStackGuardPage = 128,
+  dsReinsert = 30,
+  shutDownAlert = 42,
+  dsShutDownOrRestart = 20000,
+  dsSwitchOffOrRestart = 20001,
+  dsForcedQuit = 20002,
+  dsRemoveDisk = 20003,
+  dsDirtyDisk = 20004,
+  dsShutDownOrResume = 20109,
+  dsSCSIWarn = 20010,
+  dsMBSysError = 29200,
+  dsMBFlpySysError = 29201,
+  dsMBATASysError = 29202,
+  dsMBATAPISysError = 29203,
+  dsMBExternFlpySysError = 29204,
+  dsPCCardATASysError = 29205
+};
+
+
+
+
+
+
+enum {
+  dsNoExtsMacsBug = -1,
+  dsNoExtsDisassembler = -2,
+  dsMacsBugInstalled = -10,
+  dsDisassemblerInstalled = -11,
+  dsExtensionsDisabled = -13,
+  dsGreeting = 40,
+  dsSysErr = 32767,
+
+  WDEFNFnd = dsWDEFNotFound
+};
+
+enum {
+  CDEFNFnd = dsCDEFNotFound,
+  dsNotThe1 = 31,
+  dsBadStartupDisk = 42,
+  dsSystemFileErr = 43,
+  dsHD20Installed = -12,
+  mBarNFnd = -126,
+  fsDSIntErr = -127,
+  hMenuFindErr = -127,
+  userBreak = -490,
+  strUserBreak = -491,
+  exUserBreak = -492
+};
+
+
+enum {
+
+  dsBadLibrary = 1010,
+  dsMixedModeFailure = 1011
+};
+extern void
+SysError(short errorCode) ;
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+
+enum {
+  kUTCDefaultOptions = 0
+};
+
+
+struct UTCDateTime {
+  UInt16 highSeconds;
+  UInt32 lowSeconds;
+  UInt16 fraction;
+};
+typedef struct UTCDateTime UTCDateTime;
+typedef UTCDateTime * UTCDateTimePtr;
+typedef UTCDateTimePtr * UTCDateTimeHandle;
+struct LocalDateTime {
+  UInt16 highSeconds;
+  UInt32 lowSeconds;
+  UInt16 fraction;
+};
+typedef struct LocalDateTime LocalDateTime;
+typedef LocalDateTime * LocalDateTimePtr;
+typedef LocalDateTimePtr * LocalDateTimeHandle;
+extern OSStatus
+ConvertLocalTimeToUTC(
+  UInt32 localSeconds,
+  UInt32 * utcSeconds) ;
+extern OSStatus
+ConvertUTCToLocalTime(
+  UInt32 utcSeconds,
+  UInt32 * localSeconds) ;
+extern OSStatus
+ConvertUTCToLocalDateTime(
+  const UTCDateTime * utcDateTime,
+  LocalDateTime * localDateTime) ;
+extern OSStatus
+ConvertLocalToUTCDateTime(
+  const LocalDateTime * localDateTime,
+  UTCDateTime * utcDateTime) ;
+extern OSStatus
+GetUTCDateTime(
+  UTCDateTime * utcDateTime,
+  OptionBits options) ;
+extern OSStatus
+SetUTCDateTime(
+  const UTCDateTime * utcDateTime,
+  OptionBits options) ;
+extern OSStatus
+GetLocalDateTime(
+  LocalDateTime * localDateTime,
+  OptionBits options) ;
+extern OSStatus
+SetLocalDateTime(
+  const LocalDateTime * localDateTime,
+  OptionBits options) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+typedef UInt32 TextEncodingBase;
+enum {
+
+  kTextEncodingMacRoman = 0L,
+  kTextEncodingMacJapanese = 1,
+  kTextEncodingMacChineseTrad = 2,
+  kTextEncodingMacKorean = 3,
+  kTextEncodingMacArabic = 4,
+  kTextEncodingMacHebrew = 5,
+  kTextEncodingMacGreek = 6,
+  kTextEncodingMacCyrillic = 7,
+  kTextEncodingMacDevanagari = 9,
+  kTextEncodingMacGurmukhi = 10,
+  kTextEncodingMacGujarati = 11,
+  kTextEncodingMacOriya = 12,
+  kTextEncodingMacBengali = 13,
+  kTextEncodingMacTamil = 14,
+  kTextEncodingMacTelugu = 15,
+  kTextEncodingMacKannada = 16,
+  kTextEncodingMacMalayalam = 17,
+  kTextEncodingMacSinhalese = 18,
+  kTextEncodingMacBurmese = 19,
+  kTextEncodingMacKhmer = 20,
+  kTextEncodingMacThai = 21,
+  kTextEncodingMacLaotian = 22,
+  kTextEncodingMacGeorgian = 23,
+  kTextEncodingMacArmenian = 24,
+  kTextEncodingMacChineseSimp = 25,
+  kTextEncodingMacTibetan = 26,
+  kTextEncodingMacMongolian = 27,
+  kTextEncodingMacEthiopic = 28,
+  kTextEncodingMacCentralEurRoman = 29,
+  kTextEncodingMacVietnamese = 30,
+  kTextEncodingMacExtArabic = 31,
+  kTextEncodingMacSymbol = 33,
+  kTextEncodingMacDingbats = 34,
+  kTextEncodingMacTurkish = 35,
+  kTextEncodingMacCroatian = 36,
+  kTextEncodingMacIcelandic = 37,
+  kTextEncodingMacRomanian = 38,
+  kTextEncodingMacCeltic = 39,
+  kTextEncodingMacGaelic = 40,
+  kTextEncodingMacKeyboardGlyphs = 41
+};
+
+
+enum {
+  kTextEncodingMacTradChinese = kTextEncodingMacChineseTrad,
+  kTextEncodingMacRSymbol = 8,
+  kTextEncodingMacSimpChinese = kTextEncodingMacChineseSimp,
+  kTextEncodingMacGeez = kTextEncodingMacEthiopic,
+  kTextEncodingMacEastEurRoman = kTextEncodingMacCentralEurRoman,
+  kTextEncodingMacUninterp = 32
+};
+enum {
+  kTextEncodingMacUnicode = 0x7E
+};
+
+
+enum {
+
+  kTextEncodingMacFarsi = 0x8C,
+
+  kTextEncodingMacUkrainian = 0x98,
+
+  kTextEncodingMacInuit = 0xEC,
+  kTextEncodingMacVT100 = 0xFC
+};
+
+
+enum {
+  kTextEncodingMacHFS = 0xFF
+};
+
+
+enum {
+  kTextEncodingUnicodeDefault = 0x0100,
+  kTextEncodingUnicodeV1_1 = 0x0101,
+  kTextEncodingISO10646_1993 = 0x0101,
+  kTextEncodingUnicodeV2_0 = 0x0103,
+  kTextEncodingUnicodeV2_1 = 0x0103,
+  kTextEncodingUnicodeV3_0 = 0x0104,
+  kTextEncodingUnicodeV3_1 = 0x0105,
+  kTextEncodingUnicodeV3_2 = 0x0106
+};
+
+
+enum {
+  kTextEncodingISOLatin1 = 0x0201,
+  kTextEncodingISOLatin2 = 0x0202,
+  kTextEncodingISOLatin3 = 0x0203,
+  kTextEncodingISOLatin4 = 0x0204,
+  kTextEncodingISOLatinCyrillic = 0x0205,
+  kTextEncodingISOLatinArabic = 0x0206,
+  kTextEncodingISOLatinGreek = 0x0207,
+  kTextEncodingISOLatinHebrew = 0x0208,
+  kTextEncodingISOLatin5 = 0x0209,
+  kTextEncodingISOLatin6 = 0x020A,
+  kTextEncodingISOLatin7 = 0x020D,
+  kTextEncodingISOLatin8 = 0x020E,
+  kTextEncodingISOLatin9 = 0x020F
+};
+
+
+enum {
+  kTextEncodingDOSLatinUS = 0x0400,
+  kTextEncodingDOSGreek = 0x0405,
+  kTextEncodingDOSBalticRim = 0x0406,
+  kTextEncodingDOSLatin1 = 0x0410,
+  kTextEncodingDOSGreek1 = 0x0411,
+  kTextEncodingDOSLatin2 = 0x0412,
+  kTextEncodingDOSCyrillic = 0x0413,
+  kTextEncodingDOSTurkish = 0x0414,
+  kTextEncodingDOSPortuguese = 0x0415,
+  kTextEncodingDOSIcelandic = 0x0416,
+  kTextEncodingDOSHebrew = 0x0417,
+  kTextEncodingDOSCanadianFrench = 0x0418,
+  kTextEncodingDOSArabic = 0x0419,
+  kTextEncodingDOSNordic = 0x041A,
+  kTextEncodingDOSRussian = 0x041B,
+  kTextEncodingDOSGreek2 = 0x041C,
+  kTextEncodingDOSThai = 0x041D,
+  kTextEncodingDOSJapanese = 0x0420,
+  kTextEncodingDOSChineseSimplif = 0x0421,
+  kTextEncodingDOSKorean = 0x0422,
+  kTextEncodingDOSChineseTrad = 0x0423,
+  kTextEncodingWindowsLatin1 = 0x0500,
+  kTextEncodingWindowsANSI = 0x0500,
+  kTextEncodingWindowsLatin2 = 0x0501,
+  kTextEncodingWindowsCyrillic = 0x0502,
+  kTextEncodingWindowsGreek = 0x0503,
+  kTextEncodingWindowsLatin5 = 0x0504,
+  kTextEncodingWindowsHebrew = 0x0505,
+  kTextEncodingWindowsArabic = 0x0506,
+  kTextEncodingWindowsBalticRim = 0x0507,
+  kTextEncodingWindowsVietnamese = 0x0508,
+  kTextEncodingWindowsKoreanJohab = 0x0510
+};
+
+
+enum {
+  kTextEncodingUS_ASCII = 0x0600,
+  kTextEncodingJIS_X0201_76 = 0x0620,
+  kTextEncodingJIS_X0208_83 = 0x0621,
+  kTextEncodingJIS_X0208_90 = 0x0622,
+  kTextEncodingJIS_X0212_90 = 0x0623,
+  kTextEncodingJIS_C6226_78 = 0x0624,
+  kTextEncodingShiftJIS_X0213_00 = 0x0628,
+  kTextEncodingGB_2312_80 = 0x0630,
+  kTextEncodingGBK_95 = 0x0631,
+  kTextEncodingGB_18030_2000 = 0x0632,
+  kTextEncodingKSC_5601_87 = 0x0640,
+  kTextEncodingKSC_5601_92_Johab = 0x0641,
+  kTextEncodingCNS_11643_92_P1 = 0x0651,
+  kTextEncodingCNS_11643_92_P2 = 0x0652,
+  kTextEncodingCNS_11643_92_P3 = 0x0653
+};
+
+
+enum {
+  kTextEncodingISO_2022_JP = 0x0820,
+  kTextEncodingISO_2022_JP_2 = 0x0821,
+  kTextEncodingISO_2022_JP_1 = 0x0822,
+  kTextEncodingISO_2022_JP_3 = 0x0823,
+  kTextEncodingISO_2022_CN = 0x0830,
+  kTextEncodingISO_2022_CN_EXT = 0x0831,
+  kTextEncodingISO_2022_KR = 0x0840
+};
+
+
+enum {
+  kTextEncodingEUC_JP = 0x0920,
+  kTextEncodingEUC_CN = 0x0930,
+  kTextEncodingEUC_TW = 0x0931,
+  kTextEncodingEUC_KR = 0x0940
+};
+
+
+enum {
+  kTextEncodingShiftJIS = 0x0A01,
+  kTextEncodingKOI8_R = 0x0A02,
+  kTextEncodingBig5 = 0x0A03,
+  kTextEncodingMacRomanLatin1 = 0x0A04,
+  kTextEncodingHZ_GB_2312 = 0x0A05,
+  kTextEncodingBig5_HKSCS_1999 = 0x0A06
+};
+
+
+enum {
+  kTextEncodingNextStepLatin = 0x0B01,
+  kTextEncodingNextStepJapanese = 0x0B02
+};
+
+
+enum {
+  kTextEncodingEBCDIC_US = 0x0C01,
+  kTextEncodingEBCDIC_CP037 = 0x0C02
+};
+
+
+enum {
+  kTextEncodingMultiRun = 0x0FFF,
+  kTextEncodingUnknown = 0xFFFF
+};
+
+
+
+typedef UInt32 TextEncodingVariant;
+
+enum {
+  kTextEncodingDefaultVariant = 0
+};
+
+
+enum {
+  kMacRomanDefaultVariant = 0,
+  kMacRomanCurrencySignVariant = 1,
+  kMacRomanEuroSignVariant = 2
+};
+
+
+enum {
+  kMacCyrillicDefaultVariant = 0,
+  kMacCyrillicCurrSignStdVariant = 1,
+  kMacCyrillicCurrSignUkrVariant = 2,
+  kMacCyrillicEuroSignVariant = 3
+};
+
+
+enum {
+  kMacIcelandicStdDefaultVariant = 0,
+  kMacIcelandicTTDefaultVariant = 1,
+
+  kMacIcelandicStdCurrSignVariant = 2,
+  kMacIcelandicTTCurrSignVariant = 3,
+
+  kMacIcelandicStdEuroSignVariant = 4,
+  kMacIcelandicTTEuroSignVariant = 5
+};
+
+
+enum {
+  kMacCroatianDefaultVariant = 0,
+  kMacCroatianCurrencySignVariant = 1,
+  kMacCroatianEuroSignVariant = 2
+};
+
+
+
+enum {
+  kMacRomanianDefaultVariant = 0,
+  kMacRomanianCurrencySignVariant = 1,
+  kMacRomanianEuroSignVariant = 2
+};
+
+
+
+enum {
+  kMacJapaneseStandardVariant = 0,
+  kMacJapaneseStdNoVerticalsVariant = 1,
+  kMacJapaneseBasicVariant = 2,
+  kMacJapanesePostScriptScrnVariant = 3,
+  kMacJapanesePostScriptPrintVariant = 4,
+  kMacJapaneseVertAtKuPlusTenVariant = 5
+};
+
+
+enum {
+  kMacArabicStandardVariant = 0,
+  kMacArabicTrueTypeVariant = 1,
+  kMacArabicThuluthVariant = 2,
+  kMacArabicAlBayanVariant = 3
+};
+
+
+enum {
+  kMacFarsiStandardVariant = 0,
+  kMacFarsiTrueTypeVariant = 1
+};
+
+
+enum {
+  kMacHebrewStandardVariant = 0,
+  kMacHebrewFigureSpaceVariant = 1
+};
+
+
+enum {
+  kMacVT100DefaultVariant = 0,
+  kMacVT100CurrencySignVariant = 1,
+  kMacVT100EuroSignVariant = 2
+};
+
+
+enum {
+  kUnicodeNoSubset = 0,
+  kUnicodeCanonicalDecompVariant = 2,
+  kUnicodeCanonicalCompVariant = 3,
+  kUnicodeHFSPlusDecompVariant = 8,
+  kUnicodeHFSPlusCompVariant = 9
+};
+
+
+enum {
+  kBig5_BasicVariant = 0,
+  kBig5_StandardVariant = 1,
+  kBig5_ETenVariant = 2
+};
+
+
+enum {
+  kMacRomanLatin1DefaultVariant = 0,
+  kMacRomanLatin1StandardVariant = 2,
+  kMacRomanLatin1TurkishVariant = 6,
+  kMacRomanLatin1CroatianVariant = 8,
+  kMacRomanLatin1IcelandicVariant = 11,
+  kMacRomanLatin1RomanianVariant = 14
+};
+
+
+enum {
+  kUnicodeNoCompatibilityVariant = 1,
+  kUnicodeNoCorporateVariant = 4
+};
+
+
+enum {
+  kMacRomanStandardVariant = 0,
+  kMacIcelandicStandardVariant = 0,
+  kMacIcelandicTrueTypeVariant = 1,
+  kJapaneseStandardVariant = 0,
+  kJapaneseStdNoVerticalsVariant = 1,
+  kJapaneseBasicVariant = 2,
+  kJapanesePostScriptScrnVariant = 3,
+  kJapanesePostScriptPrintVariant = 4,
+  kJapaneseVertAtKuPlusTenVariant = 5,
+
+  kHebrewStandardVariant = 0,
+  kHebrewFigureSpaceVariant = 1,
+  kUnicodeMaxDecomposedVariant = 2,
+  kUnicodeNoComposedVariant = 3,
+
+
+  kJapaneseNoOneByteKanaOption = 0x20,
+  kJapaneseUseAsciiBackslashOption = 0x40
+};
+
+
+typedef UInt32 TextEncodingFormat;
+enum {
+
+  kTextEncodingDefaultFormat = 0,
+  kUnicode16BitFormat = 0,
+  kUnicodeUTF7Format = 1,
+  kUnicodeUTF8Format = 2,
+  kUnicode32BitFormat = 3
+};
+
+
+typedef UInt32 TextEncoding;
+
+typedef UInt32 TextEncodingNameSelector;
+enum {
+  kTextEncodingFullName = 0,
+  kTextEncodingBaseName = 1,
+  kTextEncodingVariantName = 2,
+  kTextEncodingFormatName = 3
+};
+
+
+struct TextEncodingRun {
+  ByteOffset offset;
+  TextEncoding textEncoding;
+};
+typedef struct TextEncodingRun TextEncodingRun;
+typedef TextEncodingRun * TextEncodingRunPtr;
+typedef const TextEncodingRun * ConstTextEncodingRunPtr;
+struct ScriptCodeRun {
+  ByteOffset offset;
+  ScriptCode script;
+};
+typedef struct ScriptCodeRun ScriptCodeRun;
+typedef ScriptCodeRun * ScriptCodeRunPtr;
+typedef const ScriptCodeRun * ConstScriptCodeRunPtr;
+typedef UInt8 * TextPtr;
+typedef const UInt8 * ConstTextPtr;
+
+typedef UniChar * UniCharArrayPtr;
+typedef const UniChar * ConstUniCharArrayPtr;
+
+
+
+
+typedef UniCharArrayPtr * UniCharArrayHandle;
+
+
+
+
+typedef UInt32 UniCharArrayOffset;
+
+enum {
+  kTextScriptDontCare = -128,
+  kTextLanguageDontCare = -128,
+  kTextRegionDontCare = -128
+};
+
+
+
+struct TECInfo {
+  UInt16 format;
+  UInt16 tecVersion;
+  UInt32 tecTextConverterFeatures;
+  UInt32 tecUnicodeConverterFeatures;
+  UInt32 tecTextCommonFeatures;
+  Str31 tecTextEncodingsFolderName;
+  Str31 tecExtensionFileName;
+  UInt16 tecLowestTEFileVersion;
+  UInt16 tecHighestTEFileVersion;
+};
+typedef struct TECInfo TECInfo;
+typedef TECInfo * TECInfoPtr;
+typedef TECInfoPtr * TECInfoHandle;
+
+enum {
+  kTECInfoCurrentFormat = 2
+};
+enum {
+  kTECKeepInfoFixBit = 0,
+  kTECFallbackTextLengthFixBit = 1,
+  kTECTextRunBitClearFixBit = 2,
+  kTECTextToUnicodeScanFixBit = 3,
+  kTECAddForceASCIIChangesBit = 4,
+  kTECPreferredEncodingFixBit = 5,
+  kTECAddTextRunHeuristicsBit = 6,
+  kTECAddFallbackInterruptBit = 7
+};
+
+enum {
+  kTECKeepInfoFixMask = 1L << kTECKeepInfoFixBit,
+  kTECFallbackTextLengthFixMask = 1L << kTECFallbackTextLengthFixBit,
+  kTECTextRunBitClearFixMask = 1L << kTECTextRunBitClearFixBit,
+  kTECTextToUnicodeScanFixMask = 1L << kTECTextToUnicodeScanFixBit,
+  kTECAddForceASCIIChangesMask = 1L << kTECAddForceASCIIChangesBit,
+  kTECPreferredEncodingFixMask = 1L << kTECPreferredEncodingFixBit,
+  kTECAddTextRunHeuristicsMask = 1L << kTECAddTextRunHeuristicsBit,
+  kTECAddFallbackInterruptMask = 1L << kTECAddFallbackInterruptBit
+};
+
+
+
+
+
+
+
+enum {
+  kUnicodeByteOrderMark = 0xFEFF,
+  kUnicodeObjectReplacement = 0xFFFC,
+  kUnicodeReplacementChar = 0xFFFD,
+  kUnicodeSwappedByteOrderMark = 0xFFFE,
+  kUnicodeNotAChar = 0xFFFF
+};
+
+
+
+
+
+
+typedef SInt32 UCCharPropertyType;
+enum {
+  kUCCharPropTypeGenlCategory = 1,
+  kUCCharPropTypeCombiningClass = 2,
+  kUCCharPropTypeBidiCategory = 3
+};
+
+typedef UInt32 UCCharPropertyValue;
+
+enum {
+
+  kUCGenlCatOtherNotAssigned = 0,
+  kUCGenlCatOtherControl = 1,
+  kUCGenlCatOtherFormat = 2,
+  kUCGenlCatOtherSurrogate = 3,
+  kUCGenlCatOtherPrivateUse = 4,
+  kUCGenlCatMarkNonSpacing = 5,
+  kUCGenlCatMarkSpacingCombining = 6,
+  kUCGenlCatMarkEnclosing = 7,
+  kUCGenlCatNumberDecimalDigit = 8,
+  kUCGenlCatNumberLetter = 9,
+  kUCGenlCatNumberOther = 10,
+  kUCGenlCatSeparatorSpace = 11,
+  kUCGenlCatSeparatorLine = 12,
+  kUCGenlCatSeparatorParagraph = 13,
+  kUCGenlCatLetterUppercase = 14,
+  kUCGenlCatLetterLowercase = 15,
+  kUCGenlCatLetterTitlecase = 16,
+
+  kUCGenlCatLetterModifier = 17,
+  kUCGenlCatLetterOther = 18,
+  kUCGenlCatPunctConnector = 20,
+  kUCGenlCatPunctDash = 21,
+  kUCGenlCatPunctOpen = 22,
+  kUCGenlCatPunctClose = 23,
+  kUCGenlCatPunctInitialQuote = 24,
+  kUCGenlCatPunctFinalQuote = 25,
+  kUCGenlCatPunctOther = 26,
+  kUCGenlCatSymbolMath = 28,
+  kUCGenlCatSymbolCurrency = 29,
+  kUCGenlCatSymbolModifier = 30,
+  kUCGenlCatSymbolOther = 31
+};
+
+
+enum {
+  kUCBidiCatNotApplicable = 0,
+
+  kUCBidiCatLeftRight = 1,
+  kUCBidiCatRightLeft = 2,
+
+  kUCBidiCatEuroNumber = 3,
+  kUCBidiCatEuroNumberSeparator = 4,
+  kUCBidiCatEuroNumberTerminator = 5,
+  kUCBidiCatArabicNumber = 6,
+  kUCBidiCatCommonNumberSeparator = 7,
+
+  kUCBidiCatBlockSeparator = 8,
+  kUCBidiCatSegmentSeparator = 9,
+
+  kUCBidiCatWhitespace = 10,
+  kUCBidiCatOtherNeutral = 11,
+
+  kUCBidiCatRightLeftArabic = 12,
+  kUCBidiCatLeftRightEmbedding = 13,
+  kUCBidiCatRightLeftEmbedding = 14,
+  kUCBidiCatLeftRightOverride = 15,
+  kUCBidiCatRightLeftOverride = 16,
+  kUCBidiCatPopDirectionalFormat = 17,
+  kUCBidiCatNonSpacingMark = 18,
+  kUCBidiCatBoundaryNeutral = 19
+};
+extern TextEncoding
+CreateTextEncoding(
+  TextEncodingBase encodingBase,
+  TextEncodingVariant encodingVariant,
+  TextEncodingFormat encodingFormat) ;
+extern TextEncodingBase
+GetTextEncodingBase(TextEncoding encoding) ;
+extern TextEncodingVariant
+GetTextEncodingVariant(TextEncoding encoding) ;
+extern TextEncodingFormat
+GetTextEncodingFormat(TextEncoding encoding) ;
+extern TextEncoding
+ResolveDefaultTextEncoding(TextEncoding encoding) ;
+extern OSStatus
+GetTextEncodingName(
+  TextEncoding iEncoding,
+  TextEncodingNameSelector iNamePartSelector,
+  RegionCode iPreferredRegion,
+  TextEncoding iPreferredEncoding,
+  ByteCount iOutputBufLen,
+  ByteCount * oNameLength,
+  RegionCode * oActualRegion,
+  TextEncoding * oActualEncoding,
+  TextPtr oEncodingName) ;
+extern OSStatus
+TECGetInfo(TECInfoHandle * tecInfo) ;
+extern OSStatus
+UpgradeScriptInfoToTextEncoding(
+  ScriptCode iTextScriptID,
+  LangCode iTextLanguageID,
+  RegionCode iRegionID,
+  ConstStr255Param iTextFontname,
+  TextEncoding * oEncoding) ;
+extern OSStatus
+RevertTextEncodingToScriptInfo(
+  TextEncoding iEncoding,
+  ScriptCode * oTextScriptID,
+  LangCode * oTextLanguageID,
+  Str255 oTextFontname) ;
+extern OSStatus
+GetTextEncodingFromScriptInfo(
+  ScriptCode iTextScriptID,
+  LangCode iTextLanguageID,
+  RegionCode iTextRegionID,
+  TextEncoding * oEncoding) ;
+extern OSStatus
+GetScriptInfoFromTextEncoding(
+  TextEncoding iEncoding,
+  ScriptCode * oTextScriptID,
+  LangCode * oTextLanguageID) ;
+extern OSStatus
+NearestMacTextEncodings(
+  TextEncoding generalEncoding,
+  TextEncoding * bestMacEncoding,
+  TextEncoding * alternateMacEncoding) ;
+extern OSStatus
+UCGetCharProperty(
+  const UniChar * charPtr,
+  UniCharCount textLength,
+  UCCharPropertyType propType,
+  UCCharPropertyValue * propValue) ;
+enum {
+  kUCHighSurrogateRangeStart = 0xD800UL,
+    kUCHighSurrogateRangeEnd = 0xDBFFUL,
+    kUCLowSurrogateRangeStart = 0xDC00UL,
+    kUCLowSurrogateRangeEnd = 0xDFFFUL
+};
+static __inline__ Boolean UCIsSurrogateHighCharacter( UniChar character ) {
+
+   return ( ( character & 0xFC00UL ) == kUCHighSurrogateRangeStart );
+}
+
+
+
+
+
+
+
+static __inline__ Boolean UCIsSurrogateLowCharacter( UniChar character ) {
+
+    return ( ( character & 0xFC00UL ) == kUCLowSurrogateRangeStart );
+}
+static __inline__ UnicodeScalarValue UCGetUnicodeScalarValueForSurrogatePair( UniChar surrogateHigh, UniChar surrogateLow ) {
+  return ( ( surrogateHigh - kUCHighSurrogateRangeStart ) << 10 ) + ( surrogateLow - kUCLowSurrogateRangeStart ) + 0x0010000UL;
+}
+
+
+
+
+
+}
+
+
+
+
+
+
+enum {
+  kRoutineDescriptorVersion = 7
+};
+
+
+enum {
+  _MixedModeMagic = 0xAAFE
+};
+
+
+enum {
+  kCurrentMixedModeStateRecord = 1
+};
+
+
+typedef unsigned short CallingConventionType;
+enum {
+  kPascalStackBased = 0,
+  kCStackBased = 1,
+  kRegisterBased = 2,
+  kD0DispatchedPascalStackBased = 8,
+  kD1DispatchedPascalStackBased = 12,
+  kD0DispatchedCStackBased = 9,
+  kStackDispatchedPascalStackBased = 14,
+  kThinkCStackBased = 5
+};
+
+
+typedef SInt8 ISAType;
+enum {
+  kM68kISA = 0,
+  kPowerPCISA = 1
+};
+
+enum {
+  kX86ISA = 2
+};
+
+
+typedef SInt8 RTAType;
+enum {
+  kOld68kRTA = 0 << 4,
+  kPowerPCRTA = 0 << 4,
+  kCFM68kRTA = 1 << 4
+};
+
+enum {
+  kX86RTA = 2 << 4
+};
+enum {
+  kRegisterD0 = 0,
+  kRegisterD1 = 1,
+  kRegisterD2 = 2,
+  kRegisterD3 = 3,
+  kRegisterD4 = 8,
+  kRegisterD5 = 9,
+  kRegisterD6 = 10,
+  kRegisterD7 = 11,
+  kRegisterA0 = 4,
+  kRegisterA1 = 5,
+  kRegisterA2 = 6,
+  kRegisterA3 = 7,
+  kRegisterA4 = 12,
+  kRegisterA5 = 13,
+  kRegisterA6 = 14,
+  kCCRegisterCBit = 16,
+  kCCRegisterVBit = 17,
+  kCCRegisterZBit = 18,
+  kCCRegisterNBit = 19,
+  kCCRegisterXBit = 20
+};
+
+typedef unsigned short registerSelectorType;
+
+enum {
+  kNoByteCode = 0,
+  kOneByteCode = 1,
+  kTwoByteCode = 2,
+  kFourByteCode = 3
+};
+
+
+typedef unsigned long ProcInfoType;
+
+typedef unsigned short RoutineFlagsType;
+enum {
+  kProcDescriptorIsAbsolute = 0x00,
+  kProcDescriptorIsRelative = 0x01
+};
+
+enum {
+  kFragmentIsPrepared = 0x00,
+  kFragmentNeedsPreparing = 0x02
+};
+
+enum {
+  kUseCurrentISA = 0x00,
+  kUseNativeISA = 0x04
+};
+
+enum {
+  kPassSelector = 0x00,
+  kDontPassSelector = 0x08
+};
+
+enum {
+  kRoutineIsNotDispatchedDefaultRoutine = 0x00,
+  kRoutineIsDispatchedDefaultRoutine = 0x10
+};
+
+enum {
+  kProcDescriptorIsProcPtr = 0x00,
+  kProcDescriptorIsIndex = 0x20
+};
+
+struct RoutineRecord {
+  ProcInfoType procInfo;
+  SInt8 reserved1;
+  ISAType ISA;
+  RoutineFlagsType routineFlags;
+  ProcPtr procDescriptor;
+  UInt32 reserved2;
+  UInt32 selector;
+};
+typedef struct RoutineRecord RoutineRecord;
+typedef RoutineRecord * RoutineRecordPtr;
+typedef RoutineRecordPtr * RoutineRecordHandle;
+
+
+typedef UInt8 RDFlagsType;
+enum {
+  kSelectorsAreNotIndexable = 0x00,
+  kSelectorsAreIndexable = 0x01
+};
+
+
+struct RoutineDescriptor {
+  UInt16 goMixedModeTrap;
+  SInt8 version;
+  RDFlagsType routineDescriptorFlags;
+  UInt32 reserved1;
+  UInt8 reserved2;
+  UInt8 selectorInfo;
+  UInt16 routineCount;
+  RoutineRecord routineRecords[1];
+};
+typedef struct RoutineDescriptor RoutineDescriptor;
+typedef RoutineDescriptor * RoutineDescriptorPtr;
+typedef RoutineDescriptorPtr * RoutineDescriptorHandle;
+
+struct MixedModeStateRecord {
+  UInt32 state1;
+  UInt32 state2;
+  UInt32 state3;
+  UInt32 state4;
+};
+typedef struct MixedModeStateRecord MixedModeStateRecord;
+enum {
+
+  kCallingConventionWidth = 4,
+  kCallingConventionPhase = 0,
+  kCallingConventionMask = 0x0F,
+  kResultSizeWidth = 2,
+  kResultSizePhase = kCallingConventionWidth,
+  kResultSizeMask = 0x30,
+  kStackParameterWidth = 2,
+  kStackParameterPhase = (kCallingConventionWidth + kResultSizeWidth),
+  kStackParameterMask = (long)0xFFFFFFC0,
+  kRegisterResultLocationWidth = 5,
+  kRegisterResultLocationPhase = (kCallingConventionWidth + kResultSizeWidth),
+  kRegisterParameterWidth = 5,
+  kRegisterParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kRegisterResultLocationWidth),
+  kRegisterParameterMask = 0x7FFFF800,
+  kRegisterParameterSizePhase = 0,
+  kRegisterParameterSizeWidth = 2,
+  kRegisterParameterWhichPhase = kRegisterParameterSizeWidth,
+  kRegisterParameterWhichWidth = 3,
+  kDispatchedSelectorSizeWidth = 2,
+  kDispatchedSelectorSizePhase = (kCallingConventionWidth + kResultSizeWidth),
+  kDispatchedParameterPhase = (kCallingConventionWidth + kResultSizeWidth + kDispatchedSelectorSizeWidth),
+  kSpecialCaseSelectorWidth = 6,
+  kSpecialCaseSelectorPhase = kCallingConventionWidth,
+  kSpecialCaseSelectorMask = 0x03F0
+};
+
+enum {
+  kSpecialCase = 0x000F
+};
+
+enum {
+
+  kSpecialCaseHighHook = 0,
+  kSpecialCaseCaretHook = 0,
+  kSpecialCaseEOLHook = 1,
+  kSpecialCaseWidthHook = 2,
+  kSpecialCaseTextWidthHook = 2,
+  kSpecialCaseNWidthHook = 3,
+  kSpecialCaseDrawHook = 4,
+  kSpecialCaseHitTestHook = 5,
+  kSpecialCaseTEFindWord = 6,
+  kSpecialCaseProtocolHandler = 7,
+  kSpecialCaseSocketListener = 8,
+  kSpecialCaseTERecalc = 9,
+  kSpecialCaseTEDoText = 10,
+  kSpecialCaseGNEFilterProc = 11,
+  kSpecialCaseMBarHook = 12
+};
+extern "C" {
+
+
+
+
+
+
+enum {
+  kCollectionDontWantTag = 0L,
+  kCollectionDontWantId = 0L,
+  kCollectionDontWantSize = 0L,
+  kCollectionDontWantAttributes = 0L,
+  kCollectionDontWantIndex = 0L,
+  kCollectionDontWantData = 0L
+};
+
+
+
+enum {
+  kCollectionNoAttributes = 0x00000000,
+  kCollectionAllAttributes = (long)0xFFFFFFFF,
+  kCollectionUserAttributes = 0x0000FFFF,
+  kCollectionDefaultAttributes = 0x40000000
+};
+
+
+
+
+
+
+
+enum {
+  kCollectionUser0Bit = 0,
+  kCollectionUser1Bit = 1,
+  kCollectionUser2Bit = 2,
+  kCollectionUser3Bit = 3,
+  kCollectionUser4Bit = 4,
+  kCollectionUser5Bit = 5,
+  kCollectionUser6Bit = 6,
+  kCollectionUser7Bit = 7,
+  kCollectionUser8Bit = 8,
+  kCollectionUser9Bit = 9,
+  kCollectionUser10Bit = 10,
+  kCollectionUser11Bit = 11,
+  kCollectionUser12Bit = 12,
+  kCollectionUser13Bit = 13,
+  kCollectionUser14Bit = 14,
+  kCollectionUser15Bit = 15,
+  kCollectionReserved0Bit = 16,
+  kCollectionReserved1Bit = 17,
+  kCollectionReserved2Bit = 18,
+  kCollectionReserved3Bit = 19,
+  kCollectionReserved4Bit = 20,
+  kCollectionReserved5Bit = 21,
+  kCollectionReserved6Bit = 22,
+  kCollectionReserved7Bit = 23,
+  kCollectionReserved8Bit = 24,
+  kCollectionReserved9Bit = 25,
+  kCollectionReserved10Bit = 26,
+  kCollectionReserved11Bit = 27,
+  kCollectionReserved12Bit = 28,
+  kCollectionReserved13Bit = 29,
+  kCollectionPersistenceBit = 30,
+  kCollectionLockBit = 31
+};
+
+
+
+enum {
+  kCollectionUser0Mask = 1L << kCollectionUser0Bit,
+  kCollectionUser1Mask = 1L << kCollectionUser1Bit,
+  kCollectionUser2Mask = 1L << kCollectionUser2Bit,
+  kCollectionUser3Mask = 1L << kCollectionUser3Bit,
+  kCollectionUser4Mask = 1L << kCollectionUser4Bit,
+  kCollectionUser5Mask = 1L << kCollectionUser5Bit,
+  kCollectionUser6Mask = 1L << kCollectionUser6Bit,
+  kCollectionUser7Mask = 1L << kCollectionUser7Bit,
+  kCollectionUser8Mask = 1L << kCollectionUser8Bit,
+  kCollectionUser9Mask = 1L << kCollectionUser9Bit,
+  kCollectionUser10Mask = 1L << kCollectionUser10Bit,
+  kCollectionUser11Mask = 1L << kCollectionUser11Bit,
+  kCollectionUser12Mask = 1L << kCollectionUser12Bit,
+  kCollectionUser13Mask = 1L << kCollectionUser13Bit,
+  kCollectionUser14Mask = 1L << kCollectionUser14Bit,
+  kCollectionUser15Mask = 1L << kCollectionUser15Bit,
+  kCollectionReserved0Mask = 1L << kCollectionReserved0Bit,
+  kCollectionReserved1Mask = 1L << kCollectionReserved1Bit,
+  kCollectionReserved2Mask = 1L << kCollectionReserved2Bit,
+  kCollectionReserved3Mask = 1L << kCollectionReserved3Bit,
+  kCollectionReserved4Mask = 1L << kCollectionReserved4Bit,
+  kCollectionReserved5Mask = 1L << kCollectionReserved5Bit,
+  kCollectionReserved6Mask = 1L << kCollectionReserved6Bit,
+  kCollectionReserved7Mask = 1L << kCollectionReserved7Bit,
+  kCollectionReserved8Mask = 1L << kCollectionReserved8Bit,
+  kCollectionReserved9Mask = 1L << kCollectionReserved9Bit,
+  kCollectionReserved10Mask = 1L << kCollectionReserved10Bit,
+  kCollectionReserved11Mask = 1L << kCollectionReserved11Bit,
+  kCollectionReserved12Mask = 1L << kCollectionReserved12Bit,
+  kCollectionReserved13Mask = 1L << kCollectionReserved13Bit,
+  kCollectionPersistenceMask = 1L << kCollectionPersistenceBit,
+  kCollectionLockMask = 1L << kCollectionLockBit
+};
+
+
+
+
+
+
+typedef struct OpaqueCollection* Collection;
+
+typedef FourCharCode CollectionTag;
+typedef OSErr ( * CollectionFlattenProcPtr)(SInt32 size, void *data, void *refCon);
+typedef OSErr ( * CollectionExceptionProcPtr)(Collection c, OSErr status);
+typedef CollectionFlattenProcPtr CollectionFlattenUPP;
+typedef CollectionExceptionProcPtr CollectionExceptionUPP;
+extern CollectionFlattenUPP
+NewCollectionFlattenUPP(CollectionFlattenProcPtr userRoutine) ;
+extern CollectionExceptionUPP
+NewCollectionExceptionUPP(CollectionExceptionProcPtr userRoutine) ;
+extern void
+DisposeCollectionFlattenUPP(CollectionFlattenUPP userUPP) ;
+extern void
+DisposeCollectionExceptionUPP(CollectionExceptionUPP userUPP) ;
+extern OSErr
+InvokeCollectionFlattenUPP(
+  SInt32 size,
+  void * data,
+  void * refCon,
+  CollectionFlattenUPP userUPP) ;
+extern OSErr
+InvokeCollectionExceptionUPP(
+  Collection c,
+  OSErr status,
+  CollectionExceptionUPP userUPP) ;
+extern Collection
+NewCollection(void) ;
+extern void
+DisposeCollection(Collection c) ;
+extern Collection
+CloneCollection(Collection c) ;
+extern SInt32
+CountCollectionOwners(Collection c) ;
+extern OSStatus
+RetainCollection(Collection c) ;
+extern OSStatus
+ReleaseCollection(Collection c) ;
+extern ItemCount
+GetCollectionRetainCount(Collection c) ;
+extern Collection
+CopyCollection(
+  Collection srcCollection,
+  Collection dstCollection) ;
+extern SInt32
+GetCollectionDefaultAttributes(Collection c) ;
+extern void
+SetCollectionDefaultAttributes(
+  Collection c,
+  SInt32 whichAttributes,
+  SInt32 newAttributes) ;
+extern SInt32
+CountCollectionItems(Collection c) ;
+extern OSErr
+AddCollectionItem(
+  Collection c,
+  CollectionTag tag,
+  SInt32 id,
+  SInt32 itemSize,
+  const void * itemData) ;
+extern OSErr
+GetCollectionItem(
+  Collection c,
+  CollectionTag tag,
+  SInt32 id,
+  SInt32 * itemSize,
+  void * itemData) ;
+extern OSErr
+RemoveCollectionItem(
+  Collection c,
+  CollectionTag tag,
+  SInt32 id) ;
+extern OSErr
+SetCollectionItemInfo(
+  Collection c,
+  CollectionTag tag,
+  SInt32 id,
+  SInt32 whichAttributes,
+  SInt32 newAttributes) ;
+extern OSErr
+GetCollectionItemInfo(
+  Collection c,
+  CollectionTag tag,
+  SInt32 id,
+  SInt32 * index,
+  SInt32 * itemSize,
+  SInt32 * attributes) ;
+extern OSErr
+ReplaceIndexedCollectionItem(
+  Collection c,
+  SInt32 index,
+  SInt32 itemSize,
+  const void * itemData) ;
+extern OSErr
+GetIndexedCollectionItem(
+  Collection c,
+  SInt32 index,
+  SInt32 * itemSize,
+  void * itemData) ;
+extern OSErr
+RemoveIndexedCollectionItem(
+  Collection c,
+  SInt32 index) ;
+extern OSErr
+SetIndexedCollectionItemInfo(
+  Collection c,
+  SInt32 index,
+  SInt32 whichAttributes,
+  SInt32 newAttributes) ;
+extern OSErr
+GetIndexedCollectionItemInfo(
+  Collection c,
+  SInt32 index,
+  CollectionTag * tag,
+  SInt32 * id,
+  SInt32 * itemSize,
+  SInt32 * attributes) ;
+extern Boolean
+CollectionTagExists(
+  Collection c,
+  CollectionTag tag) ;
+extern SInt32
+CountCollectionTags(Collection c) ;
+extern OSErr
+GetIndexedCollectionTag(
+  Collection c,
+  SInt32 tagIndex,
+  CollectionTag * tag) ;
+extern SInt32
+CountTaggedCollectionItems(
+  Collection c,
+  CollectionTag tag) ;
+extern OSErr
+GetTaggedCollectionItem(
+  Collection c,
+  CollectionTag tag,
+  SInt32 whichItem,
+  SInt32 * itemSize,
+  void * itemData) ;
+extern OSErr
+GetTaggedCollectionItemInfo(
+  Collection c,
+  CollectionTag tag,
+  SInt32 whichItem,
+  SInt32 * id,
+  SInt32 * index,
+  SInt32 * itemSize,
+  SInt32 * attributes) ;
+extern void
+PurgeCollection(
+  Collection c,
+  SInt32 whichAttributes,
+  SInt32 matchingAttributes) ;
+extern void
+PurgeCollectionTag(
+  Collection c,
+  CollectionTag tag) ;
+extern void
+EmptyCollection(Collection c) ;
+extern OSErr
+FlattenCollection(
+  Collection c,
+  CollectionFlattenUPP flattenProc,
+  void * refCon) ;
+extern OSErr
+FlattenPartialCollection(
+  Collection c,
+  CollectionFlattenUPP flattenProc,
+  void * refCon,
+  SInt32 whichAttributes,
+  SInt32 matchingAttributes) ;
+extern OSErr
+UnflattenCollection(
+  Collection c,
+  CollectionFlattenUPP flattenProc,
+  void * refCon) ;
+extern CollectionExceptionUPP
+GetCollectionExceptionProc(Collection c) ;
+extern void
+SetCollectionExceptionProc(
+  Collection c,
+  CollectionExceptionUPP exceptionProc) ;
+extern Collection
+GetNewCollection(SInt16 collectionID) ;
+extern OSErr
+AddCollectionItemHdl(
+  Collection aCollection,
+  CollectionTag tag,
+  SInt32 id,
+  Handle itemData) ;
+extern OSErr
+GetCollectionItemHdl(
+  Collection aCollection,
+  CollectionTag tag,
+  SInt32 id,
+  Handle itemData) ;
+extern OSErr
+ReplaceIndexedCollectionItemHdl(
+  Collection aCollection,
+  SInt32 index,
+  Handle itemData) ;
+extern OSErr
+GetIndexedCollectionItemHdl(
+  Collection aCollection,
+  SInt32 index,
+  Handle itemData) ;
+extern OSErr
+FlattenCollectionToHdl(
+  Collection aCollection,
+  Handle flattened) ;
+extern OSErr
+UnflattenCollectionFromHdl(
+  Collection aCollection,
+  Handle flattened) ;
+}
+
+
+
+typedef long BigEndianLong;
+typedef unsigned long BigEndianUnsignedLong;
+typedef short BigEndianShort;
+typedef unsigned short BigEndianUnsignedShort;
+typedef Fixed BigEndianFixed;
+typedef UnsignedFixed BigEndianUnsignedFixed;
+typedef OSType BigEndianOSType;
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+typedef OSErr ( * SelectorFunctionProcPtr)(OSType selector, long *response);
+typedef SelectorFunctionProcPtr SelectorFunctionUPP;
+extern OSErr
+Gestalt(
+  OSType selector,
+  long * response) ;
+extern OSErr
+ReplaceGestalt(
+  OSType selector,
+  SelectorFunctionUPP gestaltFunction,
+  SelectorFunctionUPP * oldGestaltFunction) ;
+extern OSErr
+NewGestalt(
+  OSType selector,
+  SelectorFunctionUPP gestaltFunction) ;
+extern OSErr
+NewGestaltValue(
+  OSType selector,
+  long newValue) ;
+extern OSErr
+ReplaceGestaltValue(
+  OSType selector,
+  long replacementValue) ;
+extern OSErr
+SetGestaltValue(
+  OSType selector,
+  long newValue) ;
+extern OSErr
+DeleteGestaltValue(OSType selector) ;
+extern SelectorFunctionUPP
+NewSelectorFunctionUPP(SelectorFunctionProcPtr userRoutine) ;
+extern void
+DisposeSelectorFunctionUPP(SelectorFunctionUPP userUPP) ;
+extern OSErr
+InvokeSelectorFunctionUPP(
+  OSType selector,
+  long * response,
+  SelectorFunctionUPP userUPP) ;
+
+
+
+enum {
+  gestaltAddressingModeAttr = 'addr',
+  gestalt32BitAddressing = 0,
+  gestalt32BitSysZone = 1,
+  gestalt32BitCapable = 2
+};
+
+enum {
+  gestaltAFPClient = 'afps',
+  gestaltAFPClientVersionMask = 0x0000FFFF,
+
+  gestaltAFPClient3_5 = 0x0001,
+  gestaltAFPClient3_6 = 0x0002,
+  gestaltAFPClient3_6_1 = 0x0003,
+  gestaltAFPClient3_6_2 = 0x0004,
+  gestaltAFPClient3_6_3 = 0x0005,
+  gestaltAFPClient3_7 = 0x0006,
+  gestaltAFPClient3_7_2 = 0x0007,
+  gestaltAFPClient3_8 = 0x0008,
+  gestaltAFPClient3_8_1 = 0x0009,
+  gestaltAFPClient3_8_3 = 0x000A,
+  gestaltAFPClient3_8_4 = 0x000B,
+  gestaltAFPClientAttributeMask = (long)0xFFFF0000,
+
+  gestaltAFPClientCfgRsrc = 16,
+  gestaltAFPClientSupportsIP = 29,
+  gestaltAFPClientVMUI = 30,
+  gestaltAFPClientMultiReq = 31
+};
+
+
+enum {
+  gestaltAliasMgrAttr = 'alis',
+  gestaltAliasMgrPresent = 0,
+  gestaltAliasMgrSupportsRemoteAppletalk = 1,
+  gestaltAliasMgrSupportsAOCEKeychain = 2,
+  gestaltAliasMgrResolveAliasFileWithMountOptions = 3,
+  gestaltAliasMgrFollowsAliasesWhenResolving = 4,
+  gestaltAliasMgrSupportsExtendedCalls = 5,
+  gestaltAliasMgrSupportsFSCalls = 6,
+  gestaltAliasMgrPrefersPath = 7
+};
+
+
+enum {
+  gestaltAppearanceAttr = 'appr',
+  gestaltAppearanceExists = 0,
+  gestaltAppearanceCompatMode = 1
+};
+
+
+
+
+
+
+
+enum {
+  gestaltAppearanceVersion = 'apvr'
+};
+
+enum {
+  gestaltArbitorAttr = 'arb ',
+  gestaltSerialArbitrationExists = 0
+};
+
+enum {
+  gestaltAppleScriptVersion = 'ascv'
+};
+
+enum {
+  gestaltAppleScriptAttr = 'ascr',
+  gestaltAppleScriptPresent = 0,
+  gestaltAppleScriptPowerPCSupport = 1
+};
+
+enum {
+  gestaltATAAttr = 'ata ',
+  gestaltATAPresent = 0
+};
+
+enum {
+  gestaltATalkVersion = 'atkv'
+};
+
+enum {
+  gestaltAppleTalkVersion = 'atlk'
+};
+enum {
+  gestaltAUXVersion = 'a/ux'
+};
+
+enum {
+  gestaltMacOSCompatibilityBoxAttr = 'bbox',
+  gestaltMacOSCompatibilityBoxPresent = 0,
+  gestaltMacOSCompatibilityBoxHasSerial = 1,
+  gestaltMacOSCompatibilityBoxless = 2
+};
+
+enum {
+  gestaltBusClkSpeed = 'bclk'
+};
+
+enum {
+  gestaltCloseViewAttr = 'BSDa',
+  gestaltCloseViewEnabled = 0,
+  gestaltCloseViewDisplayMgrFriendly = 1
+};
+
+enum {
+  gestaltCarbonVersion = 'cbon'
+};
+
+enum {
+  gestaltCFMAttr = 'cfrg',
+  gestaltCFMPresent = 0,
+  gestaltCFMPresentMask = 0x0001,
+  gestaltCFM99Present = 2,
+  gestaltCFM99PresentMask = 0x0004
+};
+
+enum {
+  gestaltCollectionMgrVersion = 'cltn'
+};
+
+enum {
+  gestaltColorMatchingAttr = 'cmta',
+  gestaltHighLevelMatching = 0,
+  gestaltColorMatchingLibLoaded = 1
+};
+
+enum {
+  gestaltColorMatchingVersion = 'cmtc',
+  gestaltColorSync10 = 0x0100,
+  gestaltColorSync11 = 0x0110,
+  gestaltColorSync104 = 0x0104,
+  gestaltColorSync105 = 0x0105,
+  gestaltColorSync20 = 0x0200,
+  gestaltColorSync21 = 0x0210,
+  gestaltColorSync211 = 0x0211,
+  gestaltColorSync212 = 0x0212,
+  gestaltColorSync213 = 0x0213,
+  gestaltColorSync25 = 0x0250,
+  gestaltColorSync26 = 0x0260,
+  gestaltColorSync261 = 0x0261,
+  gestaltColorSync30 = 0x0300
+};
+
+enum {
+  gestaltControlMgrVersion = 'cmvr'
+};
+
+enum {
+  gestaltControlMgrAttr = 'cntl',
+  gestaltControlMgrPresent = (1L << 0),
+
+
+  gestaltControlMgrPresentBit = 0,
+  gestaltControlMsgPresentMask = (1L << gestaltControlMgrPresentBit)
+};
+
+enum {
+  gestaltConnMgrAttr = 'conn',
+  gestaltConnMgrPresent = 0,
+  gestaltConnMgrCMSearchFix = 1,
+  gestaltConnMgrErrorString = 2,
+  gestaltConnMgrMultiAsyncIO = 3
+};
+
+enum {
+  gestaltColorPickerVersion = 'cpkr',
+  gestaltColorPicker = 'cpkr'
+};
+
+enum {
+  gestaltComponentMgr = 'cpnt',
+  gestaltComponentPlatform = 'copl'
+};
+enum {
+  gestaltNativeCPUtype = 'cput',
+  gestaltNativeCPUfamily = 'cpuf',
+  gestaltCPU68000 = 0,
+  gestaltCPU68010 = 1,
+  gestaltCPU68020 = 2,
+  gestaltCPU68030 = 3,
+  gestaltCPU68040 = 4,
+  gestaltCPU601 = 0x0101,
+  gestaltCPU603 = 0x0103,
+  gestaltCPU604 = 0x0104,
+  gestaltCPU603e = 0x0106,
+  gestaltCPU603ev = 0x0107,
+  gestaltCPU750 = 0x0108,
+  gestaltCPU604e = 0x0109,
+  gestaltCPU604ev = 0x010A,
+  gestaltCPUG4 = 0x010C,
+  gestaltCPUG47450 = 0x0110
+};
+
+enum {
+  gestaltCPUApollo = 0x0111,
+  gestaltCPU750FX = 0x0120
+};
+
+enum {
+
+  gestaltCPU486 = 'i486',
+  gestaltCPUPentium = 'i586',
+  gestaltCPUPentiumPro = 'i5pr',
+  gestaltCPUPentiumII = 'i5ii',
+  gestaltCPUX86 = 'ixxx'
+};
+
+enum {
+  gestaltCRMAttr = 'crm ',
+  gestaltCRMPresent = 0,
+  gestaltCRMPersistentFix = 1,
+  gestaltCRMToolRsrcCalls = 2
+};
+
+enum {
+  gestaltControlStripVersion = 'csvr'
+};
+
+enum {
+  gestaltCTBVersion = 'ctbv'
+};
+
+enum {
+  gestaltDBAccessMgrAttr = 'dbac',
+  gestaltDBAccessMgrPresent = 0
+};
+
+enum {
+  gestaltDiskCacheSize = 'dcsz'
+};
+
+enum {
+  gestaltSDPFindVersion = 'dfnd'
+};
+
+enum {
+  gestaltDictionaryMgrAttr = 'dict',
+  gestaltDictionaryMgrPresent = 0
+};
+
+enum {
+  gestaltDITLExtAttr = 'ditl',
+  gestaltDITLExtPresent = 0,
+  gestaltDITLExtSupportsIctb = 1
+};
+
+enum {
+  gestaltDialogMgrAttr = 'dlog',
+  gestaltDialogMgrPresent = (1L << 0),
+
+
+  gestaltDialogMgrPresentBit = 0,
+  gestaltDialogMgrHasAquaAlertBit = 2,
+  gestaltDialogMgrPresentMask = (1L << gestaltDialogMgrPresentBit),
+  gestaltDialogMgrHasAquaAlertMask = (1L << gestaltDialogMgrHasAquaAlertBit),
+  gestaltDialogMsgPresentMask = gestaltDialogMgrPresentMask
+};
+
+enum {
+  gestaltDesktopPicturesAttr = 'dkpx',
+  gestaltDesktopPicturesInstalled = 0,
+  gestaltDesktopPicturesDisplayed = 1
+};
+
+enum {
+  gestaltDisplayMgrVers = 'dplv'
+};
+
+enum {
+  gestaltDisplayMgrAttr = 'dply',
+  gestaltDisplayMgrPresent = 0,
+  gestaltDisplayMgrCanSwitchMirrored = 2,
+  gestaltDisplayMgrSetDepthNotifies = 3,
+  gestaltDisplayMgrCanConfirm = 4,
+  gestaltDisplayMgrColorSyncAware = 5,
+  gestaltDisplayMgrGeneratesProfiles = 6,
+  gestaltDisplayMgrSleepNotifies = 7
+};
+
+enum {
+  gestaltDragMgrAttr = 'drag',
+  gestaltDragMgrPresent = 0,
+  gestaltDragMgrFloatingWind = 1,
+  gestaltPPCDragLibPresent = 2,
+  gestaltDragMgrHasImageSupport = 3,
+  gestaltCanStartDragInFloatWindow = 4,
+  gestaltSetDragImageUpdates = 5
+};
+
+enum {
+  gestaltDrawSprocketVersion = 'dspv'
+};
+
+enum {
+  gestaltDigitalSignatureVersion = 'dsig'
+};
+
+
+
+
+
+enum {
+  gestaltDTPFeatures = 'dtpf',
+  kDTPThirdPartySupported = 0x00000004
+};
+
+
+
+
+
+
+enum {
+  gestaltDTPInfo = 'dtpx'
+};
+
+enum {
+  gestaltEasyAccessAttr = 'easy',
+  gestaltEasyAccessOff = 0,
+  gestaltEasyAccessOn = 1,
+  gestaltEasyAccessSticky = 2,
+  gestaltEasyAccessLocked = 3
+};
+
+enum {
+  gestaltEditionMgrAttr = 'edtn',
+  gestaltEditionMgrPresent = 0,
+  gestaltEditionMgrTranslationAware = 1
+};
+
+enum {
+  gestaltAppleEventsAttr = 'evnt',
+  gestaltAppleEventsPresent = 0,
+  gestaltScriptingSupport = 1,
+  gestaltOSLInSystem = 2,
+  gestaltSupportsApplicationURL = 4
+};
+
+enum {
+  gestaltExtensionTableVersion = 'etbl'
+};
+
+
+enum {
+  gestaltFBCIndexingState = 'fbci',
+  gestaltFBCindexingSafe = 0,
+  gestaltFBCindexingCritical = 1
+};
+
+enum {
+  gestaltFBCVersion = 'fbcv',
+  gestaltFBCCurrentVersion = 0x0011,
+  gestaltOSXFBCCurrentVersion = 0x0100
+};
+
+
+enum {
+  gestaltFileMappingAttr = 'flmp',
+  gestaltFileMappingPresent = 0,
+  gestaltFileMappingMultipleFilesFix = 1
+};
+
+enum {
+  gestaltFloppyAttr = 'flpy',
+  gestaltFloppyIsMFMOnly = 0,
+  gestaltFloppyIsManualEject = 1,
+  gestaltFloppyUsesDiskInPlace = 2
+};
+
+enum {
+  gestaltFinderAttr = 'fndr',
+  gestaltFinderDropEvent = 0,
+  gestaltFinderMagicPlacement = 1,
+  gestaltFinderCallsAEProcess = 2,
+  gestaltOSLCompliantFinder = 3,
+  gestaltFinderSupports4GBVolumes = 4,
+  gestaltFinderHasClippings = 6,
+  gestaltFinderFullDragManagerSupport = 7,
+  gestaltFinderFloppyRootComments = 8,
+  gestaltFinderLargeAndNotSavedFlavorsOK = 9,
+  gestaltFinderUsesExtensibleFolderManager = 10,
+  gestaltFinderUnderstandsRedirectedDesktopFolder = 11
+};
+
+enum {
+  gestaltFindFolderAttr = 'fold',
+  gestaltFindFolderPresent = 0,
+  gestaltFolderDescSupport = 1,
+  gestaltFolderMgrFollowsAliasesWhenResolving = 2,
+  gestaltFolderMgrSupportsExtendedCalls = 3,
+  gestaltFolderMgrSupportsDomains = 4,
+  gestaltFolderMgrSupportsFSCalls = 5
+};
+
+enum {
+  gestaltFindFolderRedirectionAttr = 'fole'
+};
+
+
+enum {
+  gestaltFontMgrAttr = 'font',
+  gestaltOutlineFonts = 0
+};
+
+enum {
+  gestaltFPUType = 'fpu ',
+  gestaltNoFPU = 0,
+  gestalt68881 = 1,
+  gestalt68882 = 2,
+  gestalt68040FPU = 3
+};
+
+enum {
+  gestaltFSAttr = 'fs  ',
+  gestaltFullExtFSDispatching = 0,
+  gestaltHasFSSpecCalls = 1,
+  gestaltHasFileSystemManager = 2,
+  gestaltFSMDoesDynamicLoad = 3,
+  gestaltFSSupports4GBVols = 4,
+  gestaltFSSupports2TBVols = 5,
+  gestaltHasExtendedDiskInit = 6,
+  gestaltDTMgrSupportsFSM = 7,
+  gestaltFSNoMFSVols = 8,
+  gestaltFSSupportsHFSPlusVols = 9,
+  gestaltFSIncompatibleDFA82 = 10
+};
+
+enum {
+  gestaltFSSupportsDirectIO = 11
+};
+
+enum {
+  gestaltHasHFSPlusAPIs = 12,
+  gestaltMustUseFCBAccessors = 13,
+  gestaltFSUsesPOSIXPathsForConversion = 14,
+  gestaltFSSupportsExclusiveLocks = 15,
+  gestaltFSSupportsHardLinkDetection = 16
+};
+
+enum {
+  gestaltAdminFeaturesFlagsAttr = 'fred',
+  gestaltFinderUsesSpecialOpenFoldersFile = 0
+};
+
+enum {
+  gestaltFSMVersion = 'fsm '
+};
+
+enum {
+  gestaltFXfrMgrAttr = 'fxfr',
+  gestaltFXfrMgrPresent = 0,
+  gestaltFXfrMgrMultiFile = 1,
+  gestaltFXfrMgrErrorString = 2,
+  gestaltFXfrMgrAsync = 3
+};
+
+enum {
+  gestaltGraphicsAttr = 'gfxa',
+  gestaltGraphicsIsDebugging = 0x00000001,
+  gestaltGraphicsIsLoaded = 0x00000002,
+  gestaltGraphicsIsPowerPC = 0x00000004
+};
+
+enum {
+  gestaltGraphicsVersion = 'grfx',
+  gestaltCurrentGraphicsVersion = 0x00010200
+};
+
+enum {
+  gestaltHardwareAttr = 'hdwr',
+  gestaltHasVIA1 = 0,
+  gestaltHasVIA2 = 1,
+  gestaltHasASC = 3,
+  gestaltHasSCC = 4,
+  gestaltHasSCSI = 7,
+  gestaltHasSoftPowerOff = 19,
+  gestaltHasSCSI961 = 21,
+  gestaltHasSCSI962 = 22,
+  gestaltHasUniversalROM = 24,
+  gestaltHasEnhancedLtalk = 30
+};
+
+enum {
+  gestaltHelpMgrAttr = 'help',
+  gestaltHelpMgrPresent = 0,
+  gestaltHelpMgrExtensions = 1,
+  gestaltAppleGuideIsDebug = 30,
+  gestaltAppleGuidePresent = 31
+};
+
+enum {
+  gestaltHardwareVendorCode = 'hrad',
+  gestaltHardwareVendorApple = 'Appl'
+};
+
+enum {
+  gestaltCompressionMgr = 'icmp'
+};
+
+enum {
+  gestaltIconUtilitiesAttr = 'icon',
+  gestaltIconUtilitiesPresent = 0,
+  gestaltIconUtilitiesHas48PixelIcons = 1,
+  gestaltIconUtilitiesHas32BitIcons = 2,
+  gestaltIconUtilitiesHas8BitDeepMasks = 3,
+  gestaltIconUtilitiesHasIconServices = 4
+};
+
+enum {
+  gestaltInternalDisplay = 'idsp'
+};
+
+
+
+
+
+enum {
+  gestaltKeyboardType = 'kbd ',
+  gestaltMacKbd = 1,
+  gestaltMacAndPad = 2,
+  gestaltMacPlusKbd = 3,
+  gestaltExtADBKbd = 4,
+  gestaltStdADBKbd = 5,
+  gestaltPrtblADBKbd = 6,
+  gestaltPrtblISOKbd = 7,
+  gestaltStdISOADBKbd = 8,
+  gestaltExtISOADBKbd = 9,
+  gestaltADBKbdII = 10,
+  gestaltADBISOKbdII = 11,
+  gestaltPwrBookADBKbd = 12,
+  gestaltPwrBookISOADBKbd = 13,
+  gestaltAppleAdjustKeypad = 14,
+  gestaltAppleAdjustADBKbd = 15,
+  gestaltAppleAdjustISOKbd = 16,
+  gestaltJapanAdjustADBKbd = 17,
+  gestaltPwrBkExtISOKbd = 20,
+  gestaltPwrBkExtJISKbd = 21,
+  gestaltPwrBkExtADBKbd = 24,
+  gestaltPS2Keyboard = 27,
+  gestaltPwrBkSubDomKbd = 28,
+  gestaltPwrBkSubISOKbd = 29,
+  gestaltPwrBkSubJISKbd = 30,
+  gestaltPwrBkEKDomKbd = 195,
+  gestaltPwrBkEKISOKbd = 196,
+  gestaltPwrBkEKJISKbd = 197,
+  gestaltUSBCosmoANSIKbd = 198,
+  gestaltUSBCosmoISOKbd = 199,
+  gestaltUSBCosmoJISKbd = 200,
+  gestaltPwrBk99JISKbd = 201,
+  gestaltUSBAndyANSIKbd = 204,
+  gestaltUSBAndyISOKbd = 205,
+  gestaltUSBAndyJISKbd = 206
+};
+
+
+enum {
+  gestaltPortable2001ANSIKbd = 202,
+  gestaltPortable2001ISOKbd = 203,
+  gestaltPortable2001JISKbd = 207
+};
+
+
+
+
+
+enum {
+  gestaltUDFSupport = 'kudf'
+};
+
+enum {
+  gestaltLowMemorySize = 'lmem'
+};
+
+enum {
+  gestaltLogicalRAMSize = 'lram'
+};
+enum {
+  gestaltMachineType = 'mach',
+  gestaltClassic = 1,
+  gestaltMacXL = 2,
+  gestaltMac512KE = 3,
+  gestaltMacPlus = 4,
+  gestaltMacSE = 5,
+  gestaltMacII = 6,
+  gestaltMacIIx = 7,
+  gestaltMacIIcx = 8,
+  gestaltMacSE030 = 9,
+  gestaltPortable = 10,
+  gestaltMacIIci = 11,
+  gestaltPowerMac8100_120 = 12,
+  gestaltMacIIfx = 13,
+  gestaltMacClassic = 17,
+  gestaltMacIIsi = 18,
+  gestaltMacLC = 19,
+  gestaltMacQuadra900 = 20,
+  gestaltPowerBook170 = 21,
+  gestaltMacQuadra700 = 22,
+  gestaltClassicII = 23,
+  gestaltPowerBook100 = 24,
+  gestaltPowerBook140 = 25,
+  gestaltMacQuadra950 = 26,
+  gestaltMacLCIII = 27,
+  gestaltPerforma450 = gestaltMacLCIII,
+  gestaltPowerBookDuo210 = 29,
+  gestaltMacCentris650 = 30,
+  gestaltPowerBookDuo230 = 32,
+  gestaltPowerBook180 = 33,
+  gestaltPowerBook160 = 34,
+  gestaltMacQuadra800 = 35,
+  gestaltMacQuadra650 = 36,
+  gestaltMacLCII = 37,
+  gestaltPowerBookDuo250 = 38,
+  gestaltAWS9150_80 = 39,
+  gestaltPowerMac8100_110 = 40,
+  gestaltAWS8150_110 = gestaltPowerMac8100_110,
+  gestaltPowerMac5200 = 41,
+  gestaltPowerMac5260 = gestaltPowerMac5200,
+  gestaltPerforma5300 = gestaltPowerMac5200,
+  gestaltPowerMac6200 = 42,
+  gestaltPerforma6300 = gestaltPowerMac6200,
+  gestaltMacIIvi = 44,
+  gestaltMacIIvm = 45,
+  gestaltPerforma600 = gestaltMacIIvm,
+  gestaltPowerMac7100_80 = 47,
+  gestaltMacIIvx = 48,
+  gestaltMacColorClassic = 49,
+  gestaltPerforma250 = gestaltMacColorClassic,
+  gestaltPowerBook165c = 50,
+  gestaltMacCentris610 = 52,
+  gestaltMacQuadra610 = 53,
+  gestaltPowerBook145 = 54,
+  gestaltPowerMac8100_100 = 55,
+  gestaltMacLC520 = 56,
+  gestaltAWS9150_120 = 57,
+  gestaltPowerMac6400 = 58,
+  gestaltPerforma6400 = gestaltPowerMac6400,
+  gestaltPerforma6360 = gestaltPerforma6400,
+  gestaltMacCentris660AV = 60,
+  gestaltMacQuadra660AV = gestaltMacCentris660AV,
+  gestaltPerforma46x = 62,
+  gestaltPowerMac8100_80 = 65,
+  gestaltAWS8150_80 = gestaltPowerMac8100_80,
+  gestaltPowerMac9500 = 67,
+  gestaltPowerMac9600 = gestaltPowerMac9500,
+  gestaltPowerMac7500 = 68,
+  gestaltPowerMac7600 = gestaltPowerMac7500,
+  gestaltPowerMac8500 = 69,
+  gestaltPowerMac8600 = gestaltPowerMac8500,
+  gestaltAWS8550 = gestaltPowerMac7500,
+  gestaltPowerBook180c = 71,
+  gestaltPowerBook520 = 72,
+  gestaltPowerBook520c = gestaltPowerBook520,
+  gestaltPowerBook540 = gestaltPowerBook520,
+  gestaltPowerBook540c = gestaltPowerBook520,
+  gestaltPowerMac5400 = 74,
+  gestaltPowerMac6100_60 = 75,
+  gestaltAWS6150_60 = gestaltPowerMac6100_60,
+  gestaltPowerBookDuo270c = 77,
+  gestaltMacQuadra840AV = 78,
+  gestaltPerforma550 = 80,
+  gestaltPowerBook165 = 84,
+  gestaltPowerBook190 = 85,
+  gestaltMacTV = 88,
+  gestaltMacLC475 = 89,
+  gestaltPerforma47x = gestaltMacLC475,
+  gestaltMacLC575 = 92,
+  gestaltMacQuadra605 = 94,
+  gestaltMacQuadra630 = 98,
+  gestaltMacLC580 = 99,
+  gestaltPerforma580 = gestaltMacLC580,
+  gestaltPowerMac6100_66 = 100,
+  gestaltAWS6150_66 = gestaltPowerMac6100_66,
+  gestaltPowerBookDuo280 = 102,
+  gestaltPowerBookDuo280c = 103,
+  gestaltPowerMacLC475 = 104,
+  gestaltPowerMacPerforma47x = gestaltPowerMacLC475,
+  gestaltPowerMacLC575 = 105,
+  gestaltPowerMacPerforma57x = gestaltPowerMacLC575,
+  gestaltPowerMacQuadra630 = 106,
+  gestaltPowerMacLC630 = gestaltPowerMacQuadra630,
+  gestaltPowerMacPerforma63x = gestaltPowerMacQuadra630,
+  gestaltPowerMac7200 = 108,
+  gestaltPowerMac7300 = 109,
+  gestaltPowerMac7100_66 = 112,
+  gestaltPowerBook150 = 115,
+  gestaltPowerMacQuadra700 = 116,
+  gestaltPowerMacQuadra900 = 117,
+  gestaltPowerMacQuadra950 = 118,
+  gestaltPowerMacCentris610 = 119,
+  gestaltPowerMacCentris650 = 120,
+  gestaltPowerMacQuadra610 = 121,
+  gestaltPowerMacQuadra650 = 122,
+  gestaltPowerMacQuadra800 = 123,
+  gestaltPowerBookDuo2300 = 124,
+  gestaltPowerBook500PPCUpgrade = 126,
+  gestaltPowerBook5300 = 128,
+  gestaltPowerBook1400 = 310,
+  gestaltPowerBook3400 = 306,
+  gestaltPowerBook2400 = 307,
+  gestaltPowerBookG3Series = 312,
+  gestaltPowerBookG3 = 313,
+  gestaltPowerBookG3Series2 = 314,
+  gestaltPowerMacNewWorld = 406,
+  gestaltPowerMacG3 = 510,
+  gestaltPowerMac5500 = 512,
+  gestalt20thAnniversary = gestaltPowerMac5500,
+  gestaltPowerMac6500 = 513,
+  gestaltPowerMac4400_160 = 514,
+  gestaltPowerMac4400 = 515,
+  gestaltMacOSCompatibility = 1206
+};
+
+
+enum {
+  gestaltQuadra605 = gestaltMacQuadra605,
+  gestaltQuadra610 = gestaltMacQuadra610,
+  gestaltQuadra630 = gestaltMacQuadra630,
+  gestaltQuadra650 = gestaltMacQuadra650,
+  gestaltQuadra660AV = gestaltMacQuadra660AV,
+  gestaltQuadra700 = gestaltMacQuadra700,
+  gestaltQuadra800 = gestaltMacQuadra800,
+  gestaltQuadra840AV = gestaltMacQuadra840AV,
+  gestaltQuadra900 = gestaltMacQuadra900,
+  gestaltQuadra950 = gestaltMacQuadra950
+};
+
+enum {
+  kMachineNameStrID = -16395
+};
+
+enum {
+  gestaltSMPMailerVersion = 'malr'
+};
+
+enum {
+  gestaltMediaBay = 'mbeh',
+  gestaltMBLegacy = 0,
+  gestaltMBSingleBay = 1,
+  gestaltMBMultipleBays = 2
+};
+
+enum {
+  gestaltMessageMgrVersion = 'mess'
+};
+
+
+
+enum {
+  gestaltMenuMgrAttr = 'menu',
+  gestaltMenuMgrPresent = (1L << 0),
+
+
+  gestaltMenuMgrPresentBit = 0,
+  gestaltMenuMgrAquaLayoutBit = 1,
+  gestaltMenuMgrMultipleItemsWithCommandIDBit = 2,
+  gestaltMenuMgrRetainsIconRefBit = 3,
+  gestaltMenuMgrSendsMenuBoundsToDefProcBit = 4,
+  gestaltMenuMgrMoreThanFiveMenusDeepBit = 5,
+
+  gestaltMenuMgrPresentMask = (1L << gestaltMenuMgrPresentBit),
+  gestaltMenuMgrAquaLayoutMask = (1L << gestaltMenuMgrAquaLayoutBit),
+  gestaltMenuMgrMultipleItemsWithCommandIDMask = (1L << gestaltMenuMgrMultipleItemsWithCommandIDBit),
+  gestaltMenuMgrRetainsIconRefMask = (1L << gestaltMenuMgrRetainsIconRefBit),
+  gestaltMenuMgrSendsMenuBoundsToDefProcMask = (1L << gestaltMenuMgrSendsMenuBoundsToDefProcBit),
+  gestaltMenuMgrMoreThanFiveMenusDeepMask = (1L << gestaltMenuMgrMoreThanFiveMenusDeepBit)
+};
+
+
+enum {
+  gestaltMultipleUsersState = 'mfdr'
+};
+
+
+enum {
+  gestaltMachineIcon = 'micn'
+};
+
+enum {
+  gestaltMiscAttr = 'misc',
+  gestaltScrollingThrottle = 0,
+  gestaltSquareMenuBar = 2
+};
+enum {
+  gestaltMixedModeVersion = 'mixd'
+};
+
+enum {
+  gestaltMixedModeAttr = 'mixd',
+  gestaltMixedModePowerPC = 0,
+  gestaltPowerPCAware = 0,
+  gestaltMixedModeCFM68K = 1,
+  gestaltMixedModeCFM68KHasTrap = 2,
+  gestaltMixedModeCFM68KHasState = 3
+};
+
+enum {
+  gestaltQuickTimeConferencing = 'mtlk'
+};
+
+enum {
+  gestaltMemoryMapAttr = 'mmap',
+  gestaltMemoryMapSparse = 0
+};
+
+enum {
+  gestaltMMUType = 'mmu ',
+  gestaltNoMMU = 0,
+  gestaltAMU = 1,
+  gestalt68851 = 2,
+  gestalt68030MMU = 3,
+  gestalt68040MMU = 4,
+  gestaltEMMU1 = 5
+};
+
+enum {
+  gestaltUserVisibleMachineName = 'mnam'
+};
+
+enum {
+  gestaltMPCallableAPIsAttr = 'mpsc',
+  gestaltMPFileManager = 0,
+  gestaltMPDeviceManager = 1,
+  gestaltMPTrapCalls = 2
+};
+
+enum {
+  gestaltStdNBPAttr = 'nlup',
+  gestaltStdNBPPresent = 0,
+  gestaltStdNBPSupportsAutoPosition = 1
+};
+
+enum {
+  gestaltNotificationMgrAttr = 'nmgr',
+  gestaltNotificationPresent = 0
+};
+
+enum {
+  gestaltNameRegistryVersion = 'nreg'
+};
+
+enum {
+  gestaltNuBusSlotCount = 'nubs'
+};
+
+enum {
+  gestaltOCEToolboxVersion = 'ocet',
+  gestaltOCETB = 0x0102,
+  gestaltSFServer = 0x0100
+};
+
+enum {
+  gestaltOCEToolboxAttr = 'oceu',
+  gestaltOCETBPresent = 0x01,
+  gestaltOCETBAvailable = 0x02,
+  gestaltOCESFServerAvailable = 0x04,
+  gestaltOCETBNativeGlueAvailable = 0x10
+};
+
+enum {
+  gestaltOpenFirmwareInfo = 'opfw'
+};
+
+enum {
+  gestaltOSAttr = 'os  ',
+  gestaltSysZoneGrowable = 0,
+  gestaltLaunchCanReturn = 1,
+  gestaltLaunchFullFileSpec = 2,
+  gestaltLaunchControl = 3,
+  gestaltTempMemSupport = 4,
+  gestaltRealTempMemory = 5,
+  gestaltTempMemTracked = 6,
+  gestaltIPCSupport = 7,
+  gestaltSysDebuggerSupport = 8,
+  gestaltNativeProcessMgrBit = 19,
+  gestaltAltivecRegistersSwappedCorrectlyBit = 20
+};
+
+enum {
+  gestaltOSTable = 'ostt'
+};
+enum {
+  gestaltOpenTptNetworkSetup = 'otcf',
+  gestaltOpenTptNetworkSetupLegacyImport = 0,
+  gestaltOpenTptNetworkSetupLegacyExport = 1,
+  gestaltOpenTptNetworkSetupSupportsMultihoming = 2
+};
+
+enum {
+  gestaltOpenTptNetworkSetupVersion = 'otcv'
+};
+
+
+
+
+
+
+
+enum {
+  gestaltOpenTptRemoteAccess = 'otra',
+  gestaltOpenTptRemoteAccessPresent = 0,
+  gestaltOpenTptRemoteAccessLoaded = 1,
+  gestaltOpenTptRemoteAccessClientOnly = 2,
+  gestaltOpenTptRemoteAccessPServer = 3,
+  gestaltOpenTptRemoteAccessMPServer = 4,
+  gestaltOpenTptPPPPresent = 5,
+  gestaltOpenTptARAPPresent = 6
+};
+
+enum {
+  gestaltOpenTptRemoteAccessVersion = 'otrv'
+};
+
+
+
+
+
+enum {
+  gestaltOpenTptVersions = 'otvr'
+};
+
+enum {
+  gestaltOpenTpt = 'otan',
+  gestaltOpenTptPresentMask = 0x00000001,
+  gestaltOpenTptLoadedMask = 0x00000002,
+  gestaltOpenTptAppleTalkPresentMask = 0x00000004,
+  gestaltOpenTptAppleTalkLoadedMask = 0x00000008,
+  gestaltOpenTptTCPPresentMask = 0x00000010,
+  gestaltOpenTptTCPLoadedMask = 0x00000020,
+  gestaltOpenTptIPXSPXPresentMask = 0x00000040,
+  gestaltOpenTptIPXSPXLoadedMask = 0x00000080,
+  gestaltOpenTptPresentBit = 0,
+  gestaltOpenTptLoadedBit = 1,
+  gestaltOpenTptAppleTalkPresentBit = 2,
+  gestaltOpenTptAppleTalkLoadedBit = 3,
+  gestaltOpenTptTCPPresentBit = 4,
+  gestaltOpenTptTCPLoadedBit = 5,
+  gestaltOpenTptIPXSPXPresentBit = 6,
+  gestaltOpenTptIPXSPXLoadedBit = 7
+};
+
+
+enum {
+  gestaltPCCard = 'pccd',
+  gestaltCardServicesPresent = 0,
+  gestaltPCCardFamilyPresent = 1,
+  gestaltPCCardHasPowerControl = 2,
+  gestaltPCCardSupportsCardBus = 3
+};
+
+enum {
+  gestaltProcClkSpeed = 'pclk'
+};
+
+enum {
+  gestaltPCXAttr = 'pcxg',
+  gestaltPCXHas8and16BitFAT = 0,
+  gestaltPCXHasProDOS = 1,
+  gestaltPCXNewUI = 2,
+  gestaltPCXUseICMapping = 3
+};
+
+enum {
+  gestaltLogicalPageSize = 'pgsz'
+};
+enum {
+  gestaltScreenCaptureMain = 'pic1',
+  gestaltScreenCaptureDir = 'pic2'
+};
+
+enum {
+  gestaltGXPrintingMgrVersion = 'pmgr'
+};
+
+enum {
+  gestaltPopupAttr = 'pop!',
+  gestaltPopupPresent = 0
+};
+
+enum {
+  gestaltPowerMgrAttr = 'powr',
+  gestaltPMgrExists = 0,
+  gestaltPMgrCPUIdle = 1,
+  gestaltPMgrSCC = 2,
+  gestaltPMgrSound = 3,
+  gestaltPMgrDispatchExists = 4,
+  gestaltPMgrSupportsAVPowerStateAtSleepWake = 5
+};
+
+enum {
+  gestaltPowerMgrVers = 'pwrv'
+};
+
+
+
+
+
+
+
+enum {
+  gestaltPPCToolboxAttr = 'ppc ',
+  gestaltPPCToolboxPresent = 0x0000,
+  gestaltPPCSupportsRealTime = 0x1000,
+  gestaltPPCSupportsIncoming = 0x0001,
+  gestaltPPCSupportsOutGoing = 0x0002,
+  gestaltPPCSupportsTCP_IP = 0x0004,
+  gestaltPPCSupportsIncomingAppleTalk = 0x0010,
+  gestaltPPCSupportsIncomingTCP_IP = 0x0020,
+  gestaltPPCSupportsOutgoingAppleTalk = 0x0100,
+  gestaltPPCSupportsOutgoingTCP_IP = 0x0200
+};
+
+enum {
+  gestaltPowerPCProcessorFeatures = 'ppcf',
+  gestaltPowerPCHasGraphicsInstructions = 0,
+  gestaltPowerPCHasSTFIWXInstruction = 1,
+  gestaltPowerPCHasSquareRootInstructions = 2,
+  gestaltPowerPCHasDCBAInstruction = 3,
+  gestaltPowerPCHasVectorInstructions = 4,
+  gestaltPowerPCHasDataStreams = 5
+};
+
+enum {
+  gestaltProcessorType = 'proc',
+  gestalt68000 = 1,
+  gestalt68010 = 2,
+  gestalt68020 = 3,
+  gestalt68030 = 4,
+  gestalt68040 = 5
+};
+
+enum {
+  gestaltSDPPromptVersion = 'prpv'
+};
+
+enum {
+  gestaltParityAttr = 'prty',
+  gestaltHasParityCapability = 0,
+  gestaltParityEnabled = 1
+};
+
+enum {
+  gestaltQD3DVersion = 'q3v '
+};
+
+enum {
+  gestaltQD3DViewer = 'q3vc',
+  gestaltQD3DViewerPresent = 0
+};
+enum {
+  gestaltQuickdrawVersion = 'qd  ',
+  gestaltOriginalQD = 0x0000,
+  gestalt8BitQD = 0x0100,
+  gestalt32BitQD = 0x0200,
+  gestalt32BitQD11 = 0x0201,
+  gestalt32BitQD12 = 0x0220,
+  gestalt32BitQD13 = 0x0230,
+  gestaltAllegroQD = 0x0250,
+  gestaltMacOSXQD = 0x0300
+};
+
+enum {
+  gestaltQD3D = 'qd3d',
+  gestaltQD3DPresent = 0
+};
+enum {
+  gestaltGXVersion = 'qdgx'
+};
+
+enum {
+  gestaltQuickdrawFeatures = 'qdrw',
+  gestaltHasColor = 0,
+  gestaltHasDeepGWorlds = 1,
+  gestaltHasDirectPixMaps = 2,
+  gestaltHasGrayishTextOr = 3,
+  gestaltSupportsMirroring = 4,
+  gestaltQDHasLongRowBytes = 5
+};
+
+enum {
+  gestaltQDTextVersion = 'qdtx',
+  gestaltOriginalQDText = 0x0000,
+  gestaltAllegroQDText = 0x0100,
+  gestaltMacOSXQDText = 0x0200
+};
+
+enum {
+  gestaltQDTextFeatures = 'qdtf',
+  gestaltWSIISupport = 0,
+  gestaltSbitFontSupport = 1,
+  gestaltAntiAliasedTextAvailable = 2,
+  gestaltOFA2available = 3,
+  gestaltCreatesAliasFontRsrc = 4,
+  gestaltNativeType1FontSupport = 5,
+  gestaltCanUseCGTextRendering = 6
+};
+
+
+enum {
+  gestaltQuickTimeConferencingInfo = 'qtci'
+};
+
+enum {
+  gestaltQuickTimeVersion = 'qtim',
+  gestaltQuickTime = 'qtim'
+};
+
+enum {
+  gestaltQuickTimeFeatures = 'qtrs',
+  gestaltPPCQuickTimeLibPresent = 0
+};
+
+enum {
+  gestaltQuickTimeStreamingFeatures = 'qtsf'
+};
+
+enum {
+  gestaltQuickTimeStreamingVersion = 'qtst'
+};
+
+enum {
+  gestaltQTVRMgrAttr = 'qtvr',
+  gestaltQTVRMgrPresent = 0,
+  gestaltQTVRObjMoviesPresent = 1,
+  gestaltQTVRCylinderPanosPresent = 2,
+  gestaltQTVRCubicPanosPresent = 3
+};
+
+enum {
+  gestaltQTVRMgrVers = 'qtvv'
+};
+
+enum {
+  gestaltPhysicalRAMSize = 'ram '
+};
+
+enum {
+  gestaltRBVAddr = 'rbv '
+};
+
+enum {
+  gestaltROMSize = 'rom '
+};
+
+enum {
+  gestaltROMVersion = 'romv'
+};
+
+enum {
+  gestaltResourceMgrAttr = 'rsrc',
+  gestaltPartialRsrcs = 0,
+  gestaltHasResourceOverrides = 1
+};
+
+enum {
+  gestaltResourceMgrBugFixesAttrs = 'rmbg',
+  gestaltRMForceSysHeapRolledIn = 0,
+  gestaltRMFakeAppleMenuItemsRolledIn = 1,
+  gestaltSanityCheckResourceFiles = 2,
+  gestaltSupportsFSpResourceFileAlreadyOpenBit = 3,
+  gestaltRMSupportsFSCalls = 4,
+  gestaltRMTypeIndexOrderingReverse = 8
+};
+
+
+enum {
+  gestaltRealtimeMgrAttr = 'rtmr',
+  gestaltRealtimeMgrPresent = 0
+};
+
+
+enum {
+  gestaltSafeOFAttr = 'safe',
+  gestaltVMZerosPagesBit = 0,
+  gestaltInitHeapZerosOutHeapsBit = 1,
+  gestaltNewHandleReturnsZeroedMemoryBit = 2,
+  gestaltNewPtrReturnsZeroedMemoryBit = 3,
+  gestaltFileAllocationZeroedBlocksBit = 4
+};
+
+
+enum {
+  gestaltSCCReadAddr = 'sccr'
+};
+
+enum {
+  gestaltSCCWriteAddr = 'sccw'
+};
+
+enum {
+  gestaltScrapMgrAttr = 'scra',
+  gestaltScrapMgrTranslationAware = 0
+};
+
+enum {
+  gestaltScriptMgrVersion = 'scri'
+};
+
+enum {
+  gestaltScriptCount = 'scr#'
+};
+
+enum {
+  gestaltSCSI = 'scsi',
+  gestaltAsyncSCSI = 0,
+  gestaltAsyncSCSIINROM = 1,
+  gestaltSCSISlotBoot = 2,
+  gestaltSCSIPollSIH = 3
+};
+
+enum {
+  gestaltControlStripAttr = 'sdev',
+  gestaltControlStripExists = 0,
+  gestaltControlStripVersionFixed = 1,
+  gestaltControlStripUserFont = 2,
+  gestaltControlStripUserHotKey = 3
+};
+
+enum {
+  gestaltSDPStandardDirectoryVersion = 'sdvr'
+};
+
+enum {
+  gestaltSerialAttr = 'ser ',
+  gestaltHasGPIaToDCDa = 0,
+  gestaltHasGPIaToRTxCa = 1,
+  gestaltHasGPIbToDCDb = 2,
+  gestaltHidePortA = 3,
+  gestaltHidePortB = 4,
+  gestaltPortADisabled = 5,
+  gestaltPortBDisabled = 6
+};
+
+enum {
+  gestaltShutdownAttributes = 'shut',
+  gestaltShutdownHassdOnBootVolUnmount = 0
+};
+
+enum {
+  gestaltNuBusConnectors = 'sltc'
+};
+
+enum {
+  gestaltSlotAttr = 'slot',
+  gestaltSlotMgrExists = 0,
+  gestaltNuBusPresent = 1,
+  gestaltSESlotPresent = 2,
+  gestaltSE30SlotPresent = 3,
+  gestaltPortableSlotPresent = 4
+};
+
+enum {
+  gestaltFirstSlotNumber = 'slt1'
+};
+
+enum {
+  gestaltSoundAttr = 'snd ',
+  gestaltStereoCapability = 0,
+  gestaltStereoMixing = 1,
+  gestaltSoundIOMgrPresent = 3,
+  gestaltBuiltInSoundInput = 4,
+  gestaltHasSoundInputDevice = 5,
+  gestaltPlayAndRecord = 6,
+  gestalt16BitSoundIO = 7,
+  gestaltStereoInput = 8,
+  gestaltLineLevelInput = 9,
+
+  gestaltSndPlayDoubleBuffer = 10,
+  gestaltMultiChannels = 11,
+  gestalt16BitAudioSupport = 12
+};
+
+enum {
+  gestaltSplitOSAttr = 'spos',
+  gestaltSplitOSBootDriveIsNetworkVolume = 0,
+  gestaltSplitOSAware = 1,
+  gestaltSplitOSEnablerVolumeIsDifferentFromBootVolume = 2,
+  gestaltSplitOSMachineNameSetToNetworkNameTemp = 3,
+  gestaltSplitOSMachineNameStartupDiskIsNonPersistent = 5
+};
+
+enum {
+  gestaltSMPSPSendLetterVersion = 'spsl'
+};
+
+enum {
+  gestaltSpeechRecognitionAttr = 'srta',
+  gestaltDesktopSpeechRecognition = 1,
+  gestaltTelephoneSpeechRecognition = 2
+};
+
+enum {
+  gestaltSpeechRecognitionVersion = 'srtb'
+};
+
+enum {
+  gestaltSoftwareVendorCode = 'srad',
+  gestaltSoftwareVendorApple = 'Appl',
+  gestaltSoftwareVendorLicensee = 'Lcns'
+};
+
+enum {
+  gestaltStandardFileAttr = 'stdf',
+  gestaltStandardFile58 = 0,
+  gestaltStandardFileTranslationAware = 1,
+  gestaltStandardFileHasColorIcons = 2,
+  gestaltStandardFileUseGenericIcons = 3,
+  gestaltStandardFileHasDynamicVolumeAllocation = 4
+};
+
+enum {
+  gestaltSysArchitecture = 'sysa',
+  gestalt68k = 1,
+  gestaltPowerPC = 2
+};
+
+enum {
+  gestaltIntel = 10
+};
+
+enum {
+  gestaltSystemUpdateVersion = 'sysu'
+};
+
+enum {
+  gestaltSystemVersion = 'sysv'
+};
+
+enum {
+  gestaltToolboxTable = 'tbtt'
+};
+
+enum {
+  gestaltTextEditVersion = 'te  ',
+  gestaltTE1 = 1,
+  gestaltTE2 = 2,
+  gestaltTE3 = 3,
+  gestaltTE4 = 4,
+  gestaltTE5 = 5
+};
+
+enum {
+  gestaltTE6 = 6
+};
+
+enum {
+  gestaltTEAttr = 'teat',
+  gestaltTEHasGetHiliteRgn = 0,
+  gestaltTESupportsInlineInput = 1,
+  gestaltTESupportsTextObjects = 2,
+  gestaltTEHasWhiteBackground = 3
+};
+
+enum {
+  gestaltTeleMgrAttr = 'tele',
+  gestaltTeleMgrPresent = 0,
+  gestaltTeleMgrPowerPCSupport = 1,
+  gestaltTeleMgrSoundStreams = 2,
+  gestaltTeleMgrAutoAnswer = 3,
+  gestaltTeleMgrIndHandset = 4,
+  gestaltTeleMgrSilenceDetect = 5,
+  gestaltTeleMgrNewTELNewSupport = 6
+};
+
+enum {
+  gestaltTermMgrAttr = 'term',
+  gestaltTermMgrPresent = 0,
+  gestaltTermMgrErrorString = 2
+};
+
+enum {
+  gestaltThreadMgrAttr = 'thds',
+  gestaltThreadMgrPresent = 0,
+  gestaltSpecificMatchSupport = 1,
+  gestaltThreadsLibraryPresent = 2
+};
+
+enum {
+  gestaltTimeMgrVersion = 'tmgr',
+  gestaltStandardTimeMgr = 1,
+  gestaltRevisedTimeMgr = 2,
+  gestaltExtendedTimeMgr = 3,
+  gestaltNativeTimeMgr = 4
+};
+
+enum {
+  gestaltTSMTEVersion = 'tmTV',
+  gestaltTSMTE1 = 0x0100,
+  gestaltTSMTE15 = 0x0150,
+  gestaltTSMTE152 = 0x0152
+};
+
+enum {
+  gestaltTSMTEAttr = 'tmTE',
+  gestaltTSMTEPresent = 0,
+  gestaltTSMTE = 0
+};
+
+enum {
+  gestaltAVLTreeAttr = 'tree',
+  gestaltAVLTreePresentBit = 0,
+  gestaltAVLTreeSupportsHandleBasedTreeBit = 1,
+  gestaltAVLTreeSupportsTreeLockingBit = 2
+};
+
+enum {
+  gestaltALMAttr = 'trip',
+  gestaltALMPresent = 0,
+  gestaltALMHasSFGroup = 1,
+  gestaltALMHasCFMSupport = 2,
+  gestaltALMHasRescanNotifiers = 3
+};
+
+enum {
+  gestaltALMHasSFLocation = gestaltALMHasSFGroup
+};
+
+enum {
+  gestaltTSMgrVersion = 'tsmv',
+  gestaltTSMgr15 = 0x0150,
+  gestaltTSMgr20 = 0x0200
+};
+
+enum {
+  gestaltTSMgrAttr = 'tsma',
+  gestaltTSMDisplayMgrAwareBit = 0,
+  gestaltTSMdoesTSMTEBit = 1
+};
+
+enum {
+  gestaltSpeechAttr = 'ttsc',
+  gestaltSpeechMgrPresent = 0,
+  gestaltSpeechHasPPCGlue = 1
+};
+
+enum {
+  gestaltTVAttr = 'tv  ',
+  gestaltHasTVTuner = 0,
+  gestaltHasSoundFader = 1,
+  gestaltHasHWClosedCaptioning = 2,
+  gestaltHasIRRemote = 3,
+  gestaltHasVidDecoderScaler = 4,
+  gestaltHasStereoDecoder = 5,
+  gestaltHasSerialFader = 6,
+  gestaltHasFMTuner = 7,
+  gestaltHasSystemIRFunction = 8,
+  gestaltIRDisabled = 9,
+  gestaltINeedIRPowerOffConfirm = 10,
+  gestaltHasZoomedVideo = 11
+};
+
+
+enum {
+  gestaltATSUVersion = 'uisv',
+  gestaltOriginalATSUVersion = (1 << 16),
+  gestaltATSUUpdate1 = (2 << 16),
+  gestaltATSUUpdate2 = (3 << 16),
+  gestaltATSUUpdate3 = (4 << 16),
+  gestaltATSUUpdate4 = (5 << 16),
+  gestaltATSUUpdate5 = (6 << 16),
+  gestaltATSUUpdate6 = (7 << 16)
+};
+
+enum {
+  gestaltATSUFeatures = 'uisf',
+  gestaltATSUTrackingFeature = 0x00000001,
+  gestaltATSUMemoryFeature = 0x00000001,
+  gestaltATSUFallbacksFeature = 0x00000001,
+  gestaltATSUGlyphBoundsFeature = 0x00000001,
+  gestaltATSULineControlFeature = 0x00000001,
+  gestaltATSULayoutCreateAndCopyFeature = 0x00000001,
+  gestaltATSULayoutCacheClearFeature = 0x00000001,
+  gestaltATSUTextLocatorUsageFeature = 0x00000002,
+  gestaltATSULowLevelOrigFeatures = 0x00000004,
+  gestaltATSUFallbacksObjFeatures = 0x00000008,
+  gestaltATSUIgnoreLeadingFeature = 0x00000008,
+  gestaltATSUByCharacterClusterFeature = 0x00000010,
+  gestaltATSUAscentDescentControlsFeature = 0x00000010,
+  gestaltATSUHighlightInactiveTextFeature = 0x00000010,
+  gestaltATSUPositionToCursorFeature = 0x00000010,
+  gestaltATSUBatchBreakLinesFeature = 0x00000010,
+  gestaltATSUTabSupportFeature = 0x00000010,
+  gestaltATSUDirectAccess = 0x00000010
+};
+
+enum {
+  gestaltUSBAttr = 'usb ',
+  gestaltUSBPresent = 0,
+  gestaltUSBHasIsoch = 1
+};
+
+enum {
+  gestaltUSBVersion = 'usbv'
+};
+
+enum {
+  gestaltVersion = 'vers',
+  gestaltValueImplementedVers = 5
+};
+
+enum {
+  gestaltVIA1Addr = 'via1'
+};
+
+enum {
+  gestaltVIA2Addr = 'via2'
+};
+
+enum {
+  gestaltVMAttr = 'vm  ',
+  gestaltVMPresent = 0,
+  gestaltVMHasLockMemoryForOutput = 1,
+  gestaltVMFilemappingOn = 3,
+  gestaltVMHasPagingControl = 4
+};
+
+enum {
+  gestaltVMInfoType = 'vmin',
+
+  gestaltVMInfoSizeStorageType = 0,
+  gestaltVMInfoSizeType = 1,
+  gestaltVMInfoSimpleType = 2,
+  gestaltVMInfoNoneType = 3
+};
+
+enum {
+  gestaltVMBackingStoreFileRefNum = 'vmbs'
+};
+
+
+
+enum {
+  gestaltALMVers = 'walk'
+};
+
+enum {
+  gestaltWindowMgrAttr = 'wind',
+  gestaltWindowMgrPresent = (1L << 0),
+
+
+  gestaltWindowMgrPresentBit = 0,
+  gestaltExtendedWindowAttributes = 1,
+  gestaltExtendedWindowAttributesBit = 1,
+  gestaltHasFloatingWindows = 2,
+  gestaltHasFloatingWindowsBit = 2,
+  gestaltHasWindowBuffering = 3,
+  gestaltHasWindowBufferingBit = 3,
+  gestaltWindowLiveResizeBit = 4,
+  gestaltWindowMinimizeToDockBit = 5,
+  gestaltHasWindowShadowsBit = 6,
+  gestaltSheetsAreWindowModalBit = 7,
+  gestaltFrontWindowMayBeHiddenBit = 8,
+
+  gestaltWindowMgrPresentMask = (1L << gestaltWindowMgrPresentBit),
+  gestaltExtendedWindowAttributesMask = (1L << gestaltExtendedWindowAttributesBit),
+  gestaltHasFloatingWindowsMask = (1L << gestaltHasFloatingWindowsBit),
+  gestaltHasWindowBufferingMask = (1L << gestaltHasWindowBufferingBit),
+  gestaltWindowLiveResizeMask = (1L << gestaltWindowLiveResizeBit),
+  gestaltWindowMinimizeToDockMask = (1L << gestaltWindowMinimizeToDockBit),
+  gestaltHasWindowShadowsMask = (1L << gestaltHasWindowShadowsBit),
+  gestaltSheetsAreWindowModalMask = (1L << gestaltSheetsAreWindowModalBit),
+  gestaltFrontWindowMayBeHiddenMask = (1L << gestaltFrontWindowMayBeHiddenBit)
+};
+
+enum {
+  gestaltHasSingleWindowModeBit = 8,
+  gestaltHasSingleWindowModeMask = (1L << gestaltHasSingleWindowModeBit)
+};
+enum {
+  gestaltTranslationAttr = 'xlat',
+  gestaltTranslationMgrExists = 0,
+  gestaltTranslationMgrHintOrder = 1,
+  gestaltTranslationPPCAvail = 2,
+  gestaltTranslationGetPathAPIAvail = 3
+};
+
+enum {
+  gestaltExtToolboxTable = 'xttt'
+};
+
+enum {
+  gestaltUSBPrinterSharingVersion = 'zak ',
+  gestaltUSBPrinterSharingVersionMask = 0x0000FFFF,
+  gestaltUSBPrinterSharingAttr = 'zak ',
+  gestaltUSBPrinterSharingAttrMask = (long)0xFFFF0000,
+  gestaltUSBPrinterSharingAttrRunning = (long)0x80000000,
+  gestaltUSBPrinterSharingAttrBooted = 0x40000000
+};
+
+
+enum {
+  gestaltWorldScriptIIVersion = 'doub',
+  gestaltWorldScriptIIAttr = 'wsat',
+  gestaltWSIICanPrintWithoutPrGeneralBit = 0
+};
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  maxSize = 0x7FFFFFF0
+};
+
+enum {
+  defaultPhysicalEntryCount = 8
+};
+
+enum {
+
+  kPageInMemory = 0,
+  kPageOnDisk = 1,
+  kNotPaged = 2
+};
+
+enum {
+
+  k32BitHeap = 1,
+  kNewStyleHeap = 2,
+  kNewDebugHeap = 4
+};
+
+
+
+enum {
+  kHandleIsResourceBit = 5,
+  kHandlePurgeableBit = 6,
+  kHandleLockedBit = 7
+};
+
+
+enum {
+  kHandleIsResourceMask = 0x20,
+  kHandlePurgeableMask = 0x40,
+  kHandleLockedMask = 0x80
+};
+
+
+typedef long ( * GrowZoneProcPtr)(Size cbNeeded);
+typedef void ( * PurgeProcPtr)(Handle blockToPurge);
+typedef void ( * UserFnProcPtr)(void * parameter);
+typedef GrowZoneProcPtr GrowZoneUPP;
+typedef PurgeProcPtr PurgeUPP;
+typedef UserFnProcPtr UserFnUPP;
+struct Zone {
+  Ptr bkLim;
+  Ptr purgePtr;
+  Ptr hFstFree;
+  long zcbFree;
+  GrowZoneUPP gzProc;
+  short moreMast;
+  short flags;
+  short cntRel;
+  short maxRel;
+  short cntNRel;
+  SInt8 heapType;
+  SInt8 unused;
+  short cntEmpty;
+  short cntHandles;
+  long minCBFree;
+  PurgeUPP purgeProc;
+  Ptr sparePtr;
+  Ptr allocPtr;
+  short heapData;
+};
+typedef struct Zone Zone;
+typedef Zone * THz;
+typedef THz * THzPtr;
+struct MemoryBlock {
+  void * address;
+  unsigned long count;
+};
+typedef struct MemoryBlock MemoryBlock;
+struct LogicalToPhysicalTable {
+  MemoryBlock logical;
+  MemoryBlock physical[8];
+};
+typedef struct LogicalToPhysicalTable LogicalToPhysicalTable;
+
+typedef short PageState;
+typedef short StatusRegisterContents;
+enum {
+  kVolumeVirtualMemoryInfoVersion1 = 1
+};
+
+struct VolumeVirtualMemoryInfo {
+  PBVersion version;
+  SInt16 volumeRefNum;
+  Boolean inUse;
+  UInt8 _fill;
+  UInt32 vmOptions;
+
+};
+typedef struct VolumeVirtualMemoryInfo VolumeVirtualMemoryInfo;
+typedef VolumeVirtualMemoryInfo * VolumeVirtualMemoryInfoPtr;
+extern GrowZoneUPP
+NewGrowZoneUPP(GrowZoneProcPtr userRoutine) ;
+extern PurgeUPP
+NewPurgeUPP(PurgeProcPtr userRoutine) ;
+extern UserFnUPP
+NewUserFnUPP(UserFnProcPtr userRoutine) ;
+extern void
+DisposeGrowZoneUPP(GrowZoneUPP userUPP) ;
+extern void
+DisposePurgeUPP(PurgeUPP userUPP) ;
+extern void
+DisposeUserFnUPP(UserFnUPP userUPP) ;
+extern long
+InvokeGrowZoneUPP(
+  Size cbNeeded,
+  GrowZoneUPP userUPP) ;
+extern void
+InvokePurgeUPP(
+  Handle blockToPurge,
+  PurgeUPP userUPP) ;
+extern void
+InvokeUserFnUPP(
+  void * parameter,
+  UserFnUPP userUPP) ;
+extern Handle
+GZSaveHnd(void) ;
+extern Ptr
+TopMem(void) ;
+extern OSErr
+MemError(void) ;
+extern Handle
+NewHandle(Size byteCount) ;
+extern Handle
+NewHandleClear(Size byteCount) ;
+extern Handle
+RecoverHandle(Ptr p) ;
+extern Ptr
+NewPtr(Size byteCount) ;
+extern Ptr
+NewPtrClear(Size byteCount) ;
+extern long
+MaxBlock(void) ;
+extern long
+StackSpace(void) ;
+extern Handle
+NewEmptyHandle(void) ;
+extern void
+HLock(Handle h) ;
+extern void
+HUnlock(Handle h) ;
+extern void
+HPurge(Handle h) ;
+extern void
+HNoPurge(Handle h) ;
+extern void
+HLockHi(Handle h) ;
+extern Handle
+TempNewHandle(
+  Size logicalSize,
+  OSErr * resultCode) ;
+extern Size
+TempMaxMem(Size * grow) ;
+extern long
+TempFreeMem(void) ;
+extern Size
+CompactMem(Size cbNeeded) ;
+extern void
+PurgeMem(Size cbNeeded) ;
+extern long
+FreeMem(void) ;
+extern void
+ReserveMem(Size cbNeeded) ;
+extern Size
+MaxMem(Size * grow) ;
+extern void
+SetGrowZone(GrowZoneUPP growZone) ;
+extern GrowZoneUPP
+GetGrowZone(void) ;
+extern void
+MoveHHi(Handle h) ;
+extern void
+DisposePtr(Ptr p) ;
+extern Size
+GetPtrSize(Ptr p) ;
+extern void
+SetPtrSize(
+  Ptr p,
+  Size newSize) ;
+extern void
+DisposeHandle(Handle h) ;
+extern void
+SetHandleSize(
+  Handle h,
+  Size newSize) ;
+extern Size
+GetHandleSize(Handle h) ;
+extern void
+ReallocateHandle(
+  Handle h,
+  Size byteCount) ;
+extern void
+EmptyHandle(Handle h) ;
+extern void
+HSetRBit(Handle h) ;
+extern void
+HClrRBit(Handle h) ;
+extern SInt8
+HGetState(Handle h) ;
+extern void
+HSetState(
+  Handle h,
+  SInt8 flags) ;
+extern void
+PurgeSpace(
+  long * total,
+  long * contig) ;
+extern long
+PurgeSpaceTotal(void) ;
+extern long
+PurgeSpaceContiguous(void) ;
+extern void
+BlockMove(
+  const void * srcPtr,
+  void * destPtr,
+  Size byteCount) ;
+extern void
+BlockMoveData(
+  const void * srcPtr,
+  void * destPtr,
+  Size byteCount) ;
+extern void
+BlockMoveUncached(
+  const void * srcPtr,
+  void * destPtr,
+  Size byteCount) ;
+extern void
+BlockMoveDataUncached(
+  const void * srcPtr,
+  void * destPtr,
+  Size byteCount) ;
+extern void
+BlockZero(
+  void * destPtr,
+  Size byteCount) ;
+extern void
+BlockZeroUncached(
+  void * destPtr,
+  Size byteCount) ;
+extern void
+MoreMasters(void) ;
+extern void
+MoreMasterPointers(UInt32 inCount) ;
+extern void
+TempHLock(
+  Handle h,
+  OSErr * resultCode) ;
+extern void
+TempHUnlock(
+  Handle h,
+  OSErr * resultCode) ;
+extern void
+TempDisposeHandle(
+  Handle h,
+  OSErr * resultCode) ;
+extern Ptr
+TempTopMem(void) ;
+extern OSErr
+HoldMemory(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+UnholdMemory(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+MakeMemoryResident(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+ReleaseMemoryData(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+MakeMemoryNonResident(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+FlushMemory(
+  void * address,
+  unsigned long count) ;
+extern OSErr
+HandToHand(Handle * theHndl) ;
+extern OSErr
+PtrToXHand(
+  const void * srcPtr,
+  Handle dstHndl,
+  long size) ;
+extern OSErr
+PtrToHand(
+  const void * srcPtr,
+  Handle * dstHndl,
+  long size) ;
+extern OSErr
+HandAndHand(
+  Handle hand1,
+  Handle hand2) ;
+extern OSErr
+PtrAndHand(
+  const void * ptr1,
+  Handle hand2,
+  long size) ;
+extern Boolean
+CheckAllHeaps(void) ;
+extern Boolean
+IsHeapValid(void) ;
+extern Boolean
+IsHandleValid(Handle h) ;
+extern Boolean
+IsPointerValid(Ptr p) ;
+
+
+}
+
+
+
+extern "C" {
+extern SInt64
+S64Max(void);
+extern SInt64
+S64Min(void);
+extern SInt64
+S64Add(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64Subtract(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64Negate(SInt64 value);
+extern SInt64
+S64Multiply(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64Mod(
+  SInt64 dividend,
+  SInt64 divisor);
+extern SInt64
+S64Divide(
+  SInt64 dividend,
+  SInt64 divisor,
+  SInt64 * remainder);
+extern SInt64
+S64Div(
+  SInt64 dividend,
+  SInt64 divisor);
+extern SInt64
+S64Set(SInt32 value);
+extern SInt64
+S64SetU(UInt32 value);
+extern SInt32
+S32Set(SInt64 value);
+extern Boolean
+S64And(
+  SInt64 left,
+  SInt64 right);
+extern Boolean
+S64Or(
+  SInt64 left,
+  SInt64 right);
+extern Boolean
+S64Eor(
+  SInt64 left,
+  SInt64 right);
+extern Boolean
+S64Not(SInt64 value);
+extern SInt32
+S64Compare(
+  SInt64 left,
+  SInt64 right) ;
+extern SInt64
+S64BitwiseAnd(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64BitwiseOr(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64BitwiseEor(
+  SInt64 left,
+  SInt64 right);
+extern SInt64
+S64BitwiseNot(SInt64 value);
+extern SInt64
+S64ShiftRight(
+  SInt64 value,
+  UInt32 shift);
+extern SInt64
+S64ShiftLeft(
+  SInt64 value,
+  UInt32 shift);
+extern UInt64
+U64Max(void);
+extern UInt64
+U64Add(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64Subtract(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64Multiply(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64Mod(
+  UInt64 dividend,
+  UInt64 divisor);
+extern UInt64
+U64Divide(
+  UInt64 dividend,
+  UInt64 divisor,
+  UInt64 * remainder);
+extern UInt64
+U64Div(
+  UInt64 dividend,
+  UInt64 divisor);
+extern UInt64
+U64Set(SInt32 value);
+extern UInt64
+U64SetU(UInt32 value);
+extern UInt32
+U32SetU(UInt64 value);
+extern Boolean
+U64And(
+  UInt64 left,
+  UInt64 right);
+extern Boolean
+U64Or(
+  UInt64 left,
+  UInt64 right);
+extern Boolean
+U64Eor(
+  UInt64 left,
+  UInt64 right);
+extern Boolean
+U64Not(UInt64 value);
+extern SInt32
+U64Compare(
+  UInt64 left,
+  UInt64 right) ;
+extern UInt64
+U64BitwiseAnd(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64BitwiseOr(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64BitwiseEor(
+  UInt64 left,
+  UInt64 right);
+extern UInt64
+U64BitwiseNot(UInt64 value);
+extern UInt64
+U64ShiftRight(
+  UInt64 value,
+  UInt32 shift);
+extern UInt64
+U64ShiftLeft(
+  UInt64 value,
+  UInt32 shift);
+extern SInt64
+UInt64ToSInt64(UInt64 value);
+extern UInt64
+SInt64ToUInt64(SInt64 value);
+}
+extern "C" {
+
+
+typedef SInt16 ToggleResults;
+enum {
+
+  toggleUndefined = 0,
+  toggleOK = 1,
+  toggleBadField = 2,
+  toggleBadDelta = 3,
+  toggleBadChar = 4,
+  toggleUnknown = 5,
+  toggleBadNum = 6,
+  toggleOutOfRange = 7,
+  toggleErr3 = 7,
+  toggleErr4 = 8,
+  toggleErr5 = 9
+};
+
+enum {
+
+  smallDateBit = 31,
+  togChar12HourBit = 30,
+  togCharZCycleBit = 29,
+  togDelta12HourBit = 28,
+  genCdevRangeBit = 27,
+  validDateFields = -1,
+  maxDateField = 10
+};
+
+enum {
+  eraMask = 0x0001,
+  yearMask = 0x0002,
+  monthMask = 0x0004,
+  dayMask = 0x0008,
+  hourMask = 0x0010,
+  minuteMask = 0x0020,
+  secondMask = 0x0040,
+  dayOfWeekMask = 0x0080,
+  dayOfYearMask = 0x0100,
+  weekOfYearMask = 0x0200,
+  pmMask = 0x0400,
+  dateStdMask = 0x007F
+};
+
+typedef SInt8 LongDateField;
+enum {
+  eraField = 0,
+  yearField = 1,
+  monthField = 2,
+  dayField = 3,
+  hourField = 4,
+  minuteField = 5,
+  secondField = 6,
+  dayOfWeekField = 7,
+  dayOfYearField = 8,
+  weekOfYearField = 9,
+  pmField = 10,
+  res1Field = 11,
+  res2Field = 12,
+  res3Field = 13
+};
+
+typedef SInt8 DateForm;
+enum {
+  shortDate = 0,
+  longDate = 1,
+  abbrevDate = 2
+};
+
+enum {
+
+  fatalDateTime = 0x8000,
+  longDateFound = 1,
+  leftOverChars = 2,
+  sepNotIntlSep = 4,
+  fieldOrderNotIntl = 8,
+  extraneousStrings = 16,
+  tooManySeps = 32,
+  sepNotConsistent = 64,
+  tokenErr = 0x8100,
+  cantReadUtilities = 0x8200,
+  dateTimeNotFound = 0x8400,
+  dateTimeInvalid = 0x8800
+};
+
+typedef short StringToDateStatus;
+typedef StringToDateStatus String2DateStatus;
+struct DateCacheRecord {
+  short hidden[256];
+};
+typedef struct DateCacheRecord DateCacheRecord;
+typedef DateCacheRecord * DateCachePtr;
+struct DateTimeRec {
+  short year;
+  short month;
+  short day;
+  short hour;
+  short minute;
+  short second;
+  short dayOfWeek;
+};
+typedef struct DateTimeRec DateTimeRec;
+
+typedef SInt64 LongDateTime;
+
+union LongDateCvt {
+  SInt64 c;
+  struct {
+    UInt32 lHigh;
+    UInt32 lLow;
+  } hl;
+};
+typedef union LongDateCvt LongDateCvt;
+union LongDateRec {
+  struct {
+    short era;
+    short year;
+    short month;
+    short day;
+    short hour;
+    short minute;
+    short second;
+    short dayOfWeek;
+    short dayOfYear;
+    short weekOfYear;
+    short pm;
+    short res1;
+    short res2;
+    short res3;
+  } ld;
+  short list[14];
+  struct {
+    short eraAlt;
+    DateTimeRec oldDate;
+  } od;
+};
+typedef union LongDateRec LongDateRec;
+
+typedef SInt8 DateDelta;
+struct TogglePB {
+  long togFlags;
+  ResType amChars;
+  ResType pmChars;
+  long reserved[4];
+};
+typedef struct TogglePB TogglePB;
+extern OSStatus
+UCConvertUTCDateTimeToCFAbsoluteTime(
+  const UTCDateTime * iUTCDate,
+  CFAbsoluteTime * oCFTime) ;
+extern OSStatus
+UCConvertSecondsToCFAbsoluteTime(
+  UInt32 iSeconds,
+  CFAbsoluteTime * oCFTime) ;
+extern OSStatus
+UCConvertLongDateTimeToCFAbsoluteTime(
+  LongDateTime iLongTime,
+  CFAbsoluteTime * oCFTime) ;
+extern OSStatus
+UCConvertCFAbsoluteTimeToUTCDateTime(
+  CFAbsoluteTime iCFTime,
+  UTCDateTime * oUTCDate) ;
+extern OSStatus
+UCConvertCFAbsoluteTimeToSeconds(
+  CFAbsoluteTime iCFTime,
+  UInt32 * oSeconds) ;
+extern OSStatus
+UCConvertCFAbsoluteTimeToLongDateTime(
+  CFAbsoluteTime iCFTime,
+  LongDateTime * oLongDate) ;
+extern void
+DateString(
+  long dateTime,
+  DateForm longFlag,
+  Str255 result,
+  Handle intlHandle) ;
+extern void
+TimeString(
+  long dateTime,
+  Boolean wantSeconds,
+  Str255 result,
+  Handle intlHandle) ;
+extern void
+LongDateString(
+  const LongDateTime * dateTime,
+  DateForm longFlag,
+  Str255 result,
+  Handle intlHandle) ;
+extern void
+LongTimeString(
+  const LongDateTime * dateTime,
+  Boolean wantSeconds,
+  Str255 result,
+  Handle intlHandle) ;
+extern OSErr
+InitDateCache(DateCachePtr theCache) ;
+extern StringToDateStatus
+StringToDate(
+  Ptr textPtr,
+  long textLen,
+  DateCachePtr theCache,
+  long * lengthUsed,
+  LongDateRec * dateTime) ;
+extern StringToDateStatus
+StringToTime(
+  Ptr textPtr,
+  long textLen,
+  DateCachePtr theCache,
+  long * lengthUsed,
+  LongDateRec * dateTime) ;
+extern void
+LongDateToSeconds(
+  const LongDateRec * lDate,
+  LongDateTime * lSecs) ;
+extern void
+LongSecondsToDate(
+  const LongDateTime * lSecs,
+  LongDateRec * lDate) ;
+extern ToggleResults
+ToggleDate(
+  LongDateTime * lSecs,
+  LongDateField field,
+  DateDelta delta,
+  short ch,
+  const TogglePB * params) ;
+extern short
+ValidDate(
+  const LongDateRec * vDate,
+  long flags,
+  LongDateTime * newSecs) ;
+extern OSErr
+ReadDateTime(unsigned long * time) ;
+extern void
+GetDateTime(unsigned long * secs) ;
+extern OSErr
+SetDateTime(unsigned long time) ;
+extern void
+SetTime(const DateTimeRec * d) ;
+extern void
+GetTime(DateTimeRec * d) ;
+extern void
+DateToSeconds(
+  const DateTimeRec * d,
+  unsigned long * secs) ;
+extern void
+SecondsToDate(
+  unsigned long secs,
+  DateTimeRec * d) ;
+
+
+}
+extern "C" {
+
+
+
+enum {
+  useFree = 0,
+  useATalk = 1,
+  useAsync = 2,
+  useExtClk = 3,
+  useMIDI = 4
+};
+
+enum {
+  false32b = 0,
+  true32b = 1
+};
+
+enum {
+
+  sortsBefore = -1,
+  sortsEqual = 0,
+  sortsAfter = 1
+};
+
+enum {
+  dummyType = 0,
+  vType = 1,
+  ioQType = 2,
+  drvQType = 3,
+  evType = 4,
+  fsQType = 5,
+  sIQType = 6,
+  dtQType = 7,
+  nmType = 8
+};
+
+typedef SignedByte QTypes;
+struct SysParmType {
+  UInt8 valid;
+  UInt8 aTalkA;
+  UInt8 aTalkB;
+  UInt8 config;
+  short portA;
+  short portB;
+  long alarm;
+  short font;
+  short kbdPrint;
+  short volClik;
+  short misc;
+};
+typedef struct SysParmType SysParmType;
+typedef SysParmType * SysPPtr;
+struct QElem {
+  struct QElem * qLink;
+  short qType;
+  short qData[1];
+};
+typedef struct QElem QElem;
+typedef QElem * QElemPtr;
+struct QHdr {
+  volatile short qFlags;
+  volatile QElemPtr qHead;
+  volatile QElemPtr qTail;
+};
+typedef struct QHdr QHdr;
+typedef QHdr * QHdrPtr;
+typedef void ( * DeferredTaskProcPtr)(long dtParam);
+typedef DeferredTaskProcPtr DeferredTaskUPP;
+extern DeferredTaskUPP
+NewDeferredTaskUPP(DeferredTaskProcPtr userRoutine) ;
+extern void
+DisposeDeferredTaskUPP(DeferredTaskUPP userUPP) ;
+extern void
+InvokeDeferredTaskUPP(
+  long dtParam,
+  DeferredTaskUPP userUPP) ;
+
+struct DeferredTask {
+  volatile QElemPtr qLink;
+  short qType;
+  volatile short dtFlags;
+  DeferredTaskUPP dtAddr;
+  long dtParam;
+  long dtReserved;
+};
+typedef struct DeferredTask DeferredTask;
+typedef DeferredTask * DeferredTaskPtr;
+struct MachineLocation {
+    Fract latitude;
+    Fract longitude;
+    union {
+
+        SInt8 dlsDelta;
+
+        long gmtDelta;
+        struct {
+
+
+
+            SInt8 Delta;
+        } dls;
+    } u;
+};
+typedef struct MachineLocation MachineLocation;
+extern Boolean
+IsMetric(void) ;
+extern SysPPtr
+GetSysPPtr(void) ;
+extern OSErr
+DTInstall(DeferredTaskPtr dtTaskPtr) ;
+extern void
+Delay(
+  unsigned long numTicks,
+  unsigned long * finalTicks) ;
+extern OSErr
+WriteParam(void) ;
+extern void
+Enqueue(
+  QElemPtr qElement,
+  QHdrPtr qHeader) ;
+extern OSErr
+Dequeue(
+  QElemPtr qElement,
+  QHdrPtr qHeader) ;
+extern long
+SetCurrentA5(void) ;
+extern long
+SetA5(long newA5) ;
+extern OSErr
+InitUtil(void) ;
+extern void
+MakeDataExecutable(
+  void * baseAddress,
+  unsigned long length) ;
+extern void
+ReadLocation(MachineLocation * loc) ;
+extern void
+WriteLocation(const MachineLocation * loc) ;
+extern UInt32
+TickCount(void) ;
+extern CFStringRef
+CSCopyUserName(Boolean useShortName) ;
+extern CFStringRef
+CSCopyMachineName(void) ;
+enum {
+  curSysEnvVers = 2
+};
+
+struct SysEnvRec {
+  short environsVersion;
+  short machineType;
+  short systemVersion;
+  short processor;
+  Boolean hasFPU;
+  Boolean hasColorQD;
+  short keyBoardType;
+  short atDrvrVersNum;
+  short sysVRefNum;
+};
+typedef struct SysEnvRec SysEnvRec;
+enum {
+
+  envMac = -1,
+  envXL = -2,
+  envMachUnknown = 0,
+  env512KE = 1,
+  envMacPlus = 2,
+  envSE = 3,
+  envMacII = 4,
+  envMacIIx = 5,
+  envMacIIcx = 6,
+  envSE30 = 7,
+  envPortable = 8,
+  envMacIIci = 9,
+  envMacIIfx = 11
+};
+
+enum {
+
+  envCPUUnknown = 0,
+  env68000 = 1,
+  env68010 = 2,
+  env68020 = 3,
+  env68030 = 4,
+  env68040 = 5
+};
+
+enum {
+
+  envUnknownKbd = 0,
+  envMacKbd = 1,
+  envMacAndPad = 2,
+  envMacPlusKbd = 3,
+  envAExtendKbd = 4,
+  envStandADBKbd = 5,
+  envPrtblADBKbd = 6,
+  envPrtblISOKbd = 7,
+  envStdISOADBKbd = 8,
+  envExtISOADBKbd = 9
+};
+
+
+}
+extern "C" {
+
+
+
+
+
+struct HFSUniStr255 {
+  UInt16 length;
+  UniChar unicode[255];
+};
+typedef struct HFSUniStr255 HFSUniStr255;
+typedef const HFSUniStr255 * ConstHFSUniStr255Param;
+enum {
+  fsCurPerm = 0x00,
+  fsRdPerm = 0x01,
+  fsWrPerm = 0x02,
+  fsRdWrPerm = 0x03,
+  fsRdWrShPerm = 0x04,
+  fsRdDenyPerm = 0x10,
+  fsWrDenyPerm = 0x20
+};
+
+enum {
+  fsRtParID = 1,
+  fsRtDirID = 2
+};
+
+enum {
+  fsAtMark = 0,
+  fsFromStart = 1,
+  fsFromLEOF = 2,
+  fsFromMark = 3
+};
+
+enum {
+
+  pleaseCacheBit = 4,
+  pleaseCacheMask = 0x0010,
+  noCacheBit = 5,
+  noCacheMask = 0x0020,
+  rdVerifyBit = 6,
+  rdVerifyMask = 0x0040,
+  rdVerify = 64,
+  forceReadBit = 6,
+  forceReadMask = 0x0040,
+  newLineBit = 7,
+  newLineMask = 0x0080,
+  newLineCharMask = 0xFF00
+};
+
+
+enum {
+
+  fsSBPartialName = 1,
+  fsSBFullName = 2,
+  fsSBFlAttrib = 4,
+  fsSBFlFndrInfo = 8,
+  fsSBFlLgLen = 32,
+  fsSBFlPyLen = 64,
+  fsSBFlRLgLen = 128,
+  fsSBFlRPyLen = 256,
+  fsSBFlCrDat = 512,
+  fsSBFlMdDat = 1024,
+  fsSBFlBkDat = 2048,
+  fsSBFlXFndrInfo = 4096,
+  fsSBFlParID = 8192,
+  fsSBNegate = 16384,
+  fsSBDrUsrWds = 8,
+  fsSBDrNmFls = 16,
+  fsSBDrCrDat = 512,
+  fsSBDrMdDat = 1024,
+  fsSBDrBkDat = 2048,
+  fsSBDrFndrInfo = 4096,
+  fsSBDrParID = 8192
+};
+
+enum {
+
+  fsSBPartialNameBit = 0,
+  fsSBFullNameBit = 1,
+  fsSBFlAttribBit = 2,
+  fsSBFlFndrInfoBit = 3,
+  fsSBFlLgLenBit = 5,
+  fsSBFlPyLenBit = 6,
+  fsSBFlRLgLenBit = 7,
+  fsSBFlRPyLenBit = 8,
+  fsSBFlCrDatBit = 9,
+  fsSBFlMdDatBit = 10,
+  fsSBFlBkDatBit = 11,
+  fsSBFlXFndrInfoBit = 12,
+  fsSBFlParIDBit = 13,
+  fsSBNegateBit = 14,
+  fsSBDrUsrWdsBit = 3,
+  fsSBDrNmFlsBit = 4,
+  fsSBDrCrDatBit = 9,
+  fsSBDrMdDatBit = 10,
+  fsSBDrBkDatBit = 11,
+  fsSBDrFndrInfoBit = 12,
+  fsSBDrParIDBit = 13
+};
+
+enum {
+
+  bLimitFCBs = 31,
+  bLocalWList = 30,
+  bNoMiniFndr = 29,
+  bNoVNEdit = 28,
+  bNoLclSync = 27,
+  bTrshOffLine = 26,
+  bNoSwitchTo = 25,
+  bNoDeskItems = 20,
+  bNoBootBlks = 19,
+  bAccessCntl = 18,
+  bNoSysDir = 17,
+  bHasExtFSVol = 16,
+  bHasOpenDeny = 15,
+  bHasCopyFile = 14,
+  bHasMoveRename = 13,
+  bHasDesktopMgr = 12,
+  bHasShortName = 11,
+  bHasFolderLock = 10,
+  bHasPersonalAccessPrivileges = 9,
+  bHasUserGroupList = 8,
+  bHasCatSearch = 7,
+  bHasFileIDs = 6,
+  bHasBTreeMgr = 5,
+  bHasBlankAccessPrivileges = 4,
+  bSupportsAsyncRequests = 3,
+  bSupportsTrashVolumeCache = 2
+};
+
+enum {
+
+  bHasDirectIO = 1
+};
+
+enum {
+
+  bIsEjectable = 0,
+  bSupportsHFSPlusAPIs = 1,
+  bSupportsFSCatalogSearch = 2,
+  bSupportsFSExchangeObjects = 3,
+  bSupports2TBFiles = 4,
+  bSupportsLongNames = 5,
+  bSupportsMultiScriptNames = 6,
+  bSupportsNamedForks = 7,
+  bSupportsSubtreeIterators = 8,
+  bL2PCanMapFileBlocks = 9
+};
+
+enum {
+
+  bParentModDateChanges = 10,
+  bAncestorModDateChanges = 11
+};
+
+enum {
+
+  bSupportsSymbolicLinks = 13,
+  bIsAutoMounted = 14,
+  bAllowCDiDataHandler = 17,
+  bSupportsExclusiveLocks = 18
+};
+
+enum {
+
+  kLargeIcon = 1,
+  kLarge4BitIcon = 2,
+  kLarge8BitIcon = 3,
+  kSmallIcon = 4,
+  kSmall4BitIcon = 5,
+  kSmall8BitIcon = 6,
+  kicnsIconFamily = 239
+};
+
+enum {
+  kLargeIconSize = 256,
+  kLarge4BitIconSize = 512,
+  kLarge8BitIconSize = 1024,
+  kSmallIconSize = 64,
+  kSmall4BitIconSize = 128,
+  kSmall8BitIconSize = 256
+};
+
+enum {
+
+  kWidePosOffsetBit = 8,
+  kUseWidePositioning = (1 << kWidePosOffsetBit),
+  kMaximumBlocksIn4GB = 0x007FFFFF
+};
+
+enum {
+
+  fsUnixPriv = 1
+};
+
+enum {
+
+  kNoUserAuthentication = 1,
+  kPassword = 2,
+  kEncryptPassword = 3,
+  kTwoWayEncryptPassword = 6
+};
+
+
+
+enum {
+  kOwnerID2Name = 1,
+  kGroupID2Name = 2,
+  kOwnerName2ID = 3,
+  kGroupName2ID = 4,
+  kReturnNextUser = 1,
+  kReturnNextGroup = 2,
+  kReturnNextUG = 3
+};
+
+
+enum {
+  kVCBFlagsIdleFlushBit = 3,
+  kVCBFlagsIdleFlushMask = 0x0008,
+  kVCBFlagsHFSPlusAPIsBit = 4,
+  kVCBFlagsHFSPlusAPIsMask = 0x0010,
+  kVCBFlagsHardwareGoneBit = 5,
+  kVCBFlagsHardwareGoneMask = 0x0020,
+  kVCBFlagsVolumeDirtyBit = 15,
+  kVCBFlagsVolumeDirtyMask = 0x8000
+};
+
+
+enum {
+  kioVAtrbDefaultVolumeBit = 5,
+  kioVAtrbDefaultVolumeMask = 0x0020,
+  kioVAtrbFilesOpenBit = 6,
+  kioVAtrbFilesOpenMask = 0x0040,
+  kioVAtrbHardwareLockedBit = 7,
+  kioVAtrbHardwareLockedMask = 0x0080,
+  kioVAtrbSoftwareLockedBit = 15,
+  kioVAtrbSoftwareLockedMask = 0x8000
+};
+
+
+enum {
+
+  kioFlAttribLockedBit = 0,
+  kioFlAttribLockedMask = 0x01,
+  kioFlAttribResOpenBit = 2,
+  kioFlAttribResOpenMask = 0x04,
+  kioFlAttribDataOpenBit = 3,
+  kioFlAttribDataOpenMask = 0x08,
+  kioFlAttribDirBit = 4,
+  kioFlAttribDirMask = 0x10,
+  ioDirFlg = 4,
+  ioDirMask = 0x10,
+  kioFlAttribCopyProtBit = 6,
+  kioFlAttribCopyProtMask = 0x40,
+  kioFlAttribFileOpenBit = 7,
+  kioFlAttribFileOpenMask = 0x80,
+  kioFlAttribInSharedBit = 2,
+  kioFlAttribInSharedMask = 0x04,
+  kioFlAttribMountedBit = 3,
+  kioFlAttribMountedMask = 0x08,
+  kioFlAttribSharePointBit = 5,
+  kioFlAttribSharePointMask = 0x20
+};
+
+
+enum {
+  kioFCBWriteBit = 8,
+  kioFCBWriteMask = 0x0100,
+  kioFCBResourceBit = 9,
+  kioFCBResourceMask = 0x0200,
+  kioFCBWriteLockedBit = 10,
+  kioFCBWriteLockedMask = 0x0400,
+  kioFCBLargeFileBit = 11,
+  kioFCBLargeFileMask = 0x0800,
+  kioFCBSharedWriteBit = 12,
+  kioFCBSharedWriteMask = 0x1000,
+  kioFCBFileLockedBit = 13,
+  kioFCBFileLockedMask = 0x2000,
+  kioFCBOwnClumpBit = 14,
+  kioFCBOwnClumpMask = 0x4000,
+  kioFCBModifiedBit = 15,
+  kioFCBModifiedMask = 0x8000
+};
+
+
+
+enum {
+  kioACUserNoSeeFolderBit = 0,
+  kioACUserNoSeeFolderMask = 0x01,
+  kioACUserNoSeeFilesBit = 1,
+  kioACUserNoSeeFilesMask = 0x02,
+  kioACUserNoMakeChangesBit = 2,
+  kioACUserNoMakeChangesMask = 0x04,
+  kioACUserNotOwnerBit = 7,
+  kioACUserNotOwnerMask = 0x80
+};
+
+
+enum {
+  kioACAccessOwnerBit = 31,
+  kioACAccessOwnerMask = (long)0x80000000,
+  kioACAccessBlankAccessBit = 28,
+  kioACAccessBlankAccessMask = 0x10000000,
+  kioACAccessUserWriteBit = 26,
+  kioACAccessUserWriteMask = 0x04000000,
+  kioACAccessUserReadBit = 25,
+  kioACAccessUserReadMask = 0x02000000,
+  kioACAccessUserSearchBit = 24,
+  kioACAccessUserSearchMask = 0x01000000,
+  kioACAccessEveryoneWriteBit = 18,
+  kioACAccessEveryoneWriteMask = 0x00040000,
+  kioACAccessEveryoneReadBit = 17,
+  kioACAccessEveryoneReadMask = 0x00020000,
+  kioACAccessEveryoneSearchBit = 16,
+  kioACAccessEveryoneSearchMask = 0x00010000,
+  kioACAccessGroupWriteBit = 10,
+  kioACAccessGroupWriteMask = 0x00000400,
+  kioACAccessGroupReadBit = 9,
+  kioACAccessGroupReadMask = 0x00000200,
+  kioACAccessGroupSearchBit = 8,
+  kioACAccessGroupSearchMask = 0x00000100,
+  kioACAccessOwnerWriteBit = 2,
+  kioACAccessOwnerWriteMask = 0x00000004,
+  kioACAccessOwnerReadBit = 1,
+  kioACAccessOwnerReadMask = 0x00000002,
+  kioACAccessOwnerSearchBit = 0,
+  kioACAccessOwnerSearchMask = 0x00000001,
+  kfullPrivileges = 0x00070007,
+  kownerPrivileges = 0x00000007
+};
+
+
+enum {
+  knoUser = 0,
+  kadministratorUser = 1
+};
+
+enum {
+  knoGroup = 0
+};
+
+
+struct GetVolParmsInfoBuffer {
+  short vMVersion;
+  long vMAttrib;
+  Handle vMLocalHand;
+  long vMServerAdr;
+
+  long vMVolumeGrade;
+  short vMForeignPrivID;
+
+  long vMExtendedAttributes;
+
+  void * vMDeviceID;
+
+  UniCharCount vMMaxNameLength;
+
+};
+typedef struct GetVolParmsInfoBuffer GetVolParmsInfoBuffer;
+typedef union ParamBlockRec ParamBlockRec;
+
+typedef ParamBlockRec * ParmBlkPtr;
+typedef void ( * IOCompletionProcPtr)(ParmBlkPtr paramBlock);
+typedef IOCompletionProcPtr IOCompletionUPP;
+struct IOParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioRefNum;
+  SInt8 ioVersNum;
+  SInt8 ioPermssn;
+  Ptr ioMisc;
+  Ptr ioBuffer;
+  long ioReqCount;
+  long ioActCount;
+  short ioPosMode;
+  long ioPosOffset;
+};
+typedef struct IOParam IOParam;
+typedef IOParam * IOParamPtr;
+struct FileParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioFRefNum;
+  SInt8 ioFVersNum;
+  SInt8 filler1;
+  short ioFDirIndex;
+  SInt8 ioFlAttrib;
+  SInt8 ioFlVersNum;
+  FInfo ioFlFndrInfo;
+  unsigned long ioFlNum;
+  unsigned short ioFlStBlk;
+  long ioFlLgLen;
+  long ioFlPyLen;
+  unsigned short ioFlRStBlk;
+  long ioFlRLgLen;
+  long ioFlRPyLen;
+  unsigned long ioFlCrDat;
+  unsigned long ioFlMdDat;
+};
+typedef struct FileParam FileParam;
+typedef FileParam * FileParamPtr;
+struct VolumeParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long filler2;
+  short ioVolIndex;
+  unsigned long ioVCrDate;
+  unsigned long ioVLsBkUp;
+  unsigned short ioVAtrb;
+  unsigned short ioVNmFls;
+  unsigned short ioVDirSt;
+  short ioVBlLn;
+  unsigned short ioVNmAlBlks;
+  unsigned long ioVAlBlkSiz;
+  unsigned long ioVClpSiz;
+  unsigned short ioAlBlSt;
+  unsigned long ioVNxtFNum;
+  unsigned short ioVFrBlk;
+};
+typedef struct VolumeParam VolumeParam;
+typedef VolumeParam * VolumeParamPtr;
+struct CntrlParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioCRefNum;
+  short csCode;
+  short csParam[11];
+};
+typedef struct CntrlParam CntrlParam;
+typedef CntrlParam * CntrlParamPtr;
+struct SlotDevParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioSRefNum;
+  SInt8 ioSVersNum;
+  SInt8 ioSPermssn;
+  Ptr ioSMix;
+  short ioSFlags;
+  SInt8 ioSlot;
+  SInt8 ioID;
+};
+typedef struct SlotDevParam SlotDevParam;
+typedef SlotDevParam * SlotDevParamPtr;
+struct MultiDevParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioMRefNum;
+  SInt8 ioMVersNum;
+  SInt8 ioMPermssn;
+  Ptr ioMMix;
+  short ioMFlags;
+  Ptr ioSEBlkPtr;
+};
+typedef struct MultiDevParam MultiDevParam;
+typedef MultiDevParam * MultiDevParamPtr;
+union ParamBlockRec {
+  IOParam ioParam;
+  FileParam fileParam;
+  VolumeParam volumeParam;
+  CntrlParam cntrlParam;
+  SlotDevParam slotDevParam;
+  MultiDevParam multiDevParam;
+};
+
+struct HFileInfo {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioFRefNum;
+  SInt8 ioFVersNum;
+  SInt8 filler1;
+  short ioFDirIndex;
+  SInt8 ioFlAttrib;
+  SInt8 ioACUser;
+  FInfo ioFlFndrInfo;
+  long ioDirID;
+  unsigned short ioFlStBlk;
+  long ioFlLgLen;
+  long ioFlPyLen;
+  unsigned short ioFlRStBlk;
+  long ioFlRLgLen;
+  long ioFlRPyLen;
+  unsigned long ioFlCrDat;
+  unsigned long ioFlMdDat;
+  unsigned long ioFlBkDat;
+  FXInfo ioFlXFndrInfo;
+  long ioFlParID;
+  long ioFlClpSiz;
+};
+typedef struct HFileInfo HFileInfo;
+struct DirInfo {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioFRefNum;
+  SInt8 ioFVersNum;
+  SInt8 filler1;
+  short ioFDirIndex;
+  SInt8 ioFlAttrib;
+  SInt8 ioACUser;
+  DInfo ioDrUsrWds;
+  long ioDrDirID;
+  unsigned short ioDrNmFls;
+  short filler3[9];
+  unsigned long ioDrCrDat;
+  unsigned long ioDrMdDat;
+  unsigned long ioDrBkDat;
+  DXInfo ioDrFndrInfo;
+  long ioDrParID;
+};
+typedef struct DirInfo DirInfo;
+union CInfoPBRec {
+  HFileInfo hFileInfo;
+  DirInfo dirInfo;
+};
+typedef union CInfoPBRec CInfoPBRec;
+typedef CInfoPBRec * CInfoPBPtr;
+struct XCInfoPBRec {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  ProcPtr ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long filler1;
+  StringPtr ioShortNamePtr;
+  short filler2;
+  short ioPDType;
+  long ioPDAuxType;
+  long filler3[2];
+  long ioDirID;
+};
+typedef struct XCInfoPBRec XCInfoPBRec;
+typedef XCInfoPBRec * XCInfoPBPtr;
+
+struct CatPositionRec {
+  long initialize;
+  short priv[6];
+};
+typedef struct CatPositionRec CatPositionRec;
+struct FSSpec {
+  short vRefNum;
+  long parID;
+  StrFileName name;
+};
+typedef struct FSSpec FSSpec;
+typedef FSSpec * FSSpecPtr;
+typedef FSSpecPtr * FSSpecHandle;
+
+typedef FSSpecPtr FSSpecArrayPtr;
+
+
+
+
+typedef const FSSpec * ConstFSSpecPtr;
+
+
+
+
+
+typedef OSType VolumeType;
+enum {
+
+  AppleShareMediaType = 'afpm'
+};
+
+
+
+
+struct VolMountInfoHeader {
+  short length;
+  VolumeType media;
+};
+typedef struct VolMountInfoHeader VolMountInfoHeader;
+typedef VolMountInfoHeader * VolMountInfoPtr;
+
+
+
+
+struct VolumeMountInfoHeader {
+  short length;
+  VolumeType media;
+  short flags;
+};
+typedef struct VolumeMountInfoHeader VolumeMountInfoHeader;
+typedef VolumeMountInfoHeader * VolumeMountInfoHeaderPtr;
+
+enum {
+  volMountNoLoginMsgFlagBit = 0,
+  volMountNoLoginMsgFlagMask = 0x0001,
+  volMountExtendedFlagsBit = 7,
+  volMountExtendedFlagsMask = 0x0080,
+  volMountInteractBit = 15,
+  volMountInteractMask = 0x8000,
+  volMountChangedBit = 14,
+  volMountChangedMask = 0x4000,
+  volMountFSReservedMask = 0x00FF,
+  volMountSysReservedMask = 0xFF00
+};
+
+
+
+struct AFPVolMountInfo {
+  short length;
+  VolumeType media;
+  short flags;
+  SInt8 nbpInterval;
+  SInt8 nbpCount;
+  short uamType;
+  short zoneNameOffset;
+  short serverNameOffset;
+  short volNameOffset;
+  short userNameOffset;
+  short userPasswordOffset;
+  short volPasswordOffset;
+  char AFPData[144];
+};
+typedef struct AFPVolMountInfo AFPVolMountInfo;
+typedef AFPVolMountInfo * AFPVolMountInfoPtr;
+
+
+
+struct AFPXVolMountInfo {
+  short length;
+  VolumeType media;
+  short flags;
+  SInt8 nbpInterval;
+  SInt8 nbpCount;
+  short uamType;
+  short zoneNameOffset;
+  short serverNameOffset;
+  short volNameOffset;
+  short userNameOffset;
+  short userPasswordOffset;
+  short volPasswordOffset;
+  short extendedFlags;
+  short uamNameOffset;
+  short alternateAddressOffset;
+  char AFPData[176];
+};
+typedef struct AFPXVolMountInfo AFPXVolMountInfo;
+typedef AFPXVolMountInfo * AFPXVolMountInfoPtr;
+enum {
+  kAFPExtendedFlagsAlternateAddressMask = 1
+};
+
+
+enum {
+
+  kAFPTagTypeIP = 0x01,
+  kAFPTagTypeIPPort = 0x02,
+  kAFPTagTypeDDP = 0x03,
+  kAFPTagTypeDNS = 0x04
+};
+
+
+enum {
+
+  kAFPTagLengthIP = 0x06,
+  kAFPTagLengthIPPort = 0x08,
+  kAFPTagLengthDDP = 0x06
+};
+
+struct AFPTagData {
+  UInt8 fLength;
+  UInt8 fType;
+  UInt8 fData[1];
+};
+typedef struct AFPTagData AFPTagData;
+struct AFPAlternateAddress {
+
+  UInt8 fVersion;
+  UInt8 fAddressCount;
+  UInt8 fAddressList[1];
+};
+typedef struct AFPAlternateAddress AFPAlternateAddress;
+struct DTPBRec {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioDTRefNum;
+  short ioIndex;
+  long ioTagInfo;
+  Ptr ioDTBuffer;
+  long ioDTReqCount;
+  long ioDTActCount;
+  SInt8 ioFiller1;
+  UInt8 ioIconType;
+  short ioFiller2;
+  long ioDirID;
+  OSType ioFileCreator;
+  OSType ioFileType;
+  long ioFiller3;
+  long ioDTLgLen;
+  long ioDTPyLen;
+  short ioFiller4[14];
+  long ioAPPLParID;
+};
+typedef struct DTPBRec DTPBRec;
+typedef DTPBRec * DTPBPtr;
+
+struct HIOParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioRefNum;
+  SInt8 ioVersNum;
+  SInt8 ioPermssn;
+  Ptr ioMisc;
+  Ptr ioBuffer;
+  long ioReqCount;
+  long ioActCount;
+  short ioPosMode;
+  long ioPosOffset;
+};
+typedef struct HIOParam HIOParam;
+typedef HIOParam * HIOParamPtr;
+struct HFileParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioFRefNum;
+  SInt8 ioFVersNum;
+  SInt8 filler1;
+  short ioFDirIndex;
+  SInt8 ioFlAttrib;
+  SInt8 ioFlVersNum;
+  FInfo ioFlFndrInfo;
+  long ioDirID;
+  unsigned short ioFlStBlk;
+  long ioFlLgLen;
+  long ioFlPyLen;
+  unsigned short ioFlRStBlk;
+  long ioFlRLgLen;
+  long ioFlRPyLen;
+  unsigned long ioFlCrDat;
+  unsigned long ioFlMdDat;
+};
+typedef struct HFileParam HFileParam;
+typedef HFileParam * HFileParamPtr;
+struct HVolumeParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long filler2;
+  short ioVolIndex;
+  unsigned long ioVCrDate;
+  unsigned long ioVLsMod;
+  short ioVAtrb;
+  unsigned short ioVNmFls;
+  unsigned short ioVBitMap;
+  unsigned short ioAllocPtr;
+  unsigned short ioVNmAlBlks;
+  unsigned long ioVAlBlkSiz;
+  unsigned long ioVClpSiz;
+  unsigned short ioAlBlSt;
+  unsigned long ioVNxtCNID;
+  unsigned short ioVFrBlk;
+  unsigned short ioVSigWord;
+  short ioVDrvInfo;
+  short ioVDRefNum;
+  short ioVFSID;
+  unsigned long ioVBkUp;
+  short ioVSeqNum;
+  unsigned long ioVWrCnt;
+  unsigned long ioVFilCnt;
+  unsigned long ioVDirCnt;
+  long ioVFndrInfo[8];
+};
+typedef struct HVolumeParam HVolumeParam;
+typedef HVolumeParam * HVolumeParamPtr;
+struct XIOParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioRefNum;
+  SInt8 ioVersNum;
+  SInt8 ioPermssn;
+  Ptr ioMisc;
+  Ptr ioBuffer;
+  long ioReqCount;
+  long ioActCount;
+  short ioPosMode;
+  wide ioWPosOffset;
+};
+typedef struct XIOParam XIOParam;
+typedef XIOParam * XIOParamPtr;
+struct XVolumeParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  unsigned long ioXVersion;
+  short ioVolIndex;
+  unsigned long ioVCrDate;
+  unsigned long ioVLsMod;
+  short ioVAtrb;
+  unsigned short ioVNmFls;
+  unsigned short ioVBitMap;
+  unsigned short ioAllocPtr;
+  unsigned short ioVNmAlBlks;
+  unsigned long ioVAlBlkSiz;
+  unsigned long ioVClpSiz;
+  unsigned short ioAlBlSt;
+  unsigned long ioVNxtCNID;
+  unsigned short ioVFrBlk;
+  unsigned short ioVSigWord;
+  short ioVDrvInfo;
+  short ioVDRefNum;
+  short ioVFSID;
+  unsigned long ioVBkUp;
+  short ioVSeqNum;
+  unsigned long ioVWrCnt;
+  unsigned long ioVFilCnt;
+  unsigned long ioVDirCnt;
+  long ioVFndrInfo[8];
+  UInt64 ioVTotalBytes;
+  UInt64 ioVFreeBytes;
+};
+typedef struct XVolumeParam XVolumeParam;
+typedef XVolumeParam * XVolumeParamPtr;
+struct AccessParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short filler3;
+  short ioDenyModes;
+  short filler4;
+  SInt8 filler5;
+  SInt8 ioACUser;
+  long filler6;
+  long ioACOwnerID;
+  long ioACGroupID;
+  long ioACAccess;
+  long ioDirID;
+};
+typedef struct AccessParam AccessParam;
+typedef AccessParam * AccessParamPtr;
+struct ObjParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short filler7;
+  short ioObjType;
+  StringPtr ioObjNamePtr;
+  long ioObjID;
+};
+typedef struct ObjParam ObjParam;
+typedef ObjParam * ObjParamPtr;
+struct CopyParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioDstVRefNum;
+  short filler8;
+  StringPtr ioNewName;
+  StringPtr ioCopyName;
+  long ioNewDirID;
+  long filler14;
+  long filler15;
+  long ioDirID;
+};
+typedef struct CopyParam CopyParam;
+typedef CopyParam * CopyParamPtr;
+struct WDParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioWDCreated;
+  short ioWDIndex;
+  long ioWDProcID;
+  short ioWDVRefNum;
+  short filler10;
+  long filler11;
+  long filler12;
+  long filler13;
+  long ioWDDirID;
+};
+typedef struct WDParam WDParam;
+typedef WDParam * WDParamPtr;
+struct FIDParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long filler14;
+  StringPtr ioDestNamePtr;
+  long filler15;
+  long ioDestDirID;
+  long filler16;
+  long filler17;
+  long ioSrcDirID;
+  short filler18;
+  long ioFileID;
+};
+typedef struct FIDParam FIDParam;
+typedef FIDParam * FIDParamPtr;
+struct ForeignPrivParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long ioFiller21;
+  long ioFiller22;
+  Ptr ioForeignPrivBuffer;
+  long ioForeignPrivActCount;
+  long ioForeignPrivReqCount;
+  long ioFiller23;
+  long ioForeignPrivDirID;
+  long ioForeignPrivInfo1;
+  long ioForeignPrivInfo2;
+  long ioForeignPrivInfo3;
+  long ioForeignPrivInfo4;
+};
+typedef struct ForeignPrivParam ForeignPrivParam;
+typedef ForeignPrivParam * ForeignPrivParamPtr;
+struct CSParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  FSSpecPtr ioMatchPtr;
+  long ioReqMatchCount;
+  long ioActMatchCount;
+  long ioSearchBits;
+  CInfoPBPtr ioSearchInfo1;
+  CInfoPBPtr ioSearchInfo2;
+  long ioSearchTime;
+  CatPositionRec ioCatPosition;
+  Ptr ioOptBuffer;
+  long ioOptBufSize;
+};
+typedef struct CSParam CSParam;
+typedef CSParam * CSParamPtr;
+union HParamBlockRec {
+  HIOParam ioParam;
+  HFileParam fileParam;
+  HVolumeParam volumeParam;
+  AccessParam accessParam;
+  ObjParam objParam;
+  CopyParam copyParam;
+  WDParam wdParam;
+  FIDParam fidParam;
+  CSParam csParam;
+  ForeignPrivParam foreignPrivParam;
+};
+typedef union HParamBlockRec HParamBlockRec;
+
+
+typedef HParamBlockRec * HParmBlkPtr;
+
+struct CMovePBRec {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  long filler1;
+  StringPtr ioNewName;
+  long filler2;
+  long ioNewDirID;
+  long filler3[2];
+  long ioDirID;
+};
+typedef struct CMovePBRec CMovePBRec;
+typedef CMovePBRec * CMovePBPtr;
+struct WDPBRec {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short filler1;
+  short ioWDIndex;
+  long ioWDProcID;
+  short ioWDVRefNum;
+  short filler2[7];
+  long ioWDDirID;
+};
+typedef struct WDPBRec WDPBRec;
+typedef WDPBRec * WDPBPtr;
+struct FCBPBRec {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  short ioVRefNum;
+  short ioRefNum;
+  short filler;
+  short ioFCBIndx;
+  short filler1;
+  long ioFCBFlNm;
+  short ioFCBFlags;
+  unsigned short ioFCBStBlk;
+  long ioFCBEOF;
+  long ioFCBPLen;
+  long ioFCBCrPs;
+  short ioFCBVRefNum;
+  long ioFCBClpSiz;
+  long ioFCBParID;
+};
+typedef struct FCBPBRec FCBPBRec;
+typedef FCBPBRec * FCBPBPtr;
+struct VCB {
+  QElemPtr qLink;
+  short qType;
+  short vcbFlags;
+  unsigned short vcbSigWord;
+  unsigned long vcbCrDate;
+  unsigned long vcbLsMod;
+  short vcbAtrb;
+  unsigned short vcbNmFls;
+  short vcbVBMSt;
+  short vcbAllocPtr;
+  unsigned short vcbNmAlBlks;
+  long vcbAlBlkSiz;
+  long vcbClpSiz;
+  short vcbAlBlSt;
+  long vcbNxtCNID;
+  unsigned short vcbFreeBks;
+  Str27 vcbVN;
+  short vcbDrvNum;
+  short vcbDRefNum;
+  short vcbFSID;
+  short vcbVRefNum;
+  Ptr vcbMAdr;
+  Ptr vcbBufAdr;
+  short vcbMLen;
+  short vcbDirIndex;
+  short vcbDirBlk;
+  unsigned long vcbVolBkUp;
+  unsigned short vcbVSeqNum;
+  long vcbWrCnt;
+  long vcbXTClpSiz;
+  long vcbCTClpSiz;
+  unsigned short vcbNmRtDirs;
+  long vcbFilCnt;
+  long vcbDirCnt;
+  long vcbFndrInfo[8];
+  unsigned short vcbVCSize;
+  unsigned short vcbVBMCSiz;
+  unsigned short vcbCtlCSiz;
+  unsigned short vcbXTAlBlks;
+  unsigned short vcbCTAlBlks;
+  short vcbXTRef;
+  short vcbCTRef;
+  Ptr vcbCtlBuf;
+  long vcbDirIDM;
+  short vcbOffsM;
+};
+typedef struct VCB VCB;
+typedef VCB * VCBPtr;
+struct DrvQEl {
+  QElemPtr qLink;
+  short qType;
+  short dQDrive;
+  short dQRefNum;
+  short dQFSID;
+  unsigned short dQDrvSz;
+  unsigned short dQDrvSz2;
+};
+typedef struct DrvQEl DrvQEl;
+typedef DrvQEl * DrvQElPtr;
+extern IOCompletionUPP
+NewIOCompletionUPP(IOCompletionProcPtr userRoutine) ;
+extern void
+DisposeIOCompletionUPP(IOCompletionUPP userUPP) ;
+extern void
+InvokeIOCompletionUPP(
+  ParmBlkPtr paramBlock,
+  IOCompletionUPP userUPP) ;
+extern OSErr PBXGetVolInfoSync(XVolumeParamPtr paramBlock) ;
+extern OSErr PBXGetVolInfoAsync(XVolumeParamPtr paramBlock) ;
+extern OSErr PBFlushVolSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBFlushVolAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBAllocateSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBAllocateAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBGetEOFSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBGetEOFAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBSetEOFSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBSetEOFAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBGetFPosSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBGetFPosAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBSetFPosSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBSetFPosAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBFlushFileSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBFlushFileAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBUnmountVol(ParmBlkPtr paramBlock) ;
+extern OSErr PBCatSearchSync(CSParamPtr paramBlock) ;
+extern OSErr PBCatSearchAsync(CSParamPtr paramBlock) ;
+extern OSErr
+UnmountVol(
+  ConstStr63Param volName,
+  short vRefNum) ;
+extern OSErr
+FlushVol(
+  ConstStr63Param volName,
+  short vRefNum) ;
+extern OSErr
+HSetVol(
+  ConstStr63Param volName,
+  short vRefNum,
+  long dirID) ;
+extern OSErr
+FSClose(short refNum) ;
+extern OSErr
+FSRead(
+  short refNum,
+  long * count,
+  void * buffPtr) ;
+extern OSErr
+FSWrite(
+  short refNum,
+  long * count,
+  const void * buffPtr) ;
+extern OSErr
+Allocate(
+  short refNum,
+  long * count) ;
+extern OSErr
+GetEOF(
+  short refNum,
+  long * logEOF) ;
+extern OSErr
+SetEOF(
+  short refNum,
+  long logEOF) ;
+extern OSErr
+GetFPos(
+  short refNum,
+  long * filePos) ;
+extern OSErr
+SetFPos(
+  short refNum,
+  short posMode,
+  long posOff) ;
+extern OSErr
+GetVRefNum(
+  short fileRefNum,
+  short * vRefNum) ;
+extern OSErr PBHSetVolSync(WDPBPtr paramBlock) ;
+extern OSErr PBHSetVolAsync(WDPBPtr paramBlock) ;
+extern OSErr PBHGetVolSync(WDPBPtr paramBlock) ;
+extern OSErr PBHGetVolAsync(WDPBPtr paramBlock) ;
+extern OSErr PBCatMoveSync(CMovePBPtr paramBlock) ;
+extern OSErr PBCatMoveAsync(CMovePBPtr paramBlock) ;
+extern OSErr PBDirCreateSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBDirCreateAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetFCBInfoSync(FCBPBPtr paramBlock) ;
+extern OSErr PBGetFCBInfoAsync(FCBPBPtr paramBlock) ;
+extern OSErr PBGetCatInfoSync(CInfoPBPtr paramBlock) ;
+extern OSErr PBGetCatInfoAsync(CInfoPBPtr paramBlock) ;
+extern OSErr PBSetCatInfoSync(CInfoPBPtr paramBlock) ;
+extern OSErr PBSetCatInfoAsync(CInfoPBPtr paramBlock) ;
+extern OSErr PBAllocContigSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBAllocContigAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBLockRangeSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBLockRangeAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBUnlockRangeSync(ParmBlkPtr paramBlock) ;
+extern OSErr PBUnlockRangeAsync(ParmBlkPtr paramBlock) ;
+extern OSErr PBSetVInfoSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBSetVInfoAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetVInfoSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetVInfoAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenRFSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenRFAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenDFSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenDFAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHCreateSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHCreateAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHDeleteSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHDeleteAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHRenameSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHRenameAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHRstFLockSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHRstFLockAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetFLockSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetFLockAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetFInfoSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetFInfoAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetFInfoSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetFInfoAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBMakeFSSpecSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBMakeFSSpecAsync(HParmBlkPtr paramBlock) ;
+extern OSErr
+HGetVol(
+  StringPtr volName,
+  short * vRefNum,
+  long * dirID) ;
+extern OSErr
+HOpen(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  SInt8 permission,
+  short * refNum) ;
+extern OSErr
+HOpenDF(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  SInt8 permission,
+  short * refNum) ;
+extern OSErr
+HOpenRF(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  SInt8 permission,
+  short * refNum) ;
+extern OSErr
+AllocContig(
+  short refNum,
+  long * count) ;
+extern OSErr
+HCreate(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  OSType creator,
+  OSType fileType) ;
+extern OSErr
+DirCreate(
+  short vRefNum,
+  long parentDirID,
+  ConstStr255Param directoryName,
+  long * createdDirID) ;
+extern OSErr
+HDelete(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName) ;
+extern OSErr
+HGetFInfo(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  FInfo * fndrInfo) ;
+extern OSErr
+HSetFInfo(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  const FInfo * fndrInfo) ;
+extern OSErr
+HSetFLock(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName) ;
+extern OSErr
+HRstFLock(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName) ;
+extern OSErr
+HRename(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param oldName,
+  ConstStr255Param newName) ;
+extern OSErr
+CatMove(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param oldName,
+  long newDirID,
+  ConstStr255Param newName) ;
+extern OSErr PBHGetVolParmsSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetVolParmsAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetLogInInfoSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetLogInInfoAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetDirAccessSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHGetDirAccessAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetDirAccessSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHSetDirAccessAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMapIDSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMapIDAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMapNameSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMapNameAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHCopyFileSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHCopyFileAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMoveRenameSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHMoveRenameAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenDenySync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenDenyAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenRFDenySync(HParmBlkPtr paramBlock) ;
+extern OSErr PBHOpenRFDenyAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetXCatInfoSync(XCInfoPBPtr paramBlock) ;
+extern OSErr PBGetXCatInfoAsync(XCInfoPBPtr paramBlock) ;
+extern OSErr PBExchangeFilesSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBExchangeFilesAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBCreateFileIDRefSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBCreateFileIDRefAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBResolveFileIDRefSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBResolveFileIDRefAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBDeleteFileIDRefSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBDeleteFileIDRefAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetForeignPrivsSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetForeignPrivsAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBSetForeignPrivsSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBSetForeignPrivsAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBDTGetPath(DTPBPtr paramBlock) ;
+extern OSErr PBDTCloseDown(DTPBPtr paramBlock) ;
+extern OSErr PBDTAddIconSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTAddIconAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetIconSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetIconAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetIconInfoSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetIconInfoAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTAddAPPLSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTAddAPPLAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTRemoveAPPLSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTRemoveAPPLAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetAPPLSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetAPPLAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTSetCommentSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTSetCommentAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTRemoveCommentSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTRemoveCommentAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetCommentSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetCommentAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTFlushSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTFlushAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTResetSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTResetAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetInfoSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTGetInfoAsync(DTPBPtr paramBlock) ;
+extern OSErr PBDTOpenInform(DTPBPtr paramBlock) ;
+extern OSErr PBDTDeleteSync(DTPBPtr paramBlock) ;
+extern OSErr PBDTDeleteAsync(DTPBPtr paramBlock) ;
+extern OSErr PBGetVolMountInfoSize(ParmBlkPtr paramBlock) ;
+extern OSErr PBGetVolMountInfo(ParmBlkPtr paramBlock) ;
+extern OSErr PBVolumeMount(ParmBlkPtr paramBlock) ;
+extern OSErr
+FSMakeFSSpec(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  FSSpec * spec) ;
+extern OSErr
+FSpOpenDF(
+  const FSSpec * spec,
+  SInt8 permission,
+  short * refNum) ;
+extern OSErr
+FSpOpenRF(
+  const FSSpec * spec,
+  SInt8 permission,
+  short * refNum) ;
+extern OSErr
+FSpCreate(
+  const FSSpec * spec,
+  OSType creator,
+  OSType fileType,
+  ScriptCode scriptTag) ;
+extern OSErr
+FSpDirCreate(
+  const FSSpec * spec,
+  ScriptCode scriptTag,
+  long * createdDirID) ;
+extern OSErr
+FSpDelete(const FSSpec * spec) ;
+extern OSErr
+FSpGetFInfo(
+  const FSSpec * spec,
+  FInfo * fndrInfo) ;
+extern OSErr
+FSpSetFInfo(
+  const FSSpec * spec,
+  const FInfo * fndrInfo) ;
+extern OSErr
+FSpSetFLock(const FSSpec * spec) ;
+extern OSErr
+FSpRstFLock(const FSSpec * spec) ;
+extern OSErr
+FSpRename(
+  const FSSpec * spec,
+  ConstStr255Param newName) ;
+extern OSErr
+FSpCatMove(
+  const FSSpec * source,
+  const FSSpec * dest) ;
+extern OSErr
+FSpExchangeFiles(
+  const FSSpec * source,
+  const FSSpec * dest) ;
+extern OSErr PBShareSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBShareAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBUnshareSync(HParmBlkPtr paramBlock) ;
+extern OSErr PBUnshareAsync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetUGEntrySync(HParmBlkPtr paramBlock) ;
+extern OSErr PBGetUGEntryAsync(HParmBlkPtr paramBlock) ;
+typedef SInt16 FSVolumeRefNum;
+enum {
+  kFSInvalidVolumeRefNum = 0
+};
+
+struct FSRef {
+  UInt8 hidden[80];
+};
+typedef struct FSRef FSRef;
+typedef FSRef * FSRefPtr;
+struct FSPermissionInfo {
+  UInt32 userID;
+  UInt32 groupID;
+  UInt8 reserved1;
+  UInt8 userAccess;
+  UInt16 mode;
+  UInt32 reserved2;
+};
+typedef struct FSPermissionInfo FSPermissionInfo;
+
+
+typedef UInt32 FSCatalogInfoBitmap;
+enum {
+  kFSCatInfoNone = 0x00000000,
+  kFSCatInfoTextEncoding = 0x00000001,
+  kFSCatInfoNodeFlags = 0x00000002,
+  kFSCatInfoVolume = 0x00000004,
+  kFSCatInfoParentDirID = 0x00000008,
+  kFSCatInfoNodeID = 0x00000010,
+  kFSCatInfoCreateDate = 0x00000020,
+  kFSCatInfoContentMod = 0x00000040,
+  kFSCatInfoAttrMod = 0x00000080,
+  kFSCatInfoAccessDate = 0x00000100,
+  kFSCatInfoBackupDate = 0x00000200,
+  kFSCatInfoPermissions = 0x00000400,
+  kFSCatInfoFinderInfo = 0x00000800,
+  kFSCatInfoFinderXInfo = 0x00001000,
+  kFSCatInfoValence = 0x00002000,
+  kFSCatInfoDataSizes = 0x00004000,
+  kFSCatInfoRsrcSizes = 0x00008000,
+  kFSCatInfoSharingFlags = 0x00010000,
+  kFSCatInfoUserPrivs = 0x00020000,
+  kFSCatInfoUserAccess = 0x00080000,
+  kFSCatInfoAllDates = 0x000003E0,
+  kFSCatInfoGettableInfo = 0x0003FFFF,
+  kFSCatInfoSettableInfo = 0x00001FE3,
+  kFSCatInfoReserved = (long)0xFFFC0000
+};
+
+
+enum {
+  kFSNodeLockedBit = 0,
+  kFSNodeLockedMask = 0x0001,
+  kFSNodeResOpenBit = 2,
+  kFSNodeResOpenMask = 0x0004,
+  kFSNodeDataOpenBit = 3,
+  kFSNodeDataOpenMask = 0x0008,
+  kFSNodeIsDirectoryBit = 4,
+  kFSNodeIsDirectoryMask = 0x0010,
+  kFSNodeCopyProtectBit = 6,
+  kFSNodeCopyProtectMask = 0x0040,
+  kFSNodeForkOpenBit = 7,
+  kFSNodeForkOpenMask = 0x0080,
+  kFSNodeHardLinkBit = 8,
+  kFSNodeHardLinkMask = 0x00000100
+};
+
+
+enum {
+  kFSNodeInSharedBit = 2,
+  kFSNodeInSharedMask = 0x0004,
+  kFSNodeIsMountedBit = 3,
+  kFSNodeIsMountedMask = 0x0008,
+  kFSNodeIsSharePointBit = 5,
+  kFSNodeIsSharePointMask = 0x0020
+};
+
+
+struct FSCatalogInfo {
+  UInt16 nodeFlags;
+  FSVolumeRefNum volume;
+  UInt32 parentDirID;
+  UInt32 nodeID;
+  UInt8 sharingFlags;
+  UInt8 userPrivileges;
+  UInt8 reserved1;
+  UInt8 reserved2;
+  UTCDateTime createDate;
+  UTCDateTime contentModDate;
+  UTCDateTime attributeModDate;
+  UTCDateTime accessDate;
+  UTCDateTime backupDate;
+
+  UInt32 permissions[4];
+
+  UInt8 finderInfo[16];
+  UInt8 extFinderInfo[16];
+
+  UInt64 dataLogicalSize;
+  UInt64 dataPhysicalSize;
+  UInt64 rsrcLogicalSize;
+  UInt64 rsrcPhysicalSize;
+
+  UInt32 valence;
+  TextEncoding textEncodingHint;
+};
+typedef struct FSCatalogInfo FSCatalogInfo;
+typedef FSCatalogInfo * FSCatalogInfoPtr;
+struct FSRefParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  ConstStringPtr ioNamePtr;
+  short ioVRefNum;
+
+  SInt16 reserved1;
+  UInt8 reserved2;
+  UInt8 reserved3;
+
+  const FSRef * ref;
+  FSCatalogInfoBitmap whichInfo;
+  FSCatalogInfo * catInfo;
+  UniCharCount nameLength;
+  const UniChar * name;
+  long ioDirID;
+  FSSpec * spec;
+  FSRef * parentRef;
+  FSRef * newRef;
+  TextEncoding textEncodingHint;
+  HFSUniStr255 * outName;
+};
+typedef struct FSRefParam FSRefParam;
+typedef FSRefParam * FSRefParamPtr;
+typedef struct OpaqueFSIterator* FSIterator;
+enum {
+  kFSIterateFlat = 0,
+  kFSIterateSubtree = 1,
+  kFSIterateDelete = 2,
+  kFSIterateReserved = (long)0xFFFFFFFC
+};
+
+typedef OptionBits FSIteratorFlags;
+enum {
+
+  fsSBNodeID = 0x00008000,
+  fsSBAttributeModDate = 0x00010000,
+  fsSBAccessDate = 0x00020000,
+  fsSBPermissions = 0x00040000,
+  fsSBNodeIDBit = 15,
+  fsSBAttributeModDateBit = 16,
+  fsSBAccessDateBit = 17,
+  fsSBPermissionsBit = 18
+};
+
+struct FSSearchParams {
+  Duration searchTime;
+  OptionBits searchBits;
+  UniCharCount searchNameLength;
+  const UniChar * searchName;
+  FSCatalogInfo * searchInfo1;
+  FSCatalogInfo * searchInfo2;
+};
+typedef struct FSSearchParams FSSearchParams;
+typedef FSSearchParams * FSSearchParamsPtr;
+struct FSCatalogBulkParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  Boolean containerChanged;
+  UInt8 reserved;
+
+  FSIteratorFlags iteratorFlags;
+  FSIterator iterator;
+  const FSRef * container;
+  ItemCount maximumItems;
+  ItemCount actualItems;
+  FSCatalogInfoBitmap whichInfo;
+  FSCatalogInfo * catalogInfo;
+  FSRef * refs;
+  FSSpec * specs;
+  HFSUniStr255 * names;
+  const FSSearchParams * searchParams;
+};
+typedef struct FSCatalogBulkParam FSCatalogBulkParam;
+typedef FSCatalogBulkParam * FSCatalogBulkParamPtr;
+typedef UInt16 FSAllocationFlags;
+enum {
+  kFSAllocDefaultFlags = 0x0000,
+  kFSAllocAllOrNothingMask = 0x0001,
+  kFSAllocContiguousMask = 0x0002,
+  kFSAllocNoRoundUpMask = 0x0004,
+  kFSAllocReservedMask = 0xFFF8
+};
+
+struct FSForkIOParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  void * reserved1;
+  SInt16 reserved2;
+  SInt16 forkRefNum;
+  UInt8 reserved3;
+  SInt8 permissions;
+  const FSRef * ref;
+
+
+  Ptr buffer;
+  UInt32 requestCount;
+  UInt32 actualCount;
+  UInt16 positionMode;
+  SInt64 positionOffset;
+
+  FSAllocationFlags allocationFlags;
+  UInt64 allocationAmount;
+
+  UniCharCount forkNameLength;
+  const UniChar * forkName;
+
+  CatPositionRec forkIterator;
+  HFSUniStr255 * outForkName;
+};
+typedef struct FSForkIOParam FSForkIOParam;
+typedef FSForkIOParam * FSForkIOParamPtr;
+struct FSForkInfo {
+  SInt8 flags;
+  SInt8 permissions;
+  FSVolumeRefNum volume;
+  UInt32 reserved2;
+  UInt32 nodeID;
+  UInt32 forkID;
+  UInt64 currentPosition;
+  UInt64 logicalEOF;
+  UInt64 physicalEOF;
+  UInt64 process;
+};
+typedef struct FSForkInfo FSForkInfo;
+typedef FSForkInfo * FSForkInfoPtr;
+struct FSForkCBInfoParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  SInt16 desiredRefNum;
+  SInt16 volumeRefNum;
+  SInt16 iterator;
+  SInt16 actualRefNum;
+
+  FSRef * ref;
+  FSForkInfo * forkInfo;
+  HFSUniStr255 * forkName;
+};
+typedef struct FSForkCBInfoParam FSForkCBInfoParam;
+typedef FSForkCBInfoParam * FSForkCBInfoParamPtr;
+typedef UInt32 FSVolumeInfoBitmap;
+enum {
+  kFSVolInfoNone = 0x0000,
+  kFSVolInfoCreateDate = 0x0001,
+  kFSVolInfoModDate = 0x0002,
+  kFSVolInfoBackupDate = 0x0004,
+  kFSVolInfoCheckedDate = 0x0008,
+  kFSVolInfoFileCount = 0x0010,
+  kFSVolInfoDirCount = 0x0020,
+  kFSVolInfoSizes = 0x0040,
+  kFSVolInfoBlocks = 0x0080,
+  kFSVolInfoNextAlloc = 0x0100,
+  kFSVolInfoRsrcClump = 0x0200,
+  kFSVolInfoDataClump = 0x0400,
+  kFSVolInfoNextID = 0x0800,
+  kFSVolInfoFinderInfo = 0x1000,
+  kFSVolInfoFlags = 0x2000,
+  kFSVolInfoFSInfo = 0x4000,
+  kFSVolInfoDriveInfo = 0x8000,
+  kFSVolInfoGettableInfo = 0xFFFF,
+  kFSVolInfoSettableInfo = 0x3004
+};
+
+
+enum {
+  kFSVolFlagDefaultVolumeBit = 5,
+  kFSVolFlagDefaultVolumeMask = 0x0020,
+  kFSVolFlagFilesOpenBit = 6,
+  kFSVolFlagFilesOpenMask = 0x0040,
+  kFSVolFlagHardwareLockedBit = 7,
+  kFSVolFlagHardwareLockedMask = 0x0080,
+  kFSVolFlagSoftwareLockedBit = 15,
+  kFSVolFlagSoftwareLockedMask = 0x8000
+};
+
+
+struct FSVolumeInfo {
+
+  UTCDateTime createDate;
+  UTCDateTime modifyDate;
+  UTCDateTime backupDate;
+  UTCDateTime checkedDate;
+
+
+  UInt32 fileCount;
+  UInt32 folderCount;
+
+
+  UInt64 totalBytes;
+  UInt64 freeBytes;
+
+
+  UInt32 blockSize;
+  UInt32 totalBlocks;
+  UInt32 freeBlocks;
+  UInt32 nextAllocation;
+  UInt32 rsrcClumpSize;
+  UInt32 dataClumpSize;
+  UInt32 nextCatalogID;
+  UInt8 finderInfo[32];
+
+
+  UInt16 flags;
+  UInt16 filesystemID;
+  UInt16 signature;
+  UInt16 driveNumber;
+  short driverRefNum;
+};
+typedef struct FSVolumeInfo FSVolumeInfo;
+typedef FSVolumeInfo * FSVolumeInfoPtr;
+struct FSVolumeInfoParam {
+  QElemPtr qLink;
+  short qType;
+  short ioTrap;
+  Ptr ioCmdAddr;
+  IOCompletionUPP ioCompletion;
+  volatile OSErr ioResult;
+  StringPtr ioNamePtr;
+  FSVolumeRefNum ioVRefNum;
+
+  UInt32 volumeIndex;
+  FSVolumeInfoBitmap whichInfo;
+  FSVolumeInfo * volumeInfo;
+  HFSUniStr255 * volumeName;
+  FSRef * ref;
+};
+typedef struct FSVolumeInfoParam FSVolumeInfoParam;
+typedef FSVolumeInfoParam * FSVolumeInfoParamPtr;
+extern OSErr
+FSpMakeFSRef(
+  const FSSpec * source,
+  FSRef * newRef) ;
+extern OSErr
+PBMakeFSRefSync(FSRefParam * paramBlock) ;
+extern void
+PBMakeFSRefAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSMakeFSRefUnicode(
+  const FSRef * parentRef,
+  UniCharCount nameLength,
+  const UniChar * name,
+  TextEncoding textEncodingHint,
+  FSRef * newRef) ;
+extern OSErr
+PBMakeFSRefUnicodeSync(FSRefParam * paramBlock) ;
+extern void
+PBMakeFSRefUnicodeAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSCompareFSRefs(
+  const FSRef * ref1,
+  const FSRef * ref2) ;
+extern OSErr
+PBCompareFSRefsSync(FSRefParam * paramBlock) ;
+extern void
+PBCompareFSRefsAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSCreateFileUnicode(
+  const FSRef * parentRef,
+  UniCharCount nameLength,
+  const UniChar * name,
+  FSCatalogInfoBitmap whichInfo,
+  const FSCatalogInfo * catalogInfo,
+  FSRef * newRef,
+  FSSpec * newSpec) ;
+extern OSErr
+PBCreateFileUnicodeSync(FSRefParam * paramBlock) ;
+extern void
+PBCreateFileUnicodeAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSCreateDirectoryUnicode(
+  const FSRef * parentRef,
+  UniCharCount nameLength,
+  const UniChar * name,
+  FSCatalogInfoBitmap whichInfo,
+  const FSCatalogInfo * catalogInfo,
+  FSRef * newRef,
+  FSSpec * newSpec,
+  UInt32 * newDirID) ;
+extern OSErr
+PBCreateDirectoryUnicodeSync(FSRefParam * paramBlock) ;
+extern void
+PBCreateDirectoryUnicodeAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSDeleteObject(const FSRef * ref) ;
+extern OSErr
+PBDeleteObjectSync(FSRefParam * paramBlock) ;
+extern void
+PBDeleteObjectAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSMoveObject(
+  const FSRef * ref,
+  const FSRef * destDirectory,
+  FSRef * newRef) ;
+extern OSErr
+PBMoveObjectSync(FSRefParam * paramBlock) ;
+extern void
+PBMoveObjectAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSExchangeObjects(
+  const FSRef * ref,
+  const FSRef * destRef) ;
+extern OSErr
+PBExchangeObjectsSync(FSRefParam * paramBlock) ;
+extern void
+PBExchangeObjectsAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSRenameUnicode(
+  const FSRef * ref,
+  UniCharCount nameLength,
+  const UniChar * name,
+  TextEncoding textEncodingHint,
+  FSRef * newRef) ;
+extern OSErr
+PBRenameUnicodeSync(FSRefParam * paramBlock) ;
+extern void
+PBRenameUnicodeAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSGetCatalogInfo(
+  const FSRef * ref,
+  FSCatalogInfoBitmap whichInfo,
+  FSCatalogInfo * catalogInfo,
+  HFSUniStr255 * outName,
+  FSSpec * fsSpec,
+  FSRef * parentRef) ;
+extern OSErr
+PBGetCatalogInfoSync(FSRefParam * paramBlock) ;
+extern void
+PBGetCatalogInfoAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSSetCatalogInfo(
+  const FSRef * ref,
+  FSCatalogInfoBitmap whichInfo,
+  const FSCatalogInfo * catalogInfo) ;
+extern OSErr
+PBSetCatalogInfoSync(FSRefParam * paramBlock) ;
+extern void
+PBSetCatalogInfoAsync(FSRefParam * paramBlock) ;
+extern OSErr
+FSOpenIterator(
+  const FSRef * container,
+  FSIteratorFlags iteratorFlags,
+  FSIterator * iterator) ;
+extern OSErr
+PBOpenIteratorSync(FSCatalogBulkParam * paramBlock) ;
+extern void
+PBOpenIteratorAsync(FSCatalogBulkParam * paramBlock) ;
+extern OSErr
+FSCloseIterator(FSIterator iterator) ;
+extern OSErr
+PBCloseIteratorSync(FSCatalogBulkParam * paramBlock) ;
+extern void
+PBCloseIteratorAsync(FSCatalogBulkParam * paramBlock) ;
+extern OSErr
+FSGetCatalogInfoBulk(
+  FSIterator iterator,
+  ItemCount maximumObjects,
+  ItemCount * actualObjects,
+  Boolean * containerChanged,
+  FSCatalogInfoBitmap whichInfo,
+  FSCatalogInfo * catalogInfos,
+  FSRef * refs,
+  FSSpec * specs,
+  HFSUniStr255 * names) ;
+extern OSErr
+PBGetCatalogInfoBulkSync(FSCatalogBulkParam * paramBlock) ;
+extern void
+PBGetCatalogInfoBulkAsync(FSCatalogBulkParam * paramBlock) ;
+extern OSErr
+FSCatalogSearch(
+  FSIterator iterator,
+  const FSSearchParams * searchCriteria,
+  ItemCount maximumObjects,
+  ItemCount * actualObjects,
+  Boolean * containerChanged,
+  FSCatalogInfoBitmap whichInfo,
+  FSCatalogInfo * catalogInfos,
+  FSRef * refs,
+  FSSpec * specs,
+  HFSUniStr255 * names) ;
+extern OSErr
+PBCatalogSearchSync(FSCatalogBulkParam * paramBlock) ;
+extern void
+PBCatalogSearchAsync(FSCatalogBulkParam * paramBlock) ;
+extern OSErr
+FSCreateFork(
+  const FSRef * ref,
+  UniCharCount forkNameLength,
+  const UniChar * forkName) ;
+extern OSErr
+PBCreateForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBCreateForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSDeleteFork(
+  const FSRef * ref,
+  UniCharCount forkNameLength,
+  const UniChar * forkName) ;
+extern OSErr
+PBDeleteForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBDeleteForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSIterateForks(
+  const FSRef * ref,
+  CatPositionRec * forkIterator,
+  HFSUniStr255 * forkName,
+  SInt64 * forkSize,
+  UInt64 * forkPhysicalSize) ;
+extern OSErr
+PBIterateForksSync(FSForkIOParam * paramBlock) ;
+extern void
+PBIterateForksAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSOpenFork(
+  const FSRef * ref,
+  UniCharCount forkNameLength,
+  const UniChar * forkName,
+  SInt8 permissions,
+  SInt16 * forkRefNum) ;
+extern OSErr
+PBOpenForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBOpenForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSReadFork(
+  SInt16 forkRefNum,
+  UInt16 positionMode,
+  SInt64 positionOffset,
+  ByteCount requestCount,
+  void * buffer,
+  ByteCount * actualCount) ;
+extern OSErr
+PBReadForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBReadForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSWriteFork(
+  SInt16 forkRefNum,
+  UInt16 positionMode,
+  SInt64 positionOffset,
+  ByteCount requestCount,
+  const void * buffer,
+  ByteCount * actualCount) ;
+extern OSErr
+PBWriteForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBWriteForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSGetForkPosition(
+  SInt16 forkRefNum,
+  SInt64 * position) ;
+extern OSErr
+PBGetForkPositionSync(FSForkIOParam * paramBlock) ;
+extern void
+PBGetForkPositionAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSSetForkPosition(
+  SInt16 forkRefNum,
+  UInt16 positionMode,
+  SInt64 positionOffset) ;
+extern OSErr
+PBSetForkPositionSync(FSForkIOParam * paramBlock) ;
+extern void
+PBSetForkPositionAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSGetForkSize(
+  SInt16 forkRefNum,
+  SInt64 * forkSize) ;
+extern OSErr
+PBGetForkSizeSync(FSForkIOParam * paramBlock) ;
+extern void
+PBGetForkSizeAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSSetForkSize(
+  SInt16 forkRefNum,
+  UInt16 positionMode,
+  SInt64 positionOffset) ;
+extern OSErr
+PBSetForkSizeSync(FSForkIOParam * paramBlock) ;
+extern void
+PBSetForkSizeAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSAllocateFork(
+  SInt16 forkRefNum,
+  FSAllocationFlags flags,
+  UInt16 positionMode,
+  SInt64 positionOffset,
+  UInt64 requestCount,
+  UInt64 * actualCount) ;
+extern OSErr
+PBAllocateForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBAllocateForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSFlushFork(SInt16 forkRefNum) ;
+extern OSErr
+PBFlushForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBFlushForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSCloseFork(SInt16 forkRefNum) ;
+extern OSErr
+PBCloseForkSync(FSForkIOParam * paramBlock) ;
+extern void
+PBCloseForkAsync(FSForkIOParam * paramBlock) ;
+extern OSErr
+FSGetForkCBInfo(
+  SInt16 desiredRefNum,
+  FSVolumeRefNum volume,
+  SInt16 * iterator,
+  SInt16 * actualRefNum,
+  FSForkInfo * forkInfo,
+  FSRef * ref,
+  HFSUniStr255 * outForkName) ;
+extern OSErr
+PBGetForkCBInfoSync(FSForkCBInfoParam * paramBlock) ;
+extern void
+PBGetForkCBInfoAsync(FSForkCBInfoParam * paramBlock) ;
+extern OSErr
+FSGetVolumeInfo(
+  FSVolumeRefNum volume,
+  ItemCount volumeIndex,
+  FSVolumeRefNum * actualVolume,
+  FSVolumeInfoBitmap whichInfo,
+  FSVolumeInfo * info,
+  HFSUniStr255 * volumeName,
+  FSRef * rootDirectory) ;
+extern OSErr
+PBGetVolumeInfoSync(FSVolumeInfoParam * paramBlock) ;
+extern void
+PBGetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) ;
+extern OSErr
+FSSetVolumeInfo(
+  FSVolumeRefNum volume,
+  FSVolumeInfoBitmap whichInfo,
+  const FSVolumeInfo * info) ;
+extern OSErr
+PBSetVolumeInfoSync(FSVolumeInfoParam * paramBlock) ;
+extern void
+PBSetVolumeInfoAsync(FSVolumeInfoParam * paramBlock) ;
+extern OSErr
+FSGetDataForkName(HFSUniStr255 * dataForkName) ;
+extern OSErr
+FSGetResourceForkName(HFSUniStr255 * resourceForkName) ;
+extern OSStatus
+FSRefMakePath(
+  const FSRef * ref,
+  UInt8 * path,
+  UInt32 maxPathSize) ;
+extern OSStatus
+FSPathMakeRef(
+  const UInt8 * path,
+  FSRef * ref,
+  Boolean * isDirectory) ;
+typedef UInt32 FNMessage;
+enum {
+  kFNDirectoryModifiedMessage = 1
+};
+extern OSStatus
+FNNotify(
+  const FSRef * ref,
+  FNMessage message,
+  OptionBits flags) ;
+extern OSStatus
+FNNotifyByPath(
+  const UInt8 * path,
+  FNMessage message,
+  OptionBits flags) ;
+extern OSStatus
+FNNotifyAll(
+  FNMessage message,
+  OptionBits flags) ;
+typedef struct OpaqueFNSubscriptionRef* FNSubscriptionRef;
+
+
+
+
+
+enum {
+
+
+
+
+
+
+
+  kFNNoImplicitAllSubscription = (1 << 0)
+};
+typedef void ( * FNSubscriptionProcPtr)(FNMessage message, OptionBits flags, void *refcon, FNSubscriptionRef subscription);
+typedef FNSubscriptionProcPtr FNSubscriptionUPP;
+extern FNSubscriptionUPP
+NewFNSubscriptionUPP(FNSubscriptionProcPtr userRoutine) ;
+extern void
+DisposeFNSubscriptionUPP(FNSubscriptionUPP userUPP) ;
+extern void
+InvokeFNSubscriptionUPP(
+  FNMessage message,
+  OptionBits flags,
+  void * refcon,
+  FNSubscriptionRef subscription,
+  FNSubscriptionUPP userUPP) ;
+extern OSStatus
+FNSubscribe(
+  const FSRef * directoryRef,
+  FNSubscriptionUPP callback,
+  void * refcon,
+  OptionBits flags,
+  FNSubscriptionRef * subscription) ;
+extern OSStatus
+FNSubscribeByPath(
+  const UInt8 * directoryPath,
+  FNSubscriptionUPP callback,
+  void * refcon,
+  OptionBits flags,
+  FNSubscriptionRef * subscription) ;
+extern OSStatus
+FNUnsubscribe(FNSubscriptionRef subscription) ;
+extern OSStatus
+FNGetDirectoryForSubscription(
+  FNSubscriptionRef subscription,
+  FSRef * ref) ;
+
+
+
+enum {
+  kAsyncMountInProgress = 1,
+  kAsyncMountComplete = 2,
+  kAsyncUnmountInProgress = 3,
+  kAsyncUnmountComplete = 4,
+  kAsyncEjectInProgress = 5,
+  kAsyncEjectComplete = 6
+};
+
+typedef UInt32 FSMountStatus;
+typedef UInt32 FSEjectStatus;
+typedef UInt32 FSUnmountStatus;
+typedef struct OpaqueFSVolumeOperation* FSVolumeOperation;
+typedef void ( * FSVolumeMountProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum mountedVolumeRefNum);
+typedef void ( * FSVolumeUnmountProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);
+typedef void ( * FSVolumeEjectProcPtr)(FSVolumeOperation volumeOp, void *clientData, OSStatus err, FSVolumeRefNum volumeRefNum, pid_t dissenter);
+typedef FSVolumeMountProcPtr FSVolumeMountUPP;
+typedef FSVolumeUnmountProcPtr FSVolumeUnmountUPP;
+typedef FSVolumeEjectProcPtr FSVolumeEjectUPP;
+extern FSVolumeMountUPP
+NewFSVolumeMountUPP(FSVolumeMountProcPtr userRoutine) ;
+extern FSVolumeUnmountUPP
+NewFSVolumeUnmountUPP(FSVolumeUnmountProcPtr userRoutine) ;
+extern FSVolumeEjectUPP
+NewFSVolumeEjectUPP(FSVolumeEjectProcPtr userRoutine) ;
+extern void
+DisposeFSVolumeMountUPP(FSVolumeMountUPP userUPP) ;
+extern void
+DisposeFSVolumeUnmountUPP(FSVolumeUnmountUPP userUPP) ;
+extern void
+DisposeFSVolumeEjectUPP(FSVolumeEjectUPP userUPP) ;
+extern void
+InvokeFSVolumeMountUPP(
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  OSStatus err,
+  FSVolumeRefNum mountedVolumeRefNum,
+  FSVolumeMountUPP userUPP) ;
+extern void
+InvokeFSVolumeUnmountUPP(
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  OSStatus err,
+  FSVolumeRefNum volumeRefNum,
+  pid_t dissenter,
+  FSVolumeUnmountUPP userUPP) ;
+extern void
+InvokeFSVolumeEjectUPP(
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  OSStatus err,
+  FSVolumeRefNum volumeRefNum,
+  pid_t dissenter,
+  FSVolumeEjectUPP userUPP) ;
+extern OSStatus
+FSCreateVolumeOperation(FSVolumeOperation * volumeOp) ;
+extern OSStatus
+FSDisposeVolumeOperation(FSVolumeOperation volumeOp) ;
+extern OSStatus
+FSMountLocalVolumeSync(
+  CFStringRef diskID,
+  CFURLRef mountDir,
+  FSVolumeRefNum * mountedVolumeRefNum,
+  OptionBits flags) ;
+extern OSStatus
+FSMountLocalVolumeAsync(
+  CFStringRef diskID,
+  CFURLRef mountDir,
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  OptionBits flags,
+  FSVolumeMountUPP callback,
+  CFRunLoopRef runloop,
+  CFStringRef runloopMode) ;
+extern OSStatus
+FSMountServerVolumeSync(
+  CFURLRef url,
+  CFURLRef mountDir,
+  CFStringRef user,
+  CFStringRef password,
+  FSVolumeRefNum * mountedVolumeRefNum,
+  OptionBits flags) ;
+extern OSStatus
+FSMountServerVolumeAsync(
+  CFURLRef url,
+  CFURLRef mountDir,
+  CFStringRef user,
+  CFStringRef password,
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  OptionBits flags,
+  FSVolumeMountUPP callback,
+  CFRunLoopRef runloop,
+  CFStringRef runloopMode) ;
+extern OSStatus
+FSGetAsyncMountStatus(
+  FSVolumeOperation volumeOp,
+  FSMountStatus * status,
+  OSStatus * volumeOpStatus,
+  FSVolumeRefNum * mountedVolumeRefNum,
+  void ** clientData) ;
+extern OSStatus
+FSUnmountVolumeSync(
+  FSVolumeRefNum vRefNum,
+  OptionBits flags,
+  pid_t * dissenter) ;
+extern OSStatus
+FSUnmountVolumeAsync(
+  FSVolumeRefNum vRefNum,
+  OptionBits flags,
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  FSVolumeUnmountUPP callback,
+  CFRunLoopRef runloop,
+  CFStringRef runloopMode) ;
+extern OSStatus
+FSGetAsyncUnmountStatus(
+  FSVolumeOperation volumeOp,
+  FSUnmountStatus * status,
+  OSStatus * volumeOpStatus,
+  FSVolumeRefNum * volumeRefNum,
+  pid_t * dissenter,
+  void ** clientData) ;
+extern OSStatus
+FSCancelVolumeOperation(FSVolumeOperation volumeOp) ;
+extern OSStatus
+FSEjectVolumeSync(
+  FSVolumeRefNum vRefNum,
+  OptionBits flags,
+  pid_t * dissenter) ;
+extern OSStatus
+FSEjectVolumeAsync(
+  FSVolumeRefNum vRefNum,
+  OptionBits flags,
+  FSVolumeOperation volumeOp,
+  void * clientData,
+  FSVolumeEjectUPP callback,
+  CFRunLoopRef runloop,
+  CFStringRef runloopMode) ;
+extern OSStatus
+FSGetAsyncEjectStatus(
+  FSVolumeOperation volumeOp,
+  FSEjectStatus * status,
+  OSStatus * volumeOpStatus,
+  FSVolumeRefNum * volumeRefNum,
+  pid_t * dissenter,
+  void ** clientData) ;
+extern OSStatus
+FSCopyDiskIDForVolume(
+  FSVolumeRefNum vRefNum,
+  CFStringRef * diskID) ;
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+enum {
+  kAppleManufacturer = 'appl',
+  kComponentResourceType = 'thng',
+  kComponentAliasResourceType = 'thga'
+};
+
+enum {
+  kAnyComponentType = 0,
+  kAnyComponentSubType = 0,
+  kAnyComponentManufacturer = 0,
+  kAnyComponentFlagsMask = 0
+};
+
+enum {
+  cmpIsMissing = 1L << 29,
+  cmpWantsRegisterMessage = 1L << 31
+};
+
+enum {
+  kComponentOpenSelect = -1,
+  kComponentCloseSelect = -2,
+  kComponentCanDoSelect = -3,
+  kComponentVersionSelect = -4,
+  kComponentRegisterSelect = -5,
+  kComponentTargetSelect = -6,
+  kComponentUnregisterSelect = -7,
+  kComponentGetMPWorkFunctionSelect = -8,
+  kComponentExecuteWiredActionSelect = -9,
+  kComponentGetPublicResourceSelect = -10
+};
+
+
+enum {
+  componentDoAutoVersion = (1 << 0),
+  componentWantsUnregister = (1 << 1),
+  componentAutoVersionIncludeFlags = (1 << 2),
+  componentHasMultiplePlatforms = (1 << 3),
+  componentLoadResident = (1 << 4)
+};
+
+
+
+
+enum {
+  defaultComponentIdentical = 0,
+  defaultComponentAnyFlags = 1,
+  defaultComponentAnyManufacturer = 2,
+  defaultComponentAnySubType = 4,
+  defaultComponentAnyFlagsAnyManufacturer = (defaultComponentAnyFlags + defaultComponentAnyManufacturer),
+  defaultComponentAnyFlagsAnyManufacturerAnySubType = (defaultComponentAnyFlags + defaultComponentAnyManufacturer + defaultComponentAnySubType)
+};
+
+
+enum {
+  registerComponentGlobal = 1,
+  registerComponentNoDuplicates = 2,
+  registerComponentAfterExisting = 4,
+  registerComponentAliasesOnly = 8
+};
+
+
+struct ComponentDescription {
+  OSType componentType;
+  OSType componentSubType;
+  OSType componentManufacturer;
+  unsigned long componentFlags;
+  unsigned long componentFlagsMask;
+};
+typedef struct ComponentDescription ComponentDescription;
+
+struct ResourceSpec {
+  OSType resType;
+  short resID;
+};
+typedef struct ResourceSpec ResourceSpec;
+struct ComponentResource {
+  ComponentDescription cd;
+  ResourceSpec component;
+  ResourceSpec componentName;
+  ResourceSpec componentInfo;
+  ResourceSpec componentIcon;
+};
+typedef struct ComponentResource ComponentResource;
+typedef ComponentResource * ComponentResourcePtr;
+typedef ComponentResourcePtr * ComponentResourceHandle;
+struct ComponentPlatformInfo {
+  long componentFlags;
+  ResourceSpec component;
+  short platformType;
+};
+typedef struct ComponentPlatformInfo ComponentPlatformInfo;
+struct ComponentResourceExtension {
+  long componentVersion;
+  long componentRegisterFlags;
+  short componentIconFamily;
+};
+typedef struct ComponentResourceExtension ComponentResourceExtension;
+struct ComponentPlatformInfoArray {
+  long count;
+  ComponentPlatformInfo platformArray[1];
+};
+typedef struct ComponentPlatformInfoArray ComponentPlatformInfoArray;
+struct ExtComponentResource {
+  ComponentDescription cd;
+  ResourceSpec component;
+  ResourceSpec componentName;
+  ResourceSpec componentInfo;
+  ResourceSpec componentIcon;
+  long componentVersion;
+  long componentRegisterFlags;
+  short componentIconFamily;
+  long count;
+  ComponentPlatformInfo platformArray[1];
+};
+typedef struct ExtComponentResource ExtComponentResource;
+typedef ExtComponentResource * ExtComponentResourcePtr;
+typedef ExtComponentResourcePtr * ExtComponentResourceHandle;
+struct ComponentAliasResource {
+  ComponentResource cr;
+  ComponentDescription aliasCD;
+};
+typedef struct ComponentAliasResource ComponentAliasResource;
+
+struct ComponentParameters {
+  UInt8 flags;
+  UInt8 paramSize;
+  short what;
+  long params[1];
+};
+typedef struct ComponentParameters ComponentParameters;
+struct ComponentRecord {
+  long data[1];
+};
+typedef struct ComponentRecord ComponentRecord;
+typedef ComponentRecord * Component;
+struct ComponentInstanceRecord {
+  long data[1];
+};
+typedef struct ComponentInstanceRecord ComponentInstanceRecord;
+typedef ComponentInstanceRecord * ComponentInstance;
+struct RegisteredComponentRecord {
+  long data[1];
+};
+typedef struct RegisteredComponentRecord RegisteredComponentRecord;
+typedef RegisteredComponentRecord * RegisteredComponentRecordPtr;
+struct RegisteredComponentInstanceRecord {
+  long data[1];
+};
+typedef struct RegisteredComponentInstanceRecord RegisteredComponentInstanceRecord;
+typedef RegisteredComponentInstanceRecord * RegisteredComponentInstanceRecordPtr;
+typedef long ComponentResult;
+enum {
+  platform68k = 1,
+  platformPowerPC = 2,
+  platformInterpreted = 3,
+  platformWin32 = 4,
+  platformPowerPCNativeEntryPoint = 5
+};
+
+enum {
+  platformIRIXmips = 1000,
+  platformSunOSsparc = 1100,
+  platformSunOSintel = 1101,
+  platformLinuxppc = 1200,
+  platformLinuxintel = 1201,
+  platformAIXppc = 1300,
+  platformNeXTIntel = 1400,
+  platformNeXTppc = 1401,
+  platformNeXTsparc = 1402,
+  platformNeXT68k = 1403,
+  platformMacOSx86 = 1500
+};
+
+enum {
+  mpWorkFlagDoWork = (1 << 0),
+  mpWorkFlagDoCompletion = (1 << 1),
+  mpWorkFlagCopyWorkBlock = (1 << 2),
+  mpWorkFlagDontBlock = (1 << 3),
+  mpWorkFlagGetProcessorCount = (1 << 4),
+  mpWorkFlagGetIsRunning = (1 << 6)
+};
+
+enum {
+  cmpAliasNoFlags = 0,
+  cmpAliasOnlyThisFile = 1
+};
+
+struct ComponentMPWorkFunctionHeaderRecord {
+  UInt32 headerSize;
+  UInt32 recordSize;
+  UInt32 workFlags;
+  UInt16 processorCount;
+  UInt8 unused;
+  UInt8 isRunning;
+};
+typedef struct ComponentMPWorkFunctionHeaderRecord ComponentMPWorkFunctionHeaderRecord;
+typedef ComponentMPWorkFunctionHeaderRecord * ComponentMPWorkFunctionHeaderRecordPtr;
+typedef ComponentResult ( * ComponentMPWorkFunctionProcPtr)(void *globalRefCon, ComponentMPWorkFunctionHeaderRecordPtr header);
+typedef ComponentResult ( * ComponentRoutineProcPtr)(ComponentParameters *cp, Handle componentStorage);
+typedef OSErr ( * GetMissingComponentResourceProcPtr)(Component c, OSType resType, short resID, void *refCon, Handle *resource);
+typedef ComponentMPWorkFunctionProcPtr ComponentMPWorkFunctionUPP;
+typedef ComponentRoutineProcPtr ComponentRoutineUPP;
+typedef GetMissingComponentResourceProcPtr GetMissingComponentResourceUPP;
+
+
+
+
+
+typedef UniversalProcPtr ComponentFunctionUPP;
+extern ComponentFunctionUPP
+NewComponentFunctionUPP(
+  ProcPtr userRoutine,
+  ProcInfoType procInfo) ;
+extern void
+DisposeComponentFunctionUPP(ComponentFunctionUPP userUPP) ;
+extern Component
+RegisterComponent(
+  ComponentDescription * cd,
+  ComponentRoutineUPP componentEntryPoint,
+  short global,
+  Handle componentName,
+  Handle componentInfo,
+  Handle componentIcon) ;
+extern Component
+RegisterComponentResource(
+  ComponentResourceHandle cr,
+  short global) ;
+extern OSErr
+UnregisterComponent(Component aComponent) ;
+extern Component
+FindNextComponent(
+  Component aComponent,
+  ComponentDescription * looking) ;
+extern long
+CountComponents(ComponentDescription * looking) ;
+extern OSErr
+GetComponentInfo(
+  Component aComponent,
+  ComponentDescription * cd,
+  Handle componentName,
+  Handle componentInfo,
+  Handle componentIcon) ;
+extern long
+GetComponentListModSeed(void) ;
+extern long
+GetComponentTypeModSeed(OSType componentType) ;
+extern OSErr
+OpenAComponent(
+  Component aComponent,
+  ComponentInstance * ci) ;
+extern ComponentInstance
+OpenComponent(Component aComponent) ;
+extern OSErr
+CloseComponent(ComponentInstance aComponentInstance) ;
+extern OSErr
+GetComponentInstanceError(ComponentInstance aComponentInstance) ;
+extern Component
+ResolveComponentAlias(Component aComponent) ;
+extern OSErr
+GetComponentPublicResource(
+  Component aComponent,
+  OSType resourceType,
+  short resourceID,
+  Handle * theResource) ;
+extern OSErr
+GetComponentPublicResourceList(
+  OSType resourceType,
+  short resourceID,
+  long flags,
+  ComponentDescription * cd,
+  GetMissingComponentResourceUPP missingProc,
+  void * refCon,
+  void * atomContainerPtr) ;
+extern OSErr
+GetComponentPublicIndString(
+  Component aComponent,
+  Str255 theString,
+  short strListID,
+  short index) ;
+extern void
+SetComponentInstanceError(
+  ComponentInstance aComponentInstance,
+  OSErr theError) ;
+extern long
+GetComponentRefcon(Component aComponent) ;
+extern void
+SetComponentRefcon(
+  Component aComponent,
+  long theRefcon) ;
+extern short
+OpenComponentResFile(Component aComponent) ;
+extern OSErr
+OpenAComponentResFile(
+  Component aComponent,
+  short * resRef) ;
+extern OSErr
+CloseComponentResFile(short refnum) ;
+extern OSErr
+GetComponentResource(
+  Component aComponent,
+  OSType resType,
+  short resID,
+  Handle * theResource) ;
+extern OSErr
+GetComponentIndString(
+  Component aComponent,
+  Str255 theString,
+  short strListID,
+  short index) ;
+extern Handle
+GetComponentInstanceStorage(ComponentInstance aComponentInstance) ;
+extern void
+SetComponentInstanceStorage(
+  ComponentInstance aComponentInstance,
+  Handle theStorage) ;
+extern long
+CountComponentInstances(Component aComponent) ;
+extern long
+CallComponentFunction(
+  ComponentParameters * params,
+  ComponentFunctionUPP func) ;
+extern long
+CallComponentFunctionWithStorage(
+  Handle storage,
+  ComponentParameters * params,
+  ComponentFunctionUPP func) ;
+extern long
+CallComponentFunctionWithStorageProcInfo(
+  Handle storage,
+  ComponentParameters * params,
+  ProcPtr func,
+  ProcInfoType funcProcInfo) ;
+extern long
+DelegateComponentCall(
+  ComponentParameters * originalParams,
+  ComponentInstance ci) ;
+extern OSErr
+SetDefaultComponent(
+  Component aComponent,
+  short flags) ;
+extern ComponentInstance
+OpenDefaultComponent(
+  OSType componentType,
+  OSType componentSubType) ;
+extern OSErr
+OpenADefaultComponent(
+  OSType componentType,
+  OSType componentSubType,
+  ComponentInstance * ci) ;
+extern Component
+CaptureComponent(
+  Component capturedComponent,
+  Component capturingComponent) ;
+extern OSErr
+UncaptureComponent(Component aComponent) ;
+extern long
+RegisterComponentResourceFile(
+  short resRefNum,
+  short global) ;
+extern OSErr
+GetComponentIconSuite(
+  Component aComponent,
+  Handle * iconSuite) ;
+extern OSErr
+RegisterComponentFile(
+  const FSSpec * spec,
+  short global) ;
+extern OSErr
+RegisterComponentFileEntries(
+  const FSSpec * spec,
+  short global,
+  const ComponentDescription * toRegister,
+  UInt32 registerCount) ;
+extern OSErr
+RegisterComponentFileRef(
+  const FSRef * ref,
+  short global) ;
+extern OSErr
+RegisterComponentFileRefEntries(
+  const FSRef * ref,
+  short global,
+  const ComponentDescription * toRegister,
+  UInt32 registerCount) ;
+extern long
+ComponentFunctionImplemented(
+  ComponentInstance ci,
+  short ftnNumber) ;
+extern long
+GetComponentVersion(ComponentInstance ci) ;
+extern long
+ComponentSetTarget(
+  ComponentInstance ci,
+  ComponentInstance target) ;
+extern ComponentResult
+CallComponentOpen(
+  ComponentInstance ci,
+  ComponentInstance self) ;
+extern ComponentResult
+CallComponentClose(
+  ComponentInstance ci,
+  ComponentInstance self) ;
+extern ComponentResult
+CallComponentCanDo(
+  ComponentInstance ci,
+  short ftnNumber) ;
+extern ComponentResult
+CallComponentVersion(ComponentInstance ci) ;
+extern ComponentResult
+CallComponentRegister(ComponentInstance ci) ;
+extern ComponentResult
+CallComponentTarget(
+  ComponentInstance ci,
+  ComponentInstance target) ;
+extern ComponentResult
+CallComponentUnregister(ComponentInstance ci) ;
+extern ComponentResult
+CallComponentGetMPWorkFunction(
+  ComponentInstance ci,
+  ComponentMPWorkFunctionUPP * workFunction,
+  void ** refCon) ;
+extern ComponentResult
+CallComponentGetPublicResource(
+  ComponentInstance ci,
+  OSType resourceType,
+  short resourceID,
+  Handle * resource) ;
+extern ComponentResult
+CallComponentDispatch(ComponentParameters * cp) ;
+extern ComponentMPWorkFunctionUPP
+NewComponentMPWorkFunctionUPP(ComponentMPWorkFunctionProcPtr userRoutine) ;
+extern ComponentRoutineUPP
+NewComponentRoutineUPP(ComponentRoutineProcPtr userRoutine) ;
+extern GetMissingComponentResourceUPP
+NewGetMissingComponentResourceUPP(GetMissingComponentResourceProcPtr userRoutine) ;
+extern void
+DisposeComponentMPWorkFunctionUPP(ComponentMPWorkFunctionUPP userUPP) ;
+extern void
+DisposeComponentRoutineUPP(ComponentRoutineUPP userUPP) ;
+extern void
+DisposeGetMissingComponentResourceUPP(GetMissingComponentResourceUPP userUPP) ;
+extern ComponentResult
+InvokeComponentMPWorkFunctionUPP(
+  void * globalRefCon,
+  ComponentMPWorkFunctionHeaderRecordPtr header,
+  ComponentMPWorkFunctionUPP userUPP) ;
+extern ComponentResult
+InvokeComponentRoutineUPP(
+  ComponentParameters * cp,
+  Handle componentStorage,
+  ComponentRoutineUPP userUPP) ;
+extern OSErr
+InvokeGetMissingComponentResourceUPP(
+  Component c,
+  OSType resType,
+  short resID,
+  void * refCon,
+  Handle * resource,
+  GetMissingComponentResourceUPP userUPP) ;
+
+
+
+
+enum {
+    uppComponentFunctionImplementedProcInfo = 0x000002F0,
+    uppGetComponentVersionProcInfo = 0x000000F0,
+    uppComponentSetTargetProcInfo = 0x000003F0,
+    uppCallComponentOpenProcInfo = 0x000003F0,
+    uppCallComponentCloseProcInfo = 0x000003F0,
+    uppCallComponentCanDoProcInfo = 0x000002F0,
+    uppCallComponentVersionProcInfo = 0x000000F0,
+    uppCallComponentRegisterProcInfo = 0x000000F0,
+    uppCallComponentTargetProcInfo = 0x000003F0,
+    uppCallComponentUnregisterProcInfo = 0x000000F0,
+    uppCallComponentGetMPWorkFunctionProcInfo = 0x00000FF0,
+    uppCallComponentGetPublicResourceProcInfo = 0x00003BF0
+};
+
+
+
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+enum {
+  resSysHeap = 64,
+  resPurgeable = 32,
+  resLocked = 16,
+  resProtected = 8,
+  resPreload = 4,
+  resChanged = 2,
+  mapReadOnly = 128,
+  mapCompact = 64,
+  mapChanged = 32
+};
+
+enum {
+  resSysRefBit = 7,
+  resSysHeapBit = 6,
+  resPurgeableBit = 5,
+  resLockedBit = 4,
+  resProtectedBit = 3,
+  resPreloadBit = 2,
+  resChangedBit = 1,
+  mapReadOnlyBit = 7,
+  mapCompactBit = 6,
+  mapChangedBit = 5
+};
+
+enum {
+  kResFileNotOpened = -1,
+  kSystemResFile = 0
+};
+
+
+typedef void ( * ResErrProcPtr)(OSErr thErr);
+typedef ResErrProcPtr ResErrUPP;
+extern ResErrUPP
+NewResErrUPP(ResErrProcPtr userRoutine) ;
+extern void
+DisposeResErrUPP(ResErrUPP userUPP) ;
+extern void
+InvokeResErrUPP(
+  OSErr thErr,
+  ResErrUPP userUPP) ;
+
+
+typedef OSErr ( * ResourceEndianFilterPtr)(Handle theResource, Boolean currentlyNativeEndian);
+extern void
+CloseResFile(short refNum) ;
+extern OSErr
+ResError(void) ;
+extern short
+CurResFile(void) ;
+extern short
+HomeResFile(Handle theResource) ;
+extern void
+UseResFile(short refNum) ;
+extern short
+CountTypes(void) ;
+extern short
+Count1Types(void) ;
+extern void
+GetIndType(
+  ResType * theType,
+  short index) ;
+extern void
+Get1IndType(
+  ResType * theType,
+  short index) ;
+extern void
+SetResLoad(Boolean load) ;
+extern short
+CountResources(ResType theType) ;
+extern short
+Count1Resources(ResType theType) ;
+extern Handle
+GetIndResource(
+  ResType theType,
+  short index) ;
+extern Handle
+Get1IndResource(
+  ResType theType,
+  short index) ;
+extern Handle
+GetResource(
+  ResType theType,
+  short theID) ;
+extern Handle
+Get1Resource(
+  ResType theType,
+  short theID) ;
+extern Handle
+GetNamedResource(
+  ResType theType,
+  ConstStr255Param name) ;
+extern Handle
+Get1NamedResource(
+  ResType theType,
+  ConstStr255Param name) ;
+extern void
+LoadResource(Handle theResource) ;
+extern void
+ReleaseResource(Handle theResource) ;
+extern void
+DetachResource(Handle theResource) ;
+extern short
+UniqueID(ResType theType) ;
+extern short
+Unique1ID(ResType theType) ;
+extern short
+GetResAttrs(Handle theResource) ;
+extern void
+GetResInfo(
+  Handle theResource,
+  short * theID,
+  ResType * theType,
+  Str255 name) ;
+extern void
+SetResInfo(
+  Handle theResource,
+  short theID,
+  ConstStr255Param name) ;
+extern void
+AddResource(
+  Handle theData,
+  ResType theType,
+  short theID,
+  ConstStr255Param name) ;
+extern long
+GetResourceSizeOnDisk(Handle theResource) ;
+extern long
+GetMaxResourceSize(Handle theResource) ;
+extern void
+SetResAttrs(
+  Handle theResource,
+  short attrs) ;
+extern void
+ChangedResource(Handle theResource) ;
+extern void
+RemoveResource(Handle theResource) ;
+extern void
+UpdateResFile(short refNum) ;
+extern void
+WriteResource(Handle theResource) ;
+extern void
+SetResPurge(Boolean install) ;
+extern short
+GetResFileAttrs(short refNum) ;
+extern void
+SetResFileAttrs(
+  short refNum,
+  short attrs) ;
+extern short
+OpenRFPerm(
+  ConstStr255Param fileName,
+  short vRefNum,
+  SInt8 permission) ;
+extern short
+HOpenResFile(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName,
+  SInt8 permission) ;
+extern void
+HCreateResFile(
+  short vRefNum,
+  long dirID,
+  ConstStr255Param fileName) ;
+extern short
+FSpOpenResFile(
+  const FSSpec * spec,
+  SignedByte permission) ;
+extern void
+FSpCreateResFile(
+  const FSSpec * spec,
+  OSType creator,
+  OSType fileType,
+  ScriptCode scriptTag) ;
+extern void
+ReadPartialResource(
+  Handle theResource,
+  long offset,
+  void * buffer,
+  long count) ;
+extern void
+WritePartialResource(
+  Handle theResource,
+  long offset,
+  const void * buffer,
+  long count) ;
+extern void
+SetResourceSize(
+  Handle theResource,
+  long newSize) ;
+extern Handle
+GetNextFOND(Handle fondHandle) ;
+typedef SInt16 RsrcChainLocation;
+enum {
+  kRsrcChainBelowSystemMap = 0,
+  kRsrcChainBelowApplicationMap = 1,
+  kRsrcChainAboveApplicationMap = 2,
+  kRsrcChainAboveAllMaps = 4
+};
+extern OSErr
+InsertResourceFile(
+  SInt16 refNum,
+  RsrcChainLocation where) ;
+extern OSErr
+DetachResourceFile(SInt16 refNum) ;
+extern Boolean
+FSpResourceFileAlreadyOpen(
+  const FSSpec * resourceFile,
+  Boolean * inChain,
+  SInt16 * refNum) ;
+extern OSErr
+FSpOpenOrphanResFile(
+  const FSSpec * spec,
+  SignedByte permission,
+  SInt16 * refNum) ;
+extern OSErr
+GetTopResourceFile(SInt16 * refNum) ;
+extern OSErr
+GetNextResourceFile(
+  SInt16 curRefNum,
+  SInt16 * nextRefNum) ;
+extern short
+FSOpenResFile(
+  const FSRef * ref,
+  SInt8 permission) ;
+extern void
+FSCreateResFile(
+  const FSRef * parentRef,
+  UniCharCount nameLength,
+  const UniChar * name,
+  FSCatalogInfoBitmap whichInfo,
+  const FSCatalogInfo * catalogInfo,
+  FSRef * newRef,
+  FSSpec * newSpec) ;
+extern Boolean
+FSResourceFileAlreadyOpen(
+  const FSRef * resourceFileRef,
+  Boolean * inChain,
+  SInt16 * refNum) ;
+extern OSErr
+FSCreateResourceFile(
+  const FSRef * parentRef,
+  UniCharCount nameLength,
+  const UniChar * name,
+  FSCatalogInfoBitmap whichInfo,
+  const FSCatalogInfo * catalogInfo,
+  UniCharCount forkNameLength,
+  const UniChar * forkName,
+  FSRef * newRef,
+  FSSpec * newSpec) ;
+extern OSErr
+FSCreateResourceFork(
+  const FSRef * ref,
+  UniCharCount forkNameLength,
+  const UniChar * forkName,
+  UInt32 flags) ;
+extern OSErr
+FSOpenResourceFile(
+  const FSRef * ref,
+  UniCharCount forkNameLength,
+  const UniChar * forkName,
+  SInt8 permissions,
+  SInt16 * refNum) ;
+
+
+
+
+
+typedef short ResFileRefNum;
+typedef short ResID;
+typedef short ResAttributes;
+typedef short ResFileAttributes;
+}
+
+
+
+extern "C" {
+
+
+enum {
+  MPLibrary_MajorVersion = 2,
+  MPLibrary_MinorVersion = 3,
+  MPLibrary_Release = 1,
+  MPLibrary_DevelopmentRevision = 1
+};
+
+
+
+typedef struct OpaqueMPProcessID* MPProcessID;
+typedef struct OpaqueMPTaskID* MPTaskID;
+typedef struct OpaqueMPQueueID* MPQueueID;
+typedef struct OpaqueMPSemaphoreID* MPSemaphoreID;
+typedef struct OpaqueMPCriticalRegionID* MPCriticalRegionID;
+typedef struct OpaqueMPTimerID* MPTimerID;
+typedef struct OpaqueMPEventID* MPEventID;
+typedef struct OpaqueMPAddressSpaceID* MPAddressSpaceID;
+typedef struct OpaqueMPNotificationID* MPNotificationID;
+typedef struct OpaqueMPCoherenceID* MPCoherenceID;
+typedef struct OpaqueMPCpuID* MPCpuID;
+typedef struct OpaqueMPAreaID* MPAreaID;
+typedef struct OpaqueMPConsoleID* MPConsoleID;
+typedef struct OpaqueMPOpaqueID* MPOpaqueID;
+enum {
+
+  kOpaqueAnyID = 0,
+  kOpaqueProcessID = 1,
+  kOpaqueTaskID = 2,
+  kOpaqueTimerID = 3,
+  kOpaqueQueueID = 4,
+  kOpaqueSemaphoreID = 5,
+  kOpaqueCriticalRegionID = 6,
+  kOpaqueCpuID = 7,
+  kOpaqueAddressSpaceID = 8,
+  kOpaqueEventID = 9,
+  kOpaqueCoherenceID = 10,
+  kOpaqueAreaID = 11,
+  kOpaqueNotificationID = 12,
+  kOpaqueConsoleID = 13
+};
+
+typedef UInt32 MPOpaqueIDClass;
+
+enum {
+  kMPNoID = 0
+};
+
+
+typedef OptionBits MPTaskOptions;
+typedef UInt32 TaskStorageIndex;
+typedef UInt32 TaskStorageValue;
+typedef ItemCount MPSemaphoreCount;
+typedef UInt32 MPTaskWeight;
+typedef UInt32 MPEventFlags;
+typedef UInt32 MPExceptionKind;
+typedef UInt32 MPTaskStateKind;
+typedef UInt32 MPPageSizeClass;
+
+enum {
+  kDurationImmediate = 0L,
+  kDurationForever = 0x7FFFFFFF,
+  kDurationMillisecond = 1,
+  kDurationMicrosecond = -1
+};
+extern ItemCount
+MPProcessors(void) ;
+extern ItemCount
+MPProcessorsScheduled(void) ;
+enum {
+
+  kMPCreateTaskSuspendedMask = 1L << 0,
+  kMPCreateTaskTakesAllExceptionsMask = 1L << 1,
+  kMPCreateTaskNotDebuggableMask = 1L << 2,
+  kMPCreateTaskValidOptionsMask = kMPCreateTaskSuspendedMask | kMPCreateTaskTakesAllExceptionsMask | kMPCreateTaskNotDebuggableMask
+};
+
+
+
+
+
+
+
+typedef OSStatus ( * TaskProc)(void * parameter);
+extern OSStatus
+MPCreateTask(
+  TaskProc entryPoint,
+  void * parameter,
+  ByteCount stackSize,
+  MPQueueID notifyQueue,
+  void * terminationParameter1,
+  void * terminationParameter2,
+  MPTaskOptions options,
+  MPTaskID * task) ;
+extern OSStatus
+MPTerminateTask(
+  MPTaskID task,
+  OSStatus terminationStatus) ;
+extern OSStatus
+MPSetTaskWeight(
+  MPTaskID task,
+  MPTaskWeight weight) ;
+extern Boolean
+MPTaskIsPreemptive(MPTaskID taskID) ;
+extern void
+MPExit(OSStatus status) ;
+extern void
+MPYield(void) ;
+extern MPTaskID
+MPCurrentTaskID(void) ;
+extern OSStatus
+MPSetTaskType(
+  MPTaskID task,
+  OSType taskType) ;
+extern OSStatus
+MPAllocateTaskStorageIndex(TaskStorageIndex * index) ;
+extern OSStatus
+MPDeallocateTaskStorageIndex(TaskStorageIndex index) ;
+extern OSStatus
+MPSetTaskStorageValue(
+  TaskStorageIndex index,
+  TaskStorageValue value) ;
+extern TaskStorageValue
+MPGetTaskStorageValue(TaskStorageIndex index) ;
+extern OSStatus
+MPCreateQueue(MPQueueID * queue) ;
+extern OSStatus
+MPDeleteQueue(MPQueueID queue) ;
+extern OSStatus
+MPNotifyQueue(
+  MPQueueID queue,
+  void * param1,
+  void * param2,
+  void * param3) ;
+extern OSStatus
+MPWaitOnQueue(
+  MPQueueID queue,
+  void ** param1,
+  void ** param2,
+  void ** param3,
+  Duration timeout) ;
+extern OSStatus
+MPSetQueueReserve(
+  MPQueueID queue,
+  ItemCount count) ;
+extern OSStatus
+MPCreateSemaphore(
+  MPSemaphoreCount maximumValue,
+  MPSemaphoreCount initialValue,
+  MPSemaphoreID * semaphore) ;
+extern OSStatus
+MPDeleteSemaphore(MPSemaphoreID semaphore) ;
+extern OSStatus
+MPSignalSemaphore(MPSemaphoreID semaphore) ;
+extern OSStatus
+MPWaitOnSemaphore(
+  MPSemaphoreID semaphore,
+  Duration timeout) ;
+extern OSStatus
+MPCreateCriticalRegion(MPCriticalRegionID * criticalRegion) ;
+extern OSStatus
+MPDeleteCriticalRegion(MPCriticalRegionID criticalRegion) ;
+extern OSStatus
+MPEnterCriticalRegion(
+  MPCriticalRegionID criticalRegion,
+  Duration timeout) ;
+extern OSStatus
+MPExitCriticalRegion(MPCriticalRegionID criticalRegion) ;
+extern OSStatus
+MPCreateEvent(MPEventID * event) ;
+extern OSStatus
+MPDeleteEvent(MPEventID event) ;
+extern OSStatus
+MPSetEvent(
+  MPEventID event,
+  MPEventFlags flags) ;
+extern OSStatus
+MPWaitForEvent(
+  MPEventID event,
+  MPEventFlags * flags,
+  Duration timeout) ;
+extern OSStatus
+MPCreateNotification(MPNotificationID * notificationID) ;
+extern OSStatus
+MPDeleteNotification(MPNotificationID notificationID) ;
+extern OSStatus
+MPModifyNotification(
+  MPNotificationID notificationID,
+  MPOpaqueID anID,
+  void * notifyParam1,
+  void * notifyParam2,
+  void * notifyParam3) ;
+extern OSStatus
+MPModifyNotificationParameters(
+  MPNotificationID notificationID,
+  MPOpaqueIDClass kind,
+  void * notifyParam1,
+  void * notifyParam2,
+  void * notifyParam3) ;
+extern OSStatus
+MPCauseNotification(MPNotificationID notificationID) ;
+enum {
+
+  kMPPreserveTimerIDMask = 1L << 0,
+  kMPTimeIsDeltaMask = 1L << 1,
+  kMPTimeIsDurationMask = 1L << 2
+};
+extern OSStatus
+MPDelayUntil(AbsoluteTime * expirationTime) ;
+extern OSStatus
+MPCreateTimer(MPTimerID * timerID) ;
+extern OSStatus
+MPDeleteTimer(MPTimerID timerID) ;
+extern OSStatus
+MPSetTimerNotify(
+  MPTimerID timerID,
+  MPOpaqueID anID,
+  void * notifyParam1,
+  void * notifyParam2,
+  void * notifyParam3) ;
+extern OSStatus
+MPArmTimer(
+  MPTimerID timerID,
+  AbsoluteTime * expirationTime,
+  OptionBits options) ;
+extern OSStatus
+MPCancelTimer(
+  MPTimerID timerID,
+  AbsoluteTime * timeRemaining) ;
+enum {
+
+  kMPMaxAllocSize = 1024L * 1024 * 1024
+};
+
+enum {
+
+  kMPAllocateDefaultAligned = 0,
+  kMPAllocate8ByteAligned = 3,
+  kMPAllocate16ByteAligned = 4,
+  kMPAllocate32ByteAligned = 5,
+  kMPAllocate1024ByteAligned = 10,
+  kMPAllocate4096ByteAligned = 12,
+  kMPAllocateMaxAlignment = 16,
+  kMPAllocateAltiVecAligned = kMPAllocate16ByteAligned,
+  kMPAllocateVMXAligned = kMPAllocateAltiVecAligned,
+  kMPAllocateVMPageAligned = 254,
+  kMPAllocateInterlockAligned = 255
+};
+
+
+
+enum {
+
+  kMPAllocateClearMask = 0x0001,
+  kMPAllocateGloballyMask = 0x0002,
+  kMPAllocateResidentMask = 0x0004,
+  kMPAllocateNoGrowthMask = 0x0010,
+  kMPAllocateNoCreateMask = 0x0020
+};
+extern LogicalAddress
+MPAllocateAligned(
+  ByteCount size,
+  UInt8 alignment,
+  OptionBits options) ;
+extern LogicalAddress
+MPAllocate(ByteCount size) ;
+extern void
+MPFree(LogicalAddress object) ;
+extern ByteCount
+MPGetAllocatedBlockSize(LogicalAddress object) ;
+extern void
+MPBlockCopy(
+  LogicalAddress source,
+  LogicalAddress destination,
+  ByteCount size) ;
+extern void
+MPBlockClear(
+  LogicalAddress address,
+  ByteCount size) ;
+extern void
+MPDataToCode(
+  LogicalAddress address,
+  ByteCount size) ;
+enum {
+
+  kMPTaskStateRegisters = 0,
+  kMPTaskStateFPU = 1,
+  kMPTaskStateVectors = 2,
+  kMPTaskStateMachine = 3,
+  kMPTaskState32BitMemoryException = 4,
+  kMPTaskStateTaskInfo = 5
+};
+
+
+
+enum {
+
+  kMPTaskPropagate = 0,
+  kMPTaskResumeStep = 1,
+  kMPTaskResumeBranch = 2,
+  kMPTaskResumeMask = 0x0000,
+  kMPTaskPropagateMask = 1 << kMPTaskPropagate,
+  kMPTaskResumeStepMask = 1 << kMPTaskResumeStep,
+  kMPTaskResumeBranchMask = 1 << kMPTaskResumeBranch
+};
+
+
+
+enum {
+
+  kMPTaskBlocked = 0,
+  kMPTaskReady = 1,
+  kMPTaskRunning = 2
+};
+
+enum {
+
+  kMPTaskInfoVersion = 3
+};
+
+
+struct MPTaskInfoVersion2 {
+  PBVersion version;
+
+  OSType name;
+
+  OSType queueName;
+  UInt16 runState;
+  UInt16 lastCPU;
+  UInt32 weight;
+
+  MPProcessID processID;
+
+  AbsoluteTime cpuTime;
+  AbsoluteTime schedTime;
+  AbsoluteTime creationTime;
+
+  ItemCount codePageFaults;
+  ItemCount dataPageFaults;
+  ItemCount preemptions;
+
+  MPCpuID cpuID;
+};
+typedef struct MPTaskInfoVersion2 MPTaskInfoVersion2;
+struct MPTaskInfo {
+  PBVersion version;
+
+  OSType name;
+
+  OSType queueName;
+  UInt16 runState;
+  UInt16 lastCPU;
+  UInt32 weight;
+
+  MPProcessID processID;
+
+  AbsoluteTime cpuTime;
+  AbsoluteTime schedTime;
+  AbsoluteTime creationTime;
+
+  ItemCount codePageFaults;
+  ItemCount dataPageFaults;
+  ItemCount preemptions;
+
+  MPCpuID cpuID;
+  MPOpaqueID blockedObject;
+  MPAddressSpaceID spaceID;
+
+  LogicalAddress stackBase;
+  LogicalAddress stackLimit;
+  LogicalAddress stackCurr;
+};
+typedef struct MPTaskInfo MPTaskInfo;
+extern OSStatus
+MPSetExceptionHandler(
+  MPTaskID task,
+  MPQueueID exceptionQ) ;
+extern OSStatus
+MPDisposeTaskException(
+  MPTaskID task,
+  OptionBits action) ;
+extern OSStatus
+MPExtractTaskState(
+  MPTaskID task,
+  MPTaskStateKind kind,
+  void * info) ;
+extern OSStatus
+MPSetTaskState(
+  MPTaskID task,
+  MPTaskStateKind kind,
+  void * info) ;
+extern OSStatus
+MPThrowException(
+  MPTaskID task,
+  MPExceptionKind kind) ;
+
+
+
+
+
+
+typedef UInt32 MPDebuggerLevel;
+enum {
+  kMPLowLevelDebugger = 0x00000000,
+  kMPMidLevelDebugger = 0x10000000,
+  kMPHighLevelDebugger = 0x20000000
+};
+extern OSStatus
+MPRegisterDebugger(
+  MPQueueID queue,
+  MPDebuggerLevel level) ;
+extern OSStatus
+MPUnregisterDebugger(MPQueueID queue) ;
+typedef void * ( * MPRemoteProcedure)(void * parameter);
+
+typedef UInt8 MPRemoteContext;
+enum {
+  kMPAnyRemoteContext = 0,
+  kMPOwningProcessRemoteContext = 1,
+  kMPInterruptRemoteContext = 2,
+  kMPAsyncInterruptRemoteContext = 3
+};
+extern void *
+MPRemoteCall(
+  MPRemoteProcedure remoteProc,
+  void * parameter,
+  MPRemoteContext context) ;
+extern Boolean
+_MPIsFullyInitialized(void) ;
+
+
+typedef Boolean ( * MPIsFullyInitializedProc)(void);
+extern void
+_MPLibraryVersion(
+  const char ** versionCString,
+  UInt32 * major,
+  UInt32 * minor,
+  UInt32 * release,
+  UInt32 * revision) ;
+extern Boolean
+_MPLibraryIsCompatible(
+  const char * versionCString,
+  UInt32 major,
+  UInt32 minor,
+  UInt32 release,
+  UInt32 revision) ;
+
+
+}
+extern "C" {
+
+
+enum {
+  kCFragResourceType = 'cfrg',
+  kCFragResourceID = 0,
+  kCFragLibraryFileType = 'shlb',
+  kCFragAllFileTypes = (long)0xFFFFFFFF
+};
+
+
+typedef OSType CFragArchitecture;
+enum {
+
+  kPowerPCCFragArch = 'pwpc',
+  kMotorola68KCFragArch = 'm68k',
+  kAnyCFragArch = 0x3F3F3F3F
+};
+
+
+
+enum {
+  kCompiledCFragArch = kPowerPCCFragArch
+};
+typedef UInt32 CFragVersionNumber;
+enum {
+  kNullCFragVersion = 0,
+  kWildcardCFragVersion = (long)0xFFFFFFFF
+};
+
+
+typedef UInt8 CFragUsage;
+enum {
+
+  kImportLibraryCFrag = 0,
+  kApplicationCFrag = 1,
+  kDropInAdditionCFrag = 2,
+  kStubLibraryCFrag = 3,
+  kWeakStubLibraryCFrag = 4
+};
+
+
+enum {
+  kIsCompleteCFrag = 0,
+  kFirstCFragUpdate = 1
+};
+
+
+enum {
+  kCFragGoesToEOF = 0
+};
+
+
+
+
+typedef UInt8 CFragLocatorKind;
+enum {
+
+  kMemoryCFragLocator = 0,
+  kDataForkCFragLocator = 1,
+  kResourceCFragLocator = 2,
+  kNamedFragmentCFragLocator = 4,
+  kCFBundleCFragLocator = 5,
+  kCFBundlePreCFragLocator = 6
+};
+union CFragUsage1Union {
+  UInt32 appStackSize;
+};
+typedef union CFragUsage1Union CFragUsage1Union;
+union CFragUsage2Union {
+  SInt16 appSubdirID;
+  UInt16 libFlags;
+};
+typedef union CFragUsage2Union CFragUsage2Union;
+enum {
+
+  kCFragLibUsageMapPrivatelyMask = 0x0001
+};
+
+union CFragWhere1Union {
+  UInt32 spaceID;
+};
+typedef union CFragWhere1Union CFragWhere1Union;
+union CFragWhere2Union {
+  UInt16 reserved;
+};
+typedef union CFragWhere2Union CFragWhere2Union;
+enum {
+  kDefaultCFragNameLen = 16
+};
+
+
+struct CFragResourceMember {
+  CFragArchitecture architecture;
+  UInt16 reservedA;
+  UInt8 reservedB;
+  UInt8 updateLevel;
+  CFragVersionNumber currentVersion;
+  CFragVersionNumber oldDefVersion;
+  CFragUsage1Union uUsage1;
+  CFragUsage2Union uUsage2;
+  CFragUsage usage;
+  CFragLocatorKind where;
+  UInt32 offset;
+  UInt32 length;
+  CFragWhere1Union uWhere1;
+  CFragWhere2Union uWhere2;
+  UInt16 extensionCount;
+  UInt16 memberSize;
+  unsigned char name[16];
+};
+typedef struct CFragResourceMember CFragResourceMember;
+typedef CFragResourceMember * CFragResourceMemberPtr;
+struct CFragResourceExtensionHeader {
+  UInt16 extensionKind;
+  UInt16 extensionSize;
+};
+typedef struct CFragResourceExtensionHeader CFragResourceExtensionHeader;
+typedef CFragResourceExtensionHeader * CFragResourceExtensionHeaderPtr;
+struct CFragResourceSearchExtension {
+  CFragResourceExtensionHeader header;
+  OSType libKind;
+  unsigned char qualifiers[1];
+};
+typedef struct CFragResourceSearchExtension CFragResourceSearchExtension;
+typedef CFragResourceSearchExtension * CFragResourceSearchExtensionPtr;
+enum {
+  kCFragResourceSearchExtensionKind = 0x30EE
+};
+
+
+struct CFragResource {
+  UInt32 reservedA;
+  UInt32 reservedB;
+  UInt16 reservedC;
+  UInt16 version;
+  UInt32 reservedD;
+  UInt32 reservedE;
+  UInt32 reservedF;
+  UInt32 reservedG;
+  UInt16 reservedH;
+  UInt16 memberCount;
+  CFragResourceMember firstMember;
+};
+typedef struct CFragResource CFragResource;
+typedef CFragResource * CFragResourcePtr;
+typedef CFragResourcePtr * CFragResourceHandle;
+enum {
+  kCurrCFragResourceVersion = 1
+};
+typedef MPProcessID CFragContextID;
+typedef struct OpaqueCFragConnectionID* CFragConnectionID;
+typedef struct OpaqueCFragClosureID* CFragClosureID;
+typedef struct OpaqueCFragContainerID* CFragContainerID;
+typedef OptionBits CFragLoadOptions;
+enum {
+
+  kReferenceCFrag = 0x0001,
+  kFindCFrag = 0x0002,
+  kPrivateCFragCopy = 0x0005
+};
+
+
+enum {
+  kUnresolvedCFragSymbolAddress = 0
+};
+
+
+typedef UInt8 CFragSymbolClass;
+enum {
+
+  kCodeCFragSymbol = 0,
+  kDataCFragSymbol = 1,
+  kTVectorCFragSymbol = 2,
+  kTOCCFragSymbol = 3,
+  kGlueCFragSymbol = 4
+};
+extern OSErr
+GetSharedLibrary(
+  ConstStr63Param libName,
+  CFragArchitecture archType,
+  CFragLoadOptions options,
+  CFragConnectionID * connID,
+  Ptr * mainAddr,
+  Str255 errMessage) ;
+extern OSErr
+GetDiskFragment(
+  const FSSpec * fileSpec,
+  UInt32 offset,
+  UInt32 length,
+  ConstStr63Param fragName,
+  CFragLoadOptions options,
+  CFragConnectionID * connID,
+  Ptr * mainAddr,
+  Str255 errMessage) ;
+extern OSErr
+GetMemFragment(
+  void * memAddr,
+  UInt32 length,
+  ConstStr63Param fragName,
+  CFragLoadOptions options,
+  CFragConnectionID * connID,
+  Ptr * mainAddr,
+  Str255 errMessage) ;
+extern OSErr
+CloseConnection(CFragConnectionID * connID) ;
+extern OSErr
+FindSymbol(
+  CFragConnectionID connID,
+  ConstStr255Param symName,
+  Ptr * symAddr,
+  CFragSymbolClass * symClass) ;
+extern OSErr
+CountSymbols(
+  CFragConnectionID connID,
+  long * symCount) ;
+extern OSErr
+GetIndSymbol(
+  CFragConnectionID connID,
+  long symIndex,
+  Str255 symName,
+  Ptr * symAddr,
+  CFragSymbolClass * symClass) ;
+struct CFragSystem7MemoryLocator {
+  LogicalAddress address;
+  UInt32 length;
+  Boolean inPlace;
+  UInt8 reservedA;
+  UInt16 reservedB;
+};
+typedef struct CFragSystem7MemoryLocator CFragSystem7MemoryLocator;
+struct CFragSystem7DiskFlatLocator {
+  FSSpec * fileSpec;
+  UInt32 offset;
+  UInt32 length;
+};
+typedef struct CFragSystem7DiskFlatLocator CFragSystem7DiskFlatLocator;
+
+struct CFragSystem7SegmentedLocator {
+  FSSpec * fileSpec;
+  OSType rsrcType;
+  SInt16 rsrcID;
+  UInt16 reservedA;
+};
+typedef struct CFragSystem7SegmentedLocator CFragSystem7SegmentedLocator;
+
+
+
+
+struct CFragCFBundleLocator {
+  CFBundleRef fragmentBundle;
+  UInt32 offset;
+  UInt32 length;
+};
+typedef struct CFragCFBundleLocator CFragCFBundleLocator;
+struct CFragSystem7Locator {
+  SInt32 where;
+  union {
+    CFragSystem7DiskFlatLocator onDisk;
+    CFragSystem7MemoryLocator inMem;
+    CFragSystem7SegmentedLocator inSegs;
+    CFragCFBundleLocator inBundle;
+  } u;
+};
+typedef struct CFragSystem7Locator CFragSystem7Locator;
+typedef CFragSystem7Locator * CFragSystem7LocatorPtr;
+struct CFragSystem7InitBlock {
+  CFragContextID contextID;
+  CFragClosureID closureID;
+  CFragConnectionID connectionID;
+  CFragSystem7Locator fragLocator;
+  StringPtr libName;
+  UInt32 reservedA;
+};
+typedef struct CFragSystem7InitBlock CFragSystem7InitBlock;
+typedef CFragSystem7InitBlock * CFragSystem7InitBlockPtr;
+typedef CFragSystem7InitBlock CFragInitBlock;
+typedef CFragSystem7InitBlockPtr CFragInitBlockPtr;
+
+typedef OSErr ( * CFragInitFunction)(const CFragInitBlock * initBlock);
+typedef void ( * CFragTermProcedure)(void);
+extern OSErr
+ConvertBundlePreLocator(CFragSystem7LocatorPtr initBlockLocator) ;
+enum {
+  kLoadCFrag = kReferenceCFrag
+};
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef UInt32 FSAliasInfoBitmap;
+enum {
+  kFSAliasInfoNone = 0x00000000,
+  kFSAliasInfoVolumeCreateDate = 0x00000001,
+  kFSAliasInfoTargetCreateDate = 0x00000002,
+  kFSAliasInfoFinderInfo = 0x00000004,
+  kFSAliasInfoIsDirectory = 0x00000008,
+  kFSAliasInfoIDs = 0x00000010,
+  kFSAliasInfoFSInfo = 0x00000020,
+  kFSAliasInfoVolumeFlags = 0x00000040
+};
+
+enum {
+  rAliasType = 'alis'
+};
+
+enum {
+
+  kARMMountVol = 0x00000001,
+  kARMNoUI = 0x00000002,
+  kARMMultVols = 0x00000008,
+  kARMSearch = 0x00000100,
+  kARMSearchMore = 0x00000200,
+  kARMSearchRelFirst = 0x00000400,
+  kARMTryFileIDFirst = 0x00000800
+};
+
+enum {
+
+  asiZoneName = -3,
+  asiServerName = -2,
+  asiVolumeName = -1,
+  asiAliasName = 0,
+  asiParentName = 1
+};
+
+
+enum {
+  kResolveAliasFileNoUI = 0x00000001,
+  kResolveAliasTryFileIDFirst = 0x00000002
+};
+
+
+struct AliasRecord {
+  OSType userType;
+  unsigned short aliasSize;
+};
+typedef struct AliasRecord AliasRecord;
+typedef AliasRecord * AliasPtr;
+typedef AliasPtr * AliasHandle;
+
+struct FSAliasInfo {
+  UTCDateTime volumeCreateDate;
+  UTCDateTime targetCreateDate;
+  OSType fileType;
+  OSType fileCreator;
+  UInt32 parentDirID;
+  UInt32 nodeID;
+  UInt16 filesystemID;
+  UInt16 signature;
+  Boolean volumeIsBootVolume;
+  Boolean volumeIsAutomounted;
+  Boolean volumeIsEjectable;
+  Boolean volumeHasPersistentFileIDs;
+  Boolean isDirectory;
+};
+typedef struct FSAliasInfo FSAliasInfo;
+typedef FSAliasInfo * FSAliasInfoPtr;
+
+typedef short AliasInfoType;
+extern OSErr
+NewAlias(
+  const FSSpec * fromFile,
+  const FSSpec * target,
+  AliasHandle * alias) ;
+extern OSErr
+NewAliasMinimal(
+  const FSSpec * target,
+  AliasHandle * alias) ;
+extern OSErr
+NewAliasMinimalFromFullPath(
+  short fullPathLength,
+  const void * fullPath,
+  ConstStr32Param zoneName,
+  ConstStr31Param serverName,
+  AliasHandle * alias) ;
+extern OSErr
+ResolveAlias(
+  const FSSpec * fromFile,
+  AliasHandle alias,
+  FSSpec * target,
+  Boolean * wasChanged) ;
+extern OSErr
+GetAliasInfo(
+  AliasHandle alias,
+  AliasInfoType index,
+  Str63 theString) ;
+extern OSErr
+IsAliasFile(
+  const FSSpec * fileFSSpec,
+  Boolean * aliasFileFlag,
+  Boolean * folderFlag) ;
+extern OSErr
+ResolveAliasWithMountFlags(
+  const FSSpec * fromFile,
+  AliasHandle alias,
+  FSSpec * target,
+  Boolean * wasChanged,
+  unsigned long mountFlags) ;
+extern OSErr
+ResolveAliasFile(
+  FSSpec * theSpec,
+  Boolean resolveAliasChains,
+  Boolean * targetIsFolder,
+  Boolean * wasAliased) ;
+extern OSErr
+ResolveAliasFileWithMountFlags(
+  FSSpec * theSpec,
+  Boolean resolveAliasChains,
+  Boolean * targetIsFolder,
+  Boolean * wasAliased,
+  unsigned long mountFlags) ;
+extern OSErr
+FollowFinderAlias(
+  const FSSpec * fromFile,
+  AliasHandle alias,
+  Boolean logon,
+  FSSpec * target,
+  Boolean * wasChanged) ;
+extern OSErr
+UpdateAlias(
+  const FSSpec * fromFile,
+  const FSSpec * target,
+  AliasHandle alias,
+  Boolean * wasChanged) ;
+
+
+
+typedef Boolean ( * AliasFilterProcPtr)(CInfoPBPtr cpbPtr, Boolean *quitFlag, Ptr myDataPtr);
+typedef AliasFilterProcPtr AliasFilterUPP;
+extern AliasFilterUPP
+NewAliasFilterUPP(AliasFilterProcPtr userRoutine) ;
+extern void
+DisposeAliasFilterUPP(AliasFilterUPP userUPP) ;
+extern Boolean
+InvokeAliasFilterUPP(
+  CInfoPBPtr cpbPtr,
+  Boolean * quitFlag,
+  Ptr myDataPtr,
+  AliasFilterUPP userUPP) ;
+extern OSErr
+MatchAlias(
+  const FSSpec * fromFile,
+  unsigned long rulesMask,
+  AliasHandle alias,
+  short * aliasCount,
+  FSSpecArrayPtr aliasList,
+  Boolean * needsUpdate,
+  AliasFilterUPP aliasFilter,
+  void * yourDataPtr) ;
+extern OSErr
+ResolveAliasFileWithMountFlagsNoUI(
+  FSSpec * theSpec,
+  Boolean resolveAliasChains,
+  Boolean * targetIsFolder,
+  Boolean * wasAliased,
+  unsigned long mountFlags) ;
+extern OSErr
+MatchAliasNoUI(
+  const FSSpec * fromFile,
+  unsigned long rulesMask,
+  AliasHandle alias,
+  short * aliasCount,
+  FSSpecArrayPtr aliasList,
+  Boolean * needsUpdate,
+  AliasFilterUPP aliasFilter,
+  void * yourDataPtr) ;
+extern OSErr
+FSNewAlias(
+  const FSRef * fromFile,
+  const FSRef * target,
+  AliasHandle * inAlias) ;
+extern OSErr
+FSNewAliasMinimal(
+  const FSRef * target,
+  AliasHandle * inAlias) ;
+extern OSErr
+FSIsAliasFile(
+  const FSRef * fileRef,
+  Boolean * aliasFileFlag,
+  Boolean * folderFlag) ;
+extern OSErr
+FSResolveAliasWithMountFlags(
+  const FSRef * fromFile,
+  AliasHandle inAlias,
+  FSRef * target,
+  Boolean * wasChanged,
+  unsigned long mountFlags) ;
+extern OSErr
+FSResolveAlias(
+  const FSRef * fromFile,
+  AliasHandle alias,
+  FSRef * target,
+  Boolean * wasChanged) ;
+extern OSErr
+FSResolveAliasFileWithMountFlags(
+  FSRef * theRef,
+  Boolean resolveAliasChains,
+  Boolean * targetIsFolder,
+  Boolean * wasAliased,
+  unsigned long mountFlags) ;
+extern OSErr
+FSResolveAliasFile(
+  FSRef * theRef,
+  Boolean resolveAliasChains,
+  Boolean * targetIsFolder,
+  Boolean * wasAliased) ;
+extern OSErr
+FSFollowFinderAlias(
+  FSRef * fromFile,
+  AliasHandle alias,
+  Boolean logon,
+  FSRef * target,
+  Boolean * wasChanged) ;
+extern OSErr
+FSUpdateAlias(
+  const FSRef * fromFile,
+  const FSRef * target,
+  AliasHandle alias,
+  Boolean * wasChanged) ;
+extern OSErr
+FSNewAliasUnicode(
+  const FSRef * fromFile,
+  const FSRef * targetParentRef,
+  UniCharCount targetNameLength,
+  const UniChar * targetName,
+  AliasHandle * inAlias,
+  Boolean * isDirectory) ;
+extern OSErr
+FSNewAliasMinimalUnicode(
+  const FSRef * targetParentRef,
+  UniCharCount targetNameLength,
+  const UniChar * targetName,
+  AliasHandle * inAlias,
+  Boolean * isDirectory) ;
+extern OSErr
+FSMatchAlias(
+  const FSRef * fromFile,
+  unsigned long rulesMask,
+  AliasHandle inAlias,
+  short * aliasCount,
+  FSRef * aliasList,
+  Boolean * needsUpdate,
+  AliasFilterUPP aliasFilter,
+  void * yourDataPtr) ;
+extern OSErr
+FSMatchAliasNoUI(
+  const FSRef * fromFile,
+  unsigned long rulesMask,
+  AliasHandle inAlias,
+  short * aliasCount,
+  FSRef * aliasList,
+  Boolean * needsUpdate,
+  AliasFilterUPP aliasFilter,
+  void * yourDataPtr) ;
+extern OSStatus
+FSCopyAliasInfo(
+  AliasHandle inAlias,
+  HFSUniStr255 * targetName,
+  HFSUniStr255 * volumeName,
+  CFStringRef * pathString,
+  FSAliasInfoBitmap * whichInfo,
+  FSAliasInfo * info) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef struct OpaqueLocaleRef* LocaleRef;
+typedef UInt32 LocalePartMask;
+enum {
+
+  kLocaleLanguageMask = 1L << 0,
+  kLocaleLanguageVariantMask = 1L << 1,
+  kLocaleScriptMask = 1L << 2,
+  kLocaleScriptVariantMask = 1L << 3,
+  kLocaleRegionMask = 1L << 4,
+  kLocaleRegionVariantMask = 1L << 5,
+  kLocaleAllPartsMask = 0x0000003F
+};
+
+typedef FourCharCode LocaleOperationClass;
+
+typedef FourCharCode LocaleOperationVariant;
+struct LocaleAndVariant {
+  LocaleRef locale;
+  LocaleOperationVariant opVariant;
+};
+typedef struct LocaleAndVariant LocaleAndVariant;
+
+typedef UInt32 LocaleNameMask;
+enum {
+
+  kLocaleNameMask = 1L << 0,
+  kLocaleOperationVariantNameMask = 1L << 1,
+  kLocaleAndVariantNameMask = 0x00000003
+};
+extern OSStatus
+LocaleRefFromLangOrRegionCode(
+  LangCode lang,
+  RegionCode region,
+  LocaleRef * locale) ;
+extern OSStatus
+LocaleRefFromLocaleString(
+  const char localeString[],
+  LocaleRef * locale) ;
+extern OSStatus
+LocaleRefGetPartString(
+  LocaleRef locale,
+  LocalePartMask partMask,
+  ByteCount maxStringLen,
+  char partString[]) ;
+extern OSStatus
+LocaleStringToLangAndRegionCodes(
+  const char localeString[],
+  LangCode * lang,
+  RegionCode * region) ;
+extern OSStatus
+LocaleOperationCountLocales(
+  LocaleOperationClass opClass,
+  ItemCount * localeCount) ;
+extern OSStatus
+LocaleOperationGetLocales(
+  LocaleOperationClass opClass,
+  ItemCount maxLocaleCount,
+  ItemCount * actualLocaleCount,
+  LocaleAndVariant localeVariantList[]) ;
+extern OSStatus
+LocaleGetName(
+  LocaleRef locale,
+  LocaleOperationVariant opVariant,
+  LocaleNameMask nameMask,
+  LocaleRef displayLocale,
+  UniCharCount maxNameLen,
+  UniCharCount * actualNameLen,
+  UniChar displayName[]) ;
+extern OSStatus
+LocaleCountNames(
+  LocaleRef locale,
+  LocaleOperationVariant opVariant,
+  LocaleNameMask nameMask,
+  ItemCount * nameCount) ;
+extern OSStatus
+LocaleGetIndName(
+  LocaleRef locale,
+  LocaleOperationVariant opVariant,
+  LocaleNameMask nameMask,
+  ItemCount nameIndex,
+  UniCharCount maxNameLen,
+  UniCharCount * actualNameLen,
+  UniChar displayName[],
+  LocaleRef * displayLocale) ;
+extern OSStatus
+LocaleGetRegionLanguageName(
+  RegionCode region,
+  Str255 languageName) ;
+extern OSStatus
+LocaleOperationGetName(
+  LocaleOperationClass opClass,
+  LocaleRef displayLocale,
+  UniCharCount maxNameLen,
+  UniCharCount * actualNameLen,
+  UniChar displayName[]) ;
+extern OSStatus
+LocaleOperationCountNames(
+  LocaleOperationClass opClass,
+  ItemCount * nameCount) ;
+extern OSStatus
+LocaleOperationGetIndName(
+  LocaleOperationClass opClass,
+  ItemCount nameIndex,
+  UniCharCount maxNameLen,
+  UniCharCount * actualNameLen,
+  UniChar displayName[],
+  LocaleRef * displayLocale) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+  kBlessedBusErrorBait = 0x68F168F1
+};
+extern void
+DebugAssert(
+  OSType componentSignature,
+  UInt32 options,
+  const char * assertionString,
+  const char * exceptionLabelString,
+  const char * errorString,
+  const char * fileName,
+  long lineNumber,
+  void * value) ;
+
+
+
+
+
+enum {
+  k68kInterruptLevelMask = 0x00000007,
+  kInVBLTaskMask = 0x00000010,
+  kInDeferredTaskMask = 0x00000020,
+  kInSecondaryIntHandlerMask = 0x00000040,
+  kInNestedInterruptMask = 0x00000080
+};
+extern UInt32
+TaskLevel(void) ;
+
+
+
+
+
+enum {
+  kComponentDebugOption = 0
+};
+
+enum {
+  kGetDebugOption = 1,
+  kSetDebugOption = 2
+};
+typedef void ( * DebugComponentCallbackProcPtr)(SInt32 optionSelectorNum, UInt32 command, Boolean *optionSetting);
+typedef DebugComponentCallbackProcPtr DebugComponentCallbackUPP;
+extern OSStatus
+NewDebugComponent(
+  OSType componentSignature,
+  ConstStr255Param componentName,
+  DebugComponentCallbackUPP componentCallback) ;
+extern OSStatus
+NewDebugOption(
+  OSType componentSignature,
+  SInt32 optionSelectorNum,
+  ConstStr255Param optionName) ;
+extern OSStatus
+DisposeDebugComponent(OSType componentSignature) ;
+extern OSStatus
+GetDebugComponentInfo(
+  UInt32 index,
+  OSType * componentSignature,
+  Str255 componentName) ;
+extern OSStatus
+GetDebugOptionInfo(
+  UInt32 index,
+  OSType componentSignature,
+  SInt32 * optionSelectorNum,
+  Str255 optionName,
+  Boolean * optionSetting) ;
+extern OSStatus
+SetDebugOptionValue(
+  OSType componentSignature,
+  SInt32 optionSelectorNum,
+  Boolean newOptionSetting) ;
+typedef void ( * DebugAssertOutputHandlerProcPtr)(OSType componentSignature, UInt32 options, const char *assertionString, const char *exceptionLabelString, const char *errorString, const char *fileName, long lineNumber, void *value, ConstStr255Param outputMsg);
+typedef DebugAssertOutputHandlerProcPtr DebugAssertOutputHandlerUPP;
+extern void
+InstallDebugAssertOutputHandler(DebugAssertOutputHandlerUPP handler) ;
+extern DebugComponentCallbackUPP
+NewDebugComponentCallbackUPP(DebugComponentCallbackProcPtr userRoutine) ;
+extern DebugAssertOutputHandlerUPP
+NewDebugAssertOutputHandlerUPP(DebugAssertOutputHandlerProcPtr userRoutine) ;
+extern void
+DisposeDebugComponentCallbackUPP(DebugComponentCallbackUPP userUPP) ;
+extern void
+DisposeDebugAssertOutputHandlerUPP(DebugAssertOutputHandlerUPP userUPP) ;
+extern void
+InvokeDebugComponentCallbackUPP(
+  SInt32 optionSelectorNum,
+  UInt32 command,
+  Boolean * optionSetting,
+  DebugComponentCallbackUPP userUPP) ;
+extern void
+InvokeDebugAssertOutputHandlerUPP(
+  OSType componentSignature,
+  UInt32 options,
+  const char * assertionString,
+  const char * exceptionLabelString,
+  const char * errorString,
+  const char * fileName,
+  long lineNumber,
+  void * value,
+  ConstStr255Param outputMsg,
+  DebugAssertOutputHandlerUPP userUPP) ;
+
+
+
+}
+
+
+
+extern "C" {
+extern short
+PLstrcmp(
+  ConstStr255Param str1,
+  ConstStr255Param str2) ;
+extern short
+PLstrncmp(
+  ConstStr255Param str1,
+  ConstStr255Param str2,
+  short num) ;
+extern StringPtr
+PLstrcpy(
+  StringPtr str1,
+  ConstStr255Param str2) ;
+extern StringPtr
+PLstrncpy(
+  StringPtr str1,
+  ConstStr255Param str2,
+  short num) ;
+extern StringPtr
+PLstrcat(
+  StringPtr str1,
+  ConstStr255Param str2) ;
+extern StringPtr
+PLstrncat(
+  StringPtr str1,
+  ConstStr255Param str2,
+  short num) ;
+extern Ptr
+PLstrchr(
+  ConstStr255Param str1,
+  short ch1) ;
+extern Ptr
+PLstrrchr(
+  ConstStr255Param str1,
+  short ch1) ;
+extern Ptr
+PLstrpbrk(
+  ConstStr255Param str1,
+  ConstStr255Param str2) ;
+extern short
+PLstrspn(
+  ConstStr255Param str1,
+  ConstStr255Param str2) ;
+extern Ptr
+PLstrstr(
+  ConstStr255Param str1,
+  ConstStr255Param str2) ;
+extern short
+PLstrlen(ConstStr255Param str) ;
+extern short
+PLpos(
+  ConstStr255Param str1,
+  ConstStr255Param str2) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+extern Boolean
+CompareAndSwap(
+  UInt32 oldVvalue,
+  UInt32 newValue,
+  UInt32 * OldValueAdr) ;
+extern Boolean
+TestAndClear(
+  UInt32 bit,
+  UInt8 * startAddress) ;
+extern Boolean
+TestAndSet(
+  UInt32 bit,
+  UInt8 * startAddress) ;
+extern SInt8
+IncrementAtomic8(SInt8 * value) ;
+extern SInt8
+DecrementAtomic8(SInt8 * value) ;
+extern SInt8
+AddAtomic8(
+  SInt32 amount,
+  SInt8 * value) ;
+extern UInt8
+BitAndAtomic8(
+  UInt32 mask,
+  UInt8 * value) ;
+extern UInt8
+BitOrAtomic8(
+  UInt32 mask,
+  UInt8 * value) ;
+extern UInt8
+BitXorAtomic8(
+  UInt32 mask,
+  UInt8 * value) ;
+extern SInt16
+IncrementAtomic16(SInt16 * value) ;
+extern SInt16
+DecrementAtomic16(SInt16 * value) ;
+extern SInt16
+AddAtomic16(
+  SInt32 amount,
+  SInt16 * value) ;
+extern UInt16
+BitAndAtomic16(
+  UInt32 mask,
+  UInt16 * value) ;
+extern UInt16
+BitOrAtomic16(
+  UInt32 mask,
+  UInt16 * value) ;
+extern UInt16
+BitXorAtomic16(
+  UInt32 mask,
+  UInt16 * value) ;
+extern SInt32
+IncrementAtomic(SInt32 * value) ;
+extern SInt32
+DecrementAtomic(SInt32 * value) ;
+extern SInt32
+AddAtomic(
+  SInt32 amount,
+  SInt32 * value) ;
+extern UInt32
+BitAndAtomic(
+  UInt32 mask,
+  UInt32 * value) ;
+extern UInt32
+BitOrAtomic(
+  UInt32 mask,
+  UInt32 * value) ;
+extern UInt32
+BitXorAtomic(
+  UInt32 mask,
+  UInt32 * value) ;
+
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+
+typedef void * RegPropertyValue;
+
+typedef UInt32 RegPropertyValueSize;
+
+
+
+
+
+typedef struct OpaqueDeviceNodePtr* DeviceNodePtr;
+struct RegEntryID {
+  unsigned short es_ver;
+  unsigned short es_gen;
+  DeviceNodePtr es_devid;
+  unsigned long es_spare1;
+  unsigned long es_spare2;
+};
+typedef struct RegEntryID RegEntryID;
+typedef RegEntryID * RegEntryIDPtr;
+
+
+
+
+typedef RegEntryID RegEntryRef;
+enum {
+  kRegCStrMaxEntryNameLength = 47
+};
+
+
+typedef char RegCStrEntryName;
+typedef char * RegCStrEntryNamePtr;
+
+typedef char RegCStrEntryNameBuf[48];
+typedef char RegCStrPathName;
+typedef UInt32 RegPathNameSize;
+enum {
+  kRegPathNameSeparator = ':',
+  kRegEntryNameTerminator = 0x00,
+  kRegPathNameTerminator = 0x00
+};
+
+
+
+
+
+
+enum {
+  kRegMaximumPropertyNameLength = 31,
+  kRegPropertyNameTerminator = 0x00
+};
+
+typedef char RegPropertyNameBuf[32];
+typedef char RegPropertyName;
+typedef char * RegPropertyNamePtr;
+enum {
+  kRegMaxPropertyNameLength = kRegMaximumPropertyNameLength
+};
+
+
+
+
+
+
+
+typedef UInt32 RegIterationOp;
+typedef RegIterationOp RegEntryIterationOp;
+enum {
+
+  kRegIterRoot = 0x00000002,
+  kRegIterParents = 0x00000003,
+
+  kRegIterChildren = 0x00000004,
+  kRegIterSubTrees = 0x00000005,
+  kRegIterDescendants = 0x00000005,
+
+  kRegIterSibling = 0x00000006,
+
+  kRegIterContinue = 0x00000001
+};
+typedef UInt32 RegModifiers;
+typedef RegModifiers RegEntryModifiers;
+typedef RegModifiers RegPropertyModifiers;
+enum {
+  kRegNoModifiers = 0x00000000,
+  kRegUniversalModifierMask = 0x0000FFFF,
+  kRegNameSpaceModifierMask = 0x00FF0000,
+  kRegModifierMask = (long)0xFF000000
+};
+
+
+enum {
+  kRegPropertyValueIsSavedToNVRAM = 0x00000020,
+  kRegPropertyValueIsSavedToDisk = 0x00000040
+};
+
+
+enum {
+  LatestNR_PEFVersion = 0x01030000
+};
+
+
+
+
+
+
+
+enum {
+  kSelectRegistryEntryIDInit = 0,
+  kSelectRegistryEntryIDCompare = 1,
+  kSelectRegistryEntryIDCopy = 2,
+  kSelectRegistryEntryIDDispose = 3,
+  kSelectRegistryCStrEntryCreate = 4,
+  kSelectRegistryEntryDelete = 5,
+  kSelectRegistryEntryCopy = 6,
+  kSelectRegistryEntryIterateCreate = 7,
+  kSelectRegistryEntryIterateDispose = 8,
+  kSelectRegistryEntryIterateSet = 9,
+  kSelectRegistryEntryIterate = 10,
+  kSelectRegistryEntrySearch = 11,
+  kSelectRegistryCStrEntryLookup = 12,
+  kSelectRegistryEntryToPathSize = 13,
+  kSelectRegistryCStrEntryToPath = 14,
+  kSelectRegistryCStrEntryToName = 15,
+  kSelectRegistryPropertyCreate = 16,
+  kSelectRegistryPropertyDelete = 17,
+  kSelectRegistryPropertyRename = 18,
+  kSelectRegistryPropertyIterateCreate = 19,
+  kSelectRegistryPropertyIterateDispose = 20,
+  kSelectRegistryPropertyIterate = 21,
+  kSelectRegistryPropertyGetSize = 22,
+  kSelectRegistryPropertyGet = 23,
+  kSelectRegistryPropertySet = 24,
+  kSelectRegistryEntryGetMod = 25,
+  kSelectRegistryEntrySetMod = 26,
+  kSelectRegistryPropertyGetMod = 27,
+  kSelectRegistryPropertySetMod = 28,
+  kSelectRegistryEntryMod = 29,
+  kSelectRegistryEntryPropertyMod = 30,
+  kSelectRegistryHighestSelector = kSelectRegistryEntryPropertyMod
+};
+typedef struct OpaqueRegEntryIter* RegEntryIter;
+typedef struct OpaqueRegPropertyIter* RegPropertyIter;
+extern "C" {
+
+
+
+
+enum {
+  chooserInitMsg = 11,
+  newSelMsg = 12,
+  fillListMsg = 13,
+  getSelMsg = 14,
+  selectMsg = 15,
+  deselectMsg = 16,
+  terminateMsg = 17,
+  buttonMsg = 19
+};
+
+
+
+enum {
+  chooserID = 1
+};
+
+
+
+enum {
+  initMsg = 1,
+  okMsg = 2,
+  cancelMsg = 3,
+  hitMsg = 4,
+  nulMsg = 5,
+  updateMsg = 6,
+  activateMsg = 7,
+  deactivateMsg = 8,
+  keyEvtMsg = 9,
+  superMsg = 10,
+  normalMsg = 11,
+  startupMsg = 12
+};
+
+
+
+enum {
+  goodbye = -1,
+  killCode = 1,
+  accEvent = 64,
+  accRun = 65,
+  accCursor = 66,
+  accMenu = 67,
+  accUndo = 68,
+  accCut = 70,
+  accCopy = 71,
+  accPaste = 72,
+  accClear = 73
+};
+
+
+
+
+
+enum {
+  ioInProgress = 1,
+  aRdCmd = 2,
+  aWrCmd = 3,
+  asyncTrpBit = 10,
+  noQueueBit = 9
+};
+
+
+enum {
+  dReadEnable = 0,
+  dWritEnable = 1,
+  dCtlEnable = 2,
+  dStatEnable = 3,
+  dNeedGoodBye = 4,
+  dNeedTime = 5,
+  dNeedLock = 6
+};
+
+enum {
+  dNeedLockMask = 0x4000,
+  dNeedTimeMask = 0x2000,
+  dNeedGoodByeMask = 0x1000,
+  dStatEnableMask = 0x0800,
+  dCtlEnableMask = 0x0400,
+  dWritEnableMask = 0x0200,
+  dReadEnableMask = 0x0100
+};
+
+
+
+enum {
+  dVMImmuneBit = 0,
+  dOpened = 5,
+  dRAMBased = 6,
+  drvrActive = 7
+};
+
+enum {
+  dVMImmuneMask = 0x0001,
+  dOpenedMask = 0x0020,
+  dRAMBasedMask = 0x0040,
+  drvrActiveMask = 0x0080
+};
+
+struct DRVRHeader {
+  short drvrFlags;
+  short drvrDelay;
+  short drvrEMask;
+  short drvrMenu;
+  short drvrOpen;
+  short drvrPrime;
+  short drvrCtl;
+  short drvrStatus;
+  short drvrClose;
+  unsigned char drvrName[1];
+};
+typedef struct DRVRHeader DRVRHeader;
+typedef DRVRHeader * DRVRHeaderPtr;
+typedef DRVRHeaderPtr * DRVRHeaderHandle;
+
+typedef UInt16 UnitNumber;
+typedef UInt32 DriverOpenCount;
+typedef SInt16 DriverRefNum;
+typedef SInt16 DriverFlags;
+typedef UInt32 IOCommandCode;
+enum {
+  kOpenCommand = 0,
+  kCloseCommand = 1,
+  kReadCommand = 2,
+  kWriteCommand = 3,
+  kControlCommand = 4,
+  kStatusCommand = 5,
+  kKillIOCommand = 6,
+  kInitializeCommand = 7,
+  kFinalizeCommand = 8,
+  kReplaceCommand = 9,
+  kSupersededCommand = 10,
+  kSuspendCommand = 11,
+  kResumeCommand = 12
+};
+
+enum {
+
+  kPowerManagementCommand = 13
+};
+
+typedef MPAddressSpaceID AddressSpaceID;
+typedef struct OpaqueIOCommandID* IOCommandID;
+extern OSErr
+PBCloseSync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBCloseAsync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBReadSync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBReadAsync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBWriteSync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBWriteAsync(ParmBlkPtr paramBlock) ;
+extern OSErr
+PBWaitIOComplete(
+  ParmBlkPtr paramBlock,
+  Duration timeout) ;
+typedef OSStatus ( * ShimEntryPoint)(Ptr paramBlock, Ptr refcon);
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+typedef struct OpaqueAreaID* AreaID;
+
+struct MachineInformationPowerPC {
+  UnsignedWide CTR;
+  UnsignedWide LR;
+  UnsignedWide PC;
+  unsigned long CR;
+  unsigned long XER;
+  unsigned long MSR;
+  unsigned long MQ;
+  unsigned long ExceptKind;
+  unsigned long DSISR;
+  UnsignedWide DAR;
+  UnsignedWide Reserved;
+};
+typedef struct MachineInformationPowerPC MachineInformationPowerPC;
+struct RegisterInformationPowerPC {
+  UnsignedWide R0;
+  UnsignedWide R1;
+  UnsignedWide R2;
+  UnsignedWide R3;
+  UnsignedWide R4;
+  UnsignedWide R5;
+  UnsignedWide R6;
+  UnsignedWide R7;
+  UnsignedWide R8;
+  UnsignedWide R9;
+  UnsignedWide R10;
+  UnsignedWide R11;
+  UnsignedWide R12;
+  UnsignedWide R13;
+  UnsignedWide R14;
+  UnsignedWide R15;
+  UnsignedWide R16;
+  UnsignedWide R17;
+  UnsignedWide R18;
+  UnsignedWide R19;
+  UnsignedWide R20;
+  UnsignedWide R21;
+  UnsignedWide R22;
+  UnsignedWide R23;
+  UnsignedWide R24;
+  UnsignedWide R25;
+  UnsignedWide R26;
+  UnsignedWide R27;
+  UnsignedWide R28;
+  UnsignedWide R29;
+  UnsignedWide R30;
+  UnsignedWide R31;
+};
+typedef struct RegisterInformationPowerPC RegisterInformationPowerPC;
+struct FPUInformationPowerPC {
+  UnsignedWide Registers[32];
+  unsigned long FPSCR;
+  unsigned long Reserved;
+};
+typedef struct FPUInformationPowerPC FPUInformationPowerPC;
+union Vector128 {
+
+
+
+  unsigned long l[4];
+  unsigned short s[8];
+  unsigned char c[16];
+};
+typedef union Vector128 Vector128;
+struct VectorInformationPowerPC {
+  Vector128 Registers[32];
+  Vector128 VSCR;
+  UInt32 VRsave;
+};
+typedef struct VectorInformationPowerPC VectorInformationPowerPC;
+
+enum {
+  kWriteReference = 0,
+  kReadReference = 1,
+  kFetchReference = 2,
+  writeReference = kWriteReference,
+  readReference = kReadReference,
+  fetchReference = kFetchReference
+};
+
+
+typedef unsigned long MemoryReferenceKind;
+struct MemoryExceptionInformation {
+  AreaID theArea;
+  LogicalAddress theAddress;
+  OSStatus theError;
+  MemoryReferenceKind theReference;
+};
+typedef struct MemoryExceptionInformation MemoryExceptionInformation;
+enum {
+  kUnknownException = 0,
+  kIllegalInstructionException = 1,
+  kTrapException = 2,
+  kAccessException = 3,
+  kUnmappedMemoryException = 4,
+  kExcludedMemoryException = 5,
+  kReadOnlyMemoryException = 6,
+  kUnresolvablePageFaultException = 7,
+  kPrivilegeViolationException = 8,
+  kTraceException = 9,
+  kInstructionBreakpointException = 10,
+  kDataBreakpointException = 11,
+  kIntegerException = 12,
+  kFloatingPointException = 13,
+  kStackOverflowException = 14,
+  kTaskTerminationException = 15,
+  kTaskCreationException = 16,
+  kDataAlignmentException = 17
+};
+typedef unsigned long ExceptionKind;
+union ExceptionInfo {
+  MemoryExceptionInformation * memoryInfo;
+};
+typedef union ExceptionInfo ExceptionInfo;
+struct ExceptionInformationPowerPC {
+  ExceptionKind theKind;
+  MachineInformationPowerPC * machineState;
+  RegisterInformationPowerPC * registerImage;
+  FPUInformationPowerPC * FPUImage;
+  ExceptionInfo info;
+  VectorInformationPowerPC * vectorImage;
+};
+typedef struct ExceptionInformationPowerPC ExceptionInformationPowerPC;
+
+typedef ExceptionInformationPowerPC ExceptionInformation;
+typedef MachineInformationPowerPC MachineInformation;
+typedef RegisterInformationPowerPC RegisterInformation;
+typedef FPUInformationPowerPC FPUInformation;
+typedef VectorInformationPowerPC VectorInformation;
+typedef OSStatus ( * ExceptionHandlerProcPtr)(ExceptionInformation * theException);
+typedef ExceptionHandlerProcPtr ExceptionHandlerUPP;
+extern ExceptionHandlerUPP
+NewExceptionHandlerUPP(ExceptionHandlerProcPtr userRoutine) ;
+extern void
+DisposeExceptionHandlerUPP(ExceptionHandlerUPP userUPP) ;
+extern OSStatus
+InvokeExceptionHandlerUPP(
+  ExceptionInformation * theException,
+  ExceptionHandlerUPP userUPP) ;
+typedef ExceptionHandlerUPP ExceptionHandlerTPP;
+typedef ExceptionHandlerTPP ExceptionHandler;
+extern ExceptionHandlerTPP InstallExceptionHandler(ExceptionHandlerTPP theHandler) ;
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+
+
+
+
+
+
+typedef struct OpaqueIOPreparationID* IOPreparationID;
+typedef struct OpaqueSoftwareInterruptID* SoftwareInterruptID;
+typedef struct OpaqueTaskID* TaskID;
+typedef struct OpaqueTimerID* TimerID;
+
+typedef UInt32 ExecutionLevel;
+enum {
+  kTaskLevel = 0,
+  kSoftwareInterruptLevel = 1,
+  kAcceptFunctionLevel = 2,
+  kKernelLevel = 3,
+  kSIHAcceptFunctionLevel = 4,
+  kSecondaryInterruptLevel = 5,
+  kHardwareInterruptLevel = 6,
+  kMPTaskLevel = 7
+};
+
+typedef void ( * SoftwareInterruptHandler)(void *p1, void *p2);
+typedef OSStatus ( * SecondaryInterruptHandler2)(void *p1, void *p2);
+
+
+struct LogicalAddressRange {
+  LogicalAddress address;
+  ByteCount count;
+};
+typedef struct LogicalAddressRange LogicalAddressRange;
+typedef LogicalAddressRange * LogicalAddressRangePtr;
+struct PhysicalAddressRange {
+  PhysicalAddress address;
+  ByteCount count;
+};
+typedef struct PhysicalAddressRange PhysicalAddressRange;
+typedef PhysicalAddressRange * PhysicalAddressRangePtr;
+
+typedef OptionBits IOPreparationOptions;
+enum {
+  kIOMultipleRanges = 0x00000001,
+  kIOLogicalRanges = 0x00000002,
+  kIOMinimalLogicalMapping = 0x00000004,
+  kIOShareMappingTables = 0x00000008,
+  kIOIsInput = 0x00000010,
+  kIOIsOutput = 0x00000020,
+  kIOCoherentDataPath = 0x00000040,
+  kIOTransferIsLogical = 0x00000080,
+  kIOClientIsUserMode = 0x00000080
+};
+
+typedef OptionBits IOPreparationState;
+enum {
+  kIOStateDone = 0x00000001
+};
+
+enum {
+  kInvalidPageAddress = (-1)
+};
+
+struct AddressRange {
+  void * base;
+  ByteCount length;
+};
+typedef struct AddressRange AddressRange;
+
+
+typedef LogicalAddress * LogicalMappingTablePtr;
+typedef PhysicalAddress * PhysicalMappingTablePtr;
+typedef AddressRange * AddressRangeTablePtr;
+struct MultipleAddressRange {
+  ItemCount entryCount;
+  AddressRangeTablePtr rangeTable;
+};
+typedef struct MultipleAddressRange MultipleAddressRange;
+
+
+
+
+struct IOPreparationTable {
+  IOPreparationOptions options;
+  IOPreparationState state;
+  IOPreparationID preparationID;
+  AddressSpaceID addressSpace;
+  ByteCount granularity;
+  ByteCount firstPrepared;
+  ByteCount lengthPrepared;
+  ItemCount mappingEntryCount;
+  LogicalMappingTablePtr logicalMapping;
+  PhysicalMappingTablePtr physicalMapping;
+  union {
+    AddressRange range;
+    MultipleAddressRange multipleRanges;
+  } rangeInfo;
+};
+typedef struct IOPreparationTable IOPreparationTable;
+
+typedef OptionBits IOCheckpointOptions;
+enum {
+  kNextIOIsInput = 0x00000001,
+  kNextIOIsOutput = 0x00000002,
+  kMoreIOTransfers = 0x00000004
+};
+
+
+
+typedef UInt32 ProcessorCacheMode;
+enum {
+  kProcessorCacheModeDefault = 0,
+  kProcessorCacheModeInhibited = 1,
+  kProcessorCacheModeWriteThrough = 2,
+  kProcessorCacheModeCopyBack = 3
+};
+
+
+
+
+
+
+enum {
+  kPageInformationVersion = 1
+};
+
+typedef UInt32 PageStateInformation;
+enum {
+  kPageIsProtected = 0x00000001,
+  kPageIsProtectedPrivileged = 0x00000002,
+  kPageIsModified = 0x00000004,
+  kPageIsReferenced = 0x00000008,
+  kPageIsLockedResident = 0x00000010,
+  kPageIsInMemory = 0x00000020,
+  kPageIsShared = 0x00000040,
+  kPageIsWriteThroughCached = 0x00000080,
+  kPageIsCopyBackCached = 0x00000100,
+  kPageIsHeldResident = 0x00000200,
+  kPageIsLocked = kPageIsLockedResident,
+  kPageIsResident = kPageIsInMemory
+};
+
+struct PageInformation {
+  AreaID area;
+  ItemCount count;
+  PageStateInformation information[1];
+};
+typedef struct PageInformation PageInformation;
+typedef PageInformation * PageInformationPtr;
+typedef LogicalAddress * DeviceLogicalAddressPtr;
+enum {
+  durationMicrosecond = -1L,
+  durationMillisecond = 1L,
+  durationSecond = 1000L,
+  durationMinute = 60000L,
+  durationHour = 3600000L,
+  durationDay = 86400000L,
+  durationNoWait = 0L,
+  durationForever = 0x7FFFFFFF
+};
+
+enum {
+  k8BitAccess = 0,
+  k16BitAccess = 1,
+  k32BitAccess = 2
+};
+
+typedef UnsignedWide Nanoseconds;
+extern AbsoluteTime
+UpTime(void) ;
+extern Nanoseconds
+AbsoluteToNanoseconds(AbsoluteTime absoluteTime) ;
+extern Duration
+AbsoluteToDuration(AbsoluteTime absoluteTime) ;
+extern AbsoluteTime
+NanosecondsToAbsolute(Nanoseconds nanoseconds) ;
+extern AbsoluteTime
+DurationToAbsolute(Duration duration) ;
+extern AbsoluteTime
+AddAbsoluteToAbsolute(
+  AbsoluteTime absoluteTime1,
+  AbsoluteTime absoluteTime2) ;
+extern AbsoluteTime
+SubAbsoluteFromAbsolute(
+  AbsoluteTime leftAbsoluteTime,
+  AbsoluteTime rightAbsoluteTime) ;
+extern AbsoluteTime
+AddNanosecondsToAbsolute(
+  Nanoseconds nanoseconds,
+  AbsoluteTime absoluteTime) ;
+extern AbsoluteTime
+AddDurationToAbsolute(
+  Duration duration,
+  AbsoluteTime absoluteTime) ;
+extern AbsoluteTime
+SubNanosecondsFromAbsolute(
+  Nanoseconds nanoseconds,
+  AbsoluteTime absoluteTime) ;
+extern AbsoluteTime
+SubDurationFromAbsolute(
+  Duration duration,
+  AbsoluteTime absoluteTime) ;
+extern Nanoseconds
+AbsoluteDeltaToNanoseconds(
+  AbsoluteTime leftAbsoluteTime,
+  AbsoluteTime rightAbsoluteTime) ;
+extern Duration
+AbsoluteDeltaToDuration(
+  AbsoluteTime leftAbsoluteTime,
+  AbsoluteTime rightAbsoluteTime) ;
+extern Nanoseconds
+DurationToNanoseconds(Duration theDuration) ;
+extern Duration
+NanosecondsToDuration(Nanoseconds theNanoseconds) ;
+typedef struct OpaqueInterruptSetID* InterruptSetID;
+typedef long InterruptMemberNumber;
+struct InterruptSetMember {
+  InterruptSetID setID;
+  InterruptMemberNumber member;
+};
+typedef struct InterruptSetMember InterruptSetMember;
+enum {
+  kISTChipInterruptSource = 0,
+  kISTOutputDMAInterruptSource = 1,
+  kISTInputDMAInterruptSource = 2,
+  kISTPropertyMemberCount = 3
+};
+
+typedef InterruptSetMember ISTProperty[3];
+
+
+typedef long InterruptReturnValue;
+enum {
+  kFirstMemberNumber = 1,
+  kIsrIsComplete = 0,
+  kIsrIsNotComplete = -1,
+  kMemberNumberParent = -2
+};
+
+typedef Boolean InterruptSourceState;
+enum {
+  kSourceWasEnabled = true,
+  kSourceWasDisabled = false
+};
+
+
+typedef InterruptMemberNumber ( * InterruptHandler)(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
+typedef void ( * InterruptEnabler)(InterruptSetMember ISTmember, void *refCon);
+typedef InterruptSourceState ( * InterruptDisabler)(InterruptSetMember ISTmember, void *refCon);
+enum {
+  kReturnToParentWhenComplete = 0x00000001,
+  kReturnToParentWhenNotComplete = 0x00000002
+};
+
+typedef OptionBits InterruptSetOptions;
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+struct NumFormatString {
+  UInt8 fLength;
+  UInt8 fVersion;
+  char data[254];
+};
+typedef struct NumFormatString NumFormatString;
+typedef NumFormatString NumFormatStringRec;
+typedef short FormatStatus;
+enum {
+  fVNumber = 0
+};
+
+typedef SInt8 FormatClass;
+enum {
+  fPositive = 0,
+  fNegative = 1,
+  fZero = 2
+};
+
+typedef SInt8 FormatResultType;
+enum {
+  fFormatOK = 0,
+  fBestGuess = 1,
+  fOutOfSynch = 2,
+  fSpuriousChars = 3,
+  fMissingDelimiter = 4,
+  fExtraDecimal = 5,
+  fMissingLiteral = 6,
+  fExtraExp = 7,
+  fFormatOverflow = 8,
+  fFormStrIsNAN = 9,
+  fBadPartsTable = 10,
+  fExtraPercent = 11,
+  fExtraSeparator = 12,
+  fEmptyFormatString = 13
+};
+
+struct FVector {
+  short start;
+  short length;
+};
+typedef struct FVector FVector;
+
+typedef FVector TripleInt[3];
+extern void
+StringToNum(
+  ConstStr255Param theString,
+  long * theNum) ;
+extern void
+NumToString(
+  long theNum,
+  Str255 theString) ;
+extern FormatStatus
+ExtendedToString(
+  const extended80 * x,
+  const NumFormatString * myCanonical,
+  const NumberParts * partsTable,
+  Str255 outString) ;
+extern FormatStatus
+StringToExtended(
+  ConstStr255Param source,
+  const NumFormatString * myCanonical,
+  const NumberParts * partsTable,
+  extended80 * x) ;
+extern FormatStatus
+StringToFormatRec(
+  ConstStr255Param inString,
+  const NumberParts * partsTable,
+  NumFormatString * outString) ;
+extern FormatStatus
+FormatRecToString(
+  const NumFormatString * myCanonical,
+  const NumberParts * partsTable,
+  Str255 outString,
+  TripleInt positions) ;
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+enum {
+
+  systemCurLang = -2,
+  systemDefLang = -3,
+  currentCurLang = -4,
+  currentDefLang = -5,
+  scriptCurLang = -6,
+  scriptDefLang = -7
+};
+
+
+enum {
+  iuSystemCurLang = systemCurLang,
+  iuSystemDefLang = systemDefLang,
+  iuCurrentCurLang = currentCurLang,
+  iuCurrentDefLang = currentDefLang,
+  iuScriptCurLang = scriptCurLang,
+  iuScriptDefLang = scriptDefLang
+};
+extern short
+ReplaceText(
+  Handle baseText,
+  Handle substitutionText,
+  Str15 key) ;
+extern short
+ScriptOrder(
+  ScriptCode script1,
+  ScriptCode script2) ;
+extern short
+CompareString(
+  ConstStr255Param aStr,
+  ConstStr255Param bStr,
+  Handle itl2Handle) ;
+extern short
+IdenticalString(
+  ConstStr255Param aStr,
+  ConstStr255Param bStr,
+  Handle itl2Handle) ;
+extern short
+StringOrder(
+  ConstStr255Param aStr,
+  ConstStr255Param bStr,
+  ScriptCode aScript,
+  ScriptCode bScript,
+  LangCode aLang,
+  LangCode bLang) ;
+extern short
+CompareText(
+  const void * aPtr,
+  const void * bPtr,
+  short aLen,
+  short bLen,
+  Handle itl2Handle) ;
+extern short
+IdenticalText(
+  const void * aPtr,
+  const void * bPtr,
+  short aLen,
+  short bLen,
+  Handle itl2Handle) ;
+extern short
+TextOrder(
+  const void * aPtr,
+  const void * bPtr,
+  short aLen,
+  short bLen,
+  ScriptCode aScript,
+  ScriptCode bScript,
+  LangCode aLang,
+  LangCode bLang) ;
+extern short
+LanguageOrder(
+  LangCode language1,
+  LangCode language2) ;
+extern short
+RelString(
+  ConstStr255Param str1,
+  ConstStr255Param str2,
+  Boolean caseSensitive,
+  Boolean diacSensitive) ;
+extern Boolean
+EqualString(
+  ConstStr255Param str1,
+  ConstStr255Param str2,
+  Boolean caseSensitive,
+  Boolean diacSensitive) ;
+extern short
+relstring(
+  const char * str1,
+  const char * str2,
+  Boolean caseSensitive,
+  Boolean diacSensitive) ;
+}
+
+
+
+extern "C" {
+
+
+struct ScriptRunStatus {
+  SInt8 script;
+  SInt8 runVariant;
+};
+typedef struct ScriptRunStatus ScriptRunStatus;
+struct BreakTable {
+  char charTypes[256];
+  short tripleLength;
+  short triples[1];
+};
+typedef struct BreakTable BreakTable;
+typedef BreakTable * BreakTablePtr;
+struct NBreakTable {
+  SInt8 flags1;
+  SInt8 flags2;
+  short version;
+  short classTableOff;
+  short auxCTableOff;
+  short backwdTableOff;
+  short forwdTableOff;
+  short doBackup;
+  short length;
+  char charTypes[256];
+  short tables[1];
+};
+typedef struct NBreakTable NBreakTable;
+typedef NBreakTable * NBreakTablePtr;
+extern long
+Munger(
+  Handle h,
+  long offset,
+  const void * ptr1,
+  long len1,
+  const void * ptr2,
+  long len2) ;
+extern StringHandle
+NewString(ConstStr255Param theString) ;
+extern void
+SetString(
+  StringHandle theString,
+  ConstStr255Param strNew) ;
+extern StringHandle
+GetString(short stringID) ;
+extern void
+GetIndString(
+  Str255 theString,
+  short strListID,
+  short index) ;
+extern void
+FindWordBreaks(
+  Ptr textPtr,
+  short textLength,
+  short offset,
+  Boolean leadingEdge,
+  BreakTablePtr breaks,
+  OffsetTable offsets,
+  ScriptCode script) ;
+extern void
+LowercaseText(
+  Ptr textPtr,
+  short len,
+  ScriptCode script) ;
+extern void
+UppercaseText(
+  Ptr textPtr,
+  short len,
+  ScriptCode script) ;
+extern void
+StripDiacritics(
+  Ptr textPtr,
+  short len,
+  ScriptCode script) ;
+extern void
+UppercaseStripDiacritics(
+  Ptr textPtr,
+  short len,
+  ScriptCode script) ;
+extern ScriptRunStatus
+FindScriptRun(
+  Ptr textPtr,
+  long textLen,
+  long * lenUsed) ;
+extern void
+UpperString(
+  Str255 theString,
+  Boolean diacSensitive) ;
+extern void
+upperstring(
+  char * theString,
+  Boolean diacSensitive) ;
+extern void
+c2pstrcpy(
+  Str255 dst,
+  const char * src) ;
+extern void
+p2cstrcpy(
+  char * dst,
+  ConstStr255Param src) ;
+extern void
+CopyPascalStringToC(
+  ConstStr255Param src,
+  char * dst) ;
+extern void
+CopyCStringToPascal(
+  const char * src,
+  Str255 dst) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+extern Boolean
+BitTst(
+  const void * bytePtr,
+  long bitNum) ;
+extern void
+BitSet(
+  void * bytePtr,
+  long bitNum) ;
+extern void
+BitClr(
+  void * bytePtr,
+  long bitNum) ;
+extern long
+BitAnd(
+  long value1,
+  long value2) ;
+extern long
+BitOr(
+  long value1,
+  long value2) ;
+extern long
+BitXor(
+  long value1,
+  long value2) ;
+extern long
+BitNot(long value) ;
+extern long
+BitShift(
+  long value,
+  short count) ;
+
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+typedef UInt16 UCKeyOutput;
+typedef UInt16 UCKeyCharSeq;
+enum {
+  kUCKeyOutputStateIndexMask = 0x4000,
+  kUCKeyOutputSequenceIndexMask = 0x8000,
+  kUCKeyOutputTestForIndexMask = 0xC000,
+  kUCKeyOutputGetIndexMask = 0x3FFF
+};
+struct UCKeyStateRecord {
+  UCKeyCharSeq stateZeroCharData;
+  UInt16 stateZeroNextState;
+  UInt16 stateEntryCount;
+  UInt16 stateEntryFormat;
+
+
+  UInt32 stateEntryData[1];
+};
+typedef struct UCKeyStateRecord UCKeyStateRecord;
+
+
+
+
+enum {
+  kUCKeyStateEntryTerminalFormat = 0x0001,
+  kUCKeyStateEntryRangeFormat = 0x0002
+};
+
+
+
+
+
+
+struct UCKeyStateEntryTerminal {
+  UInt16 curState;
+  UCKeyCharSeq charData;
+};
+typedef struct UCKeyStateEntryTerminal UCKeyStateEntryTerminal;
+
+
+
+
+
+
+
+struct UCKeyStateEntryRange {
+  UInt16 curStateStart;
+  UInt8 curStateRange;
+  UInt8 deltaMultiplier;
+  UCKeyCharSeq charData;
+  UInt16 nextState;
+};
+typedef struct UCKeyStateEntryRange UCKeyStateEntryRange;
+struct UCKeyboardTypeHeader {
+  UInt32 keyboardTypeFirst;
+  UInt32 keyboardTypeLast;
+  ByteOffset keyModifiersToTableNumOffset;
+  ByteOffset keyToCharTableIndexOffset;
+  ByteOffset keyStateRecordsIndexOffset;
+  ByteOffset keyStateTerminatorsOffset;
+  ByteOffset keySequenceDataIndexOffset;
+};
+typedef struct UCKeyboardTypeHeader UCKeyboardTypeHeader;
+struct UCKeyboardLayout {
+
+  UInt16 keyLayoutHeaderFormat;
+  UInt16 keyLayoutDataVersion;
+  ByteOffset keyLayoutFeatureInfoOffset;
+  ItemCount keyboardTypeCount;
+  UCKeyboardTypeHeader keyboardTypeList[1];
+};
+typedef struct UCKeyboardLayout UCKeyboardLayout;
+
+struct UCKeyLayoutFeatureInfo {
+  UInt16 keyLayoutFeatureInfoFormat;
+  UInt16 reserved;
+  UniCharCount maxOutputStringLength;
+};
+typedef struct UCKeyLayoutFeatureInfo UCKeyLayoutFeatureInfo;
+
+struct UCKeyModifiersToTableNum {
+  UInt16 keyModifiersToTableNumFormat;
+  UInt16 defaultTableNum;
+  ItemCount modifiersCount;
+  UInt8 tableNum[1];
+
+
+};
+typedef struct UCKeyModifiersToTableNum UCKeyModifiersToTableNum;
+
+struct UCKeyToCharTableIndex {
+  UInt16 keyToCharTableIndexFormat;
+  UInt16 keyToCharTableSize;
+  ItemCount keyToCharTableCount;
+  ByteOffset keyToCharTableOffsets[1];
+
+
+
+
+
+
+};
+typedef struct UCKeyToCharTableIndex UCKeyToCharTableIndex;
+
+struct UCKeyStateRecordsIndex {
+  UInt16 keyStateRecordsIndexFormat;
+  UInt16 keyStateRecordCount;
+  ByteOffset keyStateRecordOffsets[1];
+
+
+
+
+};
+typedef struct UCKeyStateRecordsIndex UCKeyStateRecordsIndex;
+
+struct UCKeyStateTerminators {
+  UInt16 keyStateTerminatorsFormat;
+  UInt16 keyStateTerminatorCount;
+  UCKeyCharSeq keyStateTerminators[1];
+
+
+
+};
+typedef struct UCKeyStateTerminators UCKeyStateTerminators;
+
+struct UCKeySequenceDataIndex {
+  UInt16 keySequenceDataIndexFormat;
+  UInt16 charSequenceCount;
+  UInt16 charSequenceOffsets[1];
+
+
+
+
+
+};
+typedef struct UCKeySequenceDataIndex UCKeySequenceDataIndex;
+
+
+
+enum {
+  kUCKeyLayoutHeaderFormat = 0x1002,
+  kUCKeyLayoutFeatureInfoFormat = 0x2001,
+  kUCKeyModifiersToTableNumFormat = 0x3001,
+  kUCKeyToCharTableIndexFormat = 0x4001,
+  kUCKeyStateRecordsIndexFormat = 0x5001,
+  kUCKeyStateTerminatorsFormat = 0x6001,
+  kUCKeySequenceDataIndexFormat = 0x7001
+};
+enum {
+  kUCKeyActionDown = 0,
+  kUCKeyActionUp = 1,
+  kUCKeyActionAutoKey = 2,
+  kUCKeyActionDisplay = 3
+};
+
+
+
+
+
+
+
+enum {
+  kUCKeyTranslateNoDeadKeysBit = 0
+};
+
+enum {
+  kUCKeyTranslateNoDeadKeysMask = 1L << kUCKeyTranslateNoDeadKeysBit
+};
+
+
+
+
+
+
+
+enum {
+  kUnicodeCollationClass = 'ucol'
+};
+
+typedef struct OpaqueCollatorRef* CollatorRef;
+typedef UInt32 UCCollateOptions;
+enum {
+
+  kUCCollateComposeInsensitiveMask = 1L << 1,
+  kUCCollateWidthInsensitiveMask = 1L << 2,
+  kUCCollateCaseInsensitiveMask = 1L << 3,
+  kUCCollateDiacritInsensitiveMask = 1L << 4,
+  kUCCollatePunctuationSignificantMask = 1L << 15,
+  kUCCollateDigitsOverrideMask = 1L << 16,
+  kUCCollateDigitsAsNumberMask = 1L << 17
+};
+
+enum {
+  kUCCollateStandardOptions = kUCCollateComposeInsensitiveMask | kUCCollateWidthInsensitiveMask
+};
+
+
+
+
+
+enum {
+  kUCCollateTypeHFSExtended = 1
+};
+
+
+enum {
+  kUCCollateTypeSourceMask = 0x000000FF,
+  kUCCollateTypeShiftBits = 24
+};
+
+enum {
+  kUCCollateTypeMask = kUCCollateTypeSourceMask << kUCCollateTypeShiftBits
+};
+
+
+typedef UInt32 UCCollationValue;
+
+
+
+
+
+
+enum {
+  kUnicodeTextBreakClass = 'ubrk'
+};
+
+typedef struct OpaqueTextBreakLocatorRef* TextBreakLocatorRef;
+typedef UInt32 UCTextBreakType;
+enum {
+  kUCTextBreakCharMask = 1L << 0,
+  kUCTextBreakClusterMask = 1L << 2,
+  kUCTextBreakWordMask = 1L << 4,
+  kUCTextBreakLineMask = 1L << 6
+};
+
+typedef UInt32 UCTextBreakOptions;
+enum {
+  kUCTextBreakLeadingEdgeMask = 1L << 0,
+  kUCTextBreakGoBackwardsMask = 1L << 1,
+  kUCTextBreakIterateMask = 1L << 2
+};
+extern OSStatus
+UCKeyTranslate(
+  const UCKeyboardLayout * keyLayoutPtr,
+  UInt16 virtualKeyCode,
+  UInt16 keyAction,
+  UInt32 modifierKeyState,
+  UInt32 keyboardType,
+  OptionBits keyTranslateOptions,
+  UInt32 * deadKeyState,
+  UniCharCount maxStringLength,
+  UniCharCount * actualStringLength,
+  UniChar unicodeString[]) ;
+extern OSStatus
+UCCreateCollator(
+  LocaleRef locale,
+  LocaleOperationVariant opVariant,
+  UCCollateOptions options,
+  CollatorRef * collatorRef) ;
+extern OSStatus
+UCGetCollationKey(
+  CollatorRef collatorRef,
+  const UniChar * textPtr,
+  UniCharCount textLength,
+  ItemCount maxKeySize,
+  ItemCount * actualKeySize,
+  UCCollationValue collationKey[]) ;
+extern OSStatus
+UCCompareCollationKeys(
+  const UCCollationValue * key1Ptr,
+  ItemCount key1Length,
+  const UCCollationValue * key2Ptr,
+  ItemCount key2Length,
+  Boolean * equivalent,
+  SInt32 * order) ;
+extern OSStatus
+UCCompareText(
+  CollatorRef collatorRef,
+  const UniChar * text1Ptr,
+  UniCharCount text1Length,
+  const UniChar * text2Ptr,
+  UniCharCount text2Length,
+  Boolean * equivalent,
+  SInt32 * order) ;
+extern OSStatus
+UCDisposeCollator(CollatorRef * collatorRef) ;
+extern OSStatus
+UCCompareTextDefault(
+  UCCollateOptions options,
+  const UniChar * text1Ptr,
+  UniCharCount text1Length,
+  const UniChar * text2Ptr,
+  UniCharCount text2Length,
+  Boolean * equivalent,
+  SInt32 * order) ;
+extern OSStatus
+UCCompareTextNoLocale(
+  UCCollateOptions options,
+  const UniChar * text1Ptr,
+  UniCharCount text1Length,
+  const UniChar * text2Ptr,
+  UniCharCount text2Length,
+  Boolean * equivalent,
+  SInt32 * order) ;
+extern OSStatus
+UCCreateTextBreakLocator(
+  LocaleRef locale,
+  LocaleOperationVariant opVariant,
+  UCTextBreakType breakTypes,
+  TextBreakLocatorRef * breakRef) ;
+extern OSStatus
+UCFindTextBreak(
+  TextBreakLocatorRef breakRef,
+  UCTextBreakType breakType,
+  UCTextBreakOptions options,
+  const UniChar * textPtr,
+  UniCharCount textLength,
+  UniCharArrayOffset startOffset,
+  UniCharArrayOffset * breakOffset) ;
+extern OSStatus
+UCDisposeTextBreakLocator(TextBreakLocatorRef * breakRef) ;
+
+
+
+
+
+}
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+extern "C" {
+
+
+extern const double_t pi;
+extern double_t compound(double_t rate, double_t periods) ;
+extern double_t annuity(double_t rate, double_t periods) ;
+extern double_t randomx(double_t * x) ;
+typedef short relop;
+enum {
+  GREATERTHAN = 0,
+  LESSTHAN = 1,
+  EQUALTO = 2,
+  UNORDERED = 3
+};
+extern relop relation(double_t x, double_t y) ;
+struct decimal {
+    char sgn;
+    char unused;
+    short exp;
+    struct {
+        unsigned char length;
+        unsigned char text[36];
+        unsigned char unused;
+    } sig;
+};
+typedef struct decimal decimal;
+
+struct decform {
+    char style;
+    char unused;
+    short digits;
+};
+typedef struct decform decform;
+extern void num2dec(const decform *f, double_t x, decimal *d) ;
+extern double_t dec2num(const decimal * d) ;
+extern void dec2str(const decform *f, const decimal *d, char *s) ;
+extern void str2dec(const char *s, short *ix, decimal *d, short *vp) ;
+extern float dec2f(const decimal * d) ;
+extern short dec2s(const decimal * d) ;
+extern long dec2l(const decimal * d) ;
+extern long double cosl(long double x);
+
+
+    inline long double cosl(long double x) { return (long double) cos((double)(x)); }
+extern long double sinl(long double x);
+
+
+    inline long double sinl(long double x) { return (long double) sin((double)(x)); }
+extern long double tanl(long double x);
+
+
+    inline long double tanl(long double x) { return (long double) tan((double)(x)); }
+extern long double acosl(long double x);
+
+
+    inline long double acosl(long double x) { return (long double) acos((double)(x)); }
+extern long double asinl(long double x);
+
+
+    inline long double asinl(long double x) { return (long double) asin((double)(x)); }
+extern long double atanl(long double x);
+
+
+    inline long double atanl(long double x) { return (long double) atan((double)(x)); }
+extern long double atan2l(long double y, long double x);
+
+
+    inline long double atan2l(long double y, long double x) { return (long double) atan2((double)(y), (double)(x)); }
+extern long double coshl(long double x);
+
+
+    inline long double coshl(long double x) { return (long double) cosh((double)(x)); }
+extern long double sinhl(long double x);
+
+
+    inline long double sinhl(long double x) { return (long double) sinh((double)(x)); }
+extern long double tanhl(long double x);
+
+
+    inline long double tanhl(long double x) { return (long double) tanh((double)(x)); }
+extern long double acoshl(long double x);
+
+
+    inline long double acoshl(long double x) { return (long double) acosh((double)(x)); }
+extern long double asinhl(long double x);
+
+
+    inline long double asinhl(long double x) { return (long double) asinh((double)(x)); }
+extern long double atanhl(long double x);
+
+
+    inline long double atanhl(long double x) { return (long double) atanh((double)(x)); }
+extern long double expl(long double x);
+
+
+    inline long double expl(long double x) { return (long double) exp((double)(x)); }
+extern long double expm1l(long double x);
+
+
+    inline long double expm1l(long double x) { return (long double) expm1((double)(x)); }
+extern long double exp2l(long double x);
+
+
+    inline long double exp2l(long double x) { return (long double) exp2((double)(x)); }
+extern long double frexpl(long double x, int *exponent);
+
+
+    inline long double frexpl(long double x, int *exponent) { return (long double) frexp((double)(x), (exponent)); }
+extern long double ldexpl(long double x, int n);
+
+
+    inline long double ldexpl(long double x, int n) { return (long double) ldexp((double)(x), (n)); }
+extern long double logl(long double x);
+
+
+    inline long double logl(long double x) { return (long double) log((double)(x)); }
+extern long double log1pl(long double x);
+
+
+    inline long double log1pl(long double x) { return (long double) log1p((double)(x)); }
+extern long double log10l(long double x);
+
+
+    inline long double log10l(long double x) { return (long double) log10((double)(x)); }
+extern long double log2l(long double x);
+
+
+    inline long double log2l(long double x) { return (long double) log2((double)(x)); }
+extern long double logbl(long double x);
+
+
+    inline long double logbl(long double x) { return (long double) logb((double)(x)); }
+extern long double scalbl(long double x, long n);
+
+
+    inline long double scalbl(long double x, long n) { return (long double) scalb((double)(x), (n)); }
+extern long double fabsl(long double x);
+
+
+    inline long double fabsl(long double x) { return (long double) fabs((double)(x)); }
+extern long double hypotl(long double x, long double y);
+
+
+    inline long double hypotl(long double x, long double y) { return (long double) hypot((double)(x), (double)(y)); }
+extern long double powl(long double x, long double y);
+
+
+    inline long double powl(long double x, long double y) { return (long double) pow((double)(x), (double)(y)); }
+extern long double sqrtl(long double x);
+
+
+    inline long double sqrtl(long double x) { return (long double) sqrt((double)(x)); }
+extern long double erfl(long double x);
+
+
+    inline long double erfl(long double x) { return (long double) erf((double)(x)); }
+extern long double erfcl(long double x);
+
+
+    inline long double erfcl(long double x) { return (long double) erfc((double)(x)); }
+extern long double gammal(long double x);
+
+
+    inline long double gammal(long double x) { return (long double) gamma((double)(x)); }
+extern long double lgammal(long double x);
+
+
+    inline long double lgammal(long double x) { return (long double) lgamma((double)(x)); }
+extern long double ceill(long double x);
+
+
+    inline long double ceill(long double x) { return (long double) ceil((double)(x)); }
+extern long double floorl(long double x);
+
+
+    inline long double floorl(long double x) { return (long double) floor((double)(x)); }
+extern long double rintl(long double x);
+
+
+    inline long double rintl(long double x) { return (long double) rint((double)(x)); }
+extern long double nearbyintl(long double x);
+
+
+    inline long double nearbyintl(long double x) { return (long double) nearbyint((double)(x)); }
+extern long rinttoll(long double x);
+
+
+    inline long rinttoll(long double x) { return rinttol((double)(x)); }
+extern long double roundl(long double x);
+
+
+    inline long double roundl(long double x) { return (long double) round((double)(x)); }
+extern long roundtoll(long double x);
+
+
+    inline long roundtoll(long double x) { return roundtol((double)(x)); }
+extern long double truncl(long double x);
+
+
+    inline long double truncl(long double x) { return (long double) trunc((double)(x)); }
+extern long double remainderl(long double x, long double y);
+
+
+    inline long double remainderl(long double x, long double y) { return (long double) remainder((double)(x), (double)(y)); }
+extern long double remquol(long double x, long double y, int *quo);
+
+
+    inline long double remquol(long double x, long double y, int *quo) { return (long double) remquo((double)(x), (double)(y), (quo)); }
+extern long double copysignl(long double x, long double y);
+
+
+    inline long double copysignl(long double x, long double y) { return (long double) copysign((double)(x), (double)(y)); }
+extern long double fdiml(long double x, long double y);
+
+
+    inline long double fdiml(long double x, long double y) { return (long double) fdim((double)(x), (double)(y)); }
+extern long double fmaxl(long double x, long double y);
+
+
+    inline long double fmaxl(long double x, long double y) { return (long double) fmax((double)(x), (double)(y)); }
+extern long double fminl(long double x, long double y);
+
+
+    inline long double fminl(long double x, long double y) { return (long double) fmin((double)(x), (double)(y)); }
+extern relop relationl(long double x, long double y);
+
+
+    inline relop relationl(long double x, long double y) { return relation((double)(x), (double)(y)); }
+extern void num2decl(const decform *f, long double x, decimal *d);
+
+
+    inline void num2decl(const decform *f, long double x, decimal *d) { num2dec((f), (double)(x), (d)); }
+extern long double dec2numl(const decimal * d);
+
+
+    inline long double dec2numl(const decimal *d) { return (long double) dec2num(d); }
+extern double x80tod(const extended80 * x80) ;
+extern void dtox80(const double *x, extended80 *x80) ;
+extern void x80told(const extended80 *x80, long double *x);
+
+
+    inline void x80told(const extended80 *x80, long double *x) { *(x) = (long double) x80tod(x80); }
+extern void ldtox80(const long double *x, extended80 *x80);
+
+
+    inline void ldtox80(const long double *x, extended80 *x80) { double d = (double) *(x); dtox80(&d, (x80)); }
+
+
+}
+
+
+extern "C" {
+typedef long fenv_t;
+typedef long fexcept_t;
+
+
+enum {
+  FE_INEXACT = 0x02000000,
+  FE_DIVBYZERO = 0x04000000,
+  FE_UNDERFLOW = 0x08000000,
+  FE_OVERFLOW = 0x10000000,
+  FE_INVALID = 0x20000000,
+  FE_ALL_EXCEPT = 0x3E000000
+};
+
+
+
+enum {
+  FE_TONEAREST = 0x00000000,
+  FE_TOWARDZERO = 0x00000001,
+  FE_UPWARD = 0x00000002,
+  FE_DOWNWARD = 0x00000003
+};
+
+
+extern const fenv_t _FE_DFL_ENV;
+extern void feclearexcept(int excepts);
+extern void fegetexceptflag(fexcept_t *flagp, int excepts);
+
+
+
+
+
+
+
+extern void feraiseexcept(int excepts);
+extern void fesetexceptflag(const fexcept_t *flagp, int excepts);
+extern int fetestexcept(int excepts);
+extern int fegetround(void);
+extern int fesetround(int round);
+
+
+
+
+
+
+
+extern void fegetenv(fenv_t * envp);
+extern int feholdexcept(fenv_t * envp);
+extern void fesetenv(const fenv_t * envp);
+extern void feupdateenv(const fenv_t * envp);
+
+
+
+}
+
+extern "C" {
+
+
+
+typedef OSType TECPluginSignature;
+typedef UInt32 TECPluginVersion;
+
+enum {
+  kTECSignature = 'encv',
+  kTECUnicodePluginSignature = 'puni',
+  kTECJapanesePluginSignature = 'pjpn',
+  kTECChinesePluginSignature = 'pzho',
+  kTECKoreanPluginSignature = 'pkor'
+};
+
+
+
+typedef struct OpaqueTECObjectRef* TECObjectRef;
+typedef struct OpaqueTECSnifferObjectRef* TECSnifferObjectRef;
+typedef OSType TECPluginSig;
+struct TECConversionInfo {
+  TextEncoding sourceEncoding;
+  TextEncoding destinationEncoding;
+  UInt16 reserved1;
+  UInt16 reserved2;
+};
+typedef struct TECConversionInfo TECConversionInfo;
+extern OSStatus
+TECCountAvailableTextEncodings(ItemCount * numberEncodings) ;
+extern OSStatus
+TECGetAvailableTextEncodings(
+  TextEncoding availableEncodings[],
+  ItemCount maxAvailableEncodings,
+  ItemCount * actualAvailableEncodings) ;
+extern OSStatus
+TECCountDirectTextEncodingConversions(ItemCount * numberOfEncodings) ;
+extern OSStatus
+TECGetDirectTextEncodingConversions(
+  TECConversionInfo availableConversions[],
+  ItemCount maxAvailableConversions,
+  ItemCount * actualAvailableConversions) ;
+extern OSStatus
+TECCountDestinationTextEncodings(
+  TextEncoding inputEncoding,
+  ItemCount * numberOfEncodings) ;
+extern OSStatus
+TECGetDestinationTextEncodings(
+  TextEncoding inputEncoding,
+  TextEncoding destinationEncodings[],
+  ItemCount maxDestinationEncodings,
+  ItemCount * actualDestinationEncodings) ;
+extern OSStatus
+TECGetTextEncodingInternetName(
+  TextEncoding textEncoding,
+  Str255 encodingName) ;
+extern OSStatus
+TECGetTextEncodingFromInternetName(
+  TextEncoding * textEncoding,
+  ConstStr255Param encodingName) ;
+extern OSStatus
+TECCreateConverter(
+  TECObjectRef * newEncodingConverter,
+  TextEncoding inputEncoding,
+  TextEncoding outputEncoding) ;
+extern OSStatus
+TECCreateConverterFromPath(
+  TECObjectRef * newEncodingConverter,
+  const TextEncoding inPath[],
+  ItemCount inEncodings) ;
+extern OSStatus
+TECDisposeConverter(TECObjectRef newEncodingConverter) ;
+extern OSStatus
+TECClearConverterContextInfo(TECObjectRef encodingConverter) ;
+extern OSStatus
+TECConvertText(
+  TECObjectRef encodingConverter,
+  ConstTextPtr inputBuffer,
+  ByteCount inputBufferLength,
+  ByteCount * actualInputLength,
+  TextPtr outputBuffer,
+  ByteCount outputBufferLength,
+  ByteCount * actualOutputLength) ;
+extern OSStatus
+TECFlushText(
+  TECObjectRef encodingConverter,
+  TextPtr outputBuffer,
+  ByteCount outputBufferLength,
+  ByteCount * actualOutputLength) ;
+extern OSStatus
+TECCountSubTextEncodings(
+  TextEncoding inputEncoding,
+  ItemCount * numberOfEncodings) ;
+extern OSStatus
+TECGetSubTextEncodings(
+  TextEncoding inputEncoding,
+  TextEncoding subEncodings[],
+  ItemCount maxSubEncodings,
+  ItemCount * actualSubEncodings) ;
+extern OSStatus
+TECGetEncodingList(
+  TECObjectRef encodingConverter,
+  ItemCount * numEncodings,
+  Handle * encodingList) ;
+extern OSStatus
+TECCreateOneToManyConverter(
+  TECObjectRef * newEncodingConverter,
+  TextEncoding inputEncoding,
+  ItemCount numOutputEncodings,
+  const TextEncoding outputEncodings[]) ;
+extern OSStatus
+TECConvertTextToMultipleEncodings(
+  TECObjectRef encodingConverter,
+  ConstTextPtr inputBuffer,
+  ByteCount inputBufferLength,
+  ByteCount * actualInputLength,
+  TextPtr outputBuffer,
+  ByteCount outputBufferLength,
+  ByteCount * actualOutputLength,
+  TextEncodingRun outEncodingsBuffer[],
+  ItemCount maxOutEncodingRuns,
+  ItemCount * actualOutEncodingRuns) ;
+extern OSStatus
+TECFlushMultipleEncodings(
+  TECObjectRef encodingConverter,
+  TextPtr outputBuffer,
+  ByteCount outputBufferLength,
+  ByteCount * actualOutputLength,
+  TextEncodingRun outEncodingsBuffer[],
+  ItemCount maxOutEncodingRuns,
+  ItemCount * actualOutEncodingRuns) ;
+extern OSStatus
+TECCountWebTextEncodings(
+  RegionCode locale,
+  ItemCount * numberEncodings) ;
+extern OSStatus
+TECGetWebTextEncodings(
+  RegionCode locale,
+  TextEncoding availableEncodings[],
+  ItemCount maxAvailableEncodings,
+  ItemCount * actualAvailableEncodings) ;
+extern OSStatus
+TECCountMailTextEncodings(
+  RegionCode locale,
+  ItemCount * numberEncodings) ;
+extern OSStatus
+TECGetMailTextEncodings(
+  RegionCode locale,
+  TextEncoding availableEncodings[],
+  ItemCount maxAvailableEncodings,
+  ItemCount * actualAvailableEncodings) ;
+extern OSStatus
+TECCountAvailableSniffers(ItemCount * numberOfEncodings) ;
+extern OSStatus
+TECGetAvailableSniffers(
+  TextEncoding availableSniffers[],
+  ItemCount maxAvailableSniffers,
+  ItemCount * actualAvailableSniffers) ;
+extern OSStatus
+TECCreateSniffer(
+  TECSnifferObjectRef * encodingSniffer,
+  TextEncoding testEncodings[],
+  ItemCount numTextEncodings) ;
+extern OSStatus
+TECSniffTextEncoding(
+  TECSnifferObjectRef encodingSniffer,
+  TextPtr inputBuffer,
+  ByteCount inputBufferLength,
+  TextEncoding testEncodings[],
+  ItemCount numTextEncodings,
+  ItemCount numErrsArray[],
+  ItemCount maxErrs,
+  ItemCount numFeaturesArray[],
+  ItemCount maxFeatures) ;
+extern OSStatus
+TECDisposeSniffer(TECSnifferObjectRef encodingSniffer) ;
+extern OSStatus
+TECClearSnifferContextInfo(TECSnifferObjectRef encodingSniffer) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+typedef struct OpaqueTextToUnicodeInfo* TextToUnicodeInfo;
+typedef struct OpaqueUnicodeToTextInfo* UnicodeToTextInfo;
+typedef struct OpaqueUnicodeToTextRunInfo* UnicodeToTextRunInfo;
+typedef const TextToUnicodeInfo ConstTextToUnicodeInfo;
+typedef const UnicodeToTextInfo ConstUnicodeToTextInfo;
+
+typedef SInt32 UnicodeMapVersion;
+enum {
+  kUnicodeUseLatestMapping = -1,
+  kUnicodeUseHFSPlusMapping = 4
+};
+
+
+struct UnicodeMapping {
+  TextEncoding unicodeEncoding;
+  TextEncoding otherEncoding;
+  UnicodeMapVersion mappingVersion;
+};
+typedef struct UnicodeMapping UnicodeMapping;
+typedef UnicodeMapping * UnicodeMappingPtr;
+typedef const UnicodeMapping * ConstUnicodeMappingPtr;
+
+enum {
+  kUnicodeUseFallbacksBit = 0,
+  kUnicodeKeepInfoBit = 1,
+  kUnicodeDirectionalityBits = 2,
+  kUnicodeVerticalFormBit = 4,
+  kUnicodeLooseMappingsBit = 5,
+  kUnicodeStringUnterminatedBit = 6,
+  kUnicodeTextRunBit = 7,
+  kUnicodeKeepSameEncodingBit = 8,
+  kUnicodeForceASCIIRangeBit = 9,
+  kUnicodeNoHalfwidthCharsBit = 10,
+  kUnicodeTextRunHeuristicsBit = 11,
+  kUnicodeMapLineFeedToReturnBit = 12
+};
+
+enum {
+  kUnicodeUseFallbacksMask = 1L << kUnicodeUseFallbacksBit,
+  kUnicodeKeepInfoMask = 1L << kUnicodeKeepInfoBit,
+  kUnicodeDirectionalityMask = 3L << kUnicodeDirectionalityBits,
+  kUnicodeVerticalFormMask = 1L << kUnicodeVerticalFormBit,
+  kUnicodeLooseMappingsMask = 1L << kUnicodeLooseMappingsBit,
+  kUnicodeStringUnterminatedMask = 1L << kUnicodeStringUnterminatedBit,
+  kUnicodeTextRunMask = 1L << kUnicodeTextRunBit,
+  kUnicodeKeepSameEncodingMask = 1L << kUnicodeKeepSameEncodingBit,
+  kUnicodeForceASCIIRangeMask = 1L << kUnicodeForceASCIIRangeBit,
+  kUnicodeNoHalfwidthCharsMask = 1L << kUnicodeNoHalfwidthCharsBit,
+  kUnicodeTextRunHeuristicsMask = 1L << kUnicodeTextRunHeuristicsBit,
+  kUnicodeMapLineFeedToReturnMask = 1L << kUnicodeMapLineFeedToReturnBit
+};
+
+
+enum {
+  kUnicodeDefaultDirection = 0,
+  kUnicodeLeftToRight = 1,
+  kUnicodeRightToLeft = 2
+};
+
+
+enum {
+  kUnicodeDefaultDirectionMask = kUnicodeDefaultDirection << kUnicodeDirectionalityBits,
+  kUnicodeLeftToRightMask = kUnicodeLeftToRight << kUnicodeDirectionalityBits,
+  kUnicodeRightToLeftMask = kUnicodeRightToLeft << kUnicodeDirectionalityBits
+};
+enum {
+  kUnicodeMatchUnicodeBaseBit = 0,
+  kUnicodeMatchUnicodeVariantBit = 1,
+  kUnicodeMatchUnicodeFormatBit = 2,
+  kUnicodeMatchOtherBaseBit = 3,
+  kUnicodeMatchOtherVariantBit = 4,
+  kUnicodeMatchOtherFormatBit = 5
+};
+
+enum {
+  kUnicodeMatchUnicodeBaseMask = 1L << kUnicodeMatchUnicodeBaseBit,
+  kUnicodeMatchUnicodeVariantMask = 1L << kUnicodeMatchUnicodeVariantBit,
+  kUnicodeMatchUnicodeFormatMask = 1L << kUnicodeMatchUnicodeFormatBit,
+  kUnicodeMatchOtherBaseMask = 1L << kUnicodeMatchOtherBaseBit,
+  kUnicodeMatchOtherVariantMask = 1L << kUnicodeMatchOtherVariantBit,
+  kUnicodeMatchOtherFormatMask = 1L << kUnicodeMatchOtherFormatBit
+};
+
+
+enum {
+  kUnicodeFallbackSequencingBits = 0
+};
+
+enum {
+  kUnicodeFallbackSequencingMask = 3L << kUnicodeFallbackSequencingBits,
+  kUnicodeFallbackInterruptSafeMask = 1L << 2
+};
+
+
+enum {
+  kUnicodeFallbackDefaultOnly = 0L,
+  kUnicodeFallbackCustomOnly = 1L,
+  kUnicodeFallbackDefaultFirst = 2L,
+  kUnicodeFallbackCustomFirst = 3L
+};
+
+
+
+typedef OSStatus ( * UnicodeToTextFallbackProcPtr)(UniChar *iSrcUniStr, ByteCount iSrcUniStrLen, ByteCount *oSrcConvLen, TextPtr oDestStr, ByteCount iDestStrLen, ByteCount *oDestConvLen, LogicalAddress iInfoPtr, ConstUnicodeMappingPtr iUnicodeMappingPtr);
+typedef UnicodeToTextFallbackProcPtr UnicodeToTextFallbackUPP;
+extern UnicodeToTextFallbackUPP
+NewUnicodeToTextFallbackUPP(UnicodeToTextFallbackProcPtr userRoutine) ;
+extern void
+DisposeUnicodeToTextFallbackUPP(UnicodeToTextFallbackUPP userUPP) ;
+extern OSStatus
+InvokeUnicodeToTextFallbackUPP(
+  UniChar * iSrcUniStr,
+  ByteCount iSrcUniStrLen,
+  ByteCount * oSrcConvLen,
+  TextPtr oDestStr,
+  ByteCount iDestStrLen,
+  ByteCount * oDestConvLen,
+  LogicalAddress iInfoPtr,
+  ConstUnicodeMappingPtr iUnicodeMappingPtr,
+  UnicodeToTextFallbackUPP userUPP) ;
+extern OSStatus
+CreateTextToUnicodeInfo(
+  ConstUnicodeMappingPtr iUnicodeMapping,
+  TextToUnicodeInfo * oTextToUnicodeInfo) ;
+extern OSStatus
+CreateTextToUnicodeInfoByEncoding(
+  TextEncoding iEncoding,
+  TextToUnicodeInfo * oTextToUnicodeInfo) ;
+extern OSStatus
+CreateUnicodeToTextInfo(
+  ConstUnicodeMappingPtr iUnicodeMapping,
+  UnicodeToTextInfo * oUnicodeToTextInfo) ;
+extern OSStatus
+CreateUnicodeToTextInfoByEncoding(
+  TextEncoding iEncoding,
+  UnicodeToTextInfo * oUnicodeToTextInfo) ;
+extern OSStatus
+CreateUnicodeToTextRunInfo(
+  ItemCount iNumberOfMappings,
+  const UnicodeMapping iUnicodeMappings[],
+  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;
+extern OSStatus
+CreateUnicodeToTextRunInfoByEncoding(
+  ItemCount iNumberOfEncodings,
+  const TextEncoding iEncodings[],
+  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;
+extern OSStatus
+CreateUnicodeToTextRunInfoByScriptCode(
+  ItemCount iNumberOfScriptCodes,
+  const ScriptCode iScripts[],
+  UnicodeToTextRunInfo * oUnicodeToTextInfo) ;
+extern OSStatus
+ChangeTextToUnicodeInfo(
+  TextToUnicodeInfo ioTextToUnicodeInfo,
+  ConstUnicodeMappingPtr iUnicodeMapping) ;
+extern OSStatus
+ChangeUnicodeToTextInfo(
+  UnicodeToTextInfo ioUnicodeToTextInfo,
+  ConstUnicodeMappingPtr iUnicodeMapping) ;
+extern OSStatus
+DisposeTextToUnicodeInfo(TextToUnicodeInfo * ioTextToUnicodeInfo) ;
+extern OSStatus
+DisposeUnicodeToTextInfo(UnicodeToTextInfo * ioUnicodeToTextInfo) ;
+extern OSStatus
+DisposeUnicodeToTextRunInfo(UnicodeToTextRunInfo * ioUnicodeToTextRunInfo) ;
+extern OSStatus
+ConvertFromTextToUnicode(
+  TextToUnicodeInfo iTextToUnicodeInfo,
+  ByteCount iSourceLen,
+  ConstLogicalAddress iSourceStr,
+  OptionBits iControlFlags,
+  ItemCount iOffsetCount,
+  ByteOffset iOffsetArray[],
+  ItemCount * oOffsetCount,
+  ByteOffset oOffsetArray[],
+  ByteCount iOutputBufLen,
+  ByteCount * oSourceRead,
+  ByteCount * oUnicodeLen,
+  UniChar oUnicodeStr[]) ;
+extern OSStatus
+ConvertFromUnicodeToText(
+  UnicodeToTextInfo iUnicodeToTextInfo,
+  ByteCount iUnicodeLen,
+  const UniChar iUnicodeStr[],
+  OptionBits iControlFlags,
+  ItemCount iOffsetCount,
+  ByteOffset iOffsetArray[],
+  ItemCount * oOffsetCount,
+  ByteOffset oOffsetArray[],
+  ByteCount iOutputBufLen,
+  ByteCount * oInputRead,
+  ByteCount * oOutputLen,
+  LogicalAddress oOutputStr) ;
+extern OSStatus
+ConvertFromUnicodeToTextRun(
+  UnicodeToTextRunInfo iUnicodeToTextInfo,
+  ByteCount iUnicodeLen,
+  const UniChar iUnicodeStr[],
+  OptionBits iControlFlags,
+  ItemCount iOffsetCount,
+  ByteOffset iOffsetArray[],
+  ItemCount * oOffsetCount,
+  ByteOffset oOffsetArray[],
+  ByteCount iOutputBufLen,
+  ByteCount * oInputRead,
+  ByteCount * oOutputLen,
+  LogicalAddress oOutputStr,
+  ItemCount iEncodingRunBufLen,
+  ItemCount * oEncodingRunOutLen,
+  TextEncodingRun oEncodingRuns[]) ;
+extern OSStatus
+ConvertFromUnicodeToScriptCodeRun(
+  UnicodeToTextRunInfo iUnicodeToTextInfo,
+  ByteCount iUnicodeLen,
+  const UniChar iUnicodeStr[],
+  OptionBits iControlFlags,
+  ItemCount iOffsetCount,
+  ByteOffset iOffsetArray[],
+  ItemCount * oOffsetCount,
+  ByteOffset oOffsetArray[],
+  ByteCount iOutputBufLen,
+  ByteCount * oInputRead,
+  ByteCount * oOutputLen,
+  LogicalAddress oOutputStr,
+  ItemCount iScriptRunBufLen,
+  ItemCount * oScriptRunOutLen,
+  ScriptCodeRun oScriptCodeRuns[]) ;
+extern OSStatus
+TruncateForTextToUnicode(
+  ConstTextToUnicodeInfo iTextToUnicodeInfo,
+  ByteCount iSourceLen,
+  ConstLogicalAddress iSourceStr,
+  ByteCount iMaxLen,
+  ByteCount * oTruncatedLen) ;
+extern OSStatus
+TruncateForUnicodeToText(
+  ConstUnicodeToTextInfo iUnicodeToTextInfo,
+  ByteCount iSourceLen,
+  const UniChar iSourceStr[],
+  OptionBits iControlFlags,
+  ByteCount iMaxLen,
+  ByteCount * oTruncatedLen) ;
+extern OSStatus
+ConvertFromPStringToUnicode(
+  TextToUnicodeInfo iTextToUnicodeInfo,
+  ConstStr255Param iPascalStr,
+  ByteCount iOutputBufLen,
+  ByteCount * oUnicodeLen,
+  UniChar oUnicodeStr[]) ;
+extern OSStatus
+ConvertFromUnicodeToPString(
+  UnicodeToTextInfo iUnicodeToTextInfo,
+  ByteCount iUnicodeLen,
+  const UniChar iUnicodeStr[],
+  Str255 oPascalStr) ;
+extern OSStatus
+CountUnicodeMappings(
+  OptionBits iFilter,
+  ConstUnicodeMappingPtr iFindMapping,
+  ItemCount * oActualCount) ;
+extern OSStatus
+QueryUnicodeMappings(
+  OptionBits iFilter,
+  ConstUnicodeMappingPtr iFindMapping,
+  ItemCount iMaxCount,
+  ItemCount * oActualCount,
+  UnicodeMapping oReturnedMappings[]) ;
+extern OSStatus
+SetFallbackUnicodeToText(
+  UnicodeToTextInfo iUnicodeToTextInfo,
+  UnicodeToTextFallbackUPP iFallback,
+  OptionBits iControlFlags,
+  LogicalAddress iInfoPtr) ;
+extern OSStatus
+SetFallbackUnicodeToTextRun(
+  UnicodeToTextRunInfo iUnicodeToTextRunInfo,
+  UnicodeToTextFallbackUPP iFallback,
+  OptionBits iControlFlags,
+  LogicalAddress iInfoPtr) ;
+extern OSStatus
+ResetTextToUnicodeInfo(TextToUnicodeInfo ioTextToUnicodeInfo) ;
+extern OSStatus
+ResetUnicodeToTextInfo(UnicodeToTextInfo ioUnicodeToTextInfo) ;
+extern OSStatus
+ResetUnicodeToTextRunInfo(UnicodeToTextRunInfo ioUnicodeToTextRunInfo) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+typedef UInt16 ThreadState;
+enum {
+  kReadyThreadState = 0,
+  kStoppedThreadState = 1,
+  kRunningThreadState = 2
+};
+
+
+
+
+typedef void * ThreadTaskRef;
+
+typedef UInt32 ThreadStyle;
+enum {
+  kCooperativeThread = 1L << 0,
+  kPreemptiveThread = 1L << 1
+};
+
+
+typedef UInt32 ThreadID;
+enum {
+  kNoThreadID = 0,
+  kCurrentThreadID = 1,
+  kApplicationThreadID = 2
+};
+
+
+typedef UInt32 ThreadOptions;
+enum {
+  kNewSuspend = (1 << 0),
+  kUsePremadeThread = (1 << 1),
+  kCreateIfNeeded = (1 << 2),
+  kFPUNotNeeded = (1 << 3),
+  kExactMatchThread = (1 << 4)
+};
+
+
+struct SchedulerInfoRec {
+  UInt32 InfoRecSize;
+  ThreadID CurrentThreadID;
+  ThreadID SuggestedThreadID;
+  ThreadID InterruptedCoopThreadID;
+};
+typedef struct SchedulerInfoRec SchedulerInfoRec;
+typedef SchedulerInfoRec * SchedulerInfoRecPtr;
+
+
+
+
+
+
+typedef void * voidPtr;
+
+typedef voidPtr ( * ThreadEntryProcPtr)(void * threadParam);
+
+typedef ThreadID ( * ThreadSchedulerProcPtr)(SchedulerInfoRecPtr schedulerInfo);
+
+typedef void ( * ThreadSwitchProcPtr)(ThreadID threadBeingSwitched, void *switchProcParam);
+
+typedef void ( * ThreadTerminationProcPtr)(ThreadID threadTerminated, void *terminationProcParam);
+
+typedef void ( * DebuggerNewThreadProcPtr)(ThreadID threadCreated);
+
+typedef void ( * DebuggerDisposeThreadProcPtr)(ThreadID threadDeleted);
+
+typedef ThreadID ( * DebuggerThreadSchedulerProcPtr)(SchedulerInfoRecPtr schedulerInfo);
+typedef ThreadEntryProcPtr ThreadEntryUPP;
+typedef ThreadSchedulerProcPtr ThreadSchedulerUPP;
+typedef ThreadSwitchProcPtr ThreadSwitchUPP;
+typedef ThreadTerminationProcPtr ThreadTerminationUPP;
+typedef DebuggerNewThreadProcPtr DebuggerNewThreadUPP;
+typedef DebuggerDisposeThreadProcPtr DebuggerDisposeThreadUPP;
+typedef DebuggerThreadSchedulerProcPtr DebuggerThreadSchedulerUPP;
+extern ThreadEntryUPP
+NewThreadEntryUPP(ThreadEntryProcPtr userRoutine) ;
+extern ThreadSchedulerUPP
+NewThreadSchedulerUPP(ThreadSchedulerProcPtr userRoutine) ;
+extern ThreadSwitchUPP
+NewThreadSwitchUPP(ThreadSwitchProcPtr userRoutine) ;
+extern ThreadTerminationUPP
+NewThreadTerminationUPP(ThreadTerminationProcPtr userRoutine) ;
+extern DebuggerNewThreadUPP
+NewDebuggerNewThreadUPP(DebuggerNewThreadProcPtr userRoutine) ;
+extern DebuggerDisposeThreadUPP
+NewDebuggerDisposeThreadUPP(DebuggerDisposeThreadProcPtr userRoutine) ;
+extern DebuggerThreadSchedulerUPP
+NewDebuggerThreadSchedulerUPP(DebuggerThreadSchedulerProcPtr userRoutine) ;
+extern void
+DisposeThreadEntryUPP(ThreadEntryUPP userUPP) ;
+extern void
+DisposeThreadSchedulerUPP(ThreadSchedulerUPP userUPP) ;
+extern void
+DisposeThreadSwitchUPP(ThreadSwitchUPP userUPP) ;
+extern void
+DisposeThreadTerminationUPP(ThreadTerminationUPP userUPP) ;
+extern void
+DisposeDebuggerNewThreadUPP(DebuggerNewThreadUPP userUPP) ;
+extern void
+DisposeDebuggerDisposeThreadUPP(DebuggerDisposeThreadUPP userUPP) ;
+extern void
+DisposeDebuggerThreadSchedulerUPP(DebuggerThreadSchedulerUPP userUPP) ;
+extern voidPtr
+InvokeThreadEntryUPP(
+  void * threadParam,
+  ThreadEntryUPP userUPP) ;
+extern ThreadID
+InvokeThreadSchedulerUPP(
+  SchedulerInfoRecPtr schedulerInfo,
+  ThreadSchedulerUPP userUPP) ;
+extern void
+InvokeThreadSwitchUPP(
+  ThreadID threadBeingSwitched,
+  void * switchProcParam,
+  ThreadSwitchUPP userUPP) ;
+extern void
+InvokeThreadTerminationUPP(
+  ThreadID threadTerminated,
+  void * terminationProcParam,
+  ThreadTerminationUPP userUPP) ;
+extern void
+InvokeDebuggerNewThreadUPP(
+  ThreadID threadCreated,
+  DebuggerNewThreadUPP userUPP) ;
+extern void
+InvokeDebuggerDisposeThreadUPP(
+  ThreadID threadDeleted,
+  DebuggerDisposeThreadUPP userUPP) ;
+extern ThreadID
+InvokeDebuggerThreadSchedulerUPP(
+  SchedulerInfoRecPtr schedulerInfo,
+  DebuggerThreadSchedulerUPP userUPP) ;
+typedef ThreadEntryUPP ThreadEntryTPP;
+typedef ThreadSchedulerUPP ThreadSchedulerTPP;
+typedef ThreadSwitchUPP ThreadSwitchTPP;
+typedef ThreadTerminationUPP ThreadTerminationTPP;
+typedef DebuggerNewThreadUPP DebuggerNewThreadTPP;
+typedef DebuggerDisposeThreadUPP DebuggerDisposeThreadTPP;
+typedef DebuggerThreadSchedulerUPP DebuggerThreadSchedulerTPP;
+extern OSErr
+NewThread(
+  ThreadStyle threadStyle,
+  ThreadEntryTPP threadEntry,
+  void * threadParam,
+  Size stackSize,
+  ThreadOptions options,
+  void ** threadResult,
+  ThreadID * threadMade) ;
+extern OSErr
+SetThreadScheduler(ThreadSchedulerTPP threadScheduler) ;
+extern OSErr
+SetThreadSwitcher(
+  ThreadID thread,
+  ThreadSwitchTPP threadSwitcher,
+  void * switchProcParam,
+  Boolean inOrOut) ;
+extern OSErr
+SetThreadTerminator(
+  ThreadID thread,
+  ThreadTerminationTPP threadTerminator,
+  void * terminationProcParam) ;
+extern OSErr
+SetDebuggerNotificationProcs(
+  DebuggerNewThreadTPP notifyNewThread,
+  DebuggerDisposeThreadTPP notifyDisposeThread,
+  DebuggerThreadSchedulerTPP notifyThreadScheduler) ;
+extern OSErr
+CreateThreadPool(
+  ThreadStyle threadStyle,
+  SInt16 numToCreate,
+  Size stackSize) ;
+extern OSErr
+GetFreeThreadCount(
+  ThreadStyle threadStyle,
+  SInt16 * freeCount) ;
+extern OSErr
+GetSpecificFreeThreadCount(
+  ThreadStyle threadStyle,
+  Size stackSize,
+  SInt16 * freeCount) ;
+extern OSErr
+GetDefaultThreadStackSize(
+  ThreadStyle threadStyle,
+  Size * stackSize) ;
+extern OSErr
+ThreadCurrentStackSpace(
+  ThreadID thread,
+  UInt32 * freeStack) ;
+extern OSErr
+DisposeThread(
+  ThreadID threadToDump,
+  void * threadResult,
+  Boolean recycleThread) ;
+extern OSErr
+YieldToThread(ThreadID suggestedThread) ;
+extern OSErr
+YieldToAnyThread(void) ;
+extern OSErr
+GetCurrentThread(ThreadID * currentThreadID) ;
+extern OSErr
+GetThreadState(
+  ThreadID threadToGet,
+  ThreadState * threadState) ;
+extern OSErr
+SetThreadState(
+  ThreadID threadToSet,
+  ThreadState newState,
+  ThreadID suggestedThread) ;
+extern OSErr
+SetThreadStateEndCritical(
+  ThreadID threadToSet,
+  ThreadState newState,
+  ThreadID suggestedThread) ;
+extern OSErr
+ThreadBeginCritical(void) ;
+extern OSErr
+ThreadEndCritical(void) ;
+extern OSErr
+GetThreadCurrentTaskRef(ThreadTaskRef * threadTRef) ;
+extern OSErr
+GetThreadStateGivenTaskRef(
+  ThreadTaskRef threadTRef,
+  ThreadID threadToGet,
+  ThreadState * threadState) ;
+extern OSErr
+SetThreadReadyGivenTaskRef(
+  ThreadTaskRef threadTRef,
+  ThreadID threadToSet) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  kOnSystemDisk = -32768L,
+  kOnAppropriateDisk = -32767,
+
+
+  kSystemDomain = -32766,
+  kLocalDomain = -32765,
+  kNetworkDomain = -32764,
+  kUserDomain = -32763,
+  kClassicDomain = -32762
+};
+
+
+
+
+
+enum {
+  kLastDomainConstant = kUserDomain
+};
+
+enum {
+  kCreateFolder = true,
+  kDontCreateFolder = false
+};
+
+enum {
+  kSystemFolderType = 'macs',
+  kDesktopFolderType = 'desk',
+  kSystemDesktopFolderType = 'sdsk',
+  kTrashFolderType = 'trsh',
+  kSystemTrashFolderType = 'strs',
+  kWhereToEmptyTrashFolderType = 'empt',
+  kPrintMonitorDocsFolderType = 'prnt',
+  kStartupFolderType = 'strt',
+  kShutdownFolderType = 'shdf',
+  kAppleMenuFolderType = 'amnu',
+  kControlPanelFolderType = 'ctrl',
+  kSystemControlPanelFolderType = 'sctl',
+  kExtensionFolderType = 'extn',
+  kFontsFolderType = 'font',
+  kPreferencesFolderType = 'pref',
+  kSystemPreferencesFolderType = 'sprf',
+  kTemporaryFolderType = 'temp'
+};
+extern OSErr
+FindFolder(
+  short vRefNum,
+  OSType folderType,
+  Boolean createFolder,
+  short * foundVRefNum,
+  long * foundDirID) ;
+extern OSErr
+FindFolderExtended(
+  short vol,
+  OSType foldType,
+  Boolean createFolder,
+  UInt32 flags,
+  void * data,
+  short * vRefNum,
+  long * dirID) ;
+extern OSErr
+ReleaseFolder(
+  short vRefNum,
+  OSType folderType) ;
+extern OSErr
+FSFindFolder(
+  short vRefNum,
+  OSType folderType,
+  Boolean createFolder,
+  FSRef * foundRef) ;
+extern OSErr
+FSFindFolderExtended(
+  short vol,
+  OSType foldType,
+  Boolean createFolder,
+  UInt32 flags,
+  void * data,
+  FSRef * foundRef) ;
+enum {
+  kExtensionDisabledFolderType = 'extD',
+  kControlPanelDisabledFolderType = 'ctrD',
+  kSystemExtensionDisabledFolderType = 'macD',
+  kStartupItemsDisabledFolderType = 'strD',
+  kShutdownItemsDisabledFolderType = 'shdD',
+  kApplicationsFolderType = 'apps',
+  kDocumentsFolderType = 'docs'
+};
+
+enum {
+
+  kVolumeRootFolderType = 'root',
+  kChewableItemsFolderType = 'flnt',
+  kApplicationSupportFolderType = 'asup',
+  kTextEncodingsFolderType = 'Ätex',
+  kStationeryFolderType = 'odst',
+  kOpenDocFolderType = 'odod',
+  kOpenDocShellPlugInsFolderType = 'odsp',
+  kEditorsFolderType = 'oded',
+  kOpenDocEditorsFolderType = 'Äodf',
+  kOpenDocLibrariesFolderType = 'odlb',
+  kGenEditorsFolderType = 'Äedi',
+  kHelpFolderType = 'Ählp',
+  kInternetPlugInFolderType = 'Änet',
+  kModemScriptsFolderType = 'Ämod',
+  kPrinterDescriptionFolderType = 'ppdf',
+  kPrinterDriverFolderType = 'Äprd',
+  kScriptingAdditionsFolderType = 'Äscr',
+  kSharedLibrariesFolderType = 'Älib',
+  kVoicesFolderType = 'fvoc',
+  kControlStripModulesFolderType = 'sdev',
+  kAssistantsFolderType = 'astÄ',
+  kUtilitiesFolderType = 'utiÄ',
+  kAppleExtrasFolderType = 'aexÄ',
+  kContextualMenuItemsFolderType = 'cmnu',
+  kMacOSReadMesFolderType = 'morÄ',
+  kALMModulesFolderType = 'walk',
+  kALMPreferencesFolderType = 'trip',
+  kALMLocationsFolderType = 'fall',
+  kColorSyncProfilesFolderType = 'prof',
+  kThemesFolderType = 'thme',
+  kFavoritesFolderType = 'favs',
+  kInternetFolderType = 'intÄ',
+  kAppearanceFolderType = 'appr',
+  kSoundSetsFolderType = 'snds',
+  kDesktopPicturesFolderType = 'dtpÄ',
+  kInternetSearchSitesFolderType = 'issf',
+  kFindSupportFolderType = 'fnds',
+  kFindByContentFolderType = 'fbcf',
+  kInstallerLogsFolderType = 'ilgf',
+  kScriptsFolderType = 'scrÄ',
+  kFolderActionsFolderType = 'fasf',
+  kLauncherItemsFolderType = 'laun',
+  kRecentApplicationsFolderType = 'rapp',
+  kRecentDocumentsFolderType = 'rdoc',
+  kRecentServersFolderType = 'rsvr',
+  kSpeakableItemsFolderType = 'spki',
+  kKeychainFolderType = 'kchn',
+  kQuickTimeExtensionsFolderType = 'qtex',
+  kDisplayExtensionsFolderType = 'dspl',
+  kMultiprocessingFolderType = 'mpxf',
+  kPrintingPlugInsFolderType = 'pplg'
+};
+
+
+
+
+enum {
+  kDomainTopLevelFolderType = 'dtop',
+  kDomainLibraryFolderType = 'dlib',
+  kColorSyncFolderType = 'sync',
+  kColorSyncCMMFolderType = 'ccmm',
+  kColorSyncScriptingFolderType = 'cscr',
+  kPrintersFolderType = 'impr',
+  kSpeechFolderType = 'spch',
+  kCarbonLibraryFolderType = 'carb',
+  kDocumentationFolderType = 'info',
+  kDeveloperDocsFolderType = 'ddoc',
+  kDeveloperHelpFolderType = 'devh',
+  kISSDownloadsFolderType = 'issd',
+  kUserSpecificTmpFolderType = 'utmp',
+  kCachedDataFolderType = 'cach',
+  kFrameworksFolderType = 'fram',
+  kPrivateFrameworksFolderType = 'pfrm',
+  kClassicDesktopFolderType = 'sdsk',
+
+
+  kDeveloperFolderType = 'devf',
+  kSystemSoundsFolderType = 'ssnd',
+  kComponentsFolderType = 'cmpd',
+  kQuickTimeComponentsFolderType = 'wcmp',
+  kCoreServicesFolderType = 'csrv',
+  kPictureDocumentsFolderType = 'pdoc',
+  kMovieDocumentsFolderType = 'mdoc',
+  kMusicDocumentsFolderType = 'µdoc',
+  kInternetSitesFolderType = 'site',
+  kPublicFolderType = 'pubb',
+  kAudioSupportFolderType = 'adio',
+  kAudioSoundsFolderType = 'asnd',
+  kAudioSoundBanksFolderType = 'bank',
+  kAudioAlertSoundsFolderType = 'alrt',
+  kAudioPlugInsFolderType = 'aplg',
+  kAudioComponentsFolderType = 'acmp',
+  kKernelExtensionsFolderType = 'kext',
+  kDirectoryServicesFolderType = 'dsrv',
+  kDirectoryServicesPlugInsFolderType = 'dplg',
+  kInstallerReceiptsFolderType = 'rcpt',
+  kFileSystemSupportFolderType = 'fsys',
+  kAppleShareSupportFolderType = 'shar',
+  kAppleShareAuthenticationFolderType = 'auth',
+  kMIDIDriversFolderType = 'midi',
+  kKeyboardLayoutsFolderType = 'klay',
+  kIndexFilesFolderType = 'indx',
+  kFindByContentIndexesFolderType = 'fbcx',
+  kManagedItemsFolderType = 'mang',
+  kBootTimeStartupItemsFolderType = 'empz'
+};
+
+enum {
+  kLocalesFolderType = 'Äloc',
+  kFindByContentPluginsFolderType = 'fbcp'
+};
+
+enum {
+  kUsersFolderType = 'usrs',
+  kCurrentUserFolderType = 'cusr',
+  kCurrentUserRemoteFolderLocation = 'rusf',
+  kCurrentUserRemoteFolderType = 'rusr',
+  kSharedUserDataFolderType = 'sdat',
+  kVolumeSettingsFolderType = 'vsfd'
+};
+
+enum {
+  kAppleshareAutomountServerAliasesFolderType = 'srvÄ',
+  kPreMacOS91ApplicationsFolderType = '\8cpps',
+  kPreMacOS91InstallerLogsFolderType = '\94lgf',
+  kPreMacOS91AssistantsFolderType = '\8cstÄ',
+  kPreMacOS91UtilitiesFolderType = '\9ftiÄ',
+  kPreMacOS91AppleExtrasFolderType = '\8cexÄ',
+  kPreMacOS91MacOSReadMesFolderType = 'µorÄ',
+  kPreMacOS91InternetFolderType = '\94ntÄ',
+  kPreMacOS91AutomountedServersFolderType = '§rvÄ',
+  kPreMacOS91StationeryFolderType = '¿dst'
+};
+
+
+enum {
+  kCreateFolderAtBoot = 0x00000002,
+  kCreateFolderAtBootBit = 1,
+  kFolderCreatedInvisible = 0x00000004,
+  kFolderCreatedInvisibleBit = 2,
+  kFolderCreatedNameLocked = 0x00000008,
+  kFolderCreatedNameLockedBit = 3,
+  kFolderCreatedAdminPrivs = 0x00000010,
+  kFolderCreatedAdminPrivsBit = 4
+};
+
+enum {
+  kFolderInUserFolder = 0x00000020,
+  kFolderInUserFolderBit = 5,
+  kFolderTrackedByAlias = 0x00000040,
+  kFolderTrackedByAliasBit = 6,
+  kFolderInRemoteUserFolderIfAvailable = 0x00000080,
+  kFolderInRemoteUserFolderIfAvailableBit = 7,
+  kFolderNeverMatchedInIdentifyFolder = 0x00000100,
+  kFolderNeverMatchedInIdentifyFolderBit = 8,
+  kFolderMustStayOnSameVolume = 0x00000200,
+  kFolderMustStayOnSameVolumeBit = 9,
+  kFolderManagerFolderInMacOS9FolderIfMacOSXIsInstalledMask = 0x00000400,
+  kFolderManagerFolderInMacOS9FolderIfMacOSXIsInstalledBit = 10,
+  kFolderInLocalOrRemoteUserFolder = kFolderInUserFolder | kFolderInRemoteUserFolderIfAvailable
+};
+
+typedef UInt32 FolderDescFlags;
+
+enum {
+  kRelativeFolder = 'relf',
+  kSpecialFolder = 'spcf'
+};
+
+typedef OSType FolderClass;
+
+enum {
+  kBlessedFolder = 'blsf',
+  kRootFolder = 'rotf'
+};
+
+enum {
+  kCurrentUserFolderLocation = 'cusf'
+};
+
+typedef OSType FolderType;
+typedef OSType FolderLocation;
+
+struct FolderDesc {
+  Size descSize;
+  FolderType foldType;
+  FolderDescFlags flags;
+  FolderClass foldClass;
+  FolderType foldLocation;
+  OSType badgeSignature;
+  OSType badgeType;
+  UInt32 reserved;
+  StrFileName name;
+};
+typedef struct FolderDesc FolderDesc;
+typedef FolderDesc * FolderDescPtr;
+
+typedef UInt32 RoutingFlags;
+struct FolderRouting {
+  Size descSize;
+  OSType fileType;
+  FolderType routeFromFolder;
+  FolderType routeToFolder;
+  RoutingFlags flags;
+};
+typedef struct FolderRouting FolderRouting;
+typedef FolderRouting * FolderRoutingPtr;
+
+
+enum {
+
+
+
+  kFindFolderRedirectionFlagUseDistinctUserFoldersBit = 0,
+
+
+  kFindFolderRedirectionFlagUseGivenVRefAndDirIDAsUserFolderBit = 1,
+
+
+  kFindFolderRedirectionFlagsUseGivenVRefNumAndDirIDAsRemoteUserFolderBit = 2
+};
+
+struct FindFolderUserRedirectionGlobals {
+  UInt32 version;
+  UInt32 flags;
+
+  Str31 userName;
+  short userNameScript;
+
+  short currentUserFolderVRefNum;
+  long currentUserFolderDirID;
+
+  short remoteUserFolderVRefNum;
+  long remoteUserFolderDirID;
+};
+typedef struct FindFolderUserRedirectionGlobals FindFolderUserRedirectionGlobals;
+typedef FindFolderUserRedirectionGlobals * FindFolderUserRedirectionGlobalsPtr;
+enum {
+  kFolderManagerUserRedirectionGlobalsCurrentVersion = 1
+};
+
+
+
+
+
+enum {
+  kFindFolderExtendedFlagsDoNotFollowAliasesBit = 0,
+  kFindFolderExtendedFlagsDoNotUseUserFolderBit = 1,
+  kFindFolderExtendedFlagsUseOtherUserRecord = 0x01000000
+};
+
+typedef OSStatus ( * FolderManagerNotificationProcPtr)(OSType message, void *arg, void *userRefCon);
+typedef FolderManagerNotificationProcPtr FolderManagerNotificationUPP;
+extern FolderManagerNotificationUPP
+NewFolderManagerNotificationUPP(FolderManagerNotificationProcPtr userRoutine) ;
+extern void
+DisposeFolderManagerNotificationUPP(FolderManagerNotificationUPP userUPP) ;
+extern OSStatus
+InvokeFolderManagerNotificationUPP(
+  OSType message,
+  void * arg,
+  void * userRefCon,
+  FolderManagerNotificationUPP userUPP) ;
+
+enum {
+  kFolderManagerNotificationMessageUserLogIn = 'log+',
+  kFolderManagerNotificationMessagePreUserLogIn = 'logj',
+  kFolderManagerNotificationMessageUserLogOut = 'log-',
+  kFolderManagerNotificationMessagePostUserLogOut = 'logp',
+  kFolderManagerNotificationDiscardCachedData = 'dche',
+  kFolderManagerNotificationMessageLoginStartup = 'stup'
+};
+
+
+
+enum {
+  kDoNotRemoveWhenCurrentApplicationQuitsBit = 0,
+  kDoNotRemoveWheCurrentApplicationQuitsBit = kDoNotRemoveWhenCurrentApplicationQuitsBit
+};
+
+
+enum {
+  kStopIfAnyNotificationProcReturnsErrorBit = 31
+};
+extern OSErr
+AddFolderDescriptor(
+  FolderType foldType,
+  FolderDescFlags flags,
+  FolderClass foldClass,
+  FolderLocation foldLocation,
+  OSType badgeSignature,
+  OSType badgeType,
+  ConstStrFileNameParam name,
+  Boolean replaceFlag) ;
+extern OSErr
+GetFolderDescriptor(
+  FolderType foldType,
+  Size descSize,
+  FolderDesc * foldDesc) ;
+extern OSErr
+GetFolderTypes(
+  UInt32 requestedTypeCount,
+  UInt32 * totalTypeCount,
+  FolderType * theTypes) ;
+extern OSErr
+RemoveFolderDescriptor(FolderType foldType) ;
+extern OSErr
+GetFolderName(
+  short vRefNum,
+  OSType foldType,
+  short * foundVRefNum,
+  StrFileName name) ;
+extern OSErr
+AddFolderRouting(
+  OSType fileType,
+  FolderType routeFromFolder,
+  FolderType routeToFolder,
+  RoutingFlags flags,
+  Boolean replaceFlag) ;
+extern OSErr
+RemoveFolderRouting(
+  OSType fileType,
+  FolderType routeFromFolder) ;
+extern OSErr
+FindFolderRouting(
+  OSType fileType,
+  FolderType routeFromFolder,
+  FolderType * routeToFolder,
+  RoutingFlags * flags) ;
+extern OSErr
+GetFolderRoutings(
+  UInt32 requestedRoutingCount,
+  UInt32 * totalRoutingCount,
+  Size routingSize,
+  FolderRouting * theRoutings) ;
+extern OSErr
+InvalidateFolderDescriptorCache(
+  short vRefNum,
+  long dirID) ;
+extern OSErr
+IdentifyFolder(
+  short vRefNum,
+  long dirID,
+  FolderType * foldType) ;
+extern OSErr
+FolderManagerRegisterNotificationProc(
+  FolderManagerNotificationUPP notificationProc,
+  void * refCon,
+  UInt32 options) ;
+extern OSErr
+FolderManagerUnregisterNotificationProc(
+  FolderManagerNotificationUPP notificationProc,
+  void * refCon) ;
+extern OSStatus
+FolderManagerRegisterCallNotificationProcs(
+  OSType message,
+  void * arg,
+  UInt32 options) ;
+struct MultiUserGestalt {
+
+  short giVersion;
+  short giReserved0;
+  short giReserved1;
+  short giReserved2;
+  short giReserved3;
+  FSSpec giReserved4;
+
+
+  short giDocsVRefNum;
+  long giDocsDirID;
+  short giForceSaves;
+  short giForceOpens;
+  Str31 giSetupName;
+  Str31 giUserName;
+  Str31 giFrontAppName;
+  short giReserved5;
+  short giIsOn;
+
+
+
+
+
+  short giUserLoggedInType;
+  char giUserEncryptPwd[16];
+  short giUserEnvironment;
+  long giReserved6;
+  long giReserved7;
+  Boolean giDisableScrnShots;
+
+
+  Boolean giSupportsAsyncFSCalls;
+  short giPrefsVRefNum;
+  long giPrefsDirID;
+  unsigned long giUserLogInTime;
+  Boolean giUsingPrintQuotas;
+  Boolean giUsingDiskQuotas;
+
+
+  Boolean giInSystemAccess;
+  Boolean giUserFolderEnabled;
+  short giReserved8;
+  long giReserved9;
+  Boolean giInLoginScreen;
+
+
+
+
+};
+typedef struct MultiUserGestalt MultiUserGestalt;
+typedef MultiUserGestalt * MultiUserGestaltPtr;
+typedef MultiUserGestaltPtr * MultiUserGestaltHandle;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+
+  kTMTaskActive = (1L << 15)
+};
+
+typedef struct TMTask TMTask;
+typedef TMTask * TMTaskPtr;
+typedef void ( * TimerProcPtr)(TMTaskPtr tmTaskPtr);
+typedef TimerProcPtr TimerUPP;
+struct TMTask {
+  QElemPtr qLink;
+  short qType;
+  TimerUPP tmAddr;
+  long tmCount;
+  long tmWakeUp;
+  long tmReserved;
+};
+extern void
+InsTime(QElemPtr tmTaskPtr) ;
+extern void
+InsXTime(QElemPtr tmTaskPtr) ;
+extern void
+PrimeTime(
+  QElemPtr tmTaskPtr,
+  long count) ;
+extern void
+RmvTime(QElemPtr tmTaskPtr) ;
+extern OSErr
+InstallTimeTask(QElemPtr tmTaskPtr) ;
+extern OSErr
+InstallXTimeTask(QElemPtr tmTaskPtr) ;
+extern OSErr
+PrimeTimeTask(
+  QElemPtr tmTaskPtr,
+  long count) ;
+extern OSErr
+RemoveTimeTask(QElemPtr tmTaskPtr) ;
+extern void
+Microseconds(UnsignedWide * microTickCount) ;
+extern TimerUPP
+NewTimerUPP(TimerProcPtr userRoutine) ;
+extern void
+DisposeTimerUPP(TimerUPP userUPP) ;
+extern void
+InvokeTimerUPP(
+  TMTaskPtr tmTaskPtr,
+  TimerUPP userUPP) ;
+
+
+
+
+
+
+}
+
+
+
+enum {
+
+  kMPQueueInfoVersion = 1L | (kOpaqueQueueID << 16),
+  kMPSemaphoreInfoVersion = 1L | (kOpaqueSemaphoreID << 16),
+  kMPEventInfoVersion = 1L | (kOpaqueEventID << 16),
+  kMPCriticalRegionInfoVersion = 1L | (kOpaqueCriticalRegionID << 16),
+  kMPNotificationInfoVersion = 1L | (kOpaqueNotificationID << 16),
+  kMPAddressSpaceInfoVersion = 1L | (kOpaqueAddressSpaceID << 16)
+};
+
+
+struct MPQueueInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  OSType queueName;
+
+  ItemCount nWaiting;
+  MPTaskID waitingTaskID;
+
+  ItemCount nMessages;
+  ItemCount nReserved;
+
+  void * p1;
+  void * p2;
+  void * p3;
+};
+typedef struct MPQueueInfo MPQueueInfo;
+struct MPSemaphoreInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  OSType semaphoreName;
+
+  ItemCount nWaiting;
+  MPTaskID waitingTaskID;
+
+  ItemCount maximum;
+  ItemCount count;
+};
+typedef struct MPSemaphoreInfo MPSemaphoreInfo;
+struct MPEventInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  OSType eventName;
+
+  ItemCount nWaiting;
+  MPTaskID waitingTaskID;
+
+  MPEventFlags events;
+};
+typedef struct MPEventInfo MPEventInfo;
+struct MPCriticalRegionInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  OSType regionName;
+
+  ItemCount nWaiting;
+  MPTaskID waitingTaskID;
+
+  MPTaskID owningTask;
+  ItemCount count;
+};
+typedef struct MPCriticalRegionInfo MPCriticalRegionInfo;
+struct MPNotificationInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  OSType notificationName;
+
+  MPQueueID queueID;
+  void * p1;
+  void * p2;
+  void * p3;
+
+  MPEventID eventID;
+  MPEventFlags events;
+
+  MPSemaphoreID semaphoreID;
+};
+typedef struct MPNotificationInfo MPNotificationInfo;
+struct MPAddressSpaceInfo {
+  PBVersion version;
+
+  MPProcessID processID;
+  MPCoherenceID groupID;
+  ItemCount nTasks;
+  UInt32 vsid[16];
+};
+typedef struct MPAddressSpaceInfo MPAddressSpaceInfo;
+extern "C" {
+
+
+extern Ptr LMGetMemTop(void) ;
+extern void LMSetMemTop(Ptr value) ;
+extern Ptr LMGetBufPtr(void) ;
+extern void LMSetBufPtr(Ptr value) ;
+extern Ptr LMGetHeapEnd(void) ;
+extern void LMSetHeapEnd(Ptr value) ;
+extern UInt8 LMGetCPUFlag(void) ;
+extern void LMSetCPUFlag(UInt8 value) ;
+extern SInt32 LMGetRndSeed(void) ;
+extern void LMSetRndSeed(SInt32 value) ;
+extern UInt8 LMGetSEvtEnb(void) ;
+extern void LMSetSEvtEnb(UInt8 value) ;
+extern SInt16 LMGetBootDrive(void) ;
+extern void LMSetBootDrive(SInt16 value) ;
+extern SInt16 LMGetMemErr(void) ;
+extern void LMSetMemErr(SInt16 value) ;
+extern UInt8 LMGetSdVolume(void) ;
+extern void LMSetSdVolume(UInt8 value) ;
+extern Ptr LMGetSoundPtr(void) ;
+extern void LMSetSoundPtr(Ptr value) ;
+extern Ptr LMGetSoundBase(void) ;
+extern void LMSetSoundBase(Ptr value) ;
+extern UInt8 LMGetSoundLevel(void) ;
+extern void LMSetSoundLevel(UInt8 value) ;
+extern SInt16 LMGetCurPitch(void) ;
+extern void LMSetCurPitch(SInt16 value) ;
+extern THz LMGetSysZone(void) ;
+extern void LMSetSysZone(THz value) ;
+extern THz LMGetApplZone(void) ;
+extern void LMSetApplZone(THz value) ;
+extern UInt8 LMGetScrDmpEnb(void) ;
+extern void LMSetScrDmpEnb(UInt8 value) ;
+extern SInt32 LMGetBufTgFNum(void) ;
+extern void LMSetBufTgFNum(SInt32 value) ;
+extern SInt16 LMGetBufTgFFlg(void) ;
+extern void LMSetBufTgFFlg(SInt16 value) ;
+extern SInt16 LMGetBufTgFBkNum(void) ;
+extern void LMSetBufTgFBkNum(SInt16 value) ;
+extern SInt32 LMGetBufTgDate(void) ;
+extern void LMSetBufTgDate(SInt32 value) ;
+extern SInt32 LMGetMinStack(void) ;
+extern void LMSetMinStack(SInt32 value) ;
+extern SInt32 LMGetDefltStack(void) ;
+extern void LMSetDefltStack(SInt32 value) ;
+extern Handle LMGetGZRootHnd(void) ;
+extern void LMSetGZRootHnd(Handle value) ;
+extern Handle LMGetGZMoveHnd(void) ;
+extern void LMSetGZMoveHnd(Handle value) ;
+extern UniversalProcPtr LMGetToExtFS(void) ;
+extern void LMSetToExtFS(UniversalProcPtr value) ;
+extern UniversalProcPtr LMGetJStash(void) ;
+extern void LMSetJStash(UniversalProcPtr value) ;
+extern SInt16 LMGetCurApRefNum(void) ;
+extern void LMSetCurApRefNum(SInt16 value) ;
+extern Ptr LMGetCurStackBase(void) ;
+extern void LMSetCurStackBase(Ptr value) ;
+extern SInt16 LMGetCurPageOption(void) ;
+extern void LMSetCurPageOption(SInt16 value) ;
+extern SInt16 LMGetPrintErr(void) ;
+extern void LMSetPrintErr(SInt16 value) ;
+extern SInt16 LMGetApFontID(void) ;
+extern void LMSetApFontID(SInt16 value) ;
+extern SInt32 LMGetOneOne(void) ;
+extern void LMSetOneOne(SInt32 value) ;
+extern SInt32 LMGetMinusOne(void) ;
+extern void LMSetMinusOne(SInt32 value) ;
+extern SInt16 LMGetSysMap(void) ;
+extern void LMSetSysMap(SInt16 value) ;
+extern UInt8 LMGetResLoad(void) ;
+extern void LMSetResLoad(UInt8 value) ;
+extern SInt16 LMGetResErr(void) ;
+extern void LMSetResErr(SInt16 value) ;
+extern UInt8 LMGetTmpResLoad(void) ;
+extern void LMSetTmpResLoad(UInt8 value) ;
+extern Ptr LMGetIntlSpec(void) ;
+extern void LMSetIntlSpec(Ptr value) ;
+extern SInt16 LMGetSysFontFam(void) ;
+extern void LMSetSysFontFam(SInt16 value) ;
+extern SInt16 LMGetSysFontSize(void) ;
+extern void LMSetSysFontSize(SInt16 value) ;
+extern StringPtr LMGetCurApName(void) ;
+extern void LMSetCurApName(ConstStr31Param curApNameValue) ;
+extern StringPtr LMGetSysResName(void) ;
+extern void LMSetSysResName(ConstStr15Param sysResNameValue) ;
+extern StringPtr LMGetFinderName(void) ;
+extern void LMSetFinderName(ConstStr15Param finderNameValue) ;
+extern Ptr LMGetToolScratch(void) ;
+extern void LMSetToolScratch(const void * toolScratchValue) ;
+extern UniversalProcPtr LMGetLvl2DT(short vectorNumber) ;
+extern void LMSetLvl2DT(UniversalProcPtr Lvl2DTValue, short vectorNumber) ;
+extern Ptr LMGetHighHeapMark(void) ;
+extern void LMSetHighHeapMark(Ptr value) ;
+extern Ptr LMGetStackLowPoint(void) ;
+extern void LMSetStackLowPoint(Ptr value) ;
+extern Ptr LMGetDiskFormatingHFSDefaults(void) ;
+extern void LMSetDiskFormatingHFSDefaults(Ptr value) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef UInt16 AVLVisitStage;
+enum {
+  kAVLPreOrder = 0,
+  kAVLInOrder = 1,
+  kAVLPostOrder = 2
+};
+
+
+typedef UInt16 AVLOrder;
+enum {
+  kLeftToRight = 0,
+  kRightToLeft = 1
+};
+
+
+typedef UInt16 AVLNodeType;
+enum {
+  kAVLIsTree = 0,
+  kAVLIsLeftBranch = 1,
+  kAVLIsRightBranch = 2,
+  kAVLIsLeaf = 3,
+  kAVLNullNode = 4
+};
+
+enum {
+  errItemAlreadyInTree = -960,
+  errNotValidTree = -961,
+  errItemNotFoundInTree = -962,
+  errCanNotInsertWhileWalkProcInProgress = -963,
+  errTreeIsLocked = -964
+};
+
+
+struct AVLTreeStruct {
+  OSType signature;
+  unsigned long privateStuff[8];
+};
+typedef struct AVLTreeStruct AVLTreeStruct;
+typedef AVLTreeStruct * AVLTreePtr;
+
+
+
+
+
+
+
+typedef SInt32 ( * AVLCompareItemsProcPtr)(AVLTreePtr tree, const void *i1, const void *i2, AVLNodeType nd_typ);
+
+
+
+
+
+
+typedef UInt32 ( * AVLItemSizeProcPtr)(AVLTreePtr tree, const void *itemPtr);
+
+
+
+
+
+
+typedef void ( * AVLDisposeItemProcPtr)(AVLTreePtr tree, const void *dataP);
+typedef OSErr ( * AVLWalkProcPtr)(AVLTreePtr tree, const void *dataP, AVLVisitStage visitStage, AVLNodeType node, UInt32 level, SInt32 balance, void *refCon);
+typedef AVLCompareItemsProcPtr AVLCompareItemsUPP;
+typedef AVLItemSizeProcPtr AVLItemSizeUPP;
+typedef AVLDisposeItemProcPtr AVLDisposeItemUPP;
+typedef AVLWalkProcPtr AVLWalkUPP;
+extern AVLCompareItemsUPP
+NewAVLCompareItemsUPP(AVLCompareItemsProcPtr userRoutine) ;
+extern AVLItemSizeUPP
+NewAVLItemSizeUPP(AVLItemSizeProcPtr userRoutine) ;
+extern AVLDisposeItemUPP
+NewAVLDisposeItemUPP(AVLDisposeItemProcPtr userRoutine) ;
+extern AVLWalkUPP
+NewAVLWalkUPP(AVLWalkProcPtr userRoutine) ;
+extern void
+DisposeAVLCompareItemsUPP(AVLCompareItemsUPP userUPP) ;
+extern void
+DisposeAVLItemSizeUPP(AVLItemSizeUPP userUPP) ;
+extern void
+DisposeAVLDisposeItemUPP(AVLDisposeItemUPP userUPP) ;
+extern void
+DisposeAVLWalkUPP(AVLWalkUPP userUPP) ;
+extern SInt32
+InvokeAVLCompareItemsUPP(
+  AVLTreePtr tree,
+  const void * i1,
+  const void * i2,
+  AVLNodeType nd_typ,
+  AVLCompareItemsUPP userUPP) ;
+extern UInt32
+InvokeAVLItemSizeUPP(
+  AVLTreePtr tree,
+  const void * itemPtr,
+  AVLItemSizeUPP userUPP) ;
+extern void
+InvokeAVLDisposeItemUPP(
+  AVLTreePtr tree,
+  const void * dataP,
+  AVLDisposeItemUPP userUPP) ;
+extern OSErr
+InvokeAVLWalkUPP(
+  AVLTreePtr tree,
+  const void * dataP,
+  AVLVisitStage visitStage,
+  AVLNodeType node,
+  UInt32 level,
+  SInt32 balance,
+  void * refCon,
+  AVLWalkUPP userUPP) ;
+extern OSErr
+AVLInit(
+  UInt32 flags,
+  AVLCompareItemsUPP compareItemsProc,
+  AVLItemSizeUPP sizeItemProc,
+  AVLDisposeItemUPP disposeItemProc,
+  void * refCon,
+  AVLTreePtr * tree) ;
+extern OSErr
+AVLDispose(
+  AVLTreePtr * tree,
+  AVLOrder order) ;
+extern OSErr
+AVLWalk(
+  AVLTreePtr tree,
+  AVLWalkUPP walkProc,
+  AVLOrder order,
+  void * walkRefCon) ;
+extern OSErr
+AVLCount(
+  AVLTreePtr tree,
+  UInt32 * count) ;
+extern OSErr
+AVLGetIndItem(
+  AVLTreePtr tree,
+  UInt32 index,
+  void * dataPtr,
+  UInt32 * itemSize) ;
+extern OSErr
+AVLInsert(
+  AVLTreePtr tree,
+  const void * data) ;
+extern OSErr
+AVLRemove(
+  AVLTreePtr tree,
+  const void * key,
+  void * dataPtr,
+  UInt32 * itemSize) ;
+extern OSErr
+AVLFind(
+  AVLTreePtr tree,
+  const void * key,
+  void * dataPtr,
+  UInt32 * itemSize) ;
+extern OSErr
+AVLGetRefcon(
+  AVLTreePtr tree,
+  void ** refCon) ;
+
+
+
+
+
+}
+
+
+
+struct PEFContainerHeader {
+  OSType tag1;
+  OSType tag2;
+  OSType architecture;
+  UInt32 formatVersion;
+  UInt32 dateTimeStamp;
+  UInt32 oldDefVersion;
+  UInt32 oldImpVersion;
+  UInt32 currentVersion;
+  UInt16 sectionCount;
+  UInt16 instSectionCount;
+  UInt32 reservedA;
+};
+typedef struct PEFContainerHeader PEFContainerHeader;
+enum {
+  kPEFTag1 = 'Joy!',
+  kPEFTag2 = 'peff',
+  kPEFVersion = 0x00000001
+};
+
+
+enum {
+  kPEFFirstSectionHeaderOffset = sizeof(PEFContainerHeader)
+};
+struct PEFSectionHeader {
+  SInt32 nameOffset;
+  UInt32 defaultAddress;
+  UInt32 totalLength;
+  UInt32 unpackedLength;
+  UInt32 containerLength;
+  UInt32 containerOffset;
+  UInt8 sectionKind;
+  UInt8 shareKind;
+  UInt8 alignment;
+  UInt8 reservedA;
+};
+typedef struct PEFSectionHeader PEFSectionHeader;
+enum {
+
+
+  kPEFCodeSection = 0,
+  kPEFUnpackedDataSection = 1,
+  kPEFPackedDataSection = 2,
+  kPEFConstantSection = 3,
+  kPEFExecDataSection = 6,
+
+  kPEFLoaderSection = 4,
+  kPEFDebugSection = 5,
+  kPEFExceptionSection = 7,
+  kPEFTracebackSection = 8
+};
+
+
+enum {
+
+  kPEFProcessShare = 1,
+  kPEFGlobalShare = 4,
+  kPEFProtectedShare = 5
+};
+enum {
+
+  kPEFPkDataZero = 0,
+  kPEFPkDataBlock = 1,
+  kPEFPkDataRepeat = 2,
+  kPEFPkDataRepeatBlock = 3,
+  kPEFPkDataRepeatZero = 4
+};
+
+
+enum {
+  kPEFPkDataOpcodeShift = 5,
+  kPEFPkDataCount5Mask = 0x1F,
+  kPEFPkDataMaxCount5 = 31,
+  kPEFPkDataVCountShift = 7,
+  kPEFPkDataVCountMask = 0x7F,
+  kPEFPkDataVCountEndMask = 0x80
+};
+struct PEFLoaderInfoHeader {
+  SInt32 mainSection;
+  UInt32 mainOffset;
+  SInt32 initSection;
+  UInt32 initOffset;
+  SInt32 termSection;
+  UInt32 termOffset;
+  UInt32 importedLibraryCount;
+  UInt32 totalImportedSymbolCount;
+  UInt32 relocSectionCount;
+  UInt32 relocInstrOffset;
+  UInt32 loaderStringsOffset;
+  UInt32 exportHashOffset;
+  UInt32 exportHashTablePower;
+  UInt32 exportedSymbolCount;
+};
+typedef struct PEFLoaderInfoHeader PEFLoaderInfoHeader;
+
+
+
+
+
+
+
+struct PEFImportedLibrary {
+  UInt32 nameOffset;
+  UInt32 oldImpVersion;
+  UInt32 currentVersion;
+  UInt32 importedSymbolCount;
+  UInt32 firstImportedSymbol;
+  UInt8 options;
+  UInt8 reservedA;
+  UInt16 reservedB;
+};
+typedef struct PEFImportedLibrary PEFImportedLibrary;
+enum {
+
+  kPEFWeakImportLibMask = 0x40,
+  kPEFInitLibBeforeMask = 0x80
+};
+struct PEFImportedSymbol {
+  UInt32 classAndName;
+};
+typedef struct PEFImportedSymbol PEFImportedSymbol;
+enum {
+  kPEFImpSymClassShift = 24,
+  kPEFImpSymNameOffsetMask = 0x00FFFFFF,
+  kPEFImpSymMaxNameOffset = 0x00FFFFFF
+};
+
+
+
+
+
+
+
+enum {
+
+  kPEFCodeSymbol = 0x00,
+  kPEFDataSymbol = 0x01,
+  kPEFTVectorSymbol = 0x02,
+  kPEFTOCSymbol = 0x03,
+  kPEFGlueSymbol = 0x04,
+  kPEFUndefinedSymbol = 0x0F,
+  kPEFWeakImportSymMask = 0x80
+};
+struct PEFExportedSymbolHashSlot {
+  UInt32 countAndStart;
+};
+typedef struct PEFExportedSymbolHashSlot PEFExportedSymbolHashSlot;
+enum {
+  kPEFHashSlotSymCountShift = 18,
+  kPEFHashSlotFirstKeyMask = 0x0003FFFF,
+  kPEFHashSlotMaxSymbolCount = 0x00003FFF,
+  kPEFHashSlotMaxKeyIndex = 0x0003FFFF
+};
+struct PEFSplitHashWord {
+  UInt16 nameLength;
+  UInt16 hashValue;
+};
+typedef struct PEFSplitHashWord PEFSplitHashWord;
+struct PEFExportedSymbolKey {
+  union {
+    UInt32 fullHashWord;
+    PEFSplitHashWord splitHashWord;
+  } u;
+};
+typedef struct PEFExportedSymbolKey PEFExportedSymbolKey;
+enum {
+  kPEFHashLengthShift = 16,
+  kPEFHashValueMask = 0x0000FFFF,
+  kPEFHashMaxLength = 0x0000FFFF
+};
+struct PEFExportedSymbol {
+  UInt32 classAndName;
+  UInt32 symbolValue;
+  SInt16 sectionIndex;
+};
+typedef struct PEFExportedSymbol PEFExportedSymbol;
+enum {
+  kPEFExpSymClassShift = 24,
+  kPEFExpSymNameOffsetMask = 0x00FFFFFF,
+  kPEFExpSymMaxNameOffset = 0x00FFFFFF
+};
+
+
+
+
+
+
+
+enum {
+
+  kPEFAbsoluteExport = -2,
+  kPEFReexportedImport = -3
+};
+typedef UInt16 PEFRelocChunk;
+struct PEFLoaderRelocationHeader {
+  UInt16 sectionIndex;
+  UInt16 reservedA;
+  UInt32 relocCount;
+  UInt32 firstRelocOffset;
+};
+typedef struct PEFLoaderRelocationHeader PEFLoaderRelocationHeader;
+enum {
+  kPEFRelocBasicOpcodeRange = 128
+};
+enum {
+  kPEFRelocBySectDWithSkip = 0x00,
+  kPEFRelocBySectC = 0x20,
+  kPEFRelocBySectD = 0x21,
+  kPEFRelocTVector12 = 0x22,
+  kPEFRelocTVector8 = 0x23,
+  kPEFRelocVTable8 = 0x24,
+  kPEFRelocImportRun = 0x25,
+  kPEFRelocSmByImport = 0x30,
+  kPEFRelocSmSetSectC = 0x31,
+  kPEFRelocSmSetSectD = 0x32,
+  kPEFRelocSmBySection = 0x33,
+  kPEFRelocIncrPosition = 0x40,
+  kPEFRelocSmRepeat = 0x48,
+  kPEFRelocSetPosition = 0x50,
+  kPEFRelocLgByImport = 0x52,
+  kPEFRelocLgRepeat = 0x58,
+  kPEFRelocLgSetOrBySection = 0x5A,
+  kPEFRelocUndefinedOpcode = 0xFF
+};
+enum {
+  kPEFRelocLgBySectionSubopcode = 0x00,
+  kPEFRelocLgSetSectCSubopcode = 0x01,
+  kPEFRelocLgSetSectDSubopcode = 0x02
+};
+enum {
+  kPEFRelocWithSkipMaxSkipCount = 255,
+  kPEFRelocWithSkipMaxRelocCount = 63
+};
+enum {
+  kPEFRelocRunMaxRunLength = 512
+};
+enum {
+  kPEFRelocSmIndexMaxIndex = 511
+};
+enum {
+  kPEFRelocIncrPositionMaxOffset = 4096
+};
+enum {
+  kPEFRelocSmRepeatMaxChunkCount = 16,
+  kPEFRelocSmRepeatMaxRepeatCount = 256
+};
+enum {
+  kPEFRelocSetPosMaxOffset = 0x03FFFFFF
+};
+enum {
+  kPEFRelocLgByImportMaxIndex = 0x03FFFFFF
+};
+enum {
+  kPEFRelocLgRepeatMaxChunkCount = 16,
+  kPEFRelocLgRepeatMaxRepeatCount = 0x003FFFFF
+};
+enum {
+  kPEFRelocLgSetOrBySectionMaxIndex = 0x003FFFFF
+};
+struct XLibContainerHeader {
+
+
+
+  OSType tag1;
+  OSType tag2;
+  UInt32 currentFormat;
+  UInt32 containerStringsOffset;
+  UInt32 exportHashOffset;
+  UInt32 exportKeyOffset;
+  UInt32 exportSymbolOffset;
+  UInt32 exportNamesOffset;
+  UInt32 exportHashTablePower;
+  UInt32 exportedSymbolCount;
+
+
+
+  UInt32 fragNameOffset;
+  UInt32 fragNameLength;
+  UInt32 dylibPathOffset;
+  UInt32 dylibPathLength;
+  OSType cpuFamily;
+  OSType cpuModel;
+  UInt32 dateTimeStamp;
+  UInt32 currentVersion;
+  UInt32 oldDefVersion;
+  UInt32 oldImpVersion;
+
+};
+typedef struct XLibContainerHeader XLibContainerHeader;
+enum {
+  kXLibTag1 = 'ðMac',
+  kVLibTag2 = 'VLib',
+  kBLibTag2 = 'BLib',
+  kXLibVersion = 0x00000001
+};
+
+
+
+typedef PEFExportedSymbolHashSlot XLibExportedSymbolHashSlot;
+typedef PEFExportedSymbolKey XLibExportedSymbolKey;
+struct XLibExportedSymbol {
+  UInt32 classAndName;
+  UInt32 bpOffset;
+};
+typedef struct XLibExportedSymbol XLibExportedSymbol;
+
+
+
+
+
+enum {
+  kHFSSigWord = 0x4244,
+  kHFSPlusSigWord = 0x482B,
+  kHFSPlusVersion = 0x0004,
+  kHFSPlusMountVersion = '8.10'
+};
+
+
+
+typedef UInt32 HFSCatalogNodeID;
+enum {
+  kHFSMaxVolumeNameChars = 27,
+  kHFSMaxFileNameChars = 31,
+  kHFSPlusMaxFileNameChars = 255
+};
+
+
+
+
+struct HFSExtentKey {
+  UInt8 keyLength;
+  UInt8 forkType;
+  HFSCatalogNodeID fileID;
+  UInt16 startBlock;
+};
+typedef struct HFSExtentKey HFSExtentKey;
+
+struct HFSPlusExtentKey {
+  UInt16 keyLength;
+  UInt8 forkType;
+  UInt8 pad;
+  HFSCatalogNodeID fileID;
+  UInt32 startBlock;
+};
+typedef struct HFSPlusExtentKey HFSPlusExtentKey;
+
+enum {
+  kHFSExtentDensity = 3,
+  kHFSPlusExtentDensity = 8
+};
+
+
+struct HFSExtentDescriptor {
+  UInt16 startBlock;
+  UInt16 blockCount;
+};
+typedef struct HFSExtentDescriptor HFSExtentDescriptor;
+
+struct HFSPlusExtentDescriptor {
+  UInt32 startBlock;
+  UInt32 blockCount;
+};
+typedef struct HFSPlusExtentDescriptor HFSPlusExtentDescriptor;
+
+
+typedef HFSExtentDescriptor HFSExtentRecord[3];
+
+typedef HFSPlusExtentDescriptor HFSPlusExtentRecord[8];
+
+
+struct HFSPlusForkData {
+  UInt64 logicalSize;
+  UInt32 clumpSize;
+  UInt32 totalBlocks;
+  HFSPlusExtentRecord extents;
+};
+typedef struct HFSPlusForkData HFSPlusForkData;
+
+struct HFSPlusPermissions {
+  UInt32 ownerID;
+  UInt32 groupID;
+  UInt32 permissions;
+  UInt32 specialDevice;
+};
+typedef struct HFSPlusPermissions HFSPlusPermissions;
+
+enum {
+  kHFSRootParentID = 1,
+  kHFSRootFolderID = 2,
+  kHFSExtentsFileID = 3,
+  kHFSCatalogFileID = 4,
+  kHFSBadBlockFileID = 5,
+  kHFSAllocationFileID = 6,
+  kHFSStartupFileID = 7,
+  kHFSAttributesFileID = 8,
+  kHFSBogusExtentFileID = 15,
+  kHFSFirstUserCatalogNodeID = 16
+};
+
+
+
+struct HFSCatalogKey {
+  UInt8 keyLength;
+  UInt8 reserved;
+  HFSCatalogNodeID parentID;
+  Str31 nodeName;
+};
+typedef struct HFSCatalogKey HFSCatalogKey;
+
+struct HFSPlusCatalogKey {
+  UInt16 keyLength;
+  HFSCatalogNodeID parentID;
+  HFSUniStr255 nodeName;
+};
+typedef struct HFSPlusCatalogKey HFSPlusCatalogKey;
+
+
+enum {
+
+  kHFSFolderRecord = 0x0100,
+  kHFSFileRecord = 0x0200,
+  kHFSFolderThreadRecord = 0x0300,
+  kHFSFileThreadRecord = 0x0400,
+
+  kHFSPlusFolderRecord = 1,
+  kHFSPlusFileRecord = 2,
+  kHFSPlusFolderThreadRecord = 3,
+  kHFSPlusFileThreadRecord = 4
+};
+
+
+
+enum {
+  kHFSFileLockedBit = 0x0000,
+  kHFSFileLockedMask = 0x0001,
+  kHFSThreadExistsBit = 0x0001,
+  kHFSThreadExistsMask = 0x0002
+};
+
+
+
+struct HFSCatalogFolder {
+  SInt16 recordType;
+  UInt16 flags;
+  UInt16 valence;
+  HFSCatalogNodeID folderID;
+  UInt32 createDate;
+  UInt32 modifyDate;
+  UInt32 backupDate;
+  DInfo userInfo;
+  DXInfo finderInfo;
+  UInt32 reserved[4];
+};
+typedef struct HFSCatalogFolder HFSCatalogFolder;
+
+struct HFSPlusCatalogFolder {
+  SInt16 recordType;
+  UInt16 flags;
+  UInt32 valence;
+  HFSCatalogNodeID folderID;
+  UInt32 createDate;
+  UInt32 contentModDate;
+  UInt32 attributeModDate;
+  UInt32 accessDate;
+  UInt32 backupDate;
+  HFSPlusPermissions permissions;
+  DInfo userInfo;
+  DXInfo finderInfo;
+  UInt32 textEncoding;
+  UInt32 reserved;
+};
+typedef struct HFSPlusCatalogFolder HFSPlusCatalogFolder;
+
+struct HFSCatalogFile {
+  SInt16 recordType;
+  UInt8 flags;
+  SInt8 fileType;
+  FInfo userInfo;
+  HFSCatalogNodeID fileID;
+  UInt16 dataStartBlock;
+  SInt32 dataLogicalSize;
+  SInt32 dataPhysicalSize;
+  UInt16 rsrcStartBlock;
+  SInt32 rsrcLogicalSize;
+  SInt32 rsrcPhysicalSize;
+  UInt32 createDate;
+  UInt32 modifyDate;
+  UInt32 backupDate;
+  FXInfo finderInfo;
+  UInt16 clumpSize;
+  HFSExtentRecord dataExtents;
+  HFSExtentRecord rsrcExtents;
+  UInt32 reserved;
+};
+typedef struct HFSCatalogFile HFSCatalogFile;
+
+struct HFSPlusCatalogFile {
+  SInt16 recordType;
+  UInt16 flags;
+  UInt32 reserved1;
+  HFSCatalogNodeID fileID;
+  UInt32 createDate;
+  UInt32 contentModDate;
+  UInt32 attributeModDate;
+  UInt32 accessDate;
+  UInt32 backupDate;
+  HFSPlusPermissions permissions;
+  FInfo userInfo;
+  FXInfo finderInfo;
+  UInt32 textEncoding;
+  UInt32 reserved2;
+
+
+  HFSPlusForkData dataFork;
+  HFSPlusForkData resourceFork;
+};
+typedef struct HFSPlusCatalogFile HFSPlusCatalogFile;
+
+struct HFSCatalogThread {
+  SInt16 recordType;
+  SInt32 reserved[2];
+  HFSCatalogNodeID parentID;
+  Str31 nodeName;
+};
+typedef struct HFSCatalogThread HFSCatalogThread;
+
+struct HFSPlusCatalogThread {
+  SInt16 recordType;
+  SInt16 reserved;
+  HFSCatalogNodeID parentID;
+  HFSUniStr255 nodeName;
+};
+typedef struct HFSPlusCatalogThread HFSPlusCatalogThread;
+
+
+
+
+
+enum {
+  kHFSPlusAttrInlineData = 0x10,
+  kHFSPlusAttrForkData = 0x20,
+  kHFSPlusAttrExtents = 0x30
+};
+struct HFSPlusAttrInlineData {
+  UInt32 recordType;
+  UInt32 reserved;
+  UInt32 logicalSize;
+  UInt8 userData[2];
+};
+typedef struct HFSPlusAttrInlineData HFSPlusAttrInlineData;
+
+
+
+
+
+
+struct HFSPlusAttrForkData {
+  UInt32 recordType;
+  UInt32 reserved;
+  HFSPlusForkData theFork;
+};
+typedef struct HFSPlusAttrForkData HFSPlusAttrForkData;
+
+
+
+
+
+struct HFSPlusAttrExtents {
+  UInt32 recordType;
+  UInt32 reserved;
+  HFSPlusExtentRecord extents;
+};
+typedef struct HFSPlusAttrExtents HFSPlusAttrExtents;
+
+union HFSPlusAttrRecord {
+  UInt32 recordType;
+  HFSPlusAttrInlineData inlineData;
+  HFSPlusAttrForkData forkData;
+  HFSPlusAttrExtents overflowExtents;
+};
+typedef union HFSPlusAttrRecord HFSPlusAttrRecord;
+
+enum {
+  kHFSPlusExtentKeyMaximumLength = sizeof(HFSPlusExtentKey) - sizeof(UInt16),
+  kHFSExtentKeyMaximumLength = sizeof(HFSExtentKey) - sizeof(UInt8),
+  kHFSPlusCatalogKeyMaximumLength = sizeof(HFSPlusCatalogKey) - sizeof(UInt16),
+  kHFSPlusCatalogKeyMinimumLength = kHFSPlusCatalogKeyMaximumLength - sizeof(HFSUniStr255) + sizeof(UInt16),
+  kHFSCatalogKeyMaximumLength = sizeof(HFSCatalogKey) - sizeof(UInt8),
+  kHFSCatalogKeyMinimumLength = kHFSCatalogKeyMaximumLength - sizeof(Str31) + sizeof(UInt8),
+  kHFSPlusCatalogMinNodeSize = 4096,
+  kHFSPlusExtentMinNodeSize = 512,
+  kHFSPlusAttrMinNodeSize = 4096
+};
+
+
+
+enum {
+
+  kHFSVolumeHardwareLockBit = 7,
+  kHFSVolumeUnmountedBit = 8,
+  kHFSVolumeSparedBlocksBit = 9,
+  kHFSVolumeNoCacheRequiredBit = 10,
+  kHFSBootVolumeInconsistentBit = 11,
+
+  kHFSVolumeSoftwareLockBit = 15,
+  kHFSVolumeHardwareLockMask = 1 << kHFSVolumeHardwareLockBit,
+  kHFSVolumeUnmountedMask = 1 << kHFSVolumeUnmountedBit,
+  kHFSVolumeSparedBlocksMask = 1 << kHFSVolumeSparedBlocksBit,
+  kHFSVolumeNoCacheRequiredMask = 1 << kHFSVolumeNoCacheRequiredBit,
+  kHFSBootVolumeInconsistentMask = 1 << kHFSBootVolumeInconsistentBit,
+  kHFSVolumeSoftwareLockMask = 1 << kHFSVolumeSoftwareLockBit,
+  kHFSMDBAttributesMask = 0x8380
+};
+
+enum {
+  kHFSCatalogNodeIDsReusedBit = 12,
+  kHFSCatalogNodeIDsReusedMask = 1 << kHFSCatalogNodeIDsReusedBit
+};
+
+
+
+struct HFSMasterDirectoryBlock {
+
+
+
+  UInt16 drSigWord;
+  UInt32 drCrDate;
+  UInt32 drLsMod;
+  UInt16 drAtrb;
+  UInt16 drNmFls;
+  UInt16 drVBMSt;
+  UInt16 drAllocPtr;
+  UInt16 drNmAlBlks;
+  UInt32 drAlBlkSiz;
+  UInt32 drClpSiz;
+  UInt16 drAlBlSt;
+  UInt32 drNxtCNID;
+  UInt16 drFreeBks;
+  Str27 drVN;
+
+
+
+  UInt32 drVolBkUp;
+  UInt16 drVSeqNum;
+  UInt32 drWrCnt;
+  UInt32 drXTClpSiz;
+  UInt32 drCTClpSiz;
+  UInt16 drNmRtDirs;
+  UInt32 drFilCnt;
+  UInt32 drDirCnt;
+  SInt32 drFndrInfo[8];
+  UInt16 drEmbedSigWord;
+  HFSExtentDescriptor drEmbedExtent;
+  UInt32 drXTFlSize;
+  HFSExtentRecord drXTExtRec;
+  UInt32 drCTFlSize;
+  HFSExtentRecord drCTExtRec;
+};
+typedef struct HFSMasterDirectoryBlock HFSMasterDirectoryBlock;
+
+
+struct HFSPlusVolumeHeader {
+  UInt16 signature;
+  UInt16 version;
+  UInt32 attributes;
+  UInt32 lastMountedVersion;
+  UInt32 reserved;
+
+  UInt32 createDate;
+  UInt32 modifyDate;
+  UInt32 backupDate;
+  UInt32 checkedDate;
+
+  UInt32 fileCount;
+  UInt32 folderCount;
+
+  UInt32 blockSize;
+  UInt32 totalBlocks;
+  UInt32 freeBlocks;
+
+  UInt32 nextAllocation;
+  UInt32 rsrcClumpSize;
+  UInt32 dataClumpSize;
+  HFSCatalogNodeID nextCatalogID;
+
+  UInt32 writeCount;
+  UInt64 encodingsBitmap;
+
+  UInt8 finderInfo[32];
+
+  HFSPlusForkData allocationFile;
+  HFSPlusForkData extentsFile;
+  HFSPlusForkData catalogFile;
+  HFSPlusForkData attributesFile;
+  HFSPlusForkData startupFile;
+};
+typedef struct HFSPlusVolumeHeader HFSPlusVolumeHeader;
+
+
+struct BTNodeDescriptor {
+  UInt32 fLink;
+  UInt32 bLink;
+  SInt8 kind;
+  UInt8 height;
+  UInt16 numRecords;
+  UInt16 reserved;
+};
+typedef struct BTNodeDescriptor BTNodeDescriptor;
+
+enum {
+  kBTLeafNode = -1,
+  kBTIndexNode = 0,
+  kBTHeaderNode = 1,
+  kBTMapNode = 2
+};
+
+
+struct BTHeaderRec {
+  UInt16 treeDepth;
+  UInt32 rootNode;
+  UInt32 leafRecords;
+  UInt32 firstLeafNode;
+  UInt32 lastLeafNode;
+  UInt16 nodeSize;
+  UInt16 maxKeyLength;
+  UInt32 totalNodes;
+  UInt32 freeNodes;
+  UInt16 reserved1;
+  UInt32 clumpSize;
+  UInt8 btreeType;
+  UInt8 reserved2;
+  UInt32 attributes;
+  UInt32 reserved3[16];
+};
+typedef struct BTHeaderRec BTHeaderRec;
+
+enum {
+  kBTBadCloseMask = 0x00000001,
+  kBTBigKeysMask = 0x00000002,
+  kBTVariableIndexKeysMask = 0x00000004
+};
+
+
+
+
+
+
+enum {
+  AIFFID = 'AIFF',
+  AIFCID = 'AIFC',
+  FormatVersionID = 'FVER',
+  CommonID = 'COMM',
+  FORMID = 'FORM',
+  SoundDataID = 'SSND',
+  MarkerID = 'MARK',
+  InstrumentID = 'INST',
+  MIDIDataID = 'MIDI',
+  AudioRecordingID = 'AESD',
+  ApplicationSpecificID = 'APPL',
+  CommentID = 'COMT',
+  NameID = 'NAME',
+  AuthorID = 'AUTH',
+  CopyrightID = '(c) ',
+  AnnotationID = 'ANNO'
+};
+
+enum {
+  NoLooping = 0,
+  ForwardLooping = 1,
+  ForwardBackwardLooping = 2
+};
+
+enum {
+
+  AIFCVersion1 = (long)0xA2805140
+};
+
+
+
+
+
+
+
+enum {
+
+  NoneType = 'NONE',
+  ACE2Type = 'ACE2',
+  ACE8Type = 'ACE8',
+  MACE3Type = 'MAC3',
+  MACE6Type = 'MAC6'
+};
+
+typedef unsigned long ID;
+typedef short MarkerIdType;
+struct ChunkHeader {
+  ID ckID;
+  long ckSize;
+};
+typedef struct ChunkHeader ChunkHeader;
+struct ContainerChunk {
+  ID ckID;
+  long ckSize;
+  ID formType;
+};
+typedef struct ContainerChunk ContainerChunk;
+struct FormatVersionChunk {
+  ID ckID;
+  long ckSize;
+  unsigned long timestamp;
+};
+typedef struct FormatVersionChunk FormatVersionChunk;
+typedef FormatVersionChunk * FormatVersionChunkPtr;
+struct CommonChunk {
+  ID ckID;
+  long ckSize;
+  short numChannels;
+  unsigned long numSampleFrames;
+  short sampleSize;
+  extended80 sampleRate;
+};
+typedef struct CommonChunk CommonChunk;
+typedef CommonChunk * CommonChunkPtr;
+struct ExtCommonChunk {
+  ID ckID;
+  long ckSize;
+  short numChannels;
+  unsigned long numSampleFrames;
+  short sampleSize;
+  extended80 sampleRate;
+  ID compressionType;
+  char compressionName[1];
+};
+typedef struct ExtCommonChunk ExtCommonChunk;
+typedef ExtCommonChunk * ExtCommonChunkPtr;
+struct SoundDataChunk {
+  ID ckID;
+  long ckSize;
+  unsigned long offset;
+  unsigned long blockSize;
+};
+typedef struct SoundDataChunk SoundDataChunk;
+typedef SoundDataChunk * SoundDataChunkPtr;
+struct Marker {
+  MarkerIdType id;
+  unsigned long position;
+  Str255 markerName;
+};
+typedef struct Marker Marker;
+struct MarkerChunk {
+  ID ckID;
+  long ckSize;
+  unsigned short numMarkers;
+  Marker Markers[1];
+};
+typedef struct MarkerChunk MarkerChunk;
+typedef MarkerChunk * MarkerChunkPtr;
+struct AIFFLoop {
+  short playMode;
+  MarkerIdType beginLoop;
+  MarkerIdType endLoop;
+};
+typedef struct AIFFLoop AIFFLoop;
+struct InstrumentChunk {
+  ID ckID;
+  long ckSize;
+  UInt8 baseFrequency;
+  UInt8 detune;
+  UInt8 lowFrequency;
+  UInt8 highFrequency;
+  UInt8 lowVelocity;
+  UInt8 highVelocity;
+  short gain;
+  AIFFLoop sustainLoop;
+  AIFFLoop releaseLoop;
+};
+typedef struct InstrumentChunk InstrumentChunk;
+typedef InstrumentChunk * InstrumentChunkPtr;
+struct MIDIDataChunk {
+  ID ckID;
+  long ckSize;
+  UInt8 MIDIdata[1];
+};
+typedef struct MIDIDataChunk MIDIDataChunk;
+typedef MIDIDataChunk * MIDIDataChunkPtr;
+struct AudioRecordingChunk {
+  ID ckID;
+  long ckSize;
+  UInt8 AESChannelStatus[24];
+};
+typedef struct AudioRecordingChunk AudioRecordingChunk;
+typedef AudioRecordingChunk * AudioRecordingChunkPtr;
+struct ApplicationSpecificChunk {
+  ID ckID;
+  long ckSize;
+  OSType applicationSignature;
+  UInt8 data[1];
+};
+typedef struct ApplicationSpecificChunk ApplicationSpecificChunk;
+typedef ApplicationSpecificChunk * ApplicationSpecificChunkPtr;
+struct Comment {
+  unsigned long timeStamp;
+  MarkerIdType marker;
+  unsigned short count;
+  char text[1];
+};
+typedef struct Comment Comment;
+struct CommentsChunk {
+  ID ckID;
+  long ckSize;
+  unsigned short numComments;
+  Comment comments[1];
+};
+typedef struct CommentsChunk CommentsChunk;
+typedef CommentsChunk * CommentsChunkPtr;
+struct TextChunk {
+  ID ckID;
+  long ckSize;
+  char text[1];
+};
+typedef struct TextChunk TextChunk;
+typedef TextChunk * TextChunkPtr;
+
+
+
+
+struct TECBufferContextRec {
+  TextPtr textInputBuffer;
+  TextPtr textInputBufferEnd;
+  TextPtr textOutputBuffer;
+  TextPtr textOutputBufferEnd;
+
+  TextEncodingRunPtr encodingInputBuffer;
+  TextEncodingRunPtr encodingInputBufferEnd;
+  TextEncodingRunPtr encodingOutputBuffer;
+  TextEncodingRunPtr encodingOutputBufferEnd;
+};
+typedef struct TECBufferContextRec TECBufferContextRec;
+struct TECPluginStateRec {
+
+  UInt8 state1;
+  UInt8 state2;
+  UInt8 state3;
+  UInt8 state4;
+
+  UInt32 longState1;
+  UInt32 longState2;
+  UInt32 longState3;
+  UInt32 longState4;
+};
+typedef struct TECPluginStateRec TECPluginStateRec;
+struct TECConverterContextRec {
+
+
+  Ptr pluginRec;
+  TextEncoding sourceEncoding;
+  TextEncoding destEncoding;
+  UInt32 reserved1;
+  UInt32 reserved2;
+  TECBufferContextRec bufferContext;
+
+  UInt32 contextRefCon;
+  ProcPtr conversionProc;
+  ProcPtr flushProc;
+  ProcPtr clearContextInfoProc;
+  UInt32 options1;
+  UInt32 options2;
+  TECPluginStateRec pluginState;
+};
+typedef struct TECConverterContextRec TECConverterContextRec;
+struct TECSnifferContextRec {
+
+  Ptr pluginRec;
+  TextEncoding encoding;
+  ItemCount maxErrors;
+  ItemCount maxFeatures;
+  TextPtr textInputBuffer;
+  TextPtr textInputBufferEnd;
+  ItemCount numFeatures;
+  ItemCount numErrors;
+
+  UInt32 contextRefCon;
+  ProcPtr sniffProc;
+  ProcPtr clearContextInfoProc;
+  TECPluginStateRec pluginState;
+};
+typedef struct TECSnifferContextRec TECSnifferContextRec;
+
+
+
+
+
+
+typedef OSStatus ( * TECPluginNewEncodingConverterPtr)(TECObjectRef *newEncodingConverter, TECConverterContextRec *plugContext, TextEncoding inputEncoding, TextEncoding outputEncoding);
+typedef OSStatus ( * TECPluginClearContextInfoPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
+typedef OSStatus ( * TECPluginConvertTextEncodingPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
+typedef OSStatus ( * TECPluginFlushConversionPtr)(TECObjectRef encodingConverter, TECConverterContextRec *plugContext);
+typedef OSStatus ( * TECPluginDisposeEncodingConverterPtr)(TECObjectRef newEncodingConverter, TECConverterContextRec *plugContext);
+typedef OSStatus ( * TECPluginNewEncodingSnifferPtr)(TECSnifferObjectRef *encodingSniffer, TECSnifferContextRec *snifContext, TextEncoding inputEncoding);
+typedef OSStatus ( * TECPluginClearSnifferContextInfoPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
+typedef OSStatus ( * TECPluginSniffTextEncodingPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
+typedef OSStatus ( * TECPluginDisposeEncodingSnifferPtr)(TECSnifferObjectRef encodingSniffer, TECSnifferContextRec *snifContext);
+typedef OSStatus ( * TECPluginGetCountAvailableTextEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
+typedef OSStatus ( * TECPluginGetCountAvailableTextEncodingPairsPtr)(TECConversionInfo *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
+typedef OSStatus ( * TECPluginGetCountDestinationTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding *destinationEncodings, ItemCount maxDestinationEncodings, ItemCount *actualDestinationEncodings);
+typedef OSStatus ( * TECPluginGetCountSubTextEncodingsPtr)(TextEncoding inputEncoding, TextEncoding subEncodings[], ItemCount maxSubEncodings, ItemCount *actualSubEncodings);
+typedef OSStatus ( * TECPluginGetCountAvailableSniffersPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
+typedef OSStatus ( * TECPluginGetTextEncodingInternetNamePtr)(TextEncoding textEncoding, Str255 encodingName);
+typedef OSStatus ( * TECPluginGetTextEncodingFromInternetNamePtr)(TextEncoding *textEncoding, ConstStr255Param encodingName);
+typedef OSStatus ( * TECPluginGetCountWebEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
+typedef OSStatus ( * TECPluginGetCountMailEncodingsPtr)(TextEncoding *availableEncodings, ItemCount maxAvailableEncodings, ItemCount *actualAvailableEncodings);
+
+
+
+
+
+
+enum {
+  kTECPluginDispatchTableVersion1 = 0x00010000,
+  kTECPluginDispatchTableVersion1_1 = 0x00010001,
+  kTECPluginDispatchTableVersion1_2 = 0x00010002,
+  kTECPluginDispatchTableCurrentVersion = kTECPluginDispatchTableVersion1_2
+};
+
+struct TECPluginDispatchTable {
+
+  TECPluginVersion version;
+  TECPluginVersion compatibleVersion;
+  TECPluginSignature PluginID;
+
+  TECPluginNewEncodingConverterPtr PluginNewEncodingConverter;
+  TECPluginClearContextInfoPtr PluginClearContextInfo;
+  TECPluginConvertTextEncodingPtr PluginConvertTextEncoding;
+  TECPluginFlushConversionPtr PluginFlushConversion;
+  TECPluginDisposeEncodingConverterPtr PluginDisposeEncodingConverter;
+
+  TECPluginNewEncodingSnifferPtr PluginNewEncodingSniffer;
+  TECPluginClearSnifferContextInfoPtr PluginClearSnifferContextInfo;
+  TECPluginSniffTextEncodingPtr PluginSniffTextEncoding;
+  TECPluginDisposeEncodingSnifferPtr PluginDisposeEncodingSniffer;
+
+  TECPluginGetCountAvailableTextEncodingsPtr PluginGetCountAvailableTextEncodings;
+  TECPluginGetCountAvailableTextEncodingPairsPtr PluginGetCountAvailableTextEncodingPairs;
+  TECPluginGetCountDestinationTextEncodingsPtr PluginGetCountDestinationTextEncodings;
+  TECPluginGetCountSubTextEncodingsPtr PluginGetCountSubTextEncodings;
+  TECPluginGetCountAvailableSniffersPtr PluginGetCountAvailableSniffers;
+  TECPluginGetCountWebEncodingsPtr PluginGetCountWebTextEncodings;
+  TECPluginGetCountMailEncodingsPtr PluginGetCountMailTextEncodings;
+
+  TECPluginGetTextEncodingInternetNamePtr PluginGetTextEncodingInternetName;
+  TECPluginGetTextEncodingFromInternetNamePtr PluginGetTextEncodingFromInternetName;
+
+};
+typedef struct TECPluginDispatchTable TECPluginDispatchTable;
+typedef TECPluginDispatchTable * ( * TECPluginGetPluginDispatchTablePtr)(void);
+
+
+
+
+
+
+
+
+
+
+
+enum {
+  sbSIGWord = 0x4552,
+  sbMac = 1
+};
+
+
+enum {
+  pMapSIG = 0x504D,
+  pdSigWord = 0x5453,
+  oldPMSigWord = pdSigWord,
+  newPMSigWord = pMapSIG
+};
+
+
+
+struct Block0 {
+  UInt16 sbSig;
+  UInt16 sbBlkSize;
+  UInt32 sbBlkCount;
+  UInt16 sbDevType;
+  UInt16 sbDevId;
+  UInt32 sbData;
+  UInt16 sbDrvrCount;
+  UInt32 ddBlock;
+  UInt16 ddSize;
+  UInt16 ddType;
+  UInt16 ddPad[243];
+};
+typedef struct Block0 Block0;
+
+struct DDMap {
+  UInt32 ddBlock;
+  UInt16 ddSize;
+  UInt16 ddType;
+};
+typedef struct DDMap DDMap;
+
+enum {
+  kDriverTypeMacSCSI = 0x0001,
+  kDriverTypeMacATA = 0x0701,
+  kDriverTypeMacSCSIChained = 0xFFFF,
+  kDriverTypeMacATAChained = 0xF8FF
+};
+
+
+struct Partition {
+  UInt16 pmSig;
+  UInt16 pmSigPad;
+  UInt32 pmMapBlkCnt;
+  UInt32 pmPyPartStart;
+  UInt32 pmPartBlkCnt;
+  UInt8 pmPartName[32];
+  UInt8 pmParType[32];
+  UInt32 pmLgDataStart;
+  UInt32 pmDataCnt;
+  UInt32 pmPartStatus;
+  UInt32 pmLgBootStart;
+  UInt32 pmBootSize;
+  UInt32 pmBootAddr;
+  UInt32 pmBootAddr2;
+  UInt32 pmBootEntry;
+  UInt32 pmBootEntry2;
+  UInt32 pmBootCksum;
+  UInt8 pmProcessor[16];
+  UInt16 pmPad[188];
+};
+typedef struct Partition Partition;
+
+
+enum {
+  kPartitionAUXIsValid = 0x00000001,
+  kPartitionAUXIsAllocated = 0x00000002,
+  kPartitionAUXIsInUse = 0x00000004,
+  kPartitionAUXIsBootValid = 0x00000008,
+  kPartitionAUXIsReadable = 0x00000010,
+  kPartitionAUXIsWriteable = 0x00000020,
+  kPartitionAUXIsBootCodePositionIndependent = 0x00000040,
+  kPartitionIsWriteable = 0x00000020,
+  kPartitionIsMountedAtStartup = 0x40000000,
+  kPartitionIsStartup = (long)0x80000000,
+  kPartitionIsChainCompatible = 0x00000100,
+  kPartitionIsRealDeviceDriver = 0x00000200,
+  kPartitionCanChainToNext = 0x00000400
+};
+
+
+
+
+
+enum {
+  kPatchDriverSignature = 'ptDR',
+  kSCSIDriverSignature = 0x00010600,
+  kATADriverSignature = 'wiki',
+  kSCSICDDriverSignature = 'CDvr',
+  kATAPIDriverSignature = 'ATPI',
+  kDriveSetupHFSSignature = 'DSU1'
+};
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+enum {
+
+  modemOnBit = 0,
+  ringWakeUpBit = 2,
+  modemInstalledBit = 3,
+  ringDetectBit = 4,
+  modemOnHookBit = 5
+};
+
+enum {
+
+  modemOnMask = 0x01,
+  ringWakeUpMask = 0x04,
+  modemInstalledMask = 0x08,
+  ringDetectMask = 0x10,
+  modemOnHookMask = 0x20
+};
+
+enum {
+
+  chargerConnBit = 0,
+  hiChargeBit = 1,
+  chargeOverFlowBit = 2,
+  batteryDeadBit = 3,
+  batteryLowBit = 4,
+  connChangedBit = 5
+};
+
+enum {
+
+  chargerConnMask = 0x01,
+  hiChargeMask = 0x02,
+  chargeOverFlowMask = 0x04,
+  batteryDeadMask = 0x08,
+  batteryLowMask = 0x10,
+  connChangedMask = 0x20
+};
+
+enum {
+
+  MediaBaySndEnBit = 0,
+  PCISndEnBit = 1,
+  ZVSndEnBit = 2,
+  PCCardSndEnBit = 3
+};
+
+enum {
+
+  MediaBaySndEnMask = 0x01,
+  PCISndEnMask = 0x02,
+  ZVSndEnMask = 0x04,
+  PCCardSndEnMask = 0x08
+};
+
+enum {
+
+  kSleepRequest = 1,
+  kSleepDemand = 2,
+  kSleepWakeUp = 3,
+  kSleepRevoke = 4,
+  kSleepUnlock = 4,
+  kSleepDeny = 5,
+  kSleepNow = 6,
+  kDozeDemand = 7,
+  kDozeWakeUp = 8,
+  kDozeRequest = 9,
+  kEnterStandby = 10,
+  kEnterRun = 11,
+  kSuspendRequest = 12,
+  kSuspendDemand = 13,
+  kSuspendRevoke = 14,
+  kSuspendWakeUp = 15,
+  kGetPowerLevel = 16,
+  kSetPowerLevel = 17,
+  kDeviceInitiatedWake = 18,
+  kWakeToDoze = 19,
+  kDozeToFullWakeUp = 20,
+  kGetPowerInfo = 21,
+  kGetWakeOnNetInfo = 22,
+  kSuspendWakeToDoze = 23,
+  kEnterIdle = 24,
+  kStillIdle = 25,
+  kExitIdle = 26
+};
+
+enum {
+
+  sleepRequest = kSleepRequest,
+  sleepDemand = kSleepDemand,
+  sleepWakeUp = kSleepWakeUp,
+  sleepRevoke = kSleepRevoke,
+  sleepUnlock = kSleepUnlock,
+  sleepDeny = kSleepDeny,
+  sleepNow = kSleepNow,
+  dozeDemand = kDozeDemand,
+  dozeWakeUp = kDozeWakeUp,
+  dozeRequest = kDozeRequest,
+  enterStandby = kEnterStandby,
+  enterRun = kEnterRun,
+  suspendRequestMsg = kSuspendRequest,
+  suspendDemandMsg = kSuspendDemand,
+  suspendRevokeMsg = kSuspendRevoke,
+  suspendWakeUpMsg = kSuspendWakeUp,
+  getPowerLevel = kGetPowerLevel,
+  setPowerLevel = kSetPowerLevel
+};
+
+
+typedef UInt32 PowerLevel;
+
+enum {
+  kPMDevicePowerLevel_On = 0,
+  kPMDevicePowerLevel_D1 = 1,
+  kPMDevicePowerLevel_D2 = 2,
+  kPMDevicePowerLevel_Off = 3
+};
+
+
+typedef OSStatus ( * PowerHandlerProcPtr)(UInt32 message, void *param, UInt32 refCon, RegEntryID *regEntryID);
+typedef PowerHandlerProcPtr PowerHandlerUPP;
+enum {
+  kUseDefaultMinimumWakeTime = 0,
+  kPowerSummaryVersion = 1,
+  kDevicePowerInfoVersion = 1
+};
+
+enum {
+
+  kPCIPowerOffAllowed = (1L << 0)
+};
+
+enum {
+
+  kDevicePCIPowerOffAllowed = (1L << 0),
+  kDeviceSupportsPMIS = (1L << 1),
+  kDeviceCanAssertPMEDuringSleep = (1L << 2),
+  kDeviceUsesCommonLogicPower = (1L << 3),
+  kDeviceDriverPresent = (1L << 4),
+  kDeviceDriverSupportsPowerMgt = (1L << 5)
+};
+
+struct DevicePowerInfo {
+  UInt32 version;
+  RegEntryID regID;
+  OptionBits flags;
+  UInt32 minimumWakeTime;
+  UInt32 sleepPowerNeeded;
+};
+typedef struct DevicePowerInfo DevicePowerInfo;
+struct PowerSummary {
+  UInt32 version;
+  OptionBits flags;
+  UInt32 sleepPowerAvailable;
+  UInt32 sleepPowerNeeded;
+  UInt32 minimumWakeTime;
+  ItemCount deviceCount;
+  DevicePowerInfo devices[1];
+};
+typedef struct PowerSummary PowerSummary;
+enum {
+
+  noCalls = 1,
+  noRequest = 2,
+  slpQType = 16,
+  sleepQType = 16
+};
+
+
+enum {
+
+  kAEMacPowerMgtEvt = 'pmgt',
+  kAEMacToWake = 'wake',
+  kAEMacLowPowerSaveData = 'pmsd',
+  kAEMacEmergencySleep = 'emsl',
+  kAEMacEmergencyShutdown = 'emsd'
+};
+
+
+
+
+
+
+
+enum {
+  kDeviceDidNotWakeMachine = 0,
+  kDeviceRequestsFullWake = 1,
+  kDeviceRequestsWakeToDoze = 2
+};
+
+
+enum {
+  hasWakeupTimer = 0,
+  hasSharedModemPort = 1,
+  hasProcessorCycling = 2,
+  mustProcessorCycle = 3,
+  hasReducedSpeed = 4,
+  dynamicSpeedChange = 5,
+  hasSCSIDiskMode = 6,
+  canGetBatteryTime = 7,
+  canWakeupOnRing = 8,
+  hasDimmingSupport = 9,
+  hasStartupTimer = 10,
+  hasChargeNotification = 11,
+  hasDimSuspendSupport = 12,
+  hasWakeOnNetActivity = 13,
+  hasWakeOnLid = 14,
+  canPowerOffPCIBus = 15,
+  hasDeepSleep = 16,
+  hasSleep = 17,
+  supportsServerModeAPIs = 18,
+  supportsUPSIntegration = 19,
+  hasAggressiveIdling = 20,
+  supportsIdleQueue = 21
+};
+
+
+enum {
+  hasInternalModem = 0,
+  intModemRingDetect = 1,
+  intModemOffHook = 2,
+  intModemRingWakeEnb = 3,
+  extModemSelected = 4,
+  modemSetBit = 15
+};
+
+
+
+enum {
+  batteryInstalled = 7,
+  batteryCharging = 6,
+  chargerConnected = 5,
+  upsConnected = 4,
+  upsIsPowerSource = 3
+};
+
+enum {
+  HDPwrQType = 0x4844,
+  PMgrStateQType = 0x504D
+};
+
+
+enum {
+  pmSleepTimeoutChanged = 0,
+  pmSleepEnableChanged = 1,
+  pmHardDiskTimeoutChanged = 2,
+  pmHardDiskSpindownChanged = 3,
+  pmDimmingTimeoutChanged = 4,
+  pmDimmingEnableChanged = 5,
+  pmDiskModeAddressChanged = 6,
+  pmProcessorCyclingChanged = 7,
+  pmProcessorSpeedChanged = 8,
+  pmWakeupTimerChanged = 9,
+  pmStartupTimerChanged = 10,
+  pmHardDiskPowerRemovedbyUser = 11,
+  pmChargeStatusChanged = 12,
+  pmPowerLevelChanged = 13,
+  pmWakeOnNetActivityChanged = 14
+};
+
+enum {
+  pmSleepTimeoutChangedMask = (1 << pmSleepTimeoutChanged),
+  pmSleepEnableChangedMask = (1 << pmSleepEnableChanged),
+  pmHardDiskTimeoutChangedMask = (1 << pmHardDiskTimeoutChanged),
+  pmHardDiskSpindownChangedMask = (1 << pmHardDiskSpindownChanged),
+  pmDimmingTimeoutChangedMask = (1 << pmDimmingTimeoutChanged),
+  pmDimmingEnableChangedMask = (1 << pmDimmingEnableChanged),
+  pmDiskModeAddressChangedMask = (1 << pmDiskModeAddressChanged),
+  pmProcessorCyclingChangedMask = (1 << pmProcessorCyclingChanged),
+  pmProcessorSpeedChangedMask = (1 << pmProcessorSpeedChanged),
+  pmWakeupTimerChangedMask = (1 << pmWakeupTimerChanged),
+  pmStartupTimerChangedMask = (1 << pmStartupTimerChanged),
+  pmHardDiskPowerRemovedbyUserMask = (1 << pmHardDiskPowerRemovedbyUser),
+  pmChargeStatusChangedMask = (1 << pmChargeStatusChanged),
+  pmPowerLevelChangedMask = (1 << pmPowerLevelChanged),
+  pmWakeOnNetActivityChangedMask = (1 << pmWakeOnNetActivityChanged)
+};
+enum {
+  OverallAct = 0,
+  UsrActivity = 1,
+  NetActivity = 2,
+  HDActivity = 3,
+  IdleActivity = 4
+};
+
+
+enum {
+  kMediaModeOn = 0,
+  kMediaModeStandBy = 1,
+  kMediaModeSuspend = 2,
+  kMediaModeOff = 3
+};
+
+enum {
+  kMediaPowerCSCode = 70
+};
+
+
+
+enum {
+  kHDQueuePostBit = 0,
+  kHDQueuePostMask = (1 << kHDQueuePostBit)
+};
+
+struct ActivityInfo {
+  short ActivityType;
+  unsigned long ActivityTime;
+};
+typedef struct ActivityInfo ActivityInfo;
+
+struct BatteryInfo {
+  UInt8 flags;
+  UInt8 warningLevel;
+  UInt8 reserved;
+  UInt8 batteryLevel;
+};
+typedef struct BatteryInfo BatteryInfo;
+
+typedef SInt8 ModemByte;
+typedef SInt8 BatteryByte;
+typedef SInt8 SoundMixerByte;
+typedef long PMResultCode;
+typedef struct SleepQRec SleepQRec;
+typedef SleepQRec * SleepQRecPtr;
+typedef struct HDQueueElement HDQueueElement;
+typedef struct PMgrQueueElement PMgrQueueElement;
+typedef long ( * SleepQProcPtr)(long message, SleepQRecPtr qRecPtr);
+typedef void ( * HDSpindownProcPtr)(HDQueueElement * theElement);
+typedef void ( * PMgrStateChangeProcPtr)(PMgrQueueElement *theElement, long stateBits);
+typedef SleepQProcPtr SleepQUPP;
+typedef HDSpindownProcPtr HDSpindownUPP;
+typedef PMgrStateChangeProcPtr PMgrStateChangeUPP;
+struct SleepQRec {
+  SleepQRecPtr sleepQLink;
+  short sleepQType;
+  SleepQUPP sleepQProc;
+  short sleepQFlags;
+};
+
+struct HDQueueElement {
+  struct HDQueueElement * hdQLink;
+  short hdQType;
+  short hdFlags;
+  HDSpindownUPP hdProc;
+  long hdUser;
+};
+
+struct PMgrQueueElement {
+  struct PMgrQueueElement * pmQLink;
+  short pmQType;
+  short pmFlags;
+  long pmNotifyBits;
+  PMgrStateChangeUPP pmProc;
+  long pmUser;
+};
+
+
+struct BatteryTimeRec {
+  unsigned long expectedBatteryTime;
+  unsigned long minimumBatteryTime;
+  unsigned long maximumBatteryTime;
+  unsigned long timeUntilCharged;
+};
+typedef struct BatteryTimeRec BatteryTimeRec;
+
+struct WakeupTime {
+  unsigned long wakeTime;
+  Boolean wakeEnabled;
+  SInt8 filler;
+};
+typedef struct WakeupTime WakeupTime;
+
+struct StartupTime {
+  unsigned long startTime;
+  Boolean startEnabled;
+  SInt8 filler;
+};
+typedef struct StartupTime StartupTime;
+
+enum {
+  kVersionOnePowerSource = 1,
+  kVersionTwoPowerSource = 2,
+  kCurrentPowerSourceVersion = kVersionTwoPowerSource
+};
+
+
+
+enum {
+  bSourceIsBattery = 0,
+  bSourceIsAC = 1,
+  bSourceCanBeCharged = 2,
+  bSourceIsUPS = 3,
+  bSourceProvidesWarnLevels = 4,
+  kSourceIsBatteryMask = (1 << bSourceIsBattery),
+  kSourceIsACMask = (1 << bSourceIsAC),
+  kSourceCanBeChargedMask = (1 << bSourceCanBeCharged),
+  kSourceIsUPSMask = (1 << bSourceIsUPS),
+  kSourceProvidesWarnLevelsMask = (1 << bSourceProvidesWarnLevels)
+};
+
+
+
+enum {
+  bSourceIsAvailable = 0,
+  bSourceIsCharging = 1,
+  bChargerIsAttached = 2,
+  kSourceIsAvailableMask = (1 << bSourceIsAvailable),
+  kSourceIsChargingMask = (1 << bSourceIsCharging),
+  kChargerIsAttachedMask = (1 << bChargerIsAttached)
+};
+
+
+
+enum {
+  kCapacityIsActual = 0,
+  kCapacityIsPercentOfMax = 1
+};
+
+
+enum {
+  kConfigSupportsWakeOnNetBit = 0,
+  kWakeOnNetAdminAccessesBit = 1,
+  kWakeOnAllNetAccessesBit = 2,
+  kUnmountServersBeforeSleepingBit = 3,
+  kConfigSupportsWakeOnNetMask = (1 << kConfigSupportsWakeOnNetBit),
+  kWakeOnNetAdminAccessesMask = (1 << kWakeOnNetAdminAccessesBit),
+  kWakeOnAllNetAccessesMask = (1 << kWakeOnAllNetAccessesBit),
+  kUnmountServersBeforeSleepingMask = (1 << kUnmountServersBeforeSleepingBit)
+};
+
+
+enum {
+  kCurrentCapacityIsActualValue = 0,
+  kCurrentCapacityIsPercentOfMax = 1
+};
+
+
+typedef SInt16 PowerSourceID;
+struct PowerSourceParamBlock {
+  PowerSourceID sourceID;
+  UInt16 sourceCapacityUsage;
+  UInt32 sourceVersion;
+  OptionBits sourceAttr;
+  OptionBits sourceState;
+  UInt32 currentCapacity;
+
+  UInt32 maxCapacity;
+  UInt32 timeRemaining;
+
+  UInt32 timeToFullCharge;
+
+  UInt32 voltage;
+  SInt32 current;
+
+
+  UInt32 lowWarnLevel;
+  UInt32 deadWarnLevel;
+  UInt32 reserved[16];
+};
+typedef struct PowerSourceParamBlock PowerSourceParamBlock;
+typedef PowerSourceParamBlock * PowerSourceParamBlockPtr;
+extern OSErr
+DisableWUTime(void) ;
+extern OSErr
+SetWUTime(long wuTime) ;
+extern OSErr
+GetWUTime(
+  long * wuTime,
+  Byte * wuFlag) ;
+extern OSErr
+BatteryStatus(
+  Byte * status,
+  Byte * power) ;
+extern OSErr
+ModemStatus(Byte * status) ;
+extern long
+IdleUpdate(void) ;
+extern long
+GetCPUSpeed(void) ;
+extern void
+EnableIdle(void) ;
+extern void
+DisableIdle(void) ;
+extern void
+SleepQInstall(SleepQRecPtr qRecPtr) ;
+extern void
+SleepQRemove(SleepQRecPtr qRecPtr) ;
+extern void
+AOn(void) ;
+extern void
+AOnIgnoreModem(void) ;
+extern void
+BOn(void) ;
+extern void
+AOff(void) ;
+extern void
+BOff(void) ;
+extern short
+PMSelectorCount(void) ;
+extern UInt32
+PMFeatures(void) ;
+extern UInt8
+GetSleepTimeout(void) ;
+extern void
+SetSleepTimeout(UInt8 timeout) ;
+extern UInt8
+GetHardDiskTimeout(void) ;
+extern void
+SetHardDiskTimeout(UInt8 timeout) ;
+extern Boolean
+HardDiskPowered(void) ;
+extern void
+SpinDownHardDisk(void) ;
+extern Boolean
+IsSpindownDisabled(void) ;
+extern void
+SetSpindownDisable(Boolean setDisable) ;
+extern OSErr
+HardDiskQInstall(HDQueueElement * theElement) ;
+extern OSErr
+HardDiskQRemove(HDQueueElement * theElement) ;
+extern void
+GetScaledBatteryInfo(
+  short whichBattery,
+  BatteryInfo * theInfo) ;
+extern void
+AutoSleepControl(Boolean enableSleep) ;
+extern UInt32
+GetIntModemInfo(void) ;
+extern void
+SetIntModemState(short theState) ;
+extern short
+MaximumProcessorSpeed(void) ;
+extern short
+MinimumProcessorSpeed(void) ;
+extern short
+CurrentProcessorSpeed(void) ;
+extern Boolean
+FullProcessorSpeed(void) ;
+extern Boolean
+SetProcessorSpeed(Boolean fullSpeed) ;
+extern short
+GetSCSIDiskModeAddress(void) ;
+extern void
+SetSCSIDiskModeAddress(short scsiAddress) ;
+extern void
+GetWakeupTimer(WakeupTime * theTime) ;
+extern void
+SetWakeupTimer(WakeupTime * theTime) ;
+extern Boolean
+IsProcessorCyclingEnabled(void) ;
+extern void
+EnableProcessorCycling(Boolean enable) ;
+extern short
+BatteryCount(void) ;
+extern Fixed
+GetBatteryVoltage(short whichBattery) ;
+extern void
+GetBatteryTimes(
+  short whichBattery,
+  BatteryTimeRec * theTimes) ;
+extern UInt8
+GetDimmingTimeout(void) ;
+extern void
+SetDimmingTimeout(UInt8 timeout) ;
+extern void
+DimmingControl(Boolean enableSleep) ;
+extern Boolean
+IsDimmingControlDisabled(void) ;
+extern Boolean
+IsAutoSlpControlDisabled(void) ;
+extern OSErr
+PMgrStateQInstall(PMgrQueueElement * theElement) ;
+extern OSErr
+PMgrStateQRemove(PMgrQueueElement * theElement) ;
+extern OSErr
+UpdateSystemActivity(UInt8 activity) ;
+extern OSErr
+DelaySystemIdle(void) ;
+extern OSErr
+GetStartupTimer(StartupTime * theTime) ;
+extern OSErr
+SetStartupTimer(StartupTime * theTime) ;
+extern OSErr
+GetLastActivity(ActivityInfo * theActivity) ;
+extern OSErr
+GetSoundMixerState(SoundMixerByte * theSoundMixerByte) ;
+extern OSErr
+SetSoundMixerState(SoundMixerByte * theSoundMixerByte) ;
+extern Boolean
+GetDimSuspendState(void) ;
+extern void
+SetDimSuspendState(Boolean dimSuspendState) ;
+extern SleepQUPP
+NewSleepQUPP(SleepQProcPtr userRoutine) ;
+extern HDSpindownUPP
+NewHDSpindownUPP(HDSpindownProcPtr userRoutine) ;
+extern PMgrStateChangeUPP
+NewPMgrStateChangeUPP(PMgrStateChangeProcPtr userRoutine) ;
+extern void
+DisposeSleepQUPP(SleepQUPP userUPP) ;
+extern void
+DisposeHDSpindownUPP(HDSpindownUPP userUPP) ;
+extern void
+DisposePMgrStateChangeUPP(PMgrStateChangeUPP userUPP) ;
+extern long
+InvokeSleepQUPP(
+  long message,
+  SleepQRecPtr qRecPtr,
+  SleepQUPP userUPP) ;
+extern void
+InvokeHDSpindownUPP(
+  HDQueueElement * theElement,
+  HDSpindownUPP userUPP) ;
+extern void
+InvokePMgrStateChangeUPP(
+  PMgrQueueElement * theElement,
+  long stateBits,
+  PMgrStateChangeUPP userUPP) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  scInc = 1,
+  scNoInc = 2,
+  scAdd = 3,
+  scMove = 4,
+  scLoop = 5,
+  scNop = 6,
+  scStop = 7,
+  scComp = 8
+};
+
+
+struct SCSIInstr {
+  unsigned short scOpcode;
+  long scParam1;
+  long scParam2;
+};
+typedef struct SCSIInstr SCSIInstr;
+enum {
+  scsiVERSION = 43
+};
+
+
+
+
+
+typedef void ( * SCSICallbackProcPtr)(void * scsiPB);
+typedef SCSICallbackProcPtr SCSICallbackUPP;
+extern SCSICallbackUPP
+NewSCSICallbackUPP(SCSICallbackProcPtr userRoutine) ;
+extern void
+DisposeSCSICallbackUPP(SCSICallbackUPP userUPP) ;
+extern void
+InvokeSCSICallbackUPP(
+  void * scsiPB,
+  SCSICallbackUPP userUPP) ;
+
+
+
+
+
+
+enum {
+  SCSINop = 0x00,
+  SCSIExecIO = 0x01,
+  SCSIBusInquiry = 0x03,
+  SCSIReleaseQ = 0x04,
+  SCSIAbortCommand = 0x10,
+  SCSIResetBus = 0x11,
+  SCSIResetDevice = 0x12,
+  SCSITerminateIO = 0x13
+};
+
+enum {
+  vendorUnique = 0xC0
+};
+
+
+
+enum {
+  handshakeDataLength = 8,
+  maxCDBLength = 16,
+  vendorIDLength = 16
+};
+
+
+struct DeviceIdent {
+  UInt8 diReserved;
+  UInt8 bus;
+  UInt8 targetID;
+  UInt8 LUN;
+};
+typedef struct DeviceIdent DeviceIdent;
+
+
+
+
+
+
+enum {
+  kBusTypeSCSI = 0,
+  kBusTypeATA = 1,
+  kBusTypePCMCIA = 2,
+  kBusTypeMediaBay = 3
+};
+
+
+
+
+struct DeviceIdentATA {
+  UInt8 diReserved;
+  UInt8 busNum;
+  UInt8 devNum;
+  UInt8 diReserved2;
+};
+typedef struct DeviceIdentATA DeviceIdentATA;
+
+
+
+union CDB {
+  BytePtr cdbPtr;
+  UInt8 cdbBytes[16];
+};
+typedef union CDB CDB;
+typedef CDB * CDBPtr;
+
+struct SGRecord {
+  Ptr SGAddr;
+  UInt32 SGCount;
+};
+typedef struct SGRecord SGRecord;
+struct SCSIHdr {
+  struct SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+};
+typedef struct SCSIHdr SCSIHdr;
+struct SCSI_PB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+};
+typedef struct SCSI_PB SCSI_PB;
+struct SCSI_IO {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+
+  UInt16 scsiResultFlags;
+  UInt16 scsiReserved3pt5;
+  BytePtr scsiDataPtr;
+  UInt32 scsiDataLength;
+  BytePtr scsiSensePtr;
+  UInt8 scsiSenseLength;
+  UInt8 scsiCDBLength;
+  UInt16 scsiSGListCount;
+  UInt32 scsiReserved4;
+  UInt8 scsiSCSIstatus;
+  SInt8 scsiSenseResidual;
+  UInt16 scsiReserved5;
+  long scsiDataResidual;
+  CDB scsiCDB;
+  long scsiTimeout;
+  BytePtr scsiReserved5pt5;
+  UInt16 scsiReserved5pt6;
+  UInt16 scsiIOFlags;
+  UInt8 scsiTagAction;
+  UInt8 scsiReserved6;
+  UInt16 scsiReserved7;
+  UInt16 scsiSelectTimeout;
+  UInt8 scsiDataType;
+  UInt8 scsiTransferType;
+  UInt32 scsiReserved8;
+  UInt32 scsiReserved9;
+  UInt16 scsiHandshake[8];
+  UInt32 scsiReserved10;
+  UInt32 scsiReserved11;
+  struct SCSI_IO * scsiCommandLink;
+
+  UInt8 scsiSIMpublics[8];
+  UInt8 scsiAppleReserved6[8];
+
+
+
+  UInt16 scsiCurrentPhase;
+  short scsiSelector;
+  OSErr scsiOldCallResult;
+  UInt8 scsiSCSImessage;
+  UInt8 XPTprivateFlags;
+  UInt8 XPTextras[12];
+};
+typedef struct SCSI_IO SCSI_IO;
+typedef SCSI_IO SCSIExecIOPB;
+
+struct SCSIBusInquiryPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+
+  UInt16 scsiEngineCount;
+  UInt16 scsiMaxTransferType;
+
+  UInt32 scsiDataTypes;
+
+  UInt16 scsiIOpbSize;
+  UInt16 scsiMaxIOpbSize;
+
+  UInt32 scsiFeatureFlags;
+
+  UInt8 scsiVersionNumber;
+  UInt8 scsiHBAInquiry;
+  UInt8 scsiTargetModeFlags;
+  UInt8 scsiScanFlags;
+
+  UInt32 scsiSIMPrivatesPtr;
+  UInt32 scsiSIMPrivatesSize;
+  UInt32 scsiAsyncFlags;
+
+  UInt8 scsiHiBusID;
+  UInt8 scsiInitiatorID;
+  UInt16 scsiBIReserved0;
+
+  UInt32 scsiBIReserved1;
+  UInt32 scsiFlagsSupported;
+
+  UInt16 scsiIOFlagsSupported;
+  UInt16 scsiWeirdStuff;
+  UInt16 scsiMaxTarget;
+  UInt16 scsiMaxLUN;
+
+  char scsiSIMVendor[16];
+  char scsiHBAVendor[16];
+  char scsiControllerFamily[16];
+  char scsiControllerType[16];
+
+  char scsiXPTversion[4];
+  char scsiSIMversion[4];
+  char scsiHBAversion[4];
+
+  UInt8 scsiHBAslotType;
+  UInt8 scsiHBAslotNumber;
+  UInt16 scsiSIMsRsrcID;
+
+  UInt16 scsiBIReserved3;
+  UInt16 scsiAdditionalLength;
+};
+typedef struct SCSIBusInquiryPB SCSIBusInquiryPB;
+
+struct SCSIAbortCommandPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+  SCSI_IO * scsiIOptr;
+};
+typedef struct SCSIAbortCommandPB SCSIAbortCommandPB;
+
+struct SCSITerminateIOPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+  SCSI_IO * scsiIOptr;
+};
+typedef struct SCSITerminateIOPB SCSITerminateIOPB;
+
+struct SCSIResetBusPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+};
+typedef struct SCSIResetBusPB SCSIResetBusPB;
+
+struct SCSIResetDevicePB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+};
+typedef struct SCSIResetDevicePB SCSIResetDevicePB;
+
+struct SCSIReleaseQPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  BytePtr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+};
+typedef struct SCSIReleaseQPB SCSIReleaseQPB;
+
+struct SCSIGetVirtualIDInfoPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  Ptr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+  UInt16 scsiOldCallID;
+  Boolean scsiExists;
+  SInt8 filler;
+};
+typedef struct SCSIGetVirtualIDInfoPB SCSIGetVirtualIDInfoPB;
+
+struct SCSIDriverPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  Ptr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+  short scsiDriver;
+  UInt16 scsiDriverFlags;
+  DeviceIdent scsiNextDevice;
+};
+typedef struct SCSIDriverPB SCSIDriverPB;
+
+struct SCSILoadDriverPB {
+  SCSIHdr * qLink;
+  short scsiReserved1;
+  UInt16 scsiPBLength;
+  UInt8 scsiFunctionCode;
+  UInt8 scsiReserved2;
+  volatile OSErr scsiResult;
+  DeviceIdent scsiDevice;
+  SCSICallbackUPP scsiCompletion;
+  UInt32 scsiFlags;
+  Ptr scsiDriverStorage;
+  Ptr scsiXPTprivate;
+  long scsiReserved3;
+  short scsiLoadedRefNum;
+  Boolean scsiDiskLoadFailed;
+  SInt8 filler;
+};
+typedef struct SCSILoadDriverPB SCSILoadDriverPB;
+
+
+enum {
+  scsiTransferBlind = 0,
+  scsiTransferPolled = 1
+};
+
+enum {
+  scsiErrorBase = -7936
+};
+
+enum {
+  scsiRequestInProgress = 1,
+
+  scsiRequestAborted = scsiErrorBase + 2,
+  scsiUnableToAbort = scsiErrorBase + 3,
+  scsiNonZeroStatus = scsiErrorBase + 4,
+  scsiUnused05 = scsiErrorBase + 5,
+  scsiUnused06 = scsiErrorBase + 6,
+  scsiUnused07 = scsiErrorBase + 7,
+  scsiUnused08 = scsiErrorBase + 8,
+  scsiUnableToTerminate = scsiErrorBase + 9,
+  scsiSelectTimeout = scsiErrorBase + 10,
+  scsiCommandTimeout = scsiErrorBase + 11,
+  scsiIdentifyMessageRejected = scsiErrorBase + 12,
+  scsiMessageRejectReceived = scsiErrorBase + 13,
+  scsiSCSIBusReset = scsiErrorBase + 14,
+  scsiParityError = scsiErrorBase + 15,
+  scsiAutosenseFailed = scsiErrorBase + 16,
+  scsiUnused11 = scsiErrorBase + 17,
+  scsiDataRunError = scsiErrorBase + 18,
+  scsiUnexpectedBusFree = scsiErrorBase + 19,
+  scsiSequenceFailed = scsiErrorBase + 20,
+  scsiWrongDirection = scsiErrorBase + 21,
+  scsiUnused16 = scsiErrorBase + 22,
+  scsiBDRsent = scsiErrorBase + 23,
+  scsiTerminated = scsiErrorBase + 24,
+  scsiNoNexus = scsiErrorBase + 25,
+  scsiCDBReceived = scsiErrorBase + 26,
+
+  scsiTooManyBuses = scsiErrorBase + 48,
+  scsiBusy = scsiErrorBase + 49,
+  scsiProvideFail = scsiErrorBase + 50,
+  scsiDeviceNotThere = scsiErrorBase + 51,
+  scsiNoHBA = scsiErrorBase + 52,
+  scsiDeviceConflict = scsiErrorBase + 53,
+  scsiNoSuchXref = scsiErrorBase + 54,
+  scsiQLinkInvalid = scsiErrorBase + 55,
+
+
+  scsiPBLengthError = scsiErrorBase + 64,
+  scsiFunctionNotAvailable = scsiErrorBase + 65,
+  scsiRequestInvalid = scsiErrorBase + 66,
+  scsiBusInvalid = scsiErrorBase + 67,
+  scsiTIDInvalid = scsiErrorBase + 68,
+  scsiLUNInvalid = scsiErrorBase + 69,
+  scsiIDInvalid = scsiErrorBase + 70,
+  scsiDataTypeInvalid = scsiErrorBase + 71,
+  scsiTransferTypeInvalid = scsiErrorBase + 72,
+  scsiCDBLengthInvalid = scsiErrorBase + 73
+};
+
+
+enum {
+  scsiUnused74 = scsiErrorBase + 74,
+  scsiUnused75 = scsiErrorBase + 75,
+  scsiBadDataLength = scsiErrorBase + 76,
+  scsiPartialPrepared = scsiErrorBase + 77,
+  scsiInvalidMsgType = scsiErrorBase + 78,
+  scsiUnused79 = scsiErrorBase + 79,
+  scsiBadConnID = scsiErrorBase + 80,
+  scsiUnused81 = scsiErrorBase + 81,
+  scsiIOInProgress = scsiErrorBase + 82,
+  scsiTargetReserved = scsiErrorBase + 83,
+  scsiUnused84 = scsiErrorBase + 84,
+  scsiUnused85 = scsiErrorBase + 85,
+  scsiBadConnType = scsiErrorBase + 86,
+  scsiCannotLoadPlugin = scsiErrorBase + 87
+};
+enum {
+  scsiFamilyInternalError = scsiErrorBase + 87,
+  scsiPluginInternalError = scsiErrorBase + 88,
+  scsiVendorSpecificErrorBase = scsiErrorBase + 128,
+  scsiVendorSpecificErrorCount = 16
+};
+
+
+enum {
+  scsiExecutionErrors = scsiErrorBase,
+  scsiNotExecutedErrors = scsiTooManyBuses,
+  scsiParameterErrors = scsiPBLengthError
+};
+
+
+enum {
+  scsiSIMQFrozen = 0x0001,
+  scsiAutosenseValid = 0x0002,
+  scsiBusNotFree = 0x0004
+};
+
+
+enum {
+  kbSCSIDisableAutosense = 29,
+  kbSCSIFlagReservedA = 28,
+  kbSCSIFlagReserved0 = 27,
+  kbSCSICDBLinked = 26,
+  kbSCSIQEnable = 25,
+  kbSCSICDBIsPointer = 24,
+  kbSCSIFlagReserved1 = 23,
+  kbSCSIInitiateSyncData = 22,
+  kbSCSIDisableSyncData = 21,
+  kbSCSISIMQHead = 20,
+  kbSCSISIMQFreeze = 19,
+  kbSCSISIMQNoFreeze = 18,
+  kbSCSIDoDisconnect = 17,
+  kbSCSIDontDisconnect = 16,
+  kbSCSIDataReadyForDMA = 15,
+  kbSCSIFlagReserved3 = 14,
+  kbSCSIDataPhysical = 13,
+  kbSCSISensePhysical = 12,
+  kbSCSIFlagReserved5 = 11,
+  kbSCSIFlagReserved6 = 10,
+  kbSCSIFlagReserved7 = 9,
+  kbSCSIFlagReserved8 = 8,
+  kbSCSIDataBufferValid = 7,
+  kbSCSIStatusBufferValid = 6,
+  kbSCSIMessageBufferValid = 5,
+  kbSCSIFlagReserved9 = 4
+};
+
+
+enum {
+  scsiDirectionMask = (long)0xC0000000,
+  scsiDirectionNone = (long)0xC0000000,
+  scsiDirectionReserved = 0x00000000,
+  scsiDirectionOut = (long)0x80000000,
+  scsiDirectionIn = 0x40000000,
+  scsiDisableAutosense = 0x20000000,
+  scsiFlagReservedA = 0x10000000,
+  scsiFlagReserved0 = 0x08000000,
+  scsiCDBLinked = 0x04000000,
+  scsiQEnable = 0x02000000,
+  scsiCDBIsPointer = 0x01000000,
+  scsiFlagReserved1 = 0x00800000,
+  scsiInitiateSyncData = 0x00400000,
+  scsiDisableSyncData = 0x00200000,
+  scsiSIMQHead = 0x00100000,
+  scsiSIMQFreeze = 0x00080000,
+  scsiSIMQNoFreeze = 0x00040000,
+  scsiDoDisconnect = 0x00020000,
+  scsiDontDisconnect = 0x00010000,
+  scsiDataReadyForDMA = 0x00008000,
+  scsiFlagReserved3 = 0x00004000,
+  scsiDataPhysical = 0x00002000,
+  scsiSensePhysical = 0x00001000,
+  scsiFlagReserved5 = 0x00000800,
+  scsiFlagReserved6 = 0x00000400,
+  scsiFlagReserved7 = 0x00000200,
+  scsiFlagReserved8 = 0x00000100
+};
+
+
+enum {
+  scsiNoParityCheck = 0x0002,
+  scsiDisableSelectWAtn = 0x0004,
+  scsiSavePtrOnDisconnect = 0x0008,
+  scsiNoBucketIn = 0x0010,
+  scsiNoBucketOut = 0x0020,
+  scsiDisableWide = 0x0040,
+  scsiInitiateWide = 0x0080,
+  scsiRenegotiateSense = 0x0100,
+  scsiDisableDiscipline = 0x0200,
+  scsiIOFlagReserved0080 = 0x0080,
+  scsiIOFlagReserved8000 = 0x8000
+};
+
+
+
+enum {
+  scsiBusMDP = 0x80,
+  scsiBusWide32 = 0x40,
+  scsiBusWide16 = 0x20,
+  scsiBusSDTR = 0x10,
+  scsiBusLinkedCDB = 0x08,
+  scsiBusTagQ = 0x02,
+  scsiBusSoftReset = 0x01
+};
+
+
+enum {
+  scsiDataBuffer = 0,
+  scsiDataTIB = 1,
+  scsiDataSG = 2,
+  scsiDataIOTable = 3
+};
+
+
+
+enum {
+  scsiBusDataTIB = (1 << scsiDataTIB),
+  scsiBusDataBuffer = (1 << scsiDataBuffer),
+  scsiBusDataSG = (1 << scsiDataSG),
+  scsiBusDataIOTable = (1 << scsiDataIOTable),
+  scsiBusDataReserved = (long)0x80000000
+};
+
+
+enum {
+  scsiBusScansDevices = 0x80,
+  scsiBusScansOnInit = 0x40,
+  scsiBusLoadsROMDrivers = 0x20
+};
+
+
+enum {
+  scsiBusLVD = 0x00000400,
+  scsiBusUltra3SCSI = 0x00000200,
+  scsiBusUltra2SCSI = 0x00000100,
+  scsiBusInternalExternalMask = 0x000000C0,
+  scsiBusInternalExternalUnknown = 0x00000000,
+  scsiBusInternalExternal = 0x000000C0,
+  scsiBusInternal = 0x00000080,
+  scsiBusExternal = 0x00000040,
+  scsiBusCacheCoherentDMA = 0x00000020,
+  scsiBusOldCallCapable = 0x00000010,
+  scsiBusUltraSCSI = 0x00000008,
+  scsiBusDifferential = 0x00000004,
+  scsiBusFastSCSI = 0x00000002,
+  scsiBusDMAavailable = 0x00000001
+};
+
+
+enum {
+  scsiOddDisconnectUnsafeRead1 = 0x0001,
+  scsiOddDisconnectUnsafeWrite1 = 0x0002,
+  scsiBusErrorsUnsafe = 0x0004,
+  scsiRequiresHandshake = 0x0008,
+  scsiTargetDrivenSDTRSafe = 0x0010,
+  scsiOddCountForPhysicalUnsafe = 0x0020,
+  scsiAbortCmdFixed = 0x0040,
+  scsiMeshACKTimingFixed = 0x0080
+};
+
+
+enum {
+  scsiMotherboardBus = 0x00,
+  scsiNuBus = 0x01,
+  scsiPDSBus = 0x03,
+  scsiPCIBus = 0x04,
+  scsiPCMCIABus = 0x05,
+  scsiFireWireBridgeBus = 0x06,
+  scsiUSBBus = 0x07
+};
+
+
+enum {
+  scsiDeviceSensitive = 0x0001,
+  scsiDeviceNoOldCallAccess = 0x0002
+};
+
+
+
+
+
+
+enum {
+  scsiStatGood = 0x00,
+  scsiStatCheckCondition = 0x02,
+  scsiStatConditionMet = 0x04,
+  scsiStatBusy = 0x08,
+  scsiStatIntermediate = 0x10,
+  scsiStatIntermedMet = 0x14,
+  scsiStatResvConflict = 0x18,
+  scsiStatTerminated = 0x22,
+  scsiStatQFull = 0x28
+};
+
+
+enum {
+  kCmdCompleteMsg = 0,
+  kExtendedMsg = 1,
+  kSaveDataPointerMsg = 2,
+  kRestorePointersMsg = 3,
+  kDisconnectMsg = 4,
+  kInitiatorDetectedErrorMsg = 5,
+  kAbortMsg = 6,
+  kMsgRejectMsg = 7,
+  kNoOperationMsg = 8,
+  kMsgParityErrorMsg = 9,
+  kLinkedCmdCompleteMsg = 10,
+  kLinkedCmdCompleteWithFlagMsg = 11,
+  kBusDeviceResetMsg = 12,
+  kAbortTagMsg = 13,
+  kClearQueueMsg = 14,
+  kInitiateRecoveryMsg = 15,
+  kReleaseRecoveryMsg = 16,
+  kTerminateIOProcessMsg = 17,
+  kSimpleQueueTag = 0x20,
+  kHeadOfQueueTagMsg = 0x21,
+  kOrderedQueueTagMsg = 0x22,
+  kIgnoreWideResidueMsg = 0x23
+};
+extern OSErr
+SCSIAction(SCSI_PB * parameterBlock) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+enum {
+  kSystemSoundNoError = 0,
+  kSystemSoundUnspecifiedError = -1500
+};
+
+
+
+
+typedef UInt32 SystemSoundActionID;
+extern void
+AlertSoundPlay(void) ;
+extern void
+SystemSoundPlay(SystemSoundActionID inAction) ;
+extern OSStatus
+SystemSoundGetActionID(
+  const FSRef * userFile,
+  SystemSoundActionID * outAction) ;
+extern OSStatus
+SystemSoundRemoveActionID(SystemSoundActionID inAction) ;
+
+
+
+
+}
+
+
+
+
+
+
+enum {
+  kThumbnail32BitData = 'it32',
+  kThumbnail8BitMask = 't8mk'
+};
+
+enum {
+  kHuge1BitMask = 'ich#',
+  kHuge4BitData = 'ich4',
+  kHuge8BitData = 'ich8',
+  kHuge32BitData = 'ih32',
+  kHuge8BitMask = 'h8mk'
+};
+
+
+
+enum {
+  kLarge1BitMask = 'ICN#',
+  kLarge4BitData = 'icl4',
+  kLarge8BitData = 'icl8',
+  kLarge32BitData = 'il32',
+  kLarge8BitMask = 'l8mk',
+  kSmall1BitMask = 'ics#',
+  kSmall4BitData = 'ics4',
+  kSmall8BitData = 'ics8',
+  kSmall32BitData = 'is32',
+  kSmall8BitMask = 's8mk',
+  kMini1BitMask = 'icm#',
+  kMini4BitData = 'icm4',
+  kMini8BitData = 'icm8'
+};
+
+
+enum {
+  large1BitMask = kLarge1BitMask,
+  large4BitData = kLarge4BitData,
+  large8BitData = kLarge8BitData,
+  small1BitMask = kSmall1BitMask,
+  small4BitData = kSmall4BitData,
+  small8BitData = kSmall8BitData,
+  mini1BitMask = kMini1BitMask,
+  mini4BitData = kMini4BitData,
+  mini8BitData = kMini8BitData
+};
+enum {
+  kIconFamilyType = 'icns'
+};
+
+
+struct IconFamilyElement {
+  OSType elementType;
+  Size elementSize;
+  unsigned char elementData[1];
+};
+typedef struct IconFamilyElement IconFamilyElement;
+struct IconFamilyResource {
+  OSType resourceType;
+  Size resourceSize;
+  IconFamilyElement elements[1];
+
+};
+typedef struct IconFamilyResource IconFamilyResource;
+typedef IconFamilyResource * IconFamilyPtr;
+typedef IconFamilyPtr * IconFamilyHandle;
+
+
+
+enum {
+  kTileIconVariant = 'tile',
+  kRolloverIconVariant = 'over',
+  kDropIconVariant = 'drop',
+  kOpenIconVariant = 'open',
+  kOpenDropIconVariant = 'odrp'
+};
+
+
+
+
+
+extern "C" {
+
+
+typedef UInt8 OTUInt8Param;
+typedef UInt16 OTUInt16Param;
+typedef SInt16 OTSInt16Param;
+typedef SInt8 OTSInt8Param;
+typedef Boolean OTBooleanParam;
+typedef UInt8 uchar_p;
+typedef UInt16 ushort_p;
+typedef SInt16 short_p;
+typedef SInt8 char_p;
+typedef Boolean boolean_p;
+
+
+
+
+
+
+
+    typedef unsigned int OTByteCount;
+    typedef unsigned int OTItemCount;
+    typedef int OTInt32;
+    typedef unsigned int OTUInt32;
+
+
+typedef long int_t;
+typedef unsigned long uint_t;
+enum {
+  kOTCFMClass = 'otan'
+};
+
+
+
+
+typedef UInt32 OTTimeout;
+
+typedef SInt32 OTSequence;
+
+typedef SInt32 OTNameID;
+
+
+
+
+typedef SInt32 OTReason;
+
+typedef UInt32 OTQLen;
+
+typedef UInt8 * OTClientName;
+
+typedef SInt32 OTCommand;
+
+typedef void* OTClient;
+typedef UInt32 OTOpenFlags;
+enum {
+  kO_ASYNC = 0x01,
+  kO_NDELAY = 0x04,
+  kO_NONBLOCK = 0x04
+};
+typedef UInt16 OTUnixErr;
+typedef UInt16 OTXTIErr;
+enum {
+  TSUCCESS = 0,
+  TBADADDR = 1,
+  TBADOPT = 2,
+  TACCES = 3,
+  TBADF = 4,
+  TNOADDR = 5,
+  TOUTSTATE = 6,
+  TBADSEQ = 7,
+  TSYSERR = 8,
+  TLOOK = 9,
+  TBADDATA = 10,
+  TBUFOVFLW = 11,
+  TFLOW = 12,
+  TNODATA = 13,
+  TNODIS = 14,
+  TNOUDERR = 15,
+  TBADFLAG = 16,
+  TNOREL = 17,
+  TNOTSUPPORT = 18,
+  TSTATECHNG = 19,
+  TNOSTRUCTYPE = 20,
+  TBADNAME = 21,
+  TBADQLEN = 22,
+  TADDRBUSY = 23,
+  TINDOUT = 24,
+  TPROVMISMATCH = 25,
+  TRESQLEN = 26,
+  TRESADDR = 27,
+  TQFULL = 28,
+  TPROTO = 29,
+  TBADSYNC = 30,
+  TCANCELED = 31,
+  TLASTXTIERROR = 31
+};
+typedef SInt32 OTResult;
+enum {
+  kOTGenericName = 0
+};
+
+typedef UInt16 OTAddressType;
+struct OTAddress {
+  OTAddressType fAddressType;
+  UInt8 fAddress[1];
+};
+typedef struct OTAddress OTAddress;
+enum {
+  T_BIND = 1,
+  T_OPTMGMT = 2,
+  T_CALL = 3,
+  T_DIS = 4,
+  T_UNITDATA = 5,
+  T_UDERROR = 6,
+  T_INFO = 7,
+  T_REPLYDATA = 8,
+  T_REQUESTDATA = 9,
+  T_UNITREQUEST = 10,
+  T_UNITREPLY = 11
+};
+
+
+typedef UInt32 OTStructType;
+
+
+
+
+enum {
+  T_ADDR = 0x01,
+  T_OPT = 0x02,
+  T_UDATA = 0x04,
+  T_ALL = 0xFFFF
+};
+
+typedef UInt32 OTFieldsType;
+
+
+
+
+
+
+
+typedef UInt32 OTFlags;
+
+
+
+
+enum {
+  T_MORE = 0x0001,
+  T_EXPEDITED = 0x0002,
+  T_ACKNOWLEDGED = 0x0004,
+  T_PARTIALDATA = 0x0008,
+  T_NORECEIPT = 0x0010,
+  T_TIMEDOUT = 0x0020
+};
+
+
+
+enum {
+  T_NEGOTIATE = 0x0004,
+  T_CHECK = 0x0008,
+  T_DEFAULT = 0x0010,
+  T_CURRENT = 0x0080
+};
+
+
+
+
+
+
+enum {
+  T_SUCCESS = 0x0020,
+  T_FAILURE = 0x0040,
+  T_PARTSUCCESS = 0x0100,
+  T_READONLY = 0x0200,
+  T_NOTSUPPORT = 0x0400
+};
+typedef UInt32 OTBand;
+  typedef class TProvider* ProviderRef;
+  typedef class TEndpoint* EndpointRef;
+  typedef class TMapper* MapperRef;
+typedef UInt32 OTEventCode;
+enum {
+  T_LISTEN = 0x0001,
+  T_CONNECT = 0x0002,
+  T_DATA = 0x0004,
+  T_EXDATA = 0x0008,
+  T_DISCONNECT = 0x0010,
+  T_ERROR = 0x0020,
+  T_UDERR = 0x0040,
+  T_ORDREL = 0x0080,
+  T_GODATA = 0x0100,
+  T_GOEXDATA = 0x0200,
+  T_REQUEST = 0x0400,
+  T_REPLY = 0x0800,
+  T_PASSCON = 0x1000,
+  T_RESET = 0x2000,
+  kPRIVATEEVENT = 0x10000000,
+  kCOMPLETEEVENT = 0x20000000,
+  T_BINDCOMPLETE = 0x20000001,
+  T_UNBINDCOMPLETE = 0x20000002,
+  T_ACCEPTCOMPLETE = 0x20000003,
+  T_REPLYCOMPLETE = 0x20000004,
+  T_DISCONNECTCOMPLETE = 0x20000005,
+  T_OPTMGMTCOMPLETE = 0x20000006,
+  T_OPENCOMPLETE = 0x20000007,
+  T_GETPROTADDRCOMPLETE = 0x20000008,
+  T_RESOLVEADDRCOMPLETE = 0x20000009,
+  T_GETINFOCOMPLETE = 0x2000000A,
+  T_SYNCCOMPLETE = 0x2000000B,
+  T_MEMORYRELEASED = 0x2000000C,
+  T_REGNAMECOMPLETE = 0x2000000D,
+  T_DELNAMECOMPLETE = 0x2000000E,
+  T_LKUPNAMECOMPLETE = 0x2000000F,
+  T_LKUPNAMERESULT = 0x20000010,
+  kOTSyncIdleEvent = 0x20000011,
+  kSTREAMEVENT = 0x21000000,
+  kOTReservedEvent1 = 0x21000001,
+  kGetmsgEvent = 0x21000002,
+  kStreamReadEvent = 0x21000003,
+  kStreamWriteEvent = 0x21000004,
+  kStreamIoctlEvent = 0x21000005,
+  kOTReservedEvent2 = 0x21000006,
+  kStreamOpenEvent = 0x21000007,
+  kPollEvent = 0x21000008,
+  kOTReservedEvent3 = 0x21000009,
+  kOTReservedEvent4 = 0x2100000A,
+  kOTReservedEvent5 = 0x2100000B,
+  kOTReservedEvent6 = 0x2100000C,
+  kOTReservedEvent7 = 0x2100000D,
+  kOTReservedEvent8 = 0x2100000E,
+  kSIGNALEVENT = 0x22000000,
+  kPROTOCOLEVENT = 0x23000000,
+  kOTProviderIsDisconnected = 0x23000001,
+  kOTProviderIsReconnected = 0x23000002,
+  kOTProviderWillClose = 0x24000001,
+  kOTProviderIsClosed = 0x24000002,
+  kOTPortDisabled = 0x25000001,
+  kOTPortEnabled = 0x25000002,
+  kOTPortOffline = 0x25000003,
+  kOTPortOnline = 0x25000004,
+  kOTClosePortRequest = 0x25000005,
+  kOTYieldPortRequest = 0x25000005,
+  kOTNewPortRegistered = 0x25000006,
+  kOTPortNetworkChange = 0x25000007,
+  kOTConfigurationChanged = 0x26000001,
+  kOTSystemSleep = 0x26000002,
+  kOTSystemShutdown = 0x26000003,
+  kOTSystemAwaken = 0x26000004,
+  kOTSystemIdle = 0x26000005,
+  kOTSystemSleepPrep = 0x26000006,
+  kOTSystemShutdownPrep = 0x26000007,
+  kOTSystemAwakenPrep = 0x26000008,
+  kOTStackIsLoading = 0x27000001,
+  kOTStackWasLoaded = 0x27000002,
+  kOTStackIsUnloading = 0x27000003
+};
+enum {
+  kOTDisablePortEvent = 0x21000001,
+  kStreamCloseEvent = 0x21000006,
+  kBackgroundStreamEvent = 0x21000009,
+  kIoctlRecvFdEvent = 0x2100000A,
+  kOTTryShutdownEvent = 0x2100000B,
+  kOTScheduleTerminationEvent = 0x2100000C,
+  kOTEnablePortEvent = 0x2100000D,
+  kOTNewPortRegisteredEvent = 0x2100000E,
+  kOTPortOfflineEvent = 0x2100000F,
+  kOTPortOnlineEvent = 0x21000010,
+  kOTPortNetworkChangeEvent = 0x21000011
+};
+enum {
+  kSIGHUP = 1,
+  kSIGURG = 16,
+  kSIGPOLL = 30
+};
+typedef void ( * OTNotifyProcPtr)(void *contextPtr, OTEventCode code, OTResult result, void *cookie);
+typedef OTNotifyProcPtr OTNotifyUPP;
+extern OTNotifyUPP
+NewOTNotifyUPP(OTNotifyProcPtr userRoutine) ;
+extern void
+DisposeOTNotifyUPP(OTNotifyUPP userUPP) ;
+extern void
+InvokeOTNotifyUPP(
+  void * contextPtr,
+  OTEventCode code,
+  OTResult result,
+  void * cookie,
+  OTNotifyUPP userUPP) ;
+
+
+
+enum {
+  XTI_GENERIC = 0xFFFF
+};
+
+typedef UInt32 OTXTILevel;
+
+typedef UInt32 OTXTIName;
+
+enum {
+  XTI_DEBUG = 0x0001,
+  XTI_LINGER = 0x0080,
+  XTI_RCVBUF = 0x1002,
+  XTI_RCVLOWAT = 0x1004,
+  XTI_SNDBUF = 0x1001,
+  XTI_SNDLOWAT = 0x1003,
+  XTI_PROTOTYPE = 0x1005,
+  OPT_CHECKSUM = 0x0600,
+  OPT_RETRYCNT = 0x0601,
+  OPT_INTERVAL = 0x0602,
+  OPT_ENABLEEOM = 0x0603,
+  OPT_SELFSEND = 0x0604,
+  OPT_SERVERSTATUS = 0x0605,
+  OPT_ALERTENABLE = 0x0606,
+  OPT_KEEPALIVE = 0x0008
+};
+enum {
+  MIOC_STREAMIO = 'A',
+  MIOC_TMOD = 'a',
+  MIOC_STRLOG = 'b',
+  MIOC_ND = 'c',
+  MIOC_ECHO = 'd',
+  MIOC_TLI = 'e',
+  MIOC_RESERVEDf = 'f',
+  MIOC_SAD = 'g',
+  MIOC_ARP = 'h',
+  MIOC_HAVOC = 'H',
+  MIOC_RESERVEDi = 'i',
+  MIOC_SIOC = 'j',
+  MIOC_TCP = 'k',
+  MIOC_DLPI = 'l',
+  MIOC_SOCKETS = 'm',
+  MIOC_IPX = 'o',
+  MIOC_OT = 'O',
+  MIOC_ATALK = 'T',
+  MIOC_SRL = 'U',
+  MIOC_RESERVEDp = 'p',
+  MIOC_RESERVEDr = 'r',
+  MIOC_RESERVEDs = 's',
+  MIOC_CFIG = 'z'
+};
+
+
+
+enum {
+  I_OTGetMiscellaneousEvents = ((MIOC_OT << 8) | 1),
+  I_OTSetFramingType = ((MIOC_OT << 8) | 2),
+  kOTGetFramingValue = (unsigned long)0xFFFFFFFF,
+  I_OTSetRawMode = ((MIOC_OT << 8) | 3),
+  kOTSetRecvMode = 0x01,
+  kOTSendErrorPacket = 0x02,
+  I_OTConnect = ((MIOC_OT << 8) | 4),
+  I_OTDisconnect = ((MIOC_OT << 8) | 5),
+  I_OTScript = ((MIOC_OT << 8) | 6)
+};
+
+
+
+struct OTScriptInfo {
+  UInt32 fScriptType;
+  void * fTheScript;
+  UInt32 fScriptLength;
+};
+typedef struct OTScriptInfo OTScriptInfo;
+
+
+
+
+
+typedef UInt32 OTXTIStates;
+enum {
+  T_UNINIT = 0,
+  T_UNBND = 1,
+  T_IDLE = 2,
+  T_OUTCON = 3,
+  T_INCON = 4,
+  T_DATAXFER = 5,
+  T_OUTREL = 6,
+  T_INREL = 7
+};
+
+
+
+
+
+
+enum {
+  T_YES = 1,
+  T_NO = 0,
+  T_UNUSED = (unsigned long)(-1),
+  kT_NULL = 0,
+  T_ABSREQ = 0x8000
+};
+
+enum {
+  kT_UNSPEC = (unsigned long)0xFFFFFFFD,
+  T_ALLOPT = 0
+};
+typedef class OTConfiguration* OTConfigurationRef;
+struct TOptionHeader {
+  ByteCount len;
+
+
+  OTXTILevel level;
+  OTXTIName name;
+  UInt32 status;
+};
+typedef struct TOptionHeader TOptionHeader;
+
+
+
+
+
+struct TOption {
+  ByteCount len;
+
+
+  OTXTILevel level;
+  OTXTIName name;
+  UInt32 status;
+  UInt32 value[1];
+};
+typedef struct TOption TOption;
+
+enum {
+  kOTOptionHeaderSize = sizeof(TOptionHeader),
+  kOTBooleanOptionDataSize = sizeof(UInt32),
+  kOTBooleanOptionSize = kOTOptionHeaderSize + kOTBooleanOptionDataSize,
+  kOTOneByteOptionSize = kOTOptionHeaderSize + 1,
+  kOTTwoByteOptionSize = kOTOptionHeaderSize + 2,
+  kOTFourByteOptionSize = kOTOptionHeaderSize + sizeof(UInt32)
+};
+struct t_kpalive {
+  SInt32 kp_onoff;
+  SInt32 kp_timeout;
+};
+typedef struct t_kpalive t_kpalive;
+
+struct t_linger {
+  SInt32 l_onoff;
+  SInt32 l_linger;
+};
+typedef struct t_linger t_linger;
+
+
+
+
+
+
+
+typedef UInt32 OTServiceType;
+enum {
+  T_COTS = 1,
+  T_COTS_ORD = 2,
+  T_CLTS = 3,
+  T_TRANS = 5,
+  T_TRANS_ORD = 6,
+  T_TRANS_CLTS = 7
+};
+
+
+
+enum {
+  T_SENDZERO = 0x0001,
+  T_XPG4_1 = 0x0002,
+  T_CAN_SUPPORT_MDATA = 0x10000000,
+  T_CAN_RESOLVE_ADDR = 0x40000000,
+  T_CAN_SUPPLY_MIB = 0x20000000
+};
+
+
+
+
+
+
+enum {
+  T_INFINITE = -1,
+  T_INVALID = -2
+};
+
+
+typedef SInt32 OTDataSize;
+
+struct TEndpointInfo {
+  OTDataSize addr;
+  OTDataSize options;
+  OTDataSize tsdu;
+  OTDataSize etsdu;
+  OTDataSize connect;
+  OTDataSize discon;
+  OTServiceType servtype;
+  UInt32 flags;
+};
+typedef struct TEndpointInfo TEndpointInfo;
+typedef UInt32 OTPortRef;
+typedef OTPortRef * OTPortRefPtr;
+enum {
+  kOTInvalidPortRef = 0
+};
+
+
+
+typedef UInt8 OTBusType;
+enum {
+  kOTUnknownBusPort = 0,
+  kOTMotherboardBus = 1,
+  kOTNuBus = 2,
+  kOTPCIBus = 3,
+  kOTGeoPort = 4,
+  kOTPCCardBus = 5,
+  kOTFireWireBus = 6,
+  kOTLastBusIndex = 15
+};
+
+
+
+
+
+
+typedef UInt16 OTDeviceType;
+enum {
+  kOTNoDeviceType = 0,
+  kOTADEVDevice = 1,
+  kOTMDEVDevice = 2,
+  kOTLocalTalkDevice = 3,
+  kOTIRTalkDevice = 4,
+  kOTTokenRingDevice = 5,
+  kOTISDNDevice = 6,
+  kOTATMDevice = 7,
+  kOTSMDSDevice = 8,
+  kOTSerialDevice = 9,
+  kOTEthernetDevice = 10,
+  kOTSLIPDevice = 11,
+  kOTPPPDevice = 12,
+  kOTModemDevice = 13,
+  kOTFastEthernetDevice = 14,
+  kOTFDDIDevice = 15,
+  kOTIrDADevice = 16,
+  kOTATMSNAPDevice = 17,
+  kOTFibreChannelDevice = 18,
+  kOTFireWireDevice = 19,
+  kOTPseudoDevice = 1023,
+  kOTLastDeviceIndex = 1022
+};
+
+
+
+enum {
+  kOTLastSlotNumber = 255,
+  kOTLastOtherNumber = 255
+};
+
+typedef UInt16 OTSlotNumber;
+extern OTPortRef
+OTCreatePortRef(
+  OTBusType busType,
+  OTDeviceType devType,
+  OTSlotNumber slot,
+  UInt16 other) ;
+extern OTDeviceType
+OTGetDeviceTypeFromPortRef(OTPortRef ref) ;
+extern UInt16
+OTGetBusTypeFromPortRef(OTPortRef ref) ;
+extern OTSlotNumber
+OTGetSlotFromPortRef(
+  OTPortRef ref,
+  UInt16 * other) ;
+extern OTPortRef
+OTSetDeviceTypeInPortRef(
+  OTPortRef ref,
+  OTDeviceType devType) ;
+extern OTPortRef
+OTSetBusTypeInPortRef(
+  OTPortRef ref,
+  OTBusType busType) ;
+enum {
+  kMaxModuleNameLength = 31,
+  kMaxModuleNameSize = kMaxModuleNameLength + 1,
+  kMaxProviderNameLength = kMaxModuleNameLength + 4,
+  kMaxProviderNameSize = kMaxProviderNameLength + 1,
+  kMaxSlotIDLength = 7,
+  kMaxSlotIDSize = kMaxSlotIDLength + 1,
+  kMaxResourceInfoLength = 31,
+  kMaxResourceInfoSize = 32,
+  kMaxPortNameLength = kMaxModuleNameLength + 4,
+  kMaxPortNameSize = kMaxPortNameLength + 1
+};
+
+
+
+
+
+
+enum {
+  kOTPortIsActive = 0x00000001,
+  kOTPortIsDisabled = 0x00000002,
+  kOTPortIsUnavailable = 0x00000004,
+  kOTPortIsOffline = 0x00000008
+};
+
+
+
+enum {
+  kOTPortIsDLPI = 0x00000001,
+  kOTPortIsTPI = 0x00000002,
+  kOTPortCanYield = 0x00000004,
+  kOTPortCanArbitrate = 0x00000008,
+  kOTPortIsTransitory = 0x00000010,
+  kOTPortAutoConnects = 0x00000020,
+  kOTPortIsSystemRegistered = 0x00004000,
+  kOTPortIsPrivate = 0x00008000,
+  kOTPortIsAlias = (unsigned long)0x80000000
+};
+struct OTPortRecord {
+  OTPortRef fRef;
+  UInt32 fPortFlags;
+  UInt32 fInfoFlags;
+  UInt32 fCapabilities;
+  ItemCount fNumChildPorts;
+  OTPortRef * fChildPorts;
+  char fPortName[36];
+  char fModuleName[32];
+  char fSlotID[8];
+  char fResourceInfo[32];
+  char fReserved[164];
+};
+typedef struct OTPortRecord OTPortRecord;
+extern Boolean
+OTGetIndexedPort(
+  OTPortRecord * portRecord,
+  OTItemCount index) ;
+extern Boolean
+OTFindPort(
+  OTPortRecord * portRecord,
+  const char * portName) ;
+extern Boolean
+OTFindPortByRef(
+  OTPortRecord * portRecord,
+  OTPortRef ref) ;
+struct TNetbuf {
+  ByteCount maxlen;
+  ByteCount len;
+  UInt8 * buf;
+};
+typedef struct TNetbuf TNetbuf;
+struct strbuf {
+  SInt32 maxlen;
+  SInt32 len;
+  char * buf;
+};
+typedef struct strbuf strbuf;
+
+
+
+
+
+
+
+struct OTData {
+  void * fNext;
+  void * fData;
+  ByteCount fLen;
+};
+typedef struct OTData OTData;
+enum {
+  kNetbufDataIsOTData = (unsigned long)0xFFFFFFFE
+};
+struct OTBuffer {
+  void * fLink;
+  void * fLink2;
+  struct OTBuffer * fNext;
+  UInt8 * fData;
+  ByteCount fLen;
+  void * fSave;
+  UInt8 fBand;
+  UInt8 fType;
+  UInt8 fPad1;
+  UInt8 fFlags;
+};
+typedef struct OTBuffer OTBuffer;
+enum {
+  kOTNetbufDataIsOTBufferStar = (unsigned long)0xFFFFFFFD
+};
+
+
+
+
+
+
+struct OTBufferInfo {
+  OTBuffer * fBuffer;
+  ByteCount fOffset;
+  UInt8 fPad;
+};
+typedef struct OTBufferInfo OTBufferInfo;
+enum {
+  kOTNetbufIsRawMode = (unsigned long)0xFFFFFFFF
+};
+struct TBind {
+  TNetbuf addr;
+  OTQLen qlen;
+};
+typedef struct TBind TBind;
+
+
+
+
+struct TDiscon {
+  TNetbuf udata;
+  OTReason reason;
+  OTSequence sequence;
+};
+typedef struct TDiscon TDiscon;
+
+
+
+
+struct TCall {
+  TNetbuf addr;
+  TNetbuf opt;
+  TNetbuf udata;
+  OTSequence sequence;
+};
+typedef struct TCall TCall;
+
+struct TUnitData {
+  TNetbuf addr;
+  TNetbuf opt;
+  TNetbuf udata;
+};
+typedef struct TUnitData TUnitData;
+
+
+
+
+struct TUDErr {
+  TNetbuf addr;
+  TNetbuf opt;
+  SInt32 error;
+};
+typedef struct TUDErr TUDErr;
+
+struct TOptMgmt {
+  TNetbuf opt;
+  OTFlags flags;
+};
+typedef struct TOptMgmt TOptMgmt;
+struct TRequest {
+  TNetbuf data;
+  TNetbuf opt;
+  OTSequence sequence;
+};
+typedef struct TRequest TRequest;
+
+struct TReply {
+  TNetbuf data;
+  TNetbuf opt;
+  OTSequence sequence;
+};
+typedef struct TReply TReply;
+
+
+
+
+struct TUnitRequest {
+  TNetbuf addr;
+  TNetbuf opt;
+  TNetbuf udata;
+  OTSequence sequence;
+};
+typedef struct TUnitRequest TUnitRequest;
+
+struct TUnitReply {
+  TNetbuf opt;
+  TNetbuf udata;
+  OTSequence sequence;
+};
+typedef struct TUnitReply TUnitReply;
+
+
+
+
+
+
+
+struct TRegisterRequest {
+  TNetbuf name;
+  TNetbuf addr;
+  OTFlags flags;
+};
+typedef struct TRegisterRequest TRegisterRequest;
+
+
+
+
+struct TRegisterReply {
+  TNetbuf addr;
+  OTNameID nameid;
+};
+typedef struct TRegisterReply TRegisterReply;
+
+struct TLookupRequest {
+  TNetbuf name;
+  TNetbuf addr;
+  UInt32 maxcnt;
+  OTTimeout timeout;
+  OTFlags flags;
+};
+typedef struct TLookupRequest TLookupRequest;
+
+
+
+
+struct TLookupReply {
+  TNetbuf names;
+  UInt32 rspcount;
+};
+typedef struct TLookupReply TLookupReply;
+
+
+
+
+struct TLookupBuffer {
+  UInt16 fAddressLength;
+  UInt16 fNameLength;
+  UInt8 fAddressBuffer[1];
+};
+typedef struct TLookupBuffer TLookupBuffer;
+typedef struct OpaqueOTClientContextPtr* OTClientContextPtr;
+typedef UInt32 OTInitializationFlags;
+enum {
+  kInitOTForApplicationMask = 1,
+  kInitOTForExtensionMask = 2
+};
+extern OSStatus
+InitOpenTransportInContext(
+  OTInitializationFlags flags,
+  OTClientContextPtr * outClientContext) ;
+extern void
+CloseOpenTransportInContext(OTClientContextPtr clientContext) ;
+extern OSStatus
+OTRegisterAsClientInContext(
+  OTClientName name,
+  OTNotifyUPP proc,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTUnregisterAsClientInContext(OTClientContextPtr clientContext) ;
+typedef void ( * OTProcessProcPtr)(void * arg);
+typedef OTProcessProcPtr OTProcessUPP;
+extern OTProcessUPP
+NewOTProcessUPP(OTProcessProcPtr userRoutine) ;
+extern void
+DisposeOTProcessUPP(OTProcessUPP userUPP) ;
+extern void
+InvokeOTProcessUPP(
+  void * arg,
+  OTProcessUPP userUPP) ;
+extern long
+OTCreateDeferredTaskInContext(
+  OTProcessUPP upp,
+  void * arg,
+  OTClientContextPtr clientContext) ;
+typedef long OTDeferredTaskRef;
+extern Boolean
+OTScheduleDeferredTask(OTDeferredTaskRef dtCookie) ;
+extern OSStatus
+OTDestroyDeferredTask(OTDeferredTaskRef dtCookie) ;
+typedef long OTSystemTaskRef;
+extern Boolean
+OTCanMakeSyncCall(void) ;
+extern OSStatus
+OTCloseProvider(ProviderRef ref) ;
+extern SInt32
+OTIoctl(
+  ProviderRef ref,
+  UInt32 cmd,
+  void * data) ;
+extern OSStatus
+OTSetAsynchronous(ProviderRef ref) ;
+extern OSStatus
+OTSetSynchronous(ProviderRef ref) ;
+extern Boolean
+OTIsSynchronous(ProviderRef ref) ;
+extern OSStatus
+OTSetBlocking(ProviderRef ref) ;
+extern OSStatus
+OTSetNonBlocking(ProviderRef ref) ;
+extern Boolean
+OTIsBlocking(ProviderRef ref) ;
+extern OSStatus
+OTInstallNotifier(
+  ProviderRef ref,
+  OTNotifyUPP proc,
+  void * contextPtr) ;
+extern OSStatus
+OTUseSyncIdleEvents(
+  ProviderRef ref,
+  Boolean useEvents) ;
+extern void
+OTRemoveNotifier(ProviderRef ref) ;
+extern void
+OTLeaveNotifier(ProviderRef ref) ;
+extern Boolean
+OTEnterNotifier(ProviderRef ref) ;
+extern OSStatus
+OTAckSends(ProviderRef ref) ;
+extern OSStatus
+OTDontAckSends(ProviderRef ref) ;
+extern Boolean
+OTIsAckingSends(ProviderRef ref) ;
+extern OSStatus
+OTCancelSynchronousCalls(
+  ProviderRef ref,
+  OSStatus err) ;
+extern EndpointRef
+OTOpenEndpointInContext(
+  OTConfigurationRef config,
+  OTOpenFlags oflag,
+  TEndpointInfo * info,
+  OSStatus * err,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTAsyncOpenEndpointInContext(
+  OTConfigurationRef config,
+  OTOpenFlags oflag,
+  TEndpointInfo * info,
+  OTNotifyUPP upp,
+  void * contextPtr,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTGetEndpointInfo(
+  EndpointRef ref,
+  TEndpointInfo * info) ;
+extern OTResult
+OTGetEndpointState(EndpointRef ref) ;
+extern OTResult
+OTLook(EndpointRef ref) ;
+extern OTResult
+OTCountDataBytes(
+  EndpointRef ref,
+  OTByteCount * countPtr) ;
+extern OSStatus
+OTGetProtAddress(
+  EndpointRef ref,
+  TBind * boundAddr,
+  TBind * peerAddr) ;
+extern OSStatus
+OTResolveAddress(
+  EndpointRef ref,
+  TBind * reqAddr,
+  TBind * retAddr,
+  OTTimeout timeOut) ;
+extern void *
+OTAllocInContext(
+  EndpointRef ref,
+  OTStructType structType,
+  UInt32 fields,
+  OSStatus * err,
+  OTClientContextPtr clientContext) ;
+extern OTResult
+OTFree(
+  void * ptr,
+  OTStructType structType) ;
+extern OSStatus
+OTOptionManagement(
+  EndpointRef ref,
+  TOptMgmt * req,
+  TOptMgmt * ret) ;
+extern OSStatus
+OTNextOption(
+  UInt8 * buffer,
+  UInt32 buflen,
+  TOption ** prevOptPtr) ;
+extern TOption *
+OTFindOption(
+  UInt8 * buffer,
+  UInt32 buflen,
+  OTXTILevel level,
+  OTXTIName name) ;
+extern OSStatus
+OTBind(
+  EndpointRef ref,
+  TBind * reqAddr,
+  TBind * retAddr) ;
+extern OSStatus
+OTUnbind(EndpointRef ref) ;
+extern OSStatus
+OTConnect(
+  EndpointRef ref,
+  TCall * sndCall,
+  TCall * rcvCall) ;
+extern OSStatus
+OTRcvConnect(
+  EndpointRef ref,
+  TCall * call) ;
+extern OSStatus
+OTListen(
+  EndpointRef ref,
+  TCall * call) ;
+extern OSStatus
+OTAccept(
+  EndpointRef listener,
+  EndpointRef worker,
+  TCall * call) ;
+extern OSStatus
+OTSndDisconnect(
+  EndpointRef ref,
+  TCall * call) ;
+extern OSStatus
+OTSndOrderlyDisconnect(EndpointRef ref) ;
+extern OSStatus
+OTRcvDisconnect(
+  EndpointRef ref,
+  TDiscon * discon) ;
+extern OSStatus
+OTRcvOrderlyDisconnect(EndpointRef ref) ;
+extern OTResult
+OTRcv(
+  EndpointRef ref,
+  void * buf,
+  OTByteCount nbytes,
+  OTFlags * flags) ;
+extern OTResult
+OTSnd(
+  EndpointRef ref,
+  void * buf,
+  OTByteCount nbytes,
+  OTFlags flags) ;
+extern OSStatus
+OTSndUData(
+  EndpointRef ref,
+  TUnitData * udata) ;
+extern OSStatus
+OTRcvUData(
+  EndpointRef ref,
+  TUnitData * udata,
+  OTFlags * flags) ;
+extern OSStatus
+OTRcvUDErr(
+  EndpointRef ref,
+  TUDErr * uderr) ;
+extern OSStatus
+OTAsyncOpenMapperInContext(
+  OTConfigurationRef config,
+  OTOpenFlags oflag,
+  OTNotifyUPP upp,
+  void * contextPtr,
+  OTClientContextPtr clientContext) ;
+extern MapperRef
+OTOpenMapperInContext(
+  OTConfigurationRef config,
+  OTOpenFlags oflag,
+  OSStatus * err,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTRegisterName(
+  MapperRef ref,
+  TRegisterRequest * req,
+  TRegisterReply * reply) ;
+extern OSStatus
+OTDeleteName(
+  MapperRef ref,
+  TNetbuf * name) ;
+extern OSStatus
+OTDeleteNameByID(
+  MapperRef ref,
+  OTNameID nameID) ;
+extern OSStatus
+OTLookupName(
+  MapperRef ref,
+  TLookupRequest * req,
+  TLookupReply * reply) ;
+extern OTConfigurationRef
+OTCreateConfiguration(const char * path) ;
+extern OTConfigurationRef
+OTCloneConfiguration(OTConfigurationRef cfig) ;
+extern void
+OTDestroyConfiguration(OTConfigurationRef cfig) ;
+extern void *
+OTAllocMemInContext(
+  OTByteCount size,
+  OTClientContextPtr clientContext) ;
+extern void
+OTFreeMem(void * mem) ;
+extern void
+OTDelay(UInt32 seconds) ;
+extern void
+OTIdle(void) ;
+extern void
+OTMemcpy(
+  void * dest,
+  const void * src,
+  OTByteCount nBytes) ;
+extern Boolean
+OTMemcmp(
+  const void * mem1,
+  const void * mem2,
+  OTByteCount nBytes) ;
+extern void
+OTMemmove(
+  void * dest,
+  const void * src,
+  OTByteCount nBytes) ;
+extern void
+OTMemzero(
+  void * dest,
+  OTByteCount nBytes) ;
+extern void
+OTMemset(
+  void * dest,
+  OTUInt8Param toSet,
+  OTByteCount nBytes) ;
+extern OTByteCount
+OTStrLength(const char * str) ;
+extern void
+OTStrCopy(
+  char * dest,
+  const char * src) ;
+extern void
+OTStrCat(
+  char * dest,
+  const char * src) ;
+extern Boolean
+OTStrEqual(
+  const char * src1,
+  const char * src2) ;
+typedef UnsignedWide OTTimeStamp;
+extern void
+OTGetTimeStamp(OTTimeStamp * currentTime) ;
+extern OTTimeStamp *
+OTSubtractTimeStamps(
+  OTTimeStamp * result,
+  OTTimeStamp * startTime,
+  OTTimeStamp * endEnd) ;
+extern UInt32
+OTTimeStampInMilliseconds(OTTimeStamp * delta) ;
+extern UInt32
+OTTimeStampInMicroseconds(OTTimeStamp * delta) ;
+extern UInt32
+OTElapsedMilliseconds(OTTimeStamp * startTime) ;
+extern UInt32
+OTElapsedMicroseconds(OTTimeStamp * startTime) ;
+extern UInt32
+OTGetClockTimeInSecs(void) ;
+struct OTLink {
+  struct OTLink * fNext;
+
+
+
+
+
+   void Init() { fNext = __null; }
+
+
+
+};
+typedef struct OTLink OTLink;
+struct OTLIFO {
+  OTLink * fHead;
+
+
+
+
+
+  void Init();
+    void Enqueue(OTLink* link);
+ OTLink* Dequeue();
+ OTLink* StealList();
+   Boolean IsEmpty();
+
+
+
+};
+typedef struct OTLIFO OTLIFO;
+extern void
+OTLIFOEnqueue(
+  OTLIFO * list,
+  OTLink * link) ;
+extern OTLink *
+OTLIFODequeue(OTLIFO * list) ;
+extern OTLink *
+OTLIFOStealList(OTLIFO * list) ;
+extern OTLink *
+OTReverseList(OTLink * list) ;
+
+
+
+
+
+
+
+  inline void OTLIFO::Init() { fHead = __null; }
+  inline void OTLIFO::Enqueue(OTLink* link) { OTLIFOEnqueue(this, link); }
+ inline OTLink* OTLIFO::Dequeue() { return OTLIFODequeue(this); }
+    inline OTLink* OTLIFO::StealList() { return OTLIFOStealList(this); }
+  inline Boolean OTLIFO::IsEmpty() { return fHead == __null; }
+typedef Boolean ( * OTListSearchProcPtr)(const void *ref, OTLink *linkToCheck);
+typedef OTListSearchProcPtr OTListSearchUPP;
+extern OTListSearchUPP
+NewOTListSearchUPP(OTListSearchProcPtr userRoutine) ;
+extern void
+DisposeOTListSearchUPP(OTListSearchUPP userUPP) ;
+extern Boolean
+InvokeOTListSearchUPP(
+  const void * ref,
+  OTLink * linkToCheck,
+  OTListSearchUPP userUPP) ;
+
+struct OTList {
+  OTLink * fHead;
+
+
+
+
+  void Init();
+    Boolean IsEmpty();
+ void AddFirst(OTLink* link);
+    void AddLast(OTLink* link);
+ OTLink* GetFirst();
+    OTLink* GetLast();
+ OTLink* RemoveFirst();
+ OTLink* RemoveLast();
+  Boolean IsInList(OTLink* link);
+    OTLink* FindLink(OTListSearchUPP proc, const void* ref);
+   Boolean RemoveLink(OTLink* link);
+  OTLink* FindAndRemoveLink(OTListSearchUPP proc, const void* ref);
+  OTLink* GetIndexedLink(OTItemCount index);
+
+
+
+};
+typedef struct OTList OTList;
+extern void
+OTAddFirst(
+  OTList * list,
+  OTLink * link) ;
+extern void
+OTAddLast(
+  OTList * list,
+  OTLink * link) ;
+extern OTLink *
+OTRemoveFirst(OTList * list) ;
+extern OTLink *
+OTRemoveLast(OTList * list) ;
+extern OTLink *
+OTGetFirst(OTList * list) ;
+extern OTLink *
+OTGetLast(OTList * list) ;
+extern Boolean
+OTIsInList(
+  OTList * list,
+  OTLink * link) ;
+extern OTLink *
+OTFindLink(
+  OTList * list,
+  OTListSearchUPP proc,
+  const void * ref) ;
+extern Boolean
+OTRemoveLink(
+  OTList * list,
+  OTLink * link) ;
+extern OTLink *
+OTFindAndRemoveLink(
+  OTList * list,
+  OTListSearchUPP proc,
+  const void * ref) ;
+extern OTLink *
+OTGetIndexedLink(
+  OTList * list,
+  OTItemCount index) ;
+extern void
+OTEnqueue(
+  void ** listHead,
+  void * object,
+  OTByteCount linkOffset) ;
+extern void *
+OTDequeue(
+  void ** listHead,
+  OTByteCount linkOffset) ;
+
+
+
+
+
+
+  inline void OTList::Init() { fHead = __null; }
+   inline Boolean OTList::IsEmpty() { return fHead == __null; }
+  inline void OTList::AddFirst(OTLink* link) { OTAddFirst(this, link); }
+    inline void OTList::AddLast(OTLink* link) { OTAddLast(this, link); }
+ inline OTLink* OTList::GetFirst() { return OTGetFirst(this); }
+   inline OTLink* OTList::GetLast() { return OTGetLast(this); }
+    inline OTLink* OTList::RemoveFirst() { return OTRemoveFirst(this); }
+    inline OTLink* OTList::RemoveLast() { return OTRemoveLast(this); }
+ inline Boolean OTList::IsInList(OTLink* link) { return OTIsInList(this, link); }
+ inline OTLink* OTList::FindLink(OTListSearchUPP proc, const void* ref)
+                                                        { return OTFindLink(this, proc, ref); }
+    inline Boolean OTList::RemoveLink(OTLink* link) { return OTRemoveLink(this, link); }
+  inline OTLink* OTList::FindAndRemoveLink(OTListSearchUPP proc, const void* ref)
+                                                       { return OTFindAndRemoveLink(this, proc, ref); }
+   inline OTLink* OTList::GetIndexedLink(OTItemCount index)
+                                                      { return OTGetIndexedLink(this, index); }
+extern Boolean
+OTAtomicSetBit(
+  UInt8 * bytePtr,
+  OTByteCount bitNumber) ;
+extern Boolean
+OTAtomicClearBit(
+  UInt8 * bytePtr,
+  OTByteCount bitNumber) ;
+extern Boolean
+OTAtomicTestBit(
+  UInt8 * bytePtr,
+  OTByteCount bitNumber) ;
+extern Boolean
+OTCompareAndSwapPtr(
+  void * oldValue,
+  void * newValue,
+  void ** dest) ;
+extern Boolean
+OTCompareAndSwap32(
+  UInt32 oldValue,
+  UInt32 newValue,
+  UInt32 * dest) ;
+extern Boolean
+OTCompareAndSwap16(
+  UInt32 oldValue,
+  UInt32 newValue,
+  UInt16 * dest) ;
+extern Boolean
+OTCompareAndSwap8(
+  UInt32 oldValue,
+  UInt32 newValue,
+  UInt8 * dest) ;
+extern SInt32
+OTAtomicAdd32(
+  SInt32 toAdd,
+  SInt32 * dest) ;
+extern SInt16
+OTAtomicAdd16(
+  SInt32 toAdd,
+  SInt16 * dest) ;
+extern SInt8
+OTAtomicAdd8(
+  SInt32 toAdd,
+  SInt8 * dest) ;
+
+
+
+
+
+
+typedef UInt8 OTLock;
+}
+class TProvider
+{
+    private:
+        void* operator new(size_t);
+        void operator delete(void*) {}
+
+
+
+
+
+    public:
+        OSStatus Close() { return OTCloseProvider(this); }
+
+        OSStatus SetNonBlocking() { return OTSetNonBlocking(this); }
+        OSStatus SetBlocking() { return OTSetBlocking(this); }
+        Boolean IsBlocking() { return OTIsBlocking(this); }
+        Boolean IsNonBlocking() { return !OTIsBlocking(this); }
+        OSStatus SetSynchronous() { return OTSetSynchronous(this); }
+        OSStatus SetAsynchronous() { return OTSetAsynchronous(this); }
+        Boolean IsSynchronous() { return OTIsSynchronous(this); }
+        Boolean IsAsynchronous() { return !OTIsSynchronous(this); }
+
+        OSStatus AckSends() { return OTAckSends(this); }
+        OSStatus DontAckSends() { return OTDontAckSends(this); }
+        Boolean IsAckingSends() { return OTIsAckingSends(this); }
+
+        void CancelSynchronousCalls(OSStatus err)
+                    { (void)OTCancelSynchronousCalls(this, err); }
+
+        OSStatus InstallNotifier(OTNotifyUPP proc, void* ptr)
+                    { return OTInstallNotifier(this, proc, ptr); }
+
+        OSStatus UseSyncIdleEvents()
+                    { return OTUseSyncIdleEvents(this, true); }
+
+        OSStatus DontUseSyncIdleEvents()
+                    { return OTUseSyncIdleEvents(this, false); }
+
+        void RemoveNotifier()
+                    { OTRemoveNotifier(this); }
+
+        Boolean EnterNotifier()
+                    { return OTEnterNotifier(this); }
+
+        void LeaveNotifier()
+                    { OTLeaveNotifier(this); }
+        SInt32 Ioctl(UInt32 cmd, void* data)
+                    { return OTIoctl(this, cmd, data); }
+        SInt32 Ioctl(UInt32 cmd, long data)
+                    { return OTIoctl(this, cmd, (void*)data); }
+    public:
+        void* fData;
+};
+class TEndpoint : public TProvider
+{
+    public:
+
+
+
+        OSStatus GetEndpointInfo(TEndpointInfo* info)
+                    { return OTGetEndpointInfo(this, info); }
+
+        OSStatus GetProtAddress(TBind* boundAddr, TBind* peerAddr)
+                    { return OTGetProtAddress(this, boundAddr, peerAddr); }
+
+        OSStatus ResolveAddress(TBind* reqAddr, TBind* retAddr, OTTimeout timeout)
+                    { return OTResolveAddress(this, reqAddr, retAddr, timeout); }
+
+        OTResult GetEndpointState()
+                    { return OTGetEndpointState(this); }
+
+        OTResult Look()
+                    { return OTLook(this); }
+        void* AllocInContext(OTStructType structType, UInt32 fields, OSStatus* err = __null, OTClientContextPtr clientContext = __null)
+                    { return OTAllocInContext(this, structType, fields, err, clientContext); }
+
+        void* Alloc(OTStructType structType, UInt32 fields, OSStatus* err = __null)
+                    {
+
+                         return OTAllocInContext(this, structType, fields, err, __null);
+
+
+
+                    };
+
+        OTResult Free(void* ptr, OTStructType structType)
+                    { return OTFree(ptr, structType); }
+
+
+
+        OSStatus OptionManagement(TOptMgmt* req, TOptMgmt* ret)
+                    { return OTOptionManagement(this, req, ret); }
+
+
+
+        OSStatus Bind(TBind* reqAddr, TBind* retAddr)
+                    { return OTBind(this, reqAddr, retAddr); }
+
+        OSStatus Unbind()
+                    { return OTUnbind(this); }
+
+
+
+        OSStatus Connect(TCall* sndCall, TCall* rcvCall)
+                    { return OTConnect(this, sndCall, rcvCall); }
+
+        OSStatus RcvConnect(TCall* call)
+                    { return OTRcvConnect(this, call); }
+
+        OSStatus Listen(TCall* call)
+                    { return OTListen(this, call); }
+
+        OSStatus Accept(EndpointRef resRef, TCall* call)
+                    { return OTAccept(this, resRef, call); }
+
+        OSStatus SndDisconnect(TCall* call)
+                    { return OTSndDisconnect(this, call); }
+
+        OSStatus SndOrderlyDisconnect()
+                    { return OTSndOrderlyDisconnect(this); }
+
+        OSStatus RcvDisconnect(TDiscon* discon)
+                    { return OTRcvDisconnect(this, discon); }
+
+        OSStatus RcvOrderlyDisconnect()
+                    { return OTRcvOrderlyDisconnect(this); }
+
+
+
+        OTResult Snd(void* buf, OTByteCount nbytes, OTFlags flags)
+                    { return OTSnd(this, buf, nbytes, flags); }
+
+        OTResult Rcv(void* buf, OTByteCount nbytes, OTFlags* flagP)
+                    { return OTRcv(this, buf, nbytes, flagP); }
+
+
+
+        OSStatus SndUData(TUnitData* udata)
+                    { return OTSndUData(this, udata); }
+
+        OSStatus RcvUData(TUnitData* udata, OTFlags* flagP)
+                    { return OTRcvUData(this, udata, flagP); }
+
+        OSStatus RcvUDErr(TUDErr* uderr)
+                    { return OTRcvUDErr(this, uderr); }
+        OTResult CountDataBytes(OTByteCount* countPtr)
+                    { return OTCountDataBytes(this, countPtr); }
+};
+
+
+
+
+
+
+
+class TMapper : public TProvider
+{
+    public:
+        OSStatus RegisterName(TRegisterRequest* req, TRegisterReply* reply)
+                    { return OTRegisterName(this, req, reply); }
+
+        OSStatus DeleteName(TNetbuf* name)
+                    { return OTDeleteName(this, name); }
+
+        OSStatus DeleteName(OTNameID theID)
+                    { return OTDeleteNameByID(this, theID); }
+
+        OSStatus LookupName(TLookupRequest* req, TLookupReply* reply)
+                    { return OTLookupName(this, req, reply); }
+};
+
+
+
+extern "C" {
+
+
+}
+extern "C" {
+
+
+typedef UInt16 InetPort;
+typedef UInt32 InetHost;
+
+
+enum {
+  AF_DNS = 42
+};
+
+
+
+
+
+
+
+enum {
+  kOTAnyInetAddress = 0
+};
+ typedef class TInternetServices* InetSvcRef;
+enum {
+  INET_IP = 0x00,
+  INET_TCP = 0x06,
+  INET_UDP = 0x11
+};
+
+
+
+enum {
+  TCP_NODELAY = 0x01,
+  TCP_MAXSEG = 0x02,
+  TCP_NOTIFY_THRESHOLD = 0x10,
+  TCP_ABORT_THRESHOLD = 0x11,
+  TCP_CONN_NOTIFY_THRESHOLD = 0x12,
+  TCP_CONN_ABORT_THRESHOLD = 0x13,
+  TCP_OOBINLINE = 0x14,
+  TCP_URGENT_PTR_TYPE = 0x15,
+  TCP_KEEPALIVE = 0x0008
+};
+enum {
+  T_GARBAGE = 2
+};
+
+
+
+enum {
+  UDP_CHECKSUM = 0x0600,
+  UDP_RX_ICMP = 0x02
+};
+enum {
+  kIP_OPTIONS = 0x01,
+  kIP_TOS = 0x02,
+  kIP_TTL = 0x03,
+  kIP_REUSEADDR = 0x04,
+  kIP_DONTROUTE = 0x10,
+  kIP_BROADCAST = 0x20,
+  kIP_REUSEPORT = 0x0200,
+  kIP_HDRINCL = 0x1002,
+  kIP_RCVOPTS = 0x1005,
+  kIP_RCVDSTADDR = 0x1007,
+  kIP_MULTICAST_IF = 0x1010,
+  kIP_MULTICAST_TTL = 0x1011,
+  kIP_MULTICAST_LOOP = 0x1012,
+  kIP_ADD_MEMBERSHIP = 0x1013,
+  kIP_DROP_MEMBERSHIP = 0x1014,
+  kIP_BROADCAST_IFNAME = 0x1015,
+  kIP_RCVIFADDR = 0x1016
+};
+
+
+
+
+
+
+
+enum {
+  DVMRP_INIT = 100,
+  DVMRP_DONE = 101,
+  DVMRP_ADD_VIF = 102,
+  DVMRP_DEL_VIF = 103,
+  DVMRP_ADD_LGRP = 104,
+  DVMRP_DEL_LGRP = 105,
+  DVMRP_ADD_MRT = 106,
+  DVMRP_DEL_MRT = 107
+};
+
+
+
+
+enum {
+  T_ROUTINE = 0,
+  T_PRIORITY = 1,
+  T_IMMEDIATE = 2,
+  T_FLASH = 3,
+  T_OVERRIDEFLASH = 4,
+  T_CRITIC_ECP = 5,
+  T_INETCONTROL = 6,
+  T_NETCONTROL = 7
+};
+
+
+
+enum {
+  T_NOTOS = 0x00,
+  T_LDELAY = (1 << 4),
+  T_HITHRPT = (1 << 3),
+  T_HIREL = (1 << 2)
+};
+
+
+
+
+struct TIPAddMulticast {
+  InetHost multicastGroupAddress;
+  InetHost interfaceAddress;
+};
+typedef struct TIPAddMulticast TIPAddMulticast;
+
+enum {
+  T_DNRSTRINGTOADDRCOMPLETE = kPRIVATEEVENT + 1,
+  T_DNRADDRTONAMECOMPLETE = kPRIVATEEVENT + 2,
+  T_DNRSYSINFOCOMPLETE = kPRIVATEEVENT + 3,
+  T_DNRMAILEXCHANGECOMPLETE = kPRIVATEEVENT + 4,
+  T_DNRQUERYCOMPLETE = kPRIVATEEVENT + 5
+};
+
+
+
+struct InetAddress {
+  OTAddressType fAddressType;
+  InetPort fPort;
+  InetHost fHost;
+  UInt8 fUnused[8];
+};
+typedef struct InetAddress InetAddress;
+
+enum {
+  kMaxHostAddrs = 10,
+  kMaxSysStringLen = 32,
+  kMaxHostNameLen = 255
+};
+
+
+typedef char InetDomainName[256];
+struct InetHostInfo {
+  InetDomainName name;
+  InetHost addrs[10];
+};
+typedef struct InetHostInfo InetHostInfo;
+struct InetSysInfo {
+  char cpuType[32];
+  char osType[32];
+};
+typedef struct InetSysInfo InetSysInfo;
+struct InetMailExchange {
+  UInt16 preference;
+  InetDomainName exchange;
+};
+typedef struct InetMailExchange InetMailExchange;
+struct DNSQueryInfo {
+  UInt16 qType;
+  UInt16 qClass;
+  UInt32 ttl;
+  InetDomainName name;
+  UInt16 responseType;
+  UInt16 resourceLen;
+  char resourceData[4];
+};
+typedef struct DNSQueryInfo DNSQueryInfo;
+struct DNSAddress {
+  OTAddressType fAddressType;
+  InetDomainName fName;
+};
+typedef struct DNSAddress DNSAddress;
+
+enum {
+  kDefaultInetInterface = -1
+};
+
+enum {
+  kInetInterfaceInfoVersion = 3
+};
+
+struct InetInterfaceInfo {
+  InetHost fAddress;
+  InetHost fNetmask;
+  InetHost fBroadcastAddr;
+  InetHost fDefaultGatewayAddr;
+  InetHost fDNSAddr;
+  UInt16 fVersion;
+  UInt16 fHWAddrLen;
+  UInt8 * fHWAddr;
+  UInt32 fIfMTU;
+  UInt8 * fReservedPtrs[2];
+  InetDomainName fDomainName;
+  UInt32 fIPSecondaryCount;
+  UInt8 fReserved[252];
+};
+typedef struct InetInterfaceInfo InetInterfaceInfo;
+
+enum {
+  kAllDHCPOptions = -1,
+  kDHCPLongOption = 126,
+  kDHCPLongOptionReq = 127
+};
+
+struct InetDHCPOption {
+  UInt8 fOptionTag;
+  UInt8 fOptionLen;
+  UInt8 fOptionValue;
+};
+typedef struct InetDHCPOption InetDHCPOption;
+extern void
+OTInitInetAddress(
+  InetAddress * addr,
+  InetPort port,
+  InetHost host) ;
+extern OTByteCount
+OTInitDNSAddress(
+  DNSAddress * addr,
+  char * str) ;
+extern OSStatus
+OTInetStringToHost(
+  const char * str,
+  InetHost * host) ;
+extern void
+OTInetHostToString(
+  InetHost host,
+  char * str) ;
+extern OSStatus
+OTInetGetInterfaceInfo(
+  InetInterfaceInfo * info,
+  SInt32 val) ;
+extern OSStatus
+OTInetGetSecondaryAddresses(
+  InetHost * addr,
+  UInt32 * count,
+  SInt32 val) ;
+extern InetSvcRef
+OTOpenInternetServicesInContext(
+  OTConfigurationRef cfig,
+  OTOpenFlags oflag,
+  OSStatus * err,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTAsyncOpenInternetServicesInContext(
+  OTConfigurationRef cfig,
+  OTOpenFlags oflag,
+  OTNotifyUPP upp,
+  void * contextPtr,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTInetStringToAddress(
+  InetSvcRef ref,
+  char * name,
+  InetHostInfo * hinfo) ;
+extern OSStatus
+OTInetAddressToName(
+  InetSvcRef ref,
+  InetHost addr,
+  InetDomainName name) ;
+extern OSStatus
+OTInetSysInfo(
+  InetSvcRef ref,
+  char * name,
+  InetSysInfo * sysinfo) ;
+extern OSStatus
+OTInetMailExchange(
+  InetSvcRef ref,
+  char * name,
+  UInt16 * num,
+  InetMailExchange * mx) ;
+extern OSStatus
+OTInetQuery(
+  InetSvcRef ref,
+  char * name,
+  UInt16 qClass,
+  UInt16 qType,
+  char * buf,
+  OTByteCount buflen,
+  void ** argv,
+  OTByteCount argvlen,
+  OTFlags flags) ;
+
+
+
+}
+
+class TInternetServices : public TProvider
+{
+    public:
+            OSStatus StringToAddress(char* name, InetHostInfo* hinfo)
+                        { return OTInetStringToAddress(this, name, hinfo); }
+
+            OSStatus AddressToName(InetHost addr, InetDomainName name)
+                        { return OTInetAddressToName(this, addr, name); }
+
+            OSStatus SysInfo(char* name, InetSysInfo* sysinfo )
+                        { return OTInetSysInfo(this, name, sysinfo); }
+
+            OSStatus MailExchange(char* name, UInt16* num, InetMailExchange* mx)
+                        { return OTInetMailExchange(this, name, num, mx); }
+
+            OSStatus Query(char* name, UInt16 qClass, UInt16 qType,
+                              char* buf, OTByteCount buflen,
+                              void** argv, OTByteCount argvlen,
+                              OTFlags flags)
+                        { return OTInetQuery(this, name, qClass, qType, buf, buflen, argv, argvlen, flags); }
+};
+
+extern "C" {
+enum {
+  ATK_DDP = 'DDP ',
+  ATK_AARP = 'AARP',
+  ATK_ATP = 'ATP ',
+  ATK_ADSP = 'ADSP',
+  ATK_ASP = 'ASP ',
+  ATK_PAP = 'PAP ',
+  ATK_NBP = 'NBP ',
+  ATK_ZIP = 'ZIP '
+};
+enum {
+  DDP_OPT_HOPCOUNT = 0x2100
+};
+
+enum {
+  DDP_OPT_CHECKSUM = 0x0600,
+  DDP_OPT_SRCADDR = 0x2101,
+  ATP_OPT_REPLYCNT = 0x2110,
+  ATP_OPT_DATALEN = 0x2111,
+  ATP_OPT_RELTIMER = 0x2112,
+  ATP_OPT_TRANID = 0x2113,
+  PAP_OPT_OPENRETRY = 0x2120
+};
+enum {
+  kAppleTalkEvent = kPROTOCOLEVENT | 0x00010000,
+  T_GETMYZONECOMPLETE = kAppleTalkEvent + 1,
+  T_GETLOCALZONESCOMPLETE = kAppleTalkEvent + 2,
+  T_GETZONELISTCOMPLETE = kAppleTalkEvent + 3,
+  T_GETATALKINFOCOMPLETE = kAppleTalkEvent + 4,
+  T_ATALKROUTERDOWNEVENT = kAppleTalkEvent + 51,
+  T_ATALKROUTERUPEVENT = kAppleTalkEvent + 52,
+  T_ATALKZONENAMECHANGEDEVENT = kAppleTalkEvent + 53,
+  T_ATALKCONNECTIVITYCHANGEDEVENT = kAppleTalkEvent + 54,
+  T_ATALKINTERNETAVAILABLEEVENT = kAppleTalkEvent + 55,
+  T_ATALKCABLERANGECHANGEDEVENT = kAppleTalkEvent + 56
+};
+
+enum {
+  T_ATALKBADROUTEREVENT = kAppleTalkEvent + 70,
+  T_ALLNODESTAKENEVENT = kAppleTalkEvent + 71,
+  T_FIXEDNODETAKENEVENT = kAppleTalkEvent + 72,
+  T_MPPCOMPATCFIGEVENT = kAppleTalkEvent + 73,
+  T_FIXEDNODEBADEVENT = kAppleTalkEvent + 74
+};
+
+enum {
+  kAllATalkRoutersDown = 0,
+  kLocalATalkRoutersDown = -1L,
+  kARARouterDisconnected = -2L
+};
+
+enum {
+  kARARouterOnline = -1L,
+  kATalkRouterOnline = 0,
+  kLocalATalkRouterOnline = -2L
+};
+
+
+
+
+enum {
+  ATALK_IOC_FULLSELFSEND = ((MIOC_ATALK << 8) | 47),
+  ADSP_IOC_FORWARDRESET = ((MIOC_ATALK << 8) | 60)
+};
+
+
+
+
+
+enum {
+  kECHO_TSDU = 585
+};
+
+
+
+enum {
+  kNBPMaxNameLength = 32,
+  kNBPMaxTypeLength = 32,
+  kNBPMaxZoneLength = 32,
+  kNBPSlushLength = 9,
+  kNBPMaxEntityLength = (kNBPMaxNameLength + kNBPMaxTypeLength + kNBPMaxZoneLength + 3),
+  kNBPEntityBufferSize = (kNBPMaxNameLength + kNBPMaxTypeLength + kNBPMaxZoneLength + kNBPSlushLength),
+  kNBPWildCard = 0x3D,
+  kNBPImbeddedWildCard = 0xC5,
+  kNBPDefaultZone = 0x2A
+};
+
+
+
+enum {
+  kZIPMaxZoneLength = kNBPMaxZoneLength
+};
+
+enum {
+  kDDPAddressLength = 8,
+  kNBPAddressLength = kNBPEntityBufferSize,
+  kAppleTalkAddressLength = kDDPAddressLength + kNBPEntityBufferSize
+};
+    typedef class TAppleTalkServices* ATSvcRef;
+extern OSStatus
+OTAsyncOpenAppleTalkServicesInContext(
+  OTConfigurationRef cfig,
+  OTOpenFlags flags,
+  OTNotifyUPP proc,
+  void * contextPtr,
+  OTClientContextPtr clientContext) ;
+extern ATSvcRef
+OTOpenAppleTalkServicesInContext(
+  OTConfigurationRef cfig,
+  OTOpenFlags flags,
+  OSStatus * err,
+  OTClientContextPtr clientContext) ;
+extern OSStatus
+OTATalkGetMyZone(
+  ATSvcRef ref,
+  TNetbuf * zone) ;
+extern OSStatus
+OTATalkGetLocalZones(
+  ATSvcRef ref,
+  TNetbuf * zones) ;
+extern OSStatus
+OTATalkGetZoneList(
+  ATSvcRef ref,
+  TNetbuf * zones) ;
+extern OSStatus
+OTATalkGetInfo(
+  ATSvcRef ref,
+  TNetbuf * info) ;
+
+
+
+}
+
+class TAppleTalkServices : public TProvider
+{
+    public:
+            OSStatus GetMyZone(TNetbuf* zone) { return OTATalkGetMyZone(this, zone); }
+            OSStatus GetLocalZones(TNetbuf* zones) { return OTATalkGetLocalZones(this, zones); }
+            OSStatus GetZoneList(TNetbuf* zones) { return OTATalkGetZoneList(this, zones); }
+            OSStatus GetInfo(TNetbuf* info) { return OTATalkGetInfo(this, info); }
+};
+
+extern "C" {
+enum {
+  AF_ATALK_FAMILY = 0x0100,
+  AF_ATALK_DDP = 0x0100,
+  AF_ATALK_DDPNBP = AF_ATALK_FAMILY + 1,
+  AF_ATALK_NBP = AF_ATALK_FAMILY + 2,
+  AF_ATALK_MNODE = AF_ATALK_FAMILY + 3
+};
+
+struct NBPEntity {
+  UInt8 fEntity[99];
+};
+typedef struct NBPEntity NBPEntity;
+struct DDPAddress {
+  OTAddressType fAddressType;
+  UInt16 fNetwork;
+  UInt8 fNodeID;
+  UInt8 fSocket;
+  UInt8 fDDPType;
+  UInt8 fPad;
+
+
+
+
+  void Init(const DDPAddress&);
+   void Init(UInt16 net, UInt8 node, UInt8 socket);
+    void Init(UInt16 net, UInt8 node, UInt8 socket, UInt8 type);
+
+   void SetSocket(UInt8);
+  void SetType(UInt8);
+    void SetNode(UInt8);
+    void SetNetwork(UInt16);
+
+   OTByteCount GetAddressLength() const;
+  OTAddressType GetAddressType() const;
+    UInt8 GetSocket() const;
+ UInt8 GetType() const;
+   UInt8 GetNode() const;
+   UInt16 GetNetwork() const;
+
+   Boolean operator==(const DDPAddress&) const;
+   Boolean operator!=(const DDPAddress&) const;
+   void operator=(const DDPAddress&);
+
+
+
+};
+typedef struct DDPAddress DDPAddress;
+struct NBPAddress {
+  OTAddressType fAddressType;
+  UInt8 fNBPNameBuffer[105];
+
+
+
+
+  OTByteCount Init();
+    OTByteCount Init(const NBPEntity&);
+    OTByteCount Init(const char*);
+ OTByteCount Init(const char*, OTByteCount len);
+    Boolean ExtractEntity(NBPEntity&, OTByteCount len);
+
+   OTAddressType GetAddressType() const;
+
+
+
+};
+typedef struct NBPAddress NBPAddress;
+struct DDPNBPAddress {
+  OTAddressType fAddressType;
+  UInt16 fNetwork;
+  UInt8 fNodeID;
+  UInt8 fSocket;
+  UInt8 fDDPType;
+  UInt8 fPad;
+  UInt8 fNBPNameBuffer[105];
+
+
+
+
+  void Init(const DDPAddress&);
+   void Init(UInt16 net, UInt8 node, UInt8 socket);
+    void Init(UInt16 net, UInt8 node, UInt8 socket, UInt8 type);
+
+   void SetSocket(UInt8);
+  void SetType(UInt8);
+    void SetNode(UInt8);
+    void SetNetwork(UInt16);
+
+   OTAddressType GetAddressType() const;
+    UInt8 GetSocket() const;
+ UInt8 GetType() const;
+   UInt8 GetNode() const;
+   UInt16 GetNetwork() const;
+
+   Boolean ExtractEntity(NBPEntity&, OTByteCount len);
+    OTByteCount SetNBPEntity(const NBPEntity&);
+    OTByteCount SetNBPEntity(const char*);
+ OTByteCount SetNBPEntity(const char*, OTByteCount len);
+
+   Boolean operator==(const DDPAddress&) const;
+
+
+
+};
+typedef struct DDPNBPAddress DDPNBPAddress;
+extern void
+OTInitDDPAddress(
+  DDPAddress * addr,
+  UInt16 net,
+  UInt8 node,
+  UInt8 socket,
+  UInt8 ddpType) ;
+extern OTByteCount
+OTInitNBPAddress(
+  NBPAddress * addr,
+  const char * name) ;
+extern OTByteCount
+OTInitDDPNBPAddress(
+  DDPNBPAddress * addr,
+  const char * name,
+  UInt16 net,
+  UInt8 node,
+  UInt8 socket,
+  UInt8 ddpType) ;
+extern Boolean
+OTCompareDDPAddresses(
+  const DDPAddress * addr1,
+  const DDPAddress * addr2) ;
+extern void
+OTInitNBPEntity(NBPEntity * entity) ;
+extern OTByteCount
+OTGetNBPEntityLengthAsAddress(const NBPEntity * entity) ;
+extern OTByteCount
+OTSetAddressFromNBPEntity(
+  UInt8 * nameBuf,
+  const NBPEntity * entity) ;
+extern OTByteCount
+OTSetAddressFromNBPString(
+  UInt8 * addrBuf,
+  const char * name,
+  SInt32 len) ;
+extern Boolean
+OTSetNBPEntityFromAddress(
+  NBPEntity * entity,
+  const UInt8 * addrBuf,
+  OTByteCount len) ;
+extern Boolean
+OTSetNBPName(
+  NBPEntity * entity,
+  const char * name) ;
+extern Boolean
+OTSetNBPType(
+  NBPEntity * entity,
+  const char * typeVal) ;
+extern Boolean
+OTSetNBPZone(
+  NBPEntity * entity,
+  const char * zone) ;
+extern void
+OTExtractNBPName(
+  const NBPEntity * entity,
+  char * name) ;
+extern void
+OTExtractNBPType(
+  const NBPEntity * entity,
+  char * typeVal) ;
+extern void
+OTExtractNBPZone(
+  const NBPEntity * entity,
+  char * zone) ;
+
+
+
+
+
+
+inline void DDPAddress::operator=(const DDPAddress& addr)
+{
+    *(UInt32*)&fAddressType = *(UInt32*)&addr.fAddressType;
+    *(UInt32*)&fNodeID = *(UInt32*)&addr.fNodeID;
+}
+
+inline Boolean DDPAddress::operator==(const DDPAddress& addr) const
+{
+    return OTCompareDDPAddresses(&addr, this);
+}
+
+inline Boolean DDPAddress::operator!=(const DDPAddress& addr) const
+{
+    return !OTCompareDDPAddresses(&addr, this);
+}
+
+inline void DDPAddress::SetSocket(UInt8 socket)
+{
+    fSocket = socket;
+}
+
+inline void DDPAddress::SetNode(UInt8 node)
+{
+    fNodeID = node;
+}
+
+inline void DDPAddress::SetType(UInt8 type)
+{
+    fDDPType = type;
+}
+
+inline void DDPAddress::SetNetwork(UInt16 net)
+{
+    fNetwork = net;
+}
+
+inline OTByteCount DDPAddress::GetAddressLength() const
+{
+    return kDDPAddressLength;
+}
+
+inline OTAddressType DDPAddress::GetAddressType() const
+{
+    return fAddressType;
+}
+
+inline UInt8 DDPAddress::GetSocket() const
+{
+    return fSocket;
+}
+
+inline UInt8 DDPAddress::GetNode() const
+{
+    return fNodeID;
+}
+
+inline UInt8 DDPAddress::GetType() const
+{
+    return fDDPType;
+}
+
+inline UInt16 DDPAddress::GetNetwork() const
+{
+    return fNetwork;
+}
+
+inline void DDPAddress::Init(UInt16 net, UInt8 node,
+                              UInt8 socket)
+{
+    fAddressType = AF_ATALK_DDP;
+    SetNetwork(net);
+    SetNode(node);
+    SetSocket(socket);
+    SetType(0);
+}
+
+inline void DDPAddress::Init(UInt16 net, UInt8 node,
+                              UInt8 socket, UInt8 type)
+{
+    fAddressType = AF_ATALK_DDP;
+    SetNetwork(net);
+    SetNode(node);
+    SetSocket(socket);
+    SetType(type);
+}
+
+inline void DDPAddress::Init(const DDPAddress& addr)
+{
+    *(UInt32*)&fAddressType = *(UInt32*)&addr.fAddressType;
+    *(UInt32*)&fNodeID = *(UInt32*)&addr.fNodeID;
+}
+
+
+
+inline OTByteCount NBPAddress::Init()
+{
+    fAddressType = AF_ATALK_NBP;
+    return sizeof(OTAddressType);
+}
+
+inline OTByteCount NBPAddress::Init(const NBPEntity& addr)
+{
+    fAddressType = AF_ATALK_NBP;
+    return sizeof(OTAddressType) + OTSetAddressFromNBPEntity(fNBPNameBuffer, &addr);
+}
+
+inline OTByteCount NBPAddress::Init(const char* name)
+{
+    fAddressType = AF_ATALK_NBP;
+    return sizeof(OTAddressType) + OTSetAddressFromNBPString(fNBPNameBuffer, name, -1);
+}
+
+inline OTByteCount NBPAddress::Init(const char* name, OTByteCount len)
+{
+    fAddressType = AF_ATALK_NBP;
+    return sizeof(OTAddressType) + OTSetAddressFromNBPString(fNBPNameBuffer, name, (SInt32)len);
+}
+
+inline Boolean NBPAddress::ExtractEntity(NBPEntity& entity, OTByteCount len)
+{
+    return OTSetNBPEntityFromAddress(&entity, fNBPNameBuffer, len);
+}
+
+inline OTAddressType NBPAddress::GetAddressType() const
+{
+    return fAddressType;
+}
+
+
+
+inline Boolean DDPNBPAddress::operator==(const DDPAddress& addr) const
+{
+    return OTCompareDDPAddresses((const DDPAddress*)this, &addr);
+}
+
+inline void DDPNBPAddress::SetSocket(UInt8 socket)
+{
+    fSocket = socket;
+}
+
+inline void DDPNBPAddress::SetNode(UInt8 node)
+{
+    fNodeID = node;
+}
+
+inline void DDPNBPAddress::SetType(UInt8 type)
+{
+    fDDPType = type;
+}
+
+inline void DDPNBPAddress::SetNetwork(UInt16 net)
+{
+    fNetwork = net;
+}
+
+inline OTAddressType DDPNBPAddress::GetAddressType() const
+{
+    return fAddressType;
+}
+
+inline UInt8 DDPNBPAddress::GetSocket() const
+{
+    return fSocket;
+}
+
+inline UInt8 DDPNBPAddress::GetNode() const
+{
+    return fNodeID;
+}
+
+inline UInt8 DDPNBPAddress::GetType() const
+{
+    return fDDPType;
+}
+
+inline UInt16 DDPNBPAddress::GetNetwork() const
+{
+    return fNetwork;
+}
+
+inline void DDPNBPAddress::Init(UInt16 net, UInt8 node,
+                                UInt8 socket)
+{
+    fAddressType = AF_ATALK_DDPNBP;
+    SetNetwork(net);
+    SetNode(node);
+    SetSocket(socket);
+    SetType(0);
+}
+
+inline void DDPNBPAddress::Init(UInt16 net, UInt8 node,
+                                UInt8 socket, UInt8 type)
+{
+    fAddressType = AF_ATALK_DDPNBP;
+    SetNetwork(net);
+    SetNode(node);
+    SetSocket(socket);
+    SetType(type);
+}
+
+inline void DDPNBPAddress::Init(const DDPAddress& addr)
+{
+    fAddressType = AF_ATALK_DDPNBP;
+    SetNetwork(addr.GetNetwork());
+    SetNode(addr.GetNode());
+    SetSocket(addr.GetSocket());
+    SetType(addr.GetType());
+    fNBPNameBuffer[0] = 0;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const NBPEntity& entity)
+{
+    return OTSetAddressFromNBPEntity(fNBPNameBuffer, &entity) + kDDPAddressLength;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const char* name)
+{
+    return OTSetAddressFromNBPString(fNBPNameBuffer, name, -1) + kDDPAddressLength;
+}
+
+inline OTByteCount DDPNBPAddress::SetNBPEntity(const char* name, OTByteCount len)
+{
+    return OTSetAddressFromNBPString(fNBPNameBuffer, name, (SInt32)len) + kDDPAddressLength;
+}
+
+inline Boolean DDPNBPAddress::ExtractEntity(NBPEntity& entity, OTByteCount len)
+{
+    return OTSetNBPEntityFromAddress(&entity, fNBPNameBuffer, len);
+}
+
+
+
+
+struct AppleTalkInfo {
+  DDPAddress fOurAddress;
+  DDPAddress fRouterAddress;
+  UInt16 fCableRange[2];
+  UInt16 fFlags;
+};
+typedef struct AppleTalkInfo AppleTalkInfo;
+
+enum {
+  kATalkInfoIsExtended = 0x0001,
+  kATalkInfoHasRouter = 0x0002,
+  kATalkInfoOneZone = 0x0004
+};
+
+
+
+
+
+
+
+enum {
+  kOTFramingEthernet = 0x01,
+  kOTFramingEthernetIPX = 0x02,
+  kOTFraming8023 = 0x04,
+  kOTFraming8022 = 0x08
+};
+enum {
+  kOTRawRcvOn = 0,
+  kOTRawRcvOff = 1,
+  kOTRawRcvOnWithTimeStamp = 2
+};
+
+enum {
+  DL_PROMISC_OFF = 0
+};
+
+
+
+
+
+enum {
+  kT8022ModuleID = 7100,
+  kEnetModuleID = 7101,
+  kTokenRingModuleID = 7102,
+  kFDDIModuleID = 7103
+};
+enum {
+  AF_8022 = 8200
+};
+
+
+
+enum {
+  LNK_ENET = 'ENET',
+  LNK_TOKN = 'TOKN',
+  LNK_FDDI = 'FDDI',
+  LNK_TPI = 'LTPI'
+};
+
+
+
+enum {
+  OPT_ADDMCAST = 0x1000,
+  OPT_DELMCAST = 0x1001,
+  OPT_RCVPACKETTYPE = 0x1002,
+  OPT_RCVDESTADDR = 0x1003,
+  OPT_SETRAWMODE = 0x1004,
+  OPT_SETPROMISCUOUS = 0x1005
+};
+
+typedef UInt32 OTPacketType;
+enum {
+  kETypeStandard = 0,
+  kETypeMulticast = 1,
+  kETypeBroadcast = 2,
+  kETRawPacketBit = (unsigned long)0x80000000,
+  kETTimeStampBit = 0x40000000
+};
+
+
+
+enum {
+  kMulticastLength = 6,
+  k48BitAddrLength = 6,
+  k8022DLSAPLength = 2,
+  k8022SNAPLength = 5,
+  kEnetAddressLength = k48BitAddrLength + k8022DLSAPLength,
+
+  kSNAPSAP = 0x00AA,
+  kIPXSAP = 0x00FF,
+  kMax8022SAP = 0x00FE,
+  k8022GlobalSAP = 0x00FF,
+  kMinDIXSAP = 1501,
+  kMaxDIXSAP = 0xFFFF
+};
+
+
+
+struct T8022Address {
+  OTAddressType fAddrFamily;
+  UInt8 fHWAddr[6];
+  UInt16 fSAP;
+  UInt8 fSNAP[5];
+};
+typedef struct T8022Address T8022Address;
+enum {
+  k8022BasicAddressLength = sizeof(OTAddressType) + k48BitAddrLength + sizeof(UInt16),
+  k8022SNAPAddressLength = sizeof(OTAddressType) + k48BitAddrLength + sizeof(UInt16) + k8022SNAPLength
+};
+enum {
+  kEnetPacketHeaderLength = (2 * k48BitAddrLength) + k8022DLSAPLength,
+  kEnetTSDU = 1514,
+  kTokenRingTSDU = 4458,
+  kFDDITSDU = 4458,
+  k8022SAPLength = 1,
+  k8022BasicHeaderLength = 3,
+
+  k8022SNAPHeaderLength = k8022SNAPLength + k8022BasicHeaderLength
+};
+
+
+
+
+typedef UInt32 EAddrType;
+enum {
+  keaStandardAddress = 0,
+  keaMulticast = 1,
+  keaBroadcast = 2,
+  keaBadAddress = 3,
+  keaRawPacketBit = (unsigned long)0x80000000,
+  keaTimeStampBit = 0x40000000
+};
+
+
+
+struct EnetPacketHeader {
+  UInt8 fDestAddr[6];
+  UInt8 fSourceAddr[6];
+  UInt16 fProto;
+};
+typedef struct EnetPacketHeader EnetPacketHeader;
+struct T8022Header {
+  UInt8 fDSAP;
+  UInt8 fSSAP;
+  UInt8 fCtrl;
+};
+typedef struct T8022Header T8022Header;
+struct T8022SNAPHeader {
+  UInt8 fDSAP;
+  UInt8 fSSAP;
+  UInt8 fCtrl;
+  UInt8 fSNAP[5];
+};
+typedef struct T8022SNAPHeader T8022SNAPHeader;
+struct T8022FullPacketHeader {
+  EnetPacketHeader fEnetPart;
+  T8022SNAPHeader f8022Part;
+};
+typedef struct T8022FullPacketHeader T8022FullPacketHeader;
+
+enum {
+  kT8022HeaderLength = 3,
+  kT8022SNAPHeaderLength = 3 + k8022SNAPLength,
+  kT8022FullPacketHeaderLength = kEnetPacketHeaderLength + kT8022SNAPHeaderLength
+};
+
+
+
+
+
+
+
+enum {
+  COM_SERIAL = 'SERL'
+};
+enum {
+  kSerialABModuleID = 7200
+};
+
+enum {
+  kOTSerialFramingAsync = 0x01,
+  kOTSerialFramingHDLC = 0x02,
+  kOTSerialFramingSDLC = 0x04,
+  kOTSerialFramingAsyncPackets = 0x08,
+  kOTSerialFramingPPP = 0x10
+};
+
+
+
+enum {
+  I_SetSerialDTR = ((MIOC_SRL << 8) | 0),
+  kOTSerialSetDTROff = 0,
+  kOTSerialSetDTROn = 1,
+  I_SetSerialBreak = ((MIOC_SRL << 8) | 1),
+
+
+  kOTSerialSetBreakOn = (unsigned long)0xFFFFFFFF,
+  kOTSerialSetBreakOff = 0,
+  I_SetSerialXOffState = ((MIOC_SRL << 8) | 2),
+  kOTSerialForceXOffTrue = 1,
+  kOTSerialForceXOffFalse = 0,
+  I_SetSerialXOn = ((MIOC_SRL << 8) | 3),
+  kOTSerialSendXOnAlways = 1,
+  kOTSerialSendXOnIfXOffTrue = 0,
+  I_SetSerialXOff = ((MIOC_SRL << 8) | 4),
+  kOTSerialSendXOffAlways = 1,
+  kOTSerialSendXOffIfXOnTrue = 0
+};
+enum {
+  SERIAL_OPT_BAUDRATE = 0x0100,
+  SERIAL_OPT_DATABITS = 0x0101,
+  SERIAL_OPT_STOPBITS = 0x0102,
+  SERIAL_OPT_PARITY = 0x0103,
+  SERIAL_OPT_STATUS = 0x0104,
+
+
+  SERIAL_OPT_HANDSHAKE = 0x0105,
+
+
+
+
+
+  SERIAL_OPT_RCVTIMEOUT = 0x0106,
+
+
+
+
+
+
+  SERIAL_OPT_ERRORCHARACTER = 0x0107,
+  SERIAL_OPT_EXTCLOCK = 0x0108,
+
+
+
+  SERIAL_OPT_BURSTMODE = 0x0109,
+
+
+  SERIAL_OPT_DUMMY = 0x010A
+};
+
+typedef UInt32 ParityOptionValues;
+enum {
+  kOTSerialNoParity = 0,
+  kOTSerialOddParity = 1,
+  kOTSerialEvenParity = 2
+};
+
+enum {
+  kOTSerialSwOverRunErr = 0x01,
+  kOTSerialBreakOn = 0x08,
+  kOTSerialParityErr = 0x10,
+  kOTSerialOverrunErr = 0x20,
+  kOTSerialFramingErr = 0x40,
+  kOTSerialXOffSent = 0x00010000,
+  kOTSerialDTRNegated = 0x00020000,
+  kOTSerialCTLHold = 0x00040000,
+  kOTSerialXOffHold = 0x00080000,
+  kOTSerialOutputBreakOn = 0x01000000
+};
+
+enum {
+  kOTSerialXOnOffInputHandshake = 1,
+  kOTSerialXOnOffOutputHandshake = 2,
+  kOTSerialCTSInputHandshake = 4,
+  kOTSerialDTROutputHandshake = 8
+};
+
+
+
+
+   inline UInt32 OTSerialHandshakeData(UInt16 type, UInt8 onChar, UInt8 offChar)
+  {
+      return (((UInt32)type) << 16) | (((UInt32)onChar) << 8) | offChar;
+ }
+inline UInt32 OTSerialSetErrorCharacter(UInt8 rep)
+{
+  return (UInt32)rep & 0x000000ff;
+}
+
+inline UInt32 OTSerialSetErrorCharacterWithAlternate(UInt8 rep, UInt8 alternate)
+{
+ return (((rep & 0xff) | ((alternate & 0xff) << 8)) | 0x80000000L);
+}
+enum {
+  kOTSerialDefaultBaudRate = 19200,
+  kOTSerialDefaultDataBits = 8,
+  kOTSerialDefaultStopBits = 10,
+  kOTSerialDefaultParity = kOTSerialNoParity,
+  kOTSerialDefaultHandshake = 0,
+  kOTSerialDefaultOnChar = ('Q' & 0xFFFFFFBF),
+  kOTSerialDefaultOffChar = ('S' & 0xFFFFFFBF),
+  kOTSerialDefaultSndBufSize = 1024,
+  kOTSerialDefaultRcvBufSize = 1024,
+  kOTSerialDefaultSndLoWat = 96,
+  kOTSerialDefaultRcvLoWat = 1,
+  kOTSerialDefaultRcvTimeout = 10
+};
+
+
+
+
+
+
+
+enum {
+  COM_ISDN = 'ISDN'
+};
+
+
+
+
+enum {
+  kISDNModuleID = 7300
+};
+
+
+
+
+enum {
+  kOTISDNFramingTransparentSupported = 0x0010,
+  kOTISDNFramingHDLCSupported = 0x0020,
+  kOTISDNFramingV110Supported = 0x0040,
+  kOTISDNFramingV14ESupported = 0x0080
+};
+
+
+
+
+
+enum {
+  kOTISDNUnallocatedNumber = 1,
+  kOTISDNNoRouteToSpecifiedTransitNetwork = 2,
+  kOTISDNNoRouteToDestination = 3,
+  kOTISDNChannelUnacceptable = 6,
+  kOTISDNNormal = 16,
+  kOTISDNUserBusy = 17,
+  kOTISDNNoUserResponding = 18,
+  kOTISDNNoAnswerFromUser = 19,
+  kOTISDNCallRejected = 21,
+  kOTISDNNumberChanged = 22,
+  kOTISDNNonSelectedUserClearing = 26,
+  kOTISDNDestinationOutOfOrder = 27,
+  kOTISDNInvalidNumberFormat = 28,
+  kOTISDNFacilityRejected = 29,
+  kOTISDNNormalUnspecified = 31,
+  kOTISDNNoCircuitChannelAvailable = 34,
+  kOTISDNNetworkOutOfOrder = 41,
+  kOTISDNSwitchingEquipmentCongestion = 42,
+  kOTISDNAccessInformationDiscarded = 43,
+  kOTISDNRequestedCircuitChannelNotAvailable = 44,
+  kOTISDNResourceUnavailableUnspecified = 45,
+  kOTISDNQualityOfServiceUnvailable = 49,
+  kOTISDNRequestedFacilityNotSubscribed = 50,
+  kOTISDNBearerCapabilityNotAuthorized = 57,
+  kOTISDNBearerCapabilityNotPresentlyAvailable = 58,
+  kOTISDNCallRestricted = 59,
+  kOTISDNServiceOrOptionNotAvilableUnspecified = 63,
+  kOTISDNBearerCapabilityNotImplemented = 65,
+  kOTISDNRequestedFacilityNotImplemented = 69,
+  kOTISDNOnlyRestrictedDigitalBearer = 70,
+  kOTISDNServiceOrOptionNotImplementedUnspecified = 79,
+  kOTISDNCallIdentityNotUsed = 83,
+  kOTISDNCallIdentityInUse = 84,
+  kOTISDNNoCallSuspended = 85,
+  kOTISDNCallIdentityCleared = 86,
+  kOTISDNIncompatibleDestination = 88,
+  kOTISDNInvalidTransitNetworkSelection = 91,
+  kOTISDNInvalidMessageUnspecified = 95,
+  kOTISDNMandatoryInformationElementIsMissing = 96,
+  kOTISDNMessageTypeNonExistentOrNotImplemented = 97,
+  kOTISDNInterworkingUnspecified = 127
+};
+enum {
+  kAF_ISDN = 0x2000
+};
+
+
+enum {
+  kOTISDNMaxPhoneSize = 32,
+  kOTISDNMaxSubSize = 4
+};
+
+struct OTISDNAddress {
+  OTAddressType fAddressType;
+  UInt16 fPhoneLength;
+  char fPhoneNumber[37];
+};
+typedef struct OTISDNAddress OTISDNAddress;
+
+
+
+enum {
+  MIOC_ISDN = 'U'
+};
+
+enum {
+  I_OTISDNAlerting = ((MIOC_ISDN << 8) | 100),
+  I_OTISDNSuspend = ((MIOC_ISDN << 8) | 101),
+
+  I_OTISDNSuspendAcknowledge = ((MIOC_ISDN << 8) | 102),
+  I_OTISDNSuspendReject = ((MIOC_ISDN << 8) | 103),
+  I_OTISDNResume = ((MIOC_ISDN << 8) | 104),
+
+  I_OTISDNResumeAcknowledge = ((MIOC_ISDN << 8) | 105),
+  I_OTISDNResumeReject = ((MIOC_ISDN << 8) | 106),
+  I_OTISDNFaciltity = ((MIOC_ISDN << 8) | 107)
+};
+
+
+
+enum {
+  kOTISDNMaxUserDataSize = 32
+};
+
+
+
+enum {
+  ISDN_OPT_COMMTYPE = 0x0200,
+  ISDN_OPT_FRAMINGTYPE = 0x0201,
+  ISDN_OPT_56KADAPTATION = 0x0202
+};
+
+
+
+enum {
+  kOTISDNTelephoneALaw = 1,
+  kOTISDNTelephoneMuLaw = 26,
+  kOTISDNDigital64k = 13,
+  kOTISDNDigital56k = 37,
+  kOTISDNVideo64k = 41,
+  kOTISDNVideo56k = 42
+};
+
+
+
+enum {
+  kOTISDNFramingTransparent = 0x0010,
+  kOTISDNFramingHDLC = 0x0020,
+  kOTISDNFramingV110 = 0x0040,
+  kOTISDNFramingV14E = 0x0080
+};
+
+
+
+enum {
+  kOTISDNNot56KAdaptation = false,
+  kOTISDN56KAdaptation = true
+};
+
+
+
+enum {
+  kOTISDNDefaultCommType = kOTISDNDigital64k,
+  kOTISDNDefaultFramingType = kOTISDNFramingHDLC,
+  kOTISDNDefault56KAdaptation = kOTISDNNot56KAdaptation
+};
+enum {
+  COM_PPP = 'PPPC'
+};
+
+
+
+enum {
+  kPPPMaxIDLength = 255,
+  kPPPMaxPasswordLength = 255,
+  kPPPMaxDTEAddressLength = 127,
+  kPPPMaxCallInfoLength = 255
+};
+
+
+
+
+enum {
+  kPPPStateInitial = 1,
+  kPPPStateClosed = 2,
+  kPPPStateClosing = 3,
+  kPPPStateOpening = 4,
+  kPPPStateOpened = 5
+};
+
+enum {
+  kPPPConnectionStatusIdle = 1,
+  kPPPConnectionStatusConnecting = 2,
+  kPPPConnectionStatusConnected = 3,
+  kPPPConnectionStatusDisconnecting = 4
+};
+
+enum {
+  kPPPMinMRU = 0,
+  kPPPMaxMRU = 4500
+};
+
+enum {
+  kIPCPTCPHdrCompressionDisabled = 0,
+  kIPCPTCPHdrCompressionEnabled = 1
+};
+
+enum {
+  kPPPCompressionDisabled = 0x00000000,
+  kPPPProtoCompression = 0x00000001,
+  kPPPAddrCompression = 0x00000002
+};
+
+enum {
+  kPPPNoOutAuthentication = 0,
+  kPPPCHAPOrPAPOutAuthentication = 1
+};
+
+enum {
+  kCCReminderTimerDisabled = 0,
+  kCCIPIdleTimerDisabled = 0
+};
+
+enum {
+  kPPPScriptTypeModem = 1,
+  kPPPScriptTypeConnect = 2,
+  kPPPMaxScriptSize = 32000
+};
+
+enum {
+  kE164Address = 1,
+  kPhoneAddress = 1,
+  kCompoundPhoneAddress = 2,
+  kX121Address = 3
+};
+
+enum {
+  kPPPConnectionStatusDialogsFlag = 0x00000001,
+  kPPPConnectionRemindersFlag = 0x00000002,
+  kPPPConnectionFlashingIconFlag = 0x00000004,
+  kPPPOutPasswordDialogsFlag = 0x00000008,
+  kPPPAllAlertsDisabledFlag = 0x00000000,
+  kPPPAllAlertsEnabledFlag = 0x0000000F
+};
+
+enum {
+  kPPPAsyncMapCharsNone = 0x00000000,
+  kPPPAsyncMapCharsXOnXOff = 0x000A0000,
+  kPPPAsyncMapCharsAll = (unsigned long)0xFFFFFFFF
+};
+
+
+
+
+enum {
+  IPCP_OPT_GETREMOTEPROTOADDR = 0x00007000,
+  IPCP_OPT_GETLOCALPROTOADDR = 0x00007001,
+  IPCP_OPT_TCPHDRCOMPRESSION = 0x00007002,
+  LCP_OPT_PPPCOMPRESSION = 0x00007003,
+  LCP_OPT_MRU = 0x00007004,
+  LCP_OPT_RCACCMAP = 0x00007005,
+  LCP_OPT_TXACCMAP = 0x00007006,
+  SEC_OPT_OUTAUTHENTICATION = 0x00007007,
+  SEC_OPT_ID = 0x00007008,
+  SEC_OPT_PASSWORD = 0x00007009,
+  CC_OPT_REMINDERTIMER = 0x00007010,
+  CC_OPT_IPIDLETIMER = 0x00007011,
+  CC_OPT_DTEADDRESSTYPE = 0x00007012,
+  CC_OPT_DTEADDRESS = 0x00007013,
+  CC_OPT_CALLINFO = 0x00007014,
+  CC_OPT_GETMISCINFO = 0x00007015,
+  PPP_OPT_GETCURRENTSTATE = 0x00007016,
+  LCP_OPT_ECHO = 0x00007017,
+  CC_OPT_SERIALPORTNAME = 0x00007200
+};
+
+
+
+enum {
+  kPPPEvent = kPROTOCOLEVENT | 0x000F0000,
+  kPPPConnectCompleteEvent = kPPPEvent + 1,
+  kPPPSetScriptCompleteEvent = kPPPEvent + 2,
+  kPPPDisconnectCompleteEvent = kPPPEvent + 3,
+  kPPPDisconnectEvent = kPPPEvent + 4,
+  kPPPIPCPUpEvent = kPPPEvent + 5,
+  kPPPIPCPDownEvent = kPPPEvent + 6,
+  kPPPLCPUpEvent = kPPPEvent + 7,
+  kPPPLCPDownEvent = kPPPEvent + 8,
+  kPPPLowerLayerUpEvent = kPPPEvent + 9,
+  kPPPLowerLayerDownEvent = kPPPEvent + 10,
+  kPPPAuthenticationStartedEvent = kPPPEvent + 11,
+  kPPPAuthenticationFinishedEvent = kPPPEvent + 12,
+  kPPPDCEInitStartedEvent = kPPPEvent + 13,
+  kPPPDCEInitFinishedEvent = kPPPEvent + 14,
+  kPPPDCECallStartedEvent = kPPPEvent + 15,
+  kPPPDCECallFinishedEvent = kPPPEvent + 16
+};
+struct PPPMRULimits {
+  UInt32 mruSize;
+  UInt32 upperMRULimit;
+  UInt32 lowerMRULimit;
+};
+typedef struct PPPMRULimits PPPMRULimits;
+
+
+
+
+struct CCMiscInfo {
+  UInt32 connectionStatus;
+  UInt32 connectionTimeElapsed;
+  UInt32 connectionTimeRemaining;
+  UInt32 bytesTransmitted;
+  UInt32 bytesReceived;
+  UInt32 reserved;
+};
+typedef struct CCMiscInfo CCMiscInfo;
+
+
+
+
+
+
+struct LCPEcho {
+  UInt32 retryCount;
+  UInt32 retryPeriod;
+};
+typedef struct LCPEcho LCPEcho;
+
+
+
+
+enum {
+  kRAProductClientOnly = 2,
+  kRAProductOnePortServer = 3,
+  kRAProductManyPortServer = 4
+};
+
+
+
+
+
+
+
+
+
+}
+extern "C" {
+
+
+enum {
+  I_NREAD = ((MIOC_STREAMIO << 8) | 1),
+  I_PUSH = ((MIOC_STREAMIO << 8) | 2),
+  I_POP = ((MIOC_STREAMIO << 8) | 3),
+  I_LOOK = ((MIOC_STREAMIO << 8) | 4),
+  I_FLUSH = ((MIOC_STREAMIO << 8) | 5),
+  I_SRDOPT = ((MIOC_STREAMIO << 8) | 6),
+  I_GRDOPT = ((MIOC_STREAMIO << 8) | 7),
+  I_STR = ((MIOC_STREAMIO << 8) | 8),
+  I_SETSIG = ((MIOC_STREAMIO << 8) | 9),
+  I_GETSIG = ((MIOC_STREAMIO << 8) | 10),
+  I_FIND = ((MIOC_STREAMIO << 8) | 11),
+  I_LINK = ((MIOC_STREAMIO << 8) | 12),
+  I_UNLINK = ((MIOC_STREAMIO << 8) | 13),
+  I_PEEK = ((MIOC_STREAMIO << 8) | 15),
+  I_FDINSERT = ((MIOC_STREAMIO << 8) | 16),
+  I_SENDFD = ((MIOC_STREAMIO << 8) | 17),
+  I_RECVFD = ((MIOC_STREAMIO << 8) | 18),
+  I_FLUSHBAND = ((MIOC_STREAMIO << 8) | 19),
+  I_SWROPT = ((MIOC_STREAMIO << 8) | 20),
+  I_GWROPT = ((MIOC_STREAMIO << 8) | 21),
+  I_LIST = ((MIOC_STREAMIO << 8) | 22),
+  I_ATMARK = ((MIOC_STREAMIO << 8) | 23),
+  I_CKBAND = ((MIOC_STREAMIO << 8) | 24),
+  I_GETBAND = ((MIOC_STREAMIO << 8) | 25),
+  I_CANPUT = ((MIOC_STREAMIO << 8) | 26),
+  I_SETCLTIME = ((MIOC_STREAMIO << 8) | 27),
+  I_GETCLTIME = ((MIOC_STREAMIO << 8) | 28),
+  I_PLINK = ((MIOC_STREAMIO << 8) | 29),
+  I_PUNLINK = ((MIOC_STREAMIO << 8) | 30),
+  I_GETMSG = ((MIOC_STREAMIO << 8) | 40),
+  I_PUTMSG = ((MIOC_STREAMIO << 8) | 41),
+  I_POLL = ((MIOC_STREAMIO << 8) | 42),
+  I_SETDELAY = ((MIOC_STREAMIO << 8) | 43),
+  I_GETDELAY = ((MIOC_STREAMIO << 8) | 44),
+  I_RUN_QUEUES = ((MIOC_STREAMIO << 8) | 45),
+  I_GETPMSG = ((MIOC_STREAMIO << 8) | 46),
+  I_PUTPMSG = ((MIOC_STREAMIO << 8) | 47),
+  I_AUTOPUSH = ((MIOC_STREAMIO << 8) | 48),
+  I_PIPE = ((MIOC_STREAMIO << 8) | 49),
+  I_HEAP_REPORT = ((MIOC_STREAMIO << 8) | 50),
+  I_FIFO = ((MIOC_STREAMIO << 8) | 51)
+};
+enum {
+  RS_HIPRI = 0x01
+};
+
+
+enum {
+  MSG_HIPRI = 0x01,
+  MSG_BAND = 0x02,
+  MSG_ANY = 0x04
+};
+
+
+enum {
+  MORECTL = 0x01,
+  MOREDATA = 0x02
+};
+
+
+enum {
+  FMNAMESZ = 31
+};
+
+
+
+enum {
+  INFTIM = (unsigned long)0xFFFFFFFF
+};
+
+
+enum {
+  FLUSHR = 0x01,
+  FLUSHW = 0x02,
+  FLUSHRW = (FLUSHW | FLUSHR)
+};
+
+enum {
+  FLUSHBAND = 0x40
+};
+struct bandinfo {
+  unsigned char bi_pri;
+  char pad1;
+  SInt32 bi_flag;
+};
+typedef struct bandinfo bandinfo;
+
+enum {
+  ANYMARK = 0x01,
+  LASTMARK = 0x02
+};
+
+
+enum {
+  S_INPUT = 0x01,
+  S_HIPRI = 0x02,
+  S_OUTPUT = 0x04,
+  S_MSG = 0x08,
+  S_RDNORM = 0x10,
+  S_RDBAND = 0x20,
+  S_WRNORM = 0x40,
+  S_WRBAND = 0x80,
+  S_ERROR = 0x0100,
+  S_HANGUP = 0x0200,
+  S_BANDURG = 0x0400
+};
+
+
+enum {
+  RNORM = 0x01,
+  RMSGD = 0x02,
+  RMSGN = 0x04,
+  RFILL = 0x08
+};
+
+
+enum {
+  RPROTNORM = 0x10,
+  RPROTDIS = 0x20,
+  RPROTDAT = 0x40
+};
+
+
+enum {
+  SNDZERO = 0x01
+};
+
+enum {
+  MUXID_ALL = -1
+};
+
+
+
+
+
+
+
+struct strfdinsert {
+  strbuf ctlbuf;
+  strbuf databuf;
+  long flags;
+  long fildes;
+  SInt32 offset;
+};
+typedef struct strfdinsert strfdinsert;
+
+struct str_mlist {
+  char l_name[32];
+};
+typedef struct str_mlist str_mlist;
+struct str_list {
+  SInt32 sl_nmods;
+  str_mlist * sl_modlist;
+};
+typedef struct str_list str_list;
+
+struct strpeek {
+  strbuf ctlbuf;
+  strbuf databuf;
+  long flags;
+};
+typedef struct strpeek strpeek;
+
+struct strpmsg {
+  strbuf ctlbuf;
+  strbuf databuf;
+  SInt32 band;
+  long flags;
+};
+typedef struct strpmsg strpmsg;
+
+struct strrecvfd {
+  long fd;
+  unsigned short uid;
+  unsigned short gid;
+  char fill[8];
+};
+typedef struct strrecvfd strrecvfd;
+
+struct strioctl {
+  SInt32 ic_cmd;
+  SInt32 ic_timout;
+  SInt32 ic_len;
+  char * ic_dp;
+};
+typedef struct strioctl strioctl;
+
+
+struct log_ctl {
+  short mid;
+  short sid;
+  char level;
+  char pad1;
+  short flags;
+  long ltime;
+  long ttime;
+  SInt32 seq_no;
+};
+typedef struct log_ctl log_ctl;
+enum {
+  SL_FATAL = 0x01,
+  SL_NOTIFY = 0x02,
+  SL_ERROR = 0x04,
+  SL_TRACE = 0x08,
+  SL_CONSOLE = 0x00,
+  SL_WARN = 0x20,
+  SL_NOTE = 0x40
+};
+
+struct trace_ids {
+  short ti_mid;
+  short ti_sid;
+  char ti_level;
+};
+typedef struct trace_ids trace_ids;
+enum {
+  I_TRCLOG = ((MIOC_STRLOG << 8) | 1),
+  I_ERRLOG = ((MIOC_STRLOG << 8) | 2)
+};
+
+enum {
+  LOGMSGSZ = 128
+};
+struct OTPortCloseStruct {
+  OTPortRef fPortRef;
+  ProviderRef fTheProvider;
+  OSStatus fDenyReason;
+};
+typedef struct OTPortCloseStruct OTPortCloseStruct;
+
+struct OTClientList {
+  ItemCount fNumClients;
+  UInt8 fBuffer[4];
+};
+typedef struct OTClientList OTClientList;
+typedef long OTTimerTask;
+extern long
+OTCreateTimerTaskInContext(
+  OTProcessUPP upp,
+  void * arg,
+  OTClientContextPtr clientContext) ;
+extern Boolean
+OTCancelTimerTask(OTTimerTask timerTask) ;
+extern void
+OTDestroyTimerTask(OTTimerTask timerTask) ;
+extern Boolean
+OTScheduleTimerTask(
+  OTTimerTask timerTask,
+  OTTimeout milliSeconds) ;
+extern OTByteCount
+OTBufferDataSize(OTBuffer * buffer) ;
+extern Boolean
+OTReadBuffer(
+  OTBufferInfo * buffer,
+  void * dest,
+  OTByteCount * len) ;
+extern void
+OTReleaseBuffer(OTBuffer * buffer) ;
+extern OTResult
+OTSetFirstClearBit(
+  UInt8 * bitMap,
+  OTByteCount startBit,
+  OTByteCount numBits) ;
+extern Boolean
+OTClearBit(
+  UInt8 * bitMap,
+  OTByteCount bitNo) ;
+extern Boolean
+OTSetBit(
+  UInt8 * bitMap,
+  OTByteCount bitNo) ;
+extern Boolean
+OTTestBit(
+  UInt8 * bitMap,
+  OTByteCount bitNo) ;
+typedef UInt32 ( * OTHashProcPtr)(OTLink * linkToHash);
+typedef Boolean ( * OTHashSearchProcPtr)(const void *ref, OTLink *linkToCheck);
+struct OTHashList {
+  OTHashProcPtr fHashProc;
+  ByteCount fHashTableSize;
+  OTLink ** fHashBuckets;
+
+
+
+
+
+
+    void Add(OTLink* toAdd);
+
+    Boolean RemoveLink(OTLink* toRemove);
+
+    OTLink* Remove(OTHashSearchProcPtr proc, const void* refPtr, UInt32 hashValue);
+
+    Boolean IsInList(OTLink* toFind);
+
+    OTLink* FindLink(OTHashSearchProcPtr proc, const void* refPtr, UInt32 hash);
+
+
+
+};
+typedef struct OTHashList OTHashList;
+typedef Boolean ( * OTGateProcPtr)(OTLink * thisLink);
+struct OTGate {
+  OTLIFO fLIFO;
+  OTList fList;
+  OTGateProcPtr fProc;
+  SInt32 fNumQueued;
+  SInt32 fInside;
+};
+typedef struct OTGate OTGate;
+
+
+}
+extern "C" {
+
+
+
+
+enum {
+  kNSLMinSystemVersion = 0x0900,
+  kNSLMinOTVersion = 0x0130
+};
+
+enum {
+  kNSLDefaultListSize = 256
+};
+
+enum {
+  kNSLURLDelimiter = ','
+};
+
+
+
+
+enum {
+  kNSLNoContext = 0
+};
+
+struct NSLError {
+  OSStatus theErr;
+  UInt32 theContext;
+};
+typedef struct NSLError NSLError;
+typedef NSLError * NSLErrorPtr;
+enum {
+
+
+
+
+  kNSLDuplicateSearchInProgress = 100,
+  kNSLUserCanceled = userCanceledErr,
+
+  kNSLInvalidEnumeratorRef = 0
+};
+
+typedef UInt16 NSLSearchState;
+enum {
+
+  kNSLSearchStateBufferFull = 1,
+  kNSLSearchStateOnGoing = 2,
+  kNSLSearchStateComplete = 3,
+  kNSLSearchStateStalled = 4,
+  kNSLWaitingForContinue = 5
+};
+
+typedef UInt32 NSLEventCode;
+enum {
+
+  kNSLServicesLookupDataEvent = 6,
+  kNSLNeighborhoodLookupDataEvent = 7,
+  kNSLNewDataEvent = 8,
+  kNSLContinueLookupEvent = 9
+};
+
+
+typedef UInt32 NSLClientRef;
+typedef UInt32 NSLRequestRef;
+typedef UInt32 NSLOneBasedIndex;
+typedef char * NSLPath;
+typedef char * NSLServiceType;
+typedef Handle NSLServicesList;
+typedef unsigned char * NSLNeighborhood;
+
+
+
+
+
+
+struct NSLClientAsyncInfo {
+  void * clientContextPtr;
+  void * mgrContextPtr;
+  char * resultBuffer;
+  long bufferLen;
+  long maxBufferSize;
+  UInt32 startTime;
+  UInt32 intStartTime;
+  UInt32 maxSearchTime;
+  UInt32 alertInterval;
+  UInt32 totalItems;
+  UInt32 alertThreshold;
+  NSLSearchState searchState;
+  NSLError searchResult;
+  NSLEventCode searchDataType;
+
+};
+typedef struct NSLClientAsyncInfo NSLClientAsyncInfo;
+typedef NSLClientAsyncInfo * NSLClientAsyncInfoPtr;
+
+
+struct NSLPluginAsyncInfo {
+  void * mgrContextPtr;
+  void * pluginContextPtr;
+  void * pluginPtr;
+  char * resultBuffer;
+  long bufferLen;
+  long maxBufferSize;
+  UInt32 maxSearchTime;
+  UInt32 reserved1;
+  UInt32 reserved2;
+  UInt32 reserved3;
+  NSLClientRef clientRef;
+  NSLRequestRef requestRef;
+  NSLSearchState searchState;
+  OSStatus searchResult;
+};
+typedef struct NSLPluginAsyncInfo NSLPluginAsyncInfo;
+typedef NSLPluginAsyncInfo * NSLPluginAsyncInfoPtr;
+
+
+typedef void ( * NSLMgrNotifyProcPtr)(NSLPluginAsyncInfo * thePluginAsyncInfo);
+
+
+typedef void ( * NSLClientNotifyProcPtr)(NSLClientAsyncInfo * theClientAsyncInfo);
+typedef NSLMgrNotifyProcPtr NSLMgrNotifyUPP;
+typedef NSLClientNotifyProcPtr NSLClientNotifyUPP;
+extern NSLMgrNotifyUPP
+NewNSLMgrNotifyUPP(NSLMgrNotifyProcPtr userRoutine) ;
+extern NSLClientNotifyUPP
+NewNSLClientNotifyUPP(NSLClientNotifyProcPtr userRoutine) ;
+extern void
+DisposeNSLMgrNotifyUPP(NSLMgrNotifyUPP userUPP) ;
+extern void
+DisposeNSLClientNotifyUPP(NSLClientNotifyUPP userUPP) ;
+extern void
+InvokeNSLMgrNotifyUPP(
+  NSLPluginAsyncInfo * thePluginAsyncInfo,
+  NSLMgrNotifyUPP userUPP) ;
+extern void
+InvokeNSLClientNotifyUPP(
+  NSLClientAsyncInfo * theClientAsyncInfo,
+  NSLClientNotifyUPP userUPP) ;
+
+
+
+
+
+
+struct NSLTypedData {
+  unsigned long dataType;
+  unsigned long lengthOfData;
+
+
+};
+typedef struct NSLTypedData NSLTypedData;
+typedef NSLTypedData * NSLTypedDataPtr;
+
+
+
+
+
+
+
+struct NSLServicesListHeader {
+  unsigned long numServices;
+  unsigned long logicalLen;
+
+
+};
+typedef struct NSLServicesListHeader NSLServicesListHeader;
+typedef NSLServicesListHeader * NSLServicesListHeaderPtr;
+struct NSLPluginData {
+  long reserved1;
+  long reserved2;
+  long reserved3;
+  Boolean supportsRegistration;
+  Boolean isPurgeable;
+  UInt16 totalLen;
+  UInt16 dataTypeOffset;
+  UInt16 serviceListOffset;
+  UInt16 protocolListOffset;
+  UInt16 commentStringOffset;
+
+
+};
+typedef struct NSLPluginData NSLPluginData;
+typedef NSLPluginData * NSLPluginDataPtr;
+extern UInt32
+NSLLibraryVersion(void) ;
+
+
+
+
+
+     inline Boolean NSLLibraryPresent() { return NSLLibraryVersion != (void*)kUnresolvedCFragSymbolAddress; }
+extern NSLError
+NSLStandardRegisterURL(
+  NSLPath urlToRegister,
+  NSLNeighborhood neighborhoodToRegisterIn) ;
+extern NSLError
+NSLStandardDeregisterURL(
+  NSLPath urlToDeregister,
+  NSLNeighborhood neighborhoodToDeregisterIn) ;
+extern OSStatus
+NSLHexEncodeText(
+  const char * rawText,
+  UInt16 rawTextLen,
+  char * newTextBuffer,
+  UInt16 * newTextBufferLen,
+  Boolean * textChanged) ;
+extern OSStatus
+NSLHexDecodeText(
+  const char * encodedText,
+  UInt16 encodedTextLen,
+  char * decodedTextBuffer,
+  UInt16 * decodedTextBufferLen,
+  Boolean * textChanged) ;
+extern NSLServicesList
+NSLMakeNewServicesList(const char * initialServiceList) ;
+extern NSLError
+NSLAddServiceToServicesList(
+  NSLServicesList serviceList,
+  NSLServiceType serviceType) ;
+extern void
+NSLDisposeServicesList(NSLServicesList theList) ;
+extern NSLNeighborhood
+NSLMakeNewNeighborhood(
+  const char * name,
+  const char * protocolList) ;
+extern NSLNeighborhood
+NSLCopyNeighborhood(NSLNeighborhood neighborhood) ;
+extern NSLNeighborhood
+NSLFreeNeighborhood(NSLNeighborhood neighborhood) ;
+extern void
+NSLGetNameFromNeighborhood(
+  NSLNeighborhood neighborhood,
+  char ** name,
+  long * length) ;
+extern OSStatus
+NSLMakeServicesRequestPB(
+  NSLServicesList serviceList,
+  NSLTypedDataPtr * newDataPtr) ;
+extern NSLTypedDataPtr
+NSLFreeTypedDataPtr(NSLTypedDataPtr nslTypeData) ;
+extern Boolean
+NSLGetNextUrl(
+  NSLClientAsyncInfoPtr infoPtr,
+  char ** urlPtr,
+  long * urlLength) ;
+extern Boolean
+NSLGetNextNeighborhood(
+  NSLClientAsyncInfoPtr infoPtr,
+  NSLNeighborhood * neighborhood,
+  long * neighborhoodLength) ;
+extern OSStatus
+NSLErrorToString(
+  NSLError theErr,
+  char * errorString,
+  char * solutionString) ;
+extern OSStatus
+NSLOpenNavigationAPI(NSLClientRef * newRef) ;
+extern void
+NSLCloseNavigationAPI(NSLClientRef theClient) ;
+extern NSLError
+NSLPrepareRequest(
+  NSLClientNotifyUPP notifier,
+  void * contextPtr,
+  NSLClientRef theClient,
+  NSLRequestRef * ref,
+  char * bufPtr,
+  unsigned long bufLen,
+  NSLClientAsyncInfoPtr * infoPtr) ;
+extern NSLError
+NSLStartNeighborhoodLookup(
+  NSLRequestRef ref,
+  NSLNeighborhood neighborhood,
+  NSLClientAsyncInfo * asyncInfo) ;
+extern NSLError
+NSLStartServicesLookup(
+  NSLRequestRef ref,
+  NSLNeighborhood neighborhood,
+  NSLTypedDataPtr requestData,
+  NSLClientAsyncInfo * asyncInfo) ;
+extern NSLError
+NSLContinueLookup(NSLClientAsyncInfo * asyncInfo) ;
+extern NSLError
+NSLCancelRequest(NSLRequestRef ref) ;
+extern NSLError
+NSLDeleteRequest(NSLRequestRef ref) ;
+extern OSStatus
+NSLParseServicesRequestPB(
+  NSLTypedDataPtr newDataPtr,
+  char ** serviceListPtr,
+  UInt16 * serviceListLen) ;
+extern OSStatus
+NSLParseServiceRegistrationPB(
+  NSLTypedDataPtr newDataPtr,
+  NSLNeighborhood * neighborhoodPtr,
+  UInt16 * neighborhoodLen,
+  char ** urlPtr,
+  UInt16 * urlLen) ;
+extern OSStatus
+NSLGetErrorStringsFromResource(
+  OSStatus theErr,
+  const FSSpec * fileSpecPtr,
+  SInt16 errorResID,
+  char * errorString,
+  char * solutionString) ;
+extern Boolean
+NSLServiceIsInServiceList(
+  NSLServicesList serviceList,
+  NSLServiceType svcToFind) ;
+extern OSStatus
+NSLGetServiceFromURL(
+  char * theURL,
+  char ** svcString,
+  UInt16 * svcLen) ;
+extern long
+NSLGetNeighborhoodLength(NSLNeighborhood neighborhood) ;
+extern OSErr
+NSLNewThread(
+  ThreadStyle threadStyle,
+  ThreadEntryProcPtr threadEntry,
+  void * threadParam,
+  Size stackSize,
+  ThreadOptions options,
+  void ** threadResult,
+  ThreadID * threadMade) ;
+extern OSErr
+NSLDisposeThread(
+  ThreadID threadToDump,
+  void * threadResult,
+  Boolean recycleThread) ;
+
+
+}
+extern "C" {
+
+
+
+
+
+
+typedef struct OpaqueSecKeychainRef* SecKeychainRef;
+typedef struct OpaqueSecKeychainItemRef* SecKeychainItemRef;
+typedef struct OpaqueSecKeychainSearchRef* SecKeychainSearchRef;
+typedef OSType SecKeychainAttrType;
+typedef UInt32 SecKeychainStatus;
+struct SecKeychainAttribute {
+  SecKeychainAttrType tag;
+  UInt32 length;
+  void * data;
+};
+typedef struct SecKeychainAttribute SecKeychainAttribute;
+typedef SecKeychainAttribute * SecKeychainAttributePtr;
+struct SecKeychainAttributeList {
+  UInt32 count;
+  SecKeychainAttribute * attr;
+};
+typedef struct SecKeychainAttributeList SecKeychainAttributeList;
+
+
+typedef SecKeychainRef KCRef;
+typedef SecKeychainItemRef KCItemRef;
+typedef SecKeychainSearchRef KCSearchRef;
+typedef SecKeychainAttribute KCAttribute;
+typedef SecKeychainAttributeList KCAttributeList;
+typedef SecKeychainAttrType KCAttrType;
+typedef SecKeychainStatus KCStatus;
+typedef UInt16 KCEvent;
+enum {
+  kIdleKCEvent = 0,
+  kLockKCEvent = 1,
+  kUnlockKCEvent = 2,
+  kAddKCEvent = 3,
+  kDeleteKCEvent = 4,
+  kUpdateKCEvent = 5,
+  kPasswordChangedKCEvent = 6,
+  kSystemKCEvent = 8,
+  kDefaultChangedKCEvent = 9,
+  kDataAccessKCEvent = 10,
+  kKeychainListChangedKCEvent = 11
+};
+
+typedef UInt16 KCEventMask;
+enum {
+  kIdleKCEventMask = 1 << kIdleKCEvent,
+  kLockKCEventMask = 1 << kLockKCEvent,
+  kUnlockKCEventMask = 1 << kUnlockKCEvent,
+  kAddKCEventMask = 1 << kAddKCEvent,
+  kDeleteKCEventMask = 1 << kDeleteKCEvent,
+  kUpdateKCEventMask = 1 << kUpdateKCEvent,
+  kPasswordChangedKCEventMask = 1 << kPasswordChangedKCEvent,
+  kSystemEventKCEventMask = 1 << kSystemKCEvent,
+  kDefaultChangedKCEventMask = 1 << kDefaultChangedKCEvent,
+  kDataAccessKCEventMask = 1 << kDataAccessKCEvent,
+  kEveryKCEventMask = 0xFFFF
+};
+
+typedef UInt8 AFPServerSignature[16];
+typedef UInt8 KCPublicKeyHash[20];
+struct KCCallbackInfo {
+  UInt32 version;
+  KCItemRef item;
+  long processID[2];
+  long event[4];
+  KCRef keychain;
+};
+typedef struct KCCallbackInfo KCCallbackInfo;
+enum {
+  kUnlockStateKCStatus = 1,
+  kRdPermKCStatus = 2,
+  kWrPermKCStatus = 4
+};
+
+
+enum {
+  kCertificateKCItemClass = 'cert',
+  kAppleSharePasswordKCItemClass = 'ashp',
+  kInternetPasswordKCItemClass = 'inet',
+  kGenericPasswordKCItemClass = 'genp'
+};
+
+
+typedef FourCharCode KCItemClass;
+enum {
+
+  kClassKCItemAttr = 'clas',
+  kCreationDateKCItemAttr = 'cdat',
+  kModDateKCItemAttr = 'mdat',
+  kDescriptionKCItemAttr = 'desc',
+  kCommentKCItemAttr = 'icmt',
+  kCreatorKCItemAttr = 'crtr',
+  kTypeKCItemAttr = 'type',
+  kScriptCodeKCItemAttr = 'scrp',
+  kLabelKCItemAttr = 'labl',
+  kInvisibleKCItemAttr = 'invi',
+  kNegativeKCItemAttr = 'nega',
+  kCustomIconKCItemAttr = 'cusi',
+  kAccountKCItemAttr = 'acct',
+
+  kServiceKCItemAttr = 'svce',
+  kGenericKCItemAttr = 'gena',
+
+  kSecurityDomainKCItemAttr = 'sdmn',
+  kServerKCItemAttr = 'srvr',
+  kAuthTypeKCItemAttr = 'atyp',
+  kPortKCItemAttr = 'port',
+  kPathKCItemAttr = 'path',
+
+  kVolumeKCItemAttr = 'vlme',
+  kAddressKCItemAttr = 'addr',
+  kSignatureKCItemAttr = 'ssig',
+
+  kProtocolKCItemAttr = 'ptcl',
+
+  kSubjectKCItemAttr = 'subj',
+  kCommonNameKCItemAttr = 'cn  ',
+  kIssuerKCItemAttr = 'issu',
+  kSerialNumberKCItemAttr = 'snbr',
+  kEMailKCItemAttr = 'mail',
+  kPublicKeyHashKCItemAttr = 'hpky',
+  kIssuerURLKCItemAttr = 'iurl',
+
+  kEncryptKCItemAttr = 'encr',
+  kDecryptKCItemAttr = 'decr',
+  kSignKCItemAttr = 'sign',
+  kVerifyKCItemAttr = 'veri',
+  kWrapKCItemAttr = 'wrap',
+  kUnwrapKCItemAttr = 'unwr',
+  kStartDateKCItemAttr = 'sdat',
+  kEndDateKCItemAttr = 'edat'
+};
+
+typedef FourCharCode KCItemAttr;
+enum {
+  kKCAuthTypeNTLM = 'ntlm',
+  kKCAuthTypeMSN = 'msna',
+  kKCAuthTypeDPA = 'dpaa',
+  kKCAuthTypeRPA = 'rpaa',
+  kKCAuthTypeHTTPDigest = 'httd',
+  kKCAuthTypeDefault = 'dflt'
+};
+
+typedef FourCharCode KCAuthType;
+enum {
+  kKCProtocolTypeFTP = 'ftp ',
+  kKCProtocolTypeFTPAccount = 'ftpa',
+  kKCProtocolTypeHTTP = 'http',
+  kKCProtocolTypeIRC = 'irc ',
+  kKCProtocolTypeNNTP = 'nntp',
+  kKCProtocolTypePOP3 = 'pop3',
+  kKCProtocolTypeSMTP = 'smtp',
+  kKCProtocolTypeSOCKS = 'sox ',
+  kKCProtocolTypeIMAP = 'imap',
+  kKCProtocolTypeLDAP = 'ldap',
+  kKCProtocolTypeAppleTalk = 'atlk',
+  kKCProtocolTypeAFP = 'afp ',
+  kKCProtocolTypeTelnet = 'teln'
+};
+
+typedef FourCharCode KCProtocolType;
+typedef UInt32 KCCertAddOptions;
+enum {
+  kSecOptionReserved = 0x000000FF,
+  kCertUsageShift = 8,
+  kCertUsageSigningAdd = 1 << (kCertUsageShift + 0),
+  kCertUsageSigningAskAndAdd = 1 << (kCertUsageShift + 1),
+  kCertUsageVerifyAdd = 1 << (kCertUsageShift + 2),
+  kCertUsageVerifyAskAndAdd = 1 << (kCertUsageShift + 3),
+  kCertUsageEncryptAdd = 1 << (kCertUsageShift + 4),
+  kCertUsageEncryptAskAndAdd = 1 << (kCertUsageShift + 5),
+  kCertUsageDecryptAdd = 1 << (kCertUsageShift + 6),
+  kCertUsageDecryptAskAndAdd = 1 << (kCertUsageShift + 7),
+  kCertUsageKeyExchAdd = 1 << (kCertUsageShift + 8),
+  kCertUsageKeyExchAskAndAdd = 1 << (kCertUsageShift + 9),
+  kCertUsageRootAdd = 1 << (kCertUsageShift + 10),
+  kCertUsageRootAskAndAdd = 1 << (kCertUsageShift + 11),
+  kCertUsageSSLAdd = 1 << (kCertUsageShift + 12),
+  kCertUsageSSLAskAndAdd = 1 << (kCertUsageShift + 13),
+  kCertUsageAllAdd = 0x7FFFFF00
+};
+
+typedef UInt16 KCVerifyStopOn;
+enum {
+  kPolicyKCStopOn = 0,
+  kNoneKCStopOn = 1,
+  kFirstPassKCStopOn = 2,
+  kFirstFailKCStopOn = 3
+};
+
+typedef UInt32 KCCertSearchOptions;
+enum {
+  kCertSearchShift = 0,
+  kCertSearchSigningIgnored = 0,
+  kCertSearchSigningAllowed = 1 << (kCertSearchShift + 0),
+  kCertSearchSigningDisallowed = 1 << (kCertSearchShift + 1),
+  kCertSearchSigningMask = ((kCertSearchSigningAllowed) | (kCertSearchSigningDisallowed)),
+  kCertSearchVerifyIgnored = 0,
+  kCertSearchVerifyAllowed = 1 << (kCertSearchShift + 2),
+  kCertSearchVerifyDisallowed = 1 << (kCertSearchShift + 3),
+  kCertSearchVerifyMask = ((kCertSearchVerifyAllowed) | (kCertSearchVerifyDisallowed)),
+  kCertSearchEncryptIgnored = 0,
+  kCertSearchEncryptAllowed = 1 << (kCertSearchShift + 4),
+  kCertSearchEncryptDisallowed = 1 << (kCertSearchShift + 5),
+  kCertSearchEncryptMask = ((kCertSearchEncryptAllowed) | (kCertSearchEncryptDisallowed)),
+  kCertSearchDecryptIgnored = 0,
+  kCertSearchDecryptAllowed = 1 << (kCertSearchShift + 6),
+  kCertSearchDecryptDisallowed = 1 << (kCertSearchShift + 7),
+  kCertSearchDecryptMask = ((kCertSearchDecryptAllowed) | (kCertSearchDecryptDisallowed)),
+  kCertSearchWrapIgnored = 0,
+  kCertSearchWrapAllowed = 1 << (kCertSearchShift + 8),
+  kCertSearchWrapDisallowed = 1 << (kCertSearchShift + 9),
+  kCertSearchWrapMask = ((kCertSearchWrapAllowed) | (kCertSearchWrapDisallowed)),
+  kCertSearchUnwrapIgnored = 0,
+  kCertSearchUnwrapAllowed = 1 << (kCertSearchShift + 10),
+  kCertSearchUnwrapDisallowed = 1 << (kCertSearchShift + 11),
+  kCertSearchUnwrapMask = ((kCertSearchUnwrapAllowed) | (kCertSearchUnwrapDisallowed)),
+  kCertSearchPrivKeyRequired = 1 << (kCertSearchShift + 12),
+  kCertSearchAny = 0
+};
+
+
+enum {
+  kAnyPort = 0
+};
+
+enum {
+  kAnyProtocol = 0,
+  kAnyAuthType = 0
+};
+extern OSStatus
+KCGetKeychainManagerVersion(UInt32 * returnVers);
+    inline Boolean KeychainManagerAvailable() { return true; }
+extern OSStatus
+KCSetInteractionAllowed(Boolean state) ;
+extern Boolean
+KCIsInteractionAllowed(void) ;
+extern OSStatus
+KCMakeKCRefFromFSSpec(
+  FSSpec * keychainFSSpec,
+  KCRef * keychain) ;
+extern OSStatus
+KCMakeKCRefFromAlias(
+  AliasHandle keychainAlias,
+  KCRef * keychain) ;
+extern OSStatus
+KCMakeAliasFromKCRef(
+  KCRef keychain,
+  AliasHandle * keychainAlias) ;
+extern OSStatus
+KCReleaseKeychain(KCRef * keychain) ;
+extern OSStatus
+KCGetDefaultKeychain(KCRef * keychain) ;
+extern OSStatus
+KCSetDefaultKeychain(KCRef keychain) ;
+extern OSStatus
+KCGetStatus(
+  KCRef keychain,
+  UInt32 * keychainStatus) ;
+extern OSStatus
+KCGetKeychain(
+  KCItemRef item,
+  KCRef * keychain) ;
+extern OSStatus
+KCGetKeychainName(
+  KCRef keychain,
+  StringPtr keychainName) ;
+extern UInt16
+KCCountKeychains(void) ;
+extern OSStatus
+KCGetIndKeychain(
+  UInt16 index,
+  KCRef * keychain) ;
+
+
+typedef OSStatus ( * KCCallbackProcPtr)(KCEvent keychainEvent, KCCallbackInfo *info, void *userContext);
+typedef KCCallbackProcPtr KCCallbackUPP;
+extern KCCallbackUPP
+NewKCCallbackUPP(KCCallbackProcPtr userRoutine) ;
+extern void
+DisposeKCCallbackUPP(KCCallbackUPP userUPP) ;
+extern OSStatus
+InvokeKCCallbackUPP(
+  KCEvent keychainEvent,
+  KCCallbackInfo * info,
+  void * userContext,
+  KCCallbackUPP userUPP) ;
+extern OSStatus
+KCFindAppleSharePassword(
+  AFPServerSignature * serverSignature,
+  StringPtr serverAddress,
+  StringPtr serverName,
+  StringPtr volumeName,
+  StringPtr accountName,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+KCFindInternetPassword(
+  StringPtr serverName,
+  StringPtr securityDomain,
+  StringPtr accountName,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+KCFindInternetPasswordWithPath(
+  StringPtr serverName,
+  StringPtr securityDomain,
+  StringPtr accountName,
+  StringPtr path,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+KCFindGenericPassword(
+  StringPtr serviceName,
+  StringPtr accountName,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+KCAddCallback(
+  KCCallbackUPP callbackProc,
+  KCEventMask eventMask,
+  void * userContext) ;
+extern OSStatus
+KCRemoveCallback(KCCallbackUPP callbackProc) ;
+extern OSStatus
+KCNewItem(
+  KCItemClass itemClass,
+  OSType itemCreator,
+  UInt32 length,
+  const void * data,
+  KCItemRef * item) ;
+extern OSStatus
+KCSetAttribute(
+  KCItemRef item,
+  KCAttribute * attr) ;
+extern OSStatus
+KCGetAttribute(
+  KCItemRef item,
+  KCAttribute * attr,
+  UInt32 * actualLength) ;
+extern OSStatus
+KCSetData(
+  KCItemRef item,
+  UInt32 length,
+  const void * data) ;
+extern OSStatus
+KCUpdateItem(KCItemRef item) ;
+extern OSStatus
+KCReleaseItem(KCItemRef * item) ;
+extern OSStatus
+KCCopyItem(
+  KCItemRef item,
+  KCRef destKeychain,
+  KCItemRef * copy) ;
+extern OSStatus
+KCFindFirstItem(
+  KCRef keychain,
+  const KCAttributeList * attrList,
+  KCSearchRef * search,
+  KCItemRef * item) ;
+extern OSStatus
+KCFindNextItem(
+  KCSearchRef search,
+  KCItemRef * item) ;
+extern OSStatus
+KCReleaseSearch(KCSearchRef * search) ;
+extern OSStatus
+KCDeleteItem(KCItemRef item) ;
+extern OSStatus
+KCGetData(
+  KCItemRef item,
+  UInt32 maxLength,
+  void * data,
+  UInt32 * actualLength) ;
+extern OSStatus
+KCLock(KCRef keychain) ;
+extern OSStatus
+kcgetkeychainname(
+  KCRef keychain,
+  char * keychainName) ;
+extern OSStatus
+kcfindapplesharepassword(
+  AFPServerSignature * serverSignature,
+  const char * serverAddress,
+  const char * serverName,
+  const char * volumeName,
+  const char * accountName,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+kcfindinternetpassword(
+  const char * serverName,
+  const char * securityDomain,
+  const char * accountName,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+kcfindinternetpasswordwithpath(
+  const char * serverName,
+  const char * securityDomain,
+  const char * accountName,
+  const char * path,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+extern OSStatus
+kcfindgenericpassword(
+  const char * serviceName,
+  const char * accountName,
+  UInt32 maxLength,
+  void * passwordData,
+  UInt32 * actualLength,
+  KCItemRef * item) ;
+
+
+
+
+
+}
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+extern "C" {
+
+
+
+
+
+extern const int kCFStreamErrorDomainSSL;
+extern const CFStringRef kCFStreamPropertySocketSecurityLevel;
+extern const CFStringRef kCFStreamSocketSecurityLevelNone;
+extern const CFStringRef kCFStreamSocketSecurityLevelSSLv2;
+extern const CFStringRef kCFStreamSocketSecurityLevelSSLv3;
+extern const CFStringRef kCFStreamSocketSecurityLevelTLSv1;
+extern const CFStringRef kCFStreamSocketSecurityLevelNegotiatedSSL;
+
+
+
+
+
+extern const int kCFStreamErrorDomainSOCKS;
+
+
+static __inline__
+SInt32 CFSocketStreamSOCKSGetErrorSubdomain(CFStreamError* error) {
+    return ((error->domain >> 16) & 0x0000FFFF);
+}
+
+static __inline__
+SInt32 CFSocketStreamSOCKSGetError(CFStreamError* error) {
+    return (error->domain & 0x0000FFFF);
+}
+
+
+enum {
+        kCFStreamErrorSOCKSSubDomainNone = 0,
+        kCFStreamErrorSOCKSSubDomainVersionCode,
+        kCFStreamErrorSOCKS4SubDomainResponse,
+        kCFStreamErrorSOCKS5SubDomainUserPass,
+        kCFStreamErrorSOCKS5SubDomainMethod,
+    kCFStreamErrorSOCKS5SubDomainResponse
+};
+
+enum {
+
+        kCFStreamErrorSOCKS5BadResponseAddr = 1,
+        kCFStreamErrorSOCKS5BadState,
+        kCFStreamErrorSOCKSUnknownClientVersion,
+
+
+        kCFStreamErrorSOCKS4RequestFailed = 91,
+        kCFStreamErrorSOCKS4IdentdFailed = 92,
+        kCFStreamErrorSOCKS4IdConflict = 93,
+
+
+        kSOCKS5NoAcceptableMethod = 0xFF
+};
+extern const CFStringRef kCFStreamPropertySOCKSProxy;
+extern const CFStringRef kCFStreamPropertySOCKSProxyHost;
+extern const CFStringRef kCFStreamPropertySOCKSProxyPort;
+extern const CFStringRef kCFStreamPropertySOCKSVersion;
+extern const CFStringRef kCFStreamSocketSOCKSVersion4;
+extern const CFStringRef kCFStreamSocketSOCKSVersion5;
+extern const CFStringRef kCFStreamPropertySOCKSUser;
+extern const CFStringRef kCFStreamPropertySOCKSPassword;
+extern const CFStringRef kCFStreamPropertyShouldCloseNativeSocket;
+typedef enum {
+    kCFStreamSocketSecurityNone = 0,
+    kCFStreamSocketSecuritySSLv2,
+    kCFStreamSocketSecuritySSLv3,
+    kCFStreamSocketSecuritySSLv23,
+    kCFStreamSocketSecurityTLSv1
+} CFStreamSocketSecurityProtocol;
+extern
+Boolean CFSocketStreamPairSetSecurityProtocol(CFReadStreamRef socketReadStream, CFWriteStreamRef socketWriteStream, CFStreamSocketSecurityProtocol securityProtocol);
+
+
+
+}
+extern "C" {
+
+
+extern const CFStringRef kCFHTTPVersion1_0;
+extern const CFStringRef kCFHTTPVersion1_1;
+extern const CFStringRef kCFHTTPAuthenticationSchemeBasic;
+extern const CFStringRef kCFHTTPAuthenticationSchemeDigest;
+
+typedef struct __CFHTTPMessage * CFHTTPMessageRef;
+
+extern
+CFTypeID CFHTTPMessageGetTypeID(void);
+
+extern
+CFHTTPMessageRef CFHTTPMessageCreateRequest(CFAllocatorRef allocator, CFStringRef requestMethod, CFURLRef url, CFStringRef httpVersion);
+
+
+extern
+CFHTTPMessageRef CFHTTPMessageCreateResponse(CFAllocatorRef allocator, int statusCode, CFStringRef statusDescription, CFStringRef httpVersion);
+
+
+extern
+CFHTTPMessageRef CFHTTPMessageCreateEmpty(CFAllocatorRef allocator, Boolean isRequest);
+
+extern
+CFHTTPMessageRef CFHTTPMessageCreateCopy(CFAllocatorRef allocator, CFHTTPMessageRef message);
+
+
+extern
+Boolean CFHTTPMessageIsRequest(CFHTTPMessageRef message);
+
+extern
+CFStringRef CFHTTPMessageCopyVersion(CFHTTPMessageRef message);
+
+extern
+CFDataRef CFHTTPMessageCopyBody(CFHTTPMessageRef message);
+
+extern
+void CFHTTPMessageSetBody(CFHTTPMessageRef message, CFDataRef bodyData);
+
+extern
+CFStringRef CFHTTPMessageCopyHeaderFieldValue(CFHTTPMessageRef message, CFStringRef headerField);
+
+extern
+CFDictionaryRef CFHTTPMessageCopyAllHeaderFields(CFHTTPMessageRef message);
+
+extern
+void CFHTTPMessageSetHeaderFieldValue(CFHTTPMessageRef message, CFStringRef headerField, CFStringRef value);
+
+
+extern
+Boolean CFHTTPMessageAppendBytes(CFHTTPMessageRef message, const UInt8 *newBytes, CFIndex numBytes);
+
+
+extern
+Boolean CFHTTPMessageIsHeaderComplete(CFHTTPMessageRef message);
+
+extern
+CFDataRef CFHTTPMessageCopySerializedMessage(CFHTTPMessageRef request);
+
+
+extern
+CFURLRef CFHTTPMessageCopyRequestURL(CFHTTPMessageRef request);
+
+extern
+CFStringRef CFHTTPMessageCopyRequestMethod(CFHTTPMessageRef request);
+
+
+
+
+
+
+extern
+Boolean CFHTTPMessageAddAuthentication(CFHTTPMessageRef request, CFHTTPMessageRef authenticationFailureResponse, CFStringRef username, CFStringRef password, CFStringRef authenticationScheme, Boolean forProxy);
+
+
+
+extern
+UInt32 CFHTTPMessageGetResponseStatusCode(CFHTTPMessageRef response);
+
+extern
+CFStringRef CFHTTPMessageCopyResponseStatusLine(CFHTTPMessageRef response);
+
+
+}
+extern "C" {
+
+
+extern
+const SInt32 kCFStreamErrorDomainHTTP;
+
+typedef enum {
+    kCFStreamErrorHTTPParseFailure = -1,
+    kCFStreamErrorHTTPRedirectionLoop = -2,
+    kCFStreamErrorHTTPBadURL = -3
+} CFStreamErrorHTTP;
+
+
+
+
+extern
+const CFStringRef kCFStreamPropertyHTTPResponseHeader;
+
+
+extern
+const CFStringRef kCFStreamPropertyHTTPFinalURL;
+
+
+
+
+
+
+
+extern const CFStringRef kCFStreamPropertyHTTPProxy;
+
+extern const CFStringRef kCFStreamPropertyHTTPProxyHost;
+extern const CFStringRef kCFStreamPropertyHTTPProxyPort;
+extern const CFStringRef kCFStreamPropertyHTTPSProxyHost;
+extern const CFStringRef kCFStreamPropertyHTTPSProxyPort;
+
+
+
+extern
+const CFStringRef kCFStreamPropertyHTTPShouldAutoredirect;
+
+
+extern
+const CFStringRef kCFStreamPropertyHTTPAttemptPersistentConnection;
+
+
+
+
+extern
+CFReadStreamRef CFReadStreamCreateForHTTPRequest(CFAllocatorRef alloc, CFHTTPMessageRef request);
+
+
+extern
+CFReadStreamRef CFReadStreamCreateForStreamedHTTPRequest(CFAllocatorRef alloc, CFHTTPMessageRef requestHeaders, CFReadStreamRef requestBody);
+
+extern
+void CFHTTPReadStreamSetRedirectsAutomatically(CFReadStreamRef httpStream, Boolean shouldAutoRedirect);
+
+extern
+void CFHTTPReadStreamSetProxy(CFReadStreamRef httpStream, CFStringRef proxyHost, CFIndex proxyPort);
+
+
+}
+extern "C" {
+extern
+const SInt32 kCFStreamErrorDomainNetServices;
+
+extern
+const SInt32 kCFStreamErrorDomainMach;
+
+
+typedef enum {
+    kCFNetServicesErrorUnknown = -72000,
+        kCFNetServicesErrorCollision = -72001,
+        kCFNetServicesErrorNotFound = -72002,
+        kCFNetServicesErrorInProgress = -72003,
+        kCFNetServicesErrorBadArgument = -72004,
+    kCFNetServicesErrorCancel = -72005,
+    kCFNetServicesErrorInvalid = -72006
+} CFNetServicesError;
+
+
+
+enum {
+        kCFNetServiceFlagMoreComing = 1,
+        kCFNetServiceFlagIsDomain = 2,
+        kCFNetServiceFlagIsRegistrationDomain = 4,
+    kCFNetServiceFlagRemove = 8
+};
+
+
+typedef struct {
+    CFIndex version;
+    void *info;
+    void *(*retain)(void *info);
+    void (*release)(void *info);
+    CFStringRef (*copyDescription)(void *info);
+} CFNetServiceClientContext;
+
+
+typedef struct __CFNetService* CFNetServiceRef;
+typedef void (*CFNetServiceClientCallBack)(CFNetServiceRef theService, CFStreamError* error, void* info);
+
+typedef struct __CFNetServiceBrowser* CFNetServiceBrowserRef;
+typedef void (*CFNetServiceBrowserClientCallBack)(CFNetServiceBrowserRef browser, CFOptionFlags flags, CFTypeRef domainOrService, CFStreamError* error, void* info);
+
+
+extern
+CFTypeID CFNetServiceGetTypeID(void);
+
+extern
+CFTypeID CFNetServiceBrowserGetTypeID(void);
+extern
+CFNetServiceRef CFNetServiceCreate(CFAllocatorRef alloc,
+                                                                   CFStringRef domain,
+                                                                   CFStringRef type,
+                                                                   CFStringRef name,
+                                                                   UInt32 port);
+extern
+CFStringRef CFNetServiceGetDomain(CFNetServiceRef theService);
+extern
+CFStringRef CFNetServiceGetType(CFNetServiceRef theService);
+extern
+CFStringRef CFNetServiceGetName(CFNetServiceRef theService);
+extern
+CFArrayRef CFNetServiceGetAddressing(CFNetServiceRef theService);
+extern
+CFStringRef CFNetServiceGetProtocolSpecificInformation(CFNetServiceRef theService);
+extern
+void CFNetServiceSetProtocolSpecificInformation(CFNetServiceRef theService, CFStringRef theInfo);
+extern
+Boolean CFNetServiceRegister(CFNetServiceRef theService, CFStreamError* error);
+extern
+Boolean CFNetServiceResolve(CFNetServiceRef theService, CFStreamError* error);
+extern
+void CFNetServiceCancel(CFNetServiceRef theService);
+extern
+Boolean CFNetServiceSetClient(CFNetServiceRef theService,
+                                                          CFNetServiceClientCallBack clientCB,
+                                                          CFNetServiceClientContext* clientContext);
+extern
+void CFNetServiceScheduleWithRunLoop(CFNetServiceRef theService,
+                                                                         CFRunLoopRef runLoop,
+                                                                         CFStringRef runLoopMode);
+extern
+void CFNetServiceUnscheduleFromRunLoop(CFNetServiceRef theService,
+                                                                           CFRunLoopRef runLoop,
+                                                                           CFStringRef runLoopMode);
+extern
+CFNetServiceBrowserRef CFNetServiceBrowserCreate(CFAllocatorRef alloc,
+                                                                                                 CFNetServiceBrowserClientCallBack clientCB,
+                                                                                                 CFNetServiceClientContext* clientContext);
+extern
+void CFNetServiceBrowserInvalidate(CFNetServiceBrowserRef browser);
+extern
+Boolean CFNetServiceBrowserSearchForDomains(CFNetServiceBrowserRef browser,
+                                                                                        Boolean registrationDomains,
+                                            CFStreamError* error);
+extern
+Boolean CFNetServiceBrowserSearchForServices(CFNetServiceBrowserRef browser,
+                                                                                         CFStringRef domain,
+                                                                                         CFStringRef type,
+                                                                                         CFStreamError* error);
+extern
+void CFNetServiceBrowserStopSearch(CFNetServiceBrowserRef browser, CFStreamError* error);
+extern
+void CFNetServiceBrowserScheduleWithRunLoop(CFNetServiceBrowserRef browser,
+                                                                                    CFRunLoopRef runLoop,
+                                                                                    CFStringRef runLoopMode);
+extern
+void CFNetServiceBrowserUnscheduleFromRunLoop(CFNetServiceBrowserRef browser,
+                                                                                          CFRunLoopRef runLoop,
+                                                                                          CFStringRef runLoopMode);
+
+
+
+
+}
+
+
+
+
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+enum {
+  errWSInternalError = -65793L,
+  errWSTransportError = -65794L,
+  errWSParseError = -65795L,
+  errWSTimeoutError = -65796L
+};
+enum WSTypeID {
+
+
+
+
+  eWSUnknownType = 0,
+
+
+
+
+  eWSNullType = 1,
+
+
+
+
+  eWSBooleanType = 2,
+
+
+
+
+  eWSIntegerType = 3,
+
+
+
+
+  eWSDoubleType = 4,
+
+
+
+
+  eWSStringType = 5,
+
+
+
+
+  eWSDateType = 6,
+
+
+
+
+  eWSDataType = 7,
+
+
+
+
+  eWSArrayType = 8,
+
+
+
+
+  eWSDictionaryType = 9
+};
+typedef enum WSTypeID WSTypeID;
+extern WSTypeID
+WSGetWSTypeIDFromCFType(CFTypeRef ref) ;
+extern CFTypeID
+WSGetCFTypeIDFromWSTypeID(WSTypeID typeID) ;
+
+
+typedef void * ( * WSClientContextRetainCallBackProcPtr)(void * info);
+typedef void ( * WSClientContextReleaseCallBackProcPtr)(void * info);
+typedef CFStringRef ( * WSClientContextCopyDescriptionCallBackProcPtr)(void * info);
+struct WSClientContext {
+
+
+
+
+  CFIndex version;
+
+
+
+
+  void * info;
+
+
+
+
+  WSClientContextRetainCallBackProcPtr retain;
+
+
+
+
+  WSClientContextReleaseCallBackProcPtr release;
+
+
+
+
+  WSClientContextCopyDescriptionCallBackProcPtr copyDescription;
+};
+typedef struct WSClientContext WSClientContext;
+extern CFStringRef kWSXMLRPCProtocol;
+extern CFStringRef kWSSOAP1999Protocol;
+extern CFStringRef kWSSOAP2001Protocol;
+extern CFStringRef kWSMethodInvocationResult;
+
+
+
+extern CFStringRef kWSFaultString;
+extern CFStringRef kWSFaultCode;
+extern CFStringRef kWSFaultExtra;
+extern CFStringRef kWSNetworkStreamFaultString;
+extern CFStringRef kWSStreamErrorMessage;
+extern CFStringRef kWSStreamErrorDomain;
+extern CFStringRef kWSStreamErrorError;
+extern CFStringRef kWSHTTPMessage;
+extern CFStringRef kWSHTTPResponseMessage;
+
+
+
+
+
+extern CFStringRef kWSHTTPVersion;
+extern CFStringRef kWSHTTPExtraHeaders;
+extern CFStringRef kWSHTTPProxy;
+extern CFStringRef kWSHTTPFollowsRedirects;
+extern CFStringRef kWSDebugOutgoingHeaders;
+extern CFStringRef kWSDebugOutgoingBody;
+extern CFStringRef kWSDebugIncomingHeaders;
+extern CFStringRef kWSDebugIncomingBody;
+
+
+
+
+
+extern CFStringRef kWSSOAPMethodNamespaceURI;
+extern CFStringRef kWSSOAPBodyEncodingStyle;
+extern CFStringRef kWSSOAPStyleDoc;
+extern CFStringRef kWSSOAPStyleRPC;
+
+
+
+
+
+
+
+extern CFStringRef kWSSOAPMessageHeaders;
+
+
+
+
+
+extern CFStringRef kWSRecordParameterOrder;
+extern CFStringRef kWSRecordNamespaceURI;
+extern CFStringRef kWSRecordType;
+
+
+
+
+
+extern CFStringRef kWSMethodInvocationResultParameterName;
+
+
+
+
+
+
+extern CFStringRef kWSMethodInvocationTimeoutValue;
+typedef struct OpaqueWSMethodInvocationRef* WSMethodInvocationRef;
+extern CFTypeID
+WSMethodInvocationGetTypeID(void) ;
+extern WSMethodInvocationRef
+WSMethodInvocationCreate(
+  CFURLRef url,
+  CFStringRef methodName,
+  CFStringRef protocol) ;
+extern WSMethodInvocationRef
+WSMethodInvocationCreateFromSerialization(CFDataRef contract) ;
+extern CFDataRef
+WSMethodInvocationCopySerialization(WSMethodInvocationRef invocation) ;
+extern void
+WSMethodInvocationSetParameters(
+  WSMethodInvocationRef invocation,
+  CFDictionaryRef parameters,
+  CFArrayRef parameterOrder) ;
+extern CFDictionaryRef
+WSMethodInvocationCopyParameters(
+  WSMethodInvocationRef invocation,
+  CFArrayRef * parameterOrder) ;
+extern void
+WSMethodInvocationSetProperty(
+  WSMethodInvocationRef invocation,
+  CFStringRef propertyName,
+  CFTypeRef propertyValue) ;
+extern CFTypeRef
+WSMethodInvocationCopyProperty(
+  WSMethodInvocationRef invocation,
+  CFStringRef propertyName) ;
+extern CFDictionaryRef
+WSMethodInvocationInvoke(WSMethodInvocationRef invocation) ;
+typedef void ( * WSMethodInvocationCallBackProcPtr)(WSMethodInvocationRef invocation, void *info, CFDictionaryRef outRef);
+extern void
+WSMethodInvocationSetCallBack(
+  WSMethodInvocationRef invocation,
+  WSMethodInvocationCallBackProcPtr clientCB,
+  WSClientContext * context) ;
+extern void
+WSMethodInvocationScheduleWithRunLoop(
+  WSMethodInvocationRef invocation,
+  CFRunLoopRef runLoop,
+  CFStringRef runLoopMode) ;
+extern void
+WSMethodInvocationUnscheduleFromRunLoop(
+  WSMethodInvocationRef invocation,
+  CFRunLoopRef runLoop,
+  CFStringRef runLoopMode) ;
+extern Boolean
+WSMethodResultIsFault(CFDictionaryRef methodResult) ;
+typedef CFStringRef ( * WSMethodInvocationSerializationProcPtr)(WSMethodInvocationRef invocation, CFTypeRef obj, void *info);
+extern void
+WSMethodInvocationAddSerializationOverride(
+  WSMethodInvocationRef invocation,
+  CFTypeID objType,
+  WSMethodInvocationSerializationProcPtr serializationProc,
+  WSClientContext * context) ;
+typedef CFTypeRef ( * WSMethodInvocationDeserializationProcPtr)(WSMethodInvocationRef invocation, CFXMLTreeRef msgRoot, CFXMLTreeRef deserializeRoot, void *info);
+extern void
+WSMethodInvocationAddDeserializationOverride(
+  WSMethodInvocationRef invocation,
+  CFStringRef typeNamespace,
+  CFStringRef typeName,
+  WSMethodInvocationDeserializationProcPtr deserializationProc,
+  WSClientContext * context) ;
+
+
+
+
+
+
+
+
+
+}
+
+
+
+enum {
+  kAllTypographicFeaturesType = 0,
+  kLigaturesType = 1,
+  kCursiveConnectionType = 2,
+  kLetterCaseType = 3,
+  kVerticalSubstitutionType = 4,
+  kLinguisticRearrangementType = 5,
+  kNumberSpacingType = 6,
+  kSmartSwashType = 8,
+  kDiacriticsType = 9,
+  kVerticalPositionType = 10,
+  kFractionsType = 11,
+  kOverlappingCharactersType = 13,
+  kTypographicExtrasType = 14,
+  kMathematicalExtrasType = 15,
+  kOrnamentSetsType = 16,
+  kCharacterAlternativesType = 17,
+  kDesignComplexityType = 18,
+  kStyleOptionsType = 19,
+  kCharacterShapeType = 20,
+  kNumberCaseType = 21,
+  kTextSpacingType = 22,
+  kTransliterationType = 23,
+  kAnnotationType = 24,
+  kKanaSpacingType = 25,
+  kIdeographicSpacingType = 26,
+  kUnicodeDecompositionType = 27,
+  kRubyKanaType = 28,
+  kCJKSymbolAlternativesType = 29,
+  kIdeographicAlternativesType = 30,
+  kCJKVerticalRomanPlacementType = 31,
+  kItalicCJKRomanType = 32,
+  kCJKRomanSpacingType = 103,
+  kLastFeatureType = -1
+};
+
+
+
+
+
+
+enum {
+  kAllTypeFeaturesOnSelector = 0,
+  kAllTypeFeaturesOffSelector = 1
+};
+
+
+
+
+
+
+
+enum {
+  kRequiredLigaturesOnSelector = 0,
+  kRequiredLigaturesOffSelector = 1,
+  kCommonLigaturesOnSelector = 2,
+  kCommonLigaturesOffSelector = 3,
+  kRareLigaturesOnSelector = 4,
+  kRareLigaturesOffSelector = 5,
+  kLogosOnSelector = 6,
+  kLogosOffSelector = 7,
+  kRebusPicturesOnSelector = 8,
+  kRebusPicturesOffSelector = 9,
+  kDiphthongLigaturesOnSelector = 10,
+  kDiphthongLigaturesOffSelector = 11,
+  kSquaredLigaturesOnSelector = 12,
+  kSquaredLigaturesOffSelector = 13,
+  kAbbrevSquaredLigaturesOnSelector = 14,
+  kAbbrevSquaredLigaturesOffSelector = 15,
+  kSymbolLigaturesOnSelector = 16,
+  kSymbolLigaturesOffSelector = 17
+};
+
+
+
+
+
+
+enum {
+  kUnconnectedSelector = 0,
+  kPartiallyConnectedSelector = 1,
+  kCursiveSelector = 2
+};
+
+
+
+
+
+
+enum {
+  kUpperAndLowerCaseSelector = 0,
+  kAllCapsSelector = 1,
+  kAllLowerCaseSelector = 2,
+  kSmallCapsSelector = 3,
+  kInitialCapsSelector = 4,
+  kInitialCapsAndSmallCapsSelector = 5
+};
+
+
+
+
+
+
+enum {
+  kSubstituteVerticalFormsOnSelector = 0,
+  kSubstituteVerticalFormsOffSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kLinguisticRearrangementOnSelector = 0,
+  kLinguisticRearrangementOffSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kMonospacedNumbersSelector = 0,
+  kProportionalNumbersSelector = 1,
+  kThirdWidthNumbersSelector = 2,
+  kQuarterWidthNumbersSelector = 3
+};
+
+
+
+
+
+
+enum {
+  kWordInitialSwashesOnSelector = 0,
+  kWordInitialSwashesOffSelector = 1,
+  kWordFinalSwashesOnSelector = 2,
+  kWordFinalSwashesOffSelector = 3,
+  kLineInitialSwashesOnSelector = 4,
+  kLineInitialSwashesOffSelector = 5,
+  kLineFinalSwashesOnSelector = 6,
+  kLineFinalSwashesOffSelector = 7,
+  kNonFinalSwashesOnSelector = 8,
+  kNonFinalSwashesOffSelector = 9
+};
+
+
+
+
+
+
+enum {
+  kShowDiacriticsSelector = 0,
+  kHideDiacriticsSelector = 1,
+  kDecomposeDiacriticsSelector = 2
+};
+
+
+
+
+
+
+enum {
+  kNormalPositionSelector = 0,
+  kSuperiorsSelector = 1,
+  kInferiorsSelector = 2,
+  kOrdinalsSelector = 3
+};
+
+
+
+
+
+
+enum {
+  kNoFractionsSelector = 0,
+  kVerticalFractionsSelector = 1,
+  kDiagonalFractionsSelector = 2
+};
+
+
+
+
+
+
+enum {
+  kPreventOverlapOnSelector = 0,
+  kPreventOverlapOffSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kHyphensToEmDashOnSelector = 0,
+  kHyphensToEmDashOffSelector = 1,
+  kHyphenToEnDashOnSelector = 2,
+  kHyphenToEnDashOffSelector = 3,
+  kSlashedZeroOnSelector = 4,
+  kSlashedZeroOffSelector = 5,
+  kFormInterrobangOnSelector = 6,
+  kFormInterrobangOffSelector = 7,
+  kSmartQuotesOnSelector = 8,
+  kSmartQuotesOffSelector = 9,
+  kPeriodsToEllipsisOnSelector = 10,
+  kPeriodsToEllipsisOffSelector = 11
+};
+
+
+
+
+
+
+enum {
+  kHyphenToMinusOnSelector = 0,
+  kHyphenToMinusOffSelector = 1,
+  kAsteriskToMultiplyOnSelector = 2,
+  kAsteriskToMultiplyOffSelector = 3,
+  kSlashToDivideOnSelector = 4,
+  kSlashToDivideOffSelector = 5,
+  kInequalityLigaturesOnSelector = 6,
+  kInequalityLigaturesOffSelector = 7,
+  kExponentsOnSelector = 8,
+  kExponentsOffSelector = 9
+};
+
+
+
+
+
+
+enum {
+  kNoOrnamentsSelector = 0,
+  kDingbatsSelector = 1,
+  kPiCharactersSelector = 2,
+  kFleuronsSelector = 3,
+  kDecorativeBordersSelector = 4,
+  kInternationalSymbolsSelector = 5,
+  kMathSymbolsSelector = 6
+};
+
+
+
+
+
+
+enum {
+  kNoAlternatesSelector = 0
+};
+
+
+
+
+
+
+enum {
+  kDesignLevel1Selector = 0,
+  kDesignLevel2Selector = 1,
+  kDesignLevel3Selector = 2,
+  kDesignLevel4Selector = 3,
+  kDesignLevel5Selector = 4
+};
+
+
+
+
+
+
+enum {
+  kNoStyleOptionsSelector = 0,
+  kDisplayTextSelector = 1,
+  kEngravedTextSelector = 2,
+  kIlluminatedCapsSelector = 3,
+  kTitlingCapsSelector = 4,
+  kTallCapsSelector = 5
+};
+
+
+
+
+
+
+enum {
+  kTraditionalCharactersSelector = 0,
+  kSimplifiedCharactersSelector = 1,
+  kJIS1978CharactersSelector = 2,
+  kJIS1983CharactersSelector = 3,
+  kJIS1990CharactersSelector = 4,
+  kTraditionalAltOneSelector = 5,
+  kTraditionalAltTwoSelector = 6,
+  kTraditionalAltThreeSelector = 7,
+  kTraditionalAltFourSelector = 8,
+  kTraditionalAltFiveSelector = 9,
+  kExpertCharactersSelector = 10
+};
+
+
+
+
+
+
+enum {
+  kLowerCaseNumbersSelector = 0,
+  kUpperCaseNumbersSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kProportionalTextSelector = 0,
+  kMonospacedTextSelector = 1,
+  kHalfWidthTextSelector = 2
+};
+
+
+
+
+
+
+enum {
+  kNoTransliterationSelector = 0,
+  kHanjaToHangulSelector = 1,
+  kHiraganaToKatakanaSelector = 2,
+  kKatakanaToHiraganaSelector = 3,
+  kKanaToRomanizationSelector = 4,
+  kRomanizationToHiraganaSelector = 5,
+  kRomanizationToKatakanaSelector = 6,
+  kHanjaToHangulAltOneSelector = 7,
+  kHanjaToHangulAltTwoSelector = 8,
+  kHanjaToHangulAltThreeSelector = 9
+};
+
+
+
+
+
+
+enum {
+  kNoAnnotationSelector = 0,
+  kBoxAnnotationSelector = 1,
+  kRoundedBoxAnnotationSelector = 2,
+  kCircleAnnotationSelector = 3,
+  kInvertedCircleAnnotationSelector = 4,
+  kParenthesisAnnotationSelector = 5,
+  kPeriodAnnotationSelector = 6,
+  kRomanNumeralAnnotationSelector = 7,
+  kDiamondAnnotationSelector = 8,
+  kInvertedBoxAnnotationSelector = 9,
+  kInvertedRoundedBoxAnnotationSelector = 10
+};
+
+
+
+
+
+
+enum {
+  kFullWidthKanaSelector = 0,
+  kProportionalKanaSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kFullWidthIdeographsSelector = 0,
+  kProportionalIdeographsSelector = 1,
+  kHalfWidthIdeographsSelector = 2
+};
+
+
+
+
+
+
+enum {
+  kCanonicalCompositionOnSelector = 0,
+  kCanonicalCompositionOffSelector = 1,
+  kCompatibilityCompositionOnSelector = 2,
+  kCompatibilityCompositionOffSelector = 3,
+  kTranscodingCompositionOnSelector = 4,
+  kTranscodingCompositionOffSelector = 5
+};
+
+
+
+
+
+
+enum {
+  kNoRubyKanaSelector = 0,
+  kRubyKanaSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kNoCJKSymbolAlternativesSelector = 0,
+  kCJKSymbolAltOneSelector = 1,
+  kCJKSymbolAltTwoSelector = 2,
+  kCJKSymbolAltThreeSelector = 3,
+  kCJKSymbolAltFourSelector = 4,
+  kCJKSymbolAltFiveSelector = 5
+};
+
+
+
+
+
+
+enum {
+  kNoIdeographicAlternativesSelector = 0,
+  kIdeographicAltOneSelector = 1,
+  kIdeographicAltTwoSelector = 2,
+  kIdeographicAltThreeSelector = 3,
+  kIdeographicAltFourSelector = 4,
+  kIdeographicAltFiveSelector = 5
+};
+
+
+
+
+
+
+enum {
+  kCJKVerticalRomanCenteredSelector = 0,
+  kCJKVerticalRomanHBaselineSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kNoCJKItalicRomanSelector = 0,
+  kCJKItalicRomanSelector = 1
+};
+
+
+
+
+
+
+enum {
+  kHalfWidthCJKRomanSelector = 0,
+  kProportionalCJKRomanSelector = 1,
+  kDefaultCJKRomanSelector = 2,
+  kFullWidthCJKRomanSelector = 3
+};
+
+
+
+
+
+enum {
+  kSFNTLookupSimpleArray = 0,
+  kSFNTLookupSegmentSingle = 2,
+  kSFNTLookupSegmentArray = 4,
+  kSFNTLookupSingleTable = 6,
+  kSFNTLookupTrimmedArray = 8
+};
+
+typedef UInt16 SFNTLookupTableFormat;
+typedef UInt16 SFNTLookupValue;
+typedef UInt16 SFNTLookupOffset;
+typedef UInt32 SFNTLookupKind;
+
+
+
+
+
+
+struct SFNTLookupBinarySearchHeader {
+  UInt16 unitSize;
+  UInt16 nUnits;
+  UInt16 searchRange;
+  UInt16 entrySelector;
+  UInt16 rangeShift;
+};
+typedef struct SFNTLookupBinarySearchHeader SFNTLookupBinarySearchHeader;
+
+struct SFNTLookupArrayHeader {
+  SFNTLookupValue lookupValues[1];
+};
+typedef struct SFNTLookupArrayHeader SFNTLookupArrayHeader;
+
+struct SFNTLookupTrimmedArrayHeader {
+  UInt16 firstGlyph;
+  UInt16 count;
+  SFNTLookupValue valueArray[1];
+};
+typedef struct SFNTLookupTrimmedArrayHeader SFNTLookupTrimmedArrayHeader;
+
+
+
+
+
+
+struct SFNTLookupSegment {
+  UInt16 lastGlyph;
+  UInt16 firstGlyph;
+  UInt16 value[1];
+};
+typedef struct SFNTLookupSegment SFNTLookupSegment;
+struct SFNTLookupSegmentHeader {
+  SFNTLookupBinarySearchHeader binSearch;
+  SFNTLookupSegment segments[1];
+};
+typedef struct SFNTLookupSegmentHeader SFNTLookupSegmentHeader;
+
+struct SFNTLookupSingle {
+  UInt16 glyph;
+  UInt16 value[1];
+};
+typedef struct SFNTLookupSingle SFNTLookupSingle;
+struct SFNTLookupSingleHeader {
+  SFNTLookupBinarySearchHeader binSearch;
+  SFNTLookupSingle entries[1];
+};
+typedef struct SFNTLookupSingleHeader SFNTLookupSingleHeader;
+
+union SFNTLookupFormatSpecificHeader {
+  SFNTLookupArrayHeader theArray;
+  SFNTLookupSegmentHeader segment;
+  SFNTLookupSingleHeader single;
+  SFNTLookupTrimmedArrayHeader trimmedArray;
+};
+typedef union SFNTLookupFormatSpecificHeader SFNTLookupFormatSpecificHeader;
+
+struct SFNTLookupTable {
+  SFNTLookupTableFormat format;
+  SFNTLookupFormatSpecificHeader fsHeader;
+};
+typedef struct SFNTLookupTable SFNTLookupTable;
+typedef SFNTLookupTable * SFNTLookupTablePtr;
+typedef SFNTLookupTablePtr * SFNTLookupTableHandle;
+
+
+enum {
+  kSTClassEndOfText = 0,
+  kSTClassOutOfBounds = 1,
+  kSTClassDeletedGlyph = 2,
+  kSTClassEndOfLine = 3,
+  kSTSetMark = 0x8000,
+  kSTNoAdvance = 0x4000,
+  kSTMarkEnd = 0x2000,
+  kSTLigActionMask = 0x3FFF,
+  kSTRearrVerbMask = 0x000F
+};
+
+typedef UInt8 STClass;
+typedef UInt8 STEntryIndex;
+struct STHeader {
+  UInt8 filler;
+  STClass nClasses;
+  UInt16 classTableOffset;
+  UInt16 stateArrayOffset;
+  UInt16 entryTableOffset;
+};
+typedef struct STHeader STHeader;
+struct STClassTable {
+  UInt16 firstGlyph;
+  UInt16 nGlyphs;
+  STClass classes[1];
+};
+typedef struct STClassTable STClassTable;
+struct STEntryZero {
+  UInt16 newState;
+  UInt16 flags;
+};
+typedef struct STEntryZero STEntryZero;
+struct STEntryOne {
+  UInt16 newState;
+  UInt16 flags;
+  UInt16 offset1;
+};
+typedef struct STEntryOne STEntryOne;
+struct STEntryTwo {
+  UInt16 newState;
+  UInt16 flags;
+  UInt16 offset1;
+  UInt16 offset2;
+};
+typedef struct STEntryTwo STEntryTwo;
+
+
+enum {
+  kSTXHasLigAction = 0x2000
+};
+
+
+typedef UInt16 STXClass;
+typedef UInt16 STXStateIndex;
+typedef UInt16 STXEntryIndex;
+struct STXHeader {
+  UInt32 nClasses;
+  UInt32 classTableOffset;
+  UInt32 stateArrayOffset;
+  UInt32 entryTableOffset;
+};
+typedef struct STXHeader STXHeader;
+
+typedef SFNTLookupTable STXClassTable;
+struct STXEntryZero {
+  STXStateIndex newState;
+  UInt16 flags;
+};
+typedef struct STXEntryZero STXEntryZero;
+struct STXEntryOne {
+  STXStateIndex newState;
+  UInt16 flags;
+  UInt16 index1;
+};
+typedef struct STXEntryOne STXEntryOne;
+struct STXEntryTwo {
+  STXStateIndex newState;
+  UInt16 flags;
+  UInt16 index1;
+  UInt16 index2;
+};
+typedef struct STXEntryTwo STXEntryTwo;
+
+
+
+enum {
+  kLCARTag = 0x6C636172,
+  kLCARCurrentVersion = 0x00010000,
+  kLCARLinearFormat = 0,
+  kLCARCtlPointFormat = 1
+};
+
+
+struct LcarCaretClassEntry {
+  UInt16 count;
+  UInt16 partials[1];
+};
+typedef struct LcarCaretClassEntry LcarCaretClassEntry;
+struct LcarCaretTable {
+  Fixed version;
+  UInt16 format;
+  SFNTLookupTable lookup;
+};
+typedef struct LcarCaretTable LcarCaretTable;
+typedef LcarCaretTable * LcarCaretTablePtr;
+
+
+
+enum {
+  kJUSTTag = 0x6A757374,
+  kJUSTCurrentVersion = 0x00010000,
+  kJUSTStandardFormat = 0,
+  kJUSTnoGlyphcode = 0xFFFF,
+  kJUSTpcDecompositionAction = 0,
+  kJUSTpcUnconditionalAddAction = 1,
+  kJUSTpcConditionalAddAction = 2,
+  kJUSTpcGlyphStretchAction = 3,
+  kJUSTpcDuctilityAction = 4,
+  kJUSTpcGlyphRepeatAddAction = 5
+};
+
+
+enum {
+  kJUSTKashidaPriority = 0,
+  kJUSTSpacePriority = 1,
+  kJUSTLetterPriority = 2,
+  kJUSTNullPriority = 3,
+  kJUSTPriorityCount = 4
+};
+
+
+enum {
+  kJUSTOverridePriority = 0x8000,
+  kJUSTOverrideLimits = 0x4000,
+  kJUSTOverrideUnlimited = 0x2000,
+  kJUSTUnlimited = 0x1000,
+  kJUSTPriorityMask = 0x0003
+};
+
+
+typedef UInt16 JustPCActionType;
+typedef UInt16 JustificationFlags;
+
+struct JustPCDecompositionAction {
+  Fixed lowerLimit;
+  Fixed upperLimit;
+  UInt16 order;
+  UInt16 count;
+  UInt16 glyphs[1];
+};
+typedef struct JustPCDecompositionAction JustPCDecompositionAction;
+
+
+typedef UInt16 JustPCUnconditionalAddAction;
+
+
+
+
+
+struct JustPCConditionalAddAction {
+  Fixed substThreshhold;
+  UInt16 addGlyph;
+  UInt16 substGlyph;
+};
+typedef struct JustPCConditionalAddAction JustPCConditionalAddAction;
+
+struct JustPCDuctilityAction {
+  UInt32 ductilityAxis;
+  Fixed minimumLimit;
+  Fixed noStretchValue;
+  Fixed maximumLimit;
+};
+typedef struct JustPCDuctilityAction JustPCDuctilityAction;
+
+
+
+
+
+struct JustPCGlyphRepeatAddAction {
+  UInt16 flags;
+  UInt16 glyph;
+};
+typedef struct JustPCGlyphRepeatAddAction JustPCGlyphRepeatAddAction;
+
+struct JustPCActionSubrecord {
+  UInt16 theClass;
+  JustPCActionType theType;
+  UInt32 length;
+  UInt32 data;
+};
+typedef struct JustPCActionSubrecord JustPCActionSubrecord;
+
+struct JustPCAction {
+  UInt32 actionCount;
+  JustPCActionSubrecord actions[1];
+};
+typedef struct JustPCAction JustPCAction;
+
+
+
+
+struct JustWidthDeltaEntry {
+  UInt32 justClass;
+  Fixed beforeGrowLimit;
+  Fixed beforeShrinkLimit;
+  Fixed afterGrowLimit;
+  Fixed afterShrinkLimit;
+  JustificationFlags growFlags;
+  JustificationFlags shrinkFlags;
+};
+typedef struct JustWidthDeltaEntry JustWidthDeltaEntry;
+struct JustWidthDeltaGroup {
+  UInt32 count;
+  JustWidthDeltaEntry entries[1];
+};
+typedef struct JustWidthDeltaGroup JustWidthDeltaGroup;
+
+struct JustPostcompTable {
+  SFNTLookupTable lookupTable;
+
+};
+typedef struct JustPostcompTable JustPostcompTable;
+struct JustDirectionTable {
+  UInt16 justClass;
+  UInt16 widthDeltaClusters;
+  UInt16 postcomp;
+  SFNTLookupTable lookup;
+};
+typedef struct JustDirectionTable JustDirectionTable;
+struct JustTable {
+  Fixed version;
+  UInt16 format;
+  UInt16 horizHeaderOffset;
+  UInt16 vertHeaderOffset;
+};
+typedef struct JustTable JustTable;
+
+
+
+enum {
+  kOPBDTag = 0x6F706264,
+  kOPBDCurrentVersion = 0x00010000,
+  kOPBDDistanceFormat = 0,
+  kOPBDControlPointFormat = 1
+};
+
+
+
+typedef UInt16 OpbdTableFormat;
+
+
+
+
+
+struct OpbdSideValues {
+  SInt16 leftSideShift;
+  SInt16 topSideShift;
+  SInt16 rightSideShift;
+  SInt16 bottomSideShift;
+};
+typedef struct OpbdSideValues OpbdSideValues;
+struct OpbdTable {
+  Fixed version;
+  OpbdTableFormat format;
+  SFNTLookupTable lookupTable;
+};
+typedef struct OpbdTable OpbdTable;
+
+
+
+enum {
+  kMORTTag = 0x6D6F7274,
+  kMORTCurrentVersion = 0x00010000,
+
+  kMORTCoverVertical = 0x8000,
+  kMORTCoverDescending = 0x4000,
+  kMORTCoverIgnoreVertical = 0x2000,
+  kMORTCoverTypeMask = 0x000F,
+  kMORTRearrangementType = 0,
+  kMORTContextualType = 1,
+  kMORTLigatureType = 2,
+  kMORTSwashType = 4,
+  kMORTInsertionType = 5,
+  kMORTLigLastAction = (long)0x80000000,
+  kMORTLigStoreLigature = 0x40000000,
+  kMORTLigFormOffsetMask = 0x3FFFFFFF,
+  kMORTLigFormOffsetShift = 2,
+  kMORTraNoAction = 0,
+  kMORTraxA = 1,
+  kMORTraDx = 2,
+  kMORTraDxA = 3,
+  kMORTraxAB = 4,
+  kMORTraxBA = 5,
+  kMORTraCDx = 6,
+  kMORTraDCx = 7,
+  kMORTraCDxA = 8,
+  kMORTraDCxA = 9,
+  kMORTraDxAB = 10,
+  kMORTraDxBA = 11,
+  kMORTraCDxAB = 12,
+  kMORTraCDxBA = 13,
+  kMORTraDCxAB = 14,
+  kMORTraDCxBA = 15,
+
+  kMORTDoInsertionsBefore = 0x80,
+  kMORTIsSplitVowelPiece = 0x40,
+  kMORTInsertionsCountMask = 0x3F,
+  kMORTCurrInsertKashidaLike = 0x2000,
+  kMORTMarkInsertKashidaLike = 0x1000,
+  kMORTCurrInsertBefore = 0x0800,
+  kMORTMarkInsertBefore = 0x0400,
+  kMORTMarkJustTableCountMask = 0x3F80,
+  kMORTMarkJustTableCountShift = 7,
+  kMORTCurrJustTableCountMask = 0x007F,
+  kMORTCurrJustTableCountShift = 0,
+  kMORTCurrInsertCountMask = 0x03E0,
+  kMORTCurrInsertCountShift = 5,
+  kMORTMarkInsertCountMask = 0x001F,
+  kMORTMarkInsertCountShift = 0
+};
+
+
+
+typedef UInt32 MortSubtableMaskFlags;
+typedef UInt32 MortLigatureActionEntry;
+struct MortRearrangementSubtable {
+  STHeader header;
+};
+typedef struct MortRearrangementSubtable MortRearrangementSubtable;
+struct MortContextualSubtable {
+  STHeader header;
+  UInt16 substitutionTableOffset;
+};
+typedef struct MortContextualSubtable MortContextualSubtable;
+struct MortLigatureSubtable {
+  STHeader header;
+  UInt16 ligatureActionTableOffset;
+  UInt16 componentTableOffset;
+  UInt16 ligatureTableOffset;
+};
+typedef struct MortLigatureSubtable MortLigatureSubtable;
+struct MortSwashSubtable {
+  SFNTLookupTable lookup;
+};
+typedef struct MortSwashSubtable MortSwashSubtable;
+struct MortInsertionSubtable {
+  STHeader header;
+};
+typedef struct MortInsertionSubtable MortInsertionSubtable;
+union MortSpecificSubtable {
+  MortRearrangementSubtable rearrangement;
+  MortContextualSubtable contextual;
+  MortLigatureSubtable ligature;
+  MortSwashSubtable swash;
+  MortInsertionSubtable insertion;
+};
+typedef union MortSpecificSubtable MortSpecificSubtable;
+struct MortSubtable {
+  UInt16 length;
+  UInt16 coverage;
+  MortSubtableMaskFlags flags;
+  MortSpecificSubtable u;
+};
+typedef struct MortSubtable MortSubtable;
+struct MortFeatureEntry {
+  UInt16 featureType;
+  UInt16 featureSelector;
+  MortSubtableMaskFlags enableFlags;
+  MortSubtableMaskFlags disableFlags;
+};
+typedef struct MortFeatureEntry MortFeatureEntry;
+struct MortChain {
+  MortSubtableMaskFlags defaultFlags;
+  UInt32 length;
+  UInt16 nFeatures;
+  UInt16 nSubtables;
+  MortFeatureEntry featureEntries[1];
+
+};
+typedef struct MortChain MortChain;
+struct MortTable {
+  Fixed version;
+  UInt32 nChains;
+  MortChain chains[1];
+};
+typedef struct MortTable MortTable;
+
+
+
+enum {
+  kMORXTag = 0x6D6F7278,
+  kMORXCurrentVersion = 0x00020000,
+
+  kMORXCoverVertical = (long)0x80000000,
+  kMORXCoverDescending = 0x40000000,
+  kMORXCoverIgnoreVertical = 0x20000000,
+  kMORXCoverTypeMask = 0x000000FF
+};
+
+
+struct MorxRearrangementSubtable {
+  STXHeader header;
+};
+typedef struct MorxRearrangementSubtable MorxRearrangementSubtable;
+struct MorxContextualSubtable {
+  STXHeader header;
+  UInt32 substitutionTableOffset;
+};
+typedef struct MorxContextualSubtable MorxContextualSubtable;
+struct MorxLigatureSubtable {
+  STXHeader header;
+  UInt32 ligatureActionTableOffset;
+  UInt32 componentTableOffset;
+  UInt32 ligatureTableOffset;
+};
+typedef struct MorxLigatureSubtable MorxLigatureSubtable;
+struct MorxInsertionSubtable {
+  STXHeader header;
+  UInt32 insertionGlyphTableOffset;
+};
+typedef struct MorxInsertionSubtable MorxInsertionSubtable;
+union MorxSpecificSubtable {
+  MorxRearrangementSubtable rearrangement;
+  MorxContextualSubtable contextual;
+  MorxLigatureSubtable ligature;
+  MortSwashSubtable swash;
+  MorxInsertionSubtable insertion;
+};
+typedef union MorxSpecificSubtable MorxSpecificSubtable;
+struct MorxSubtable {
+  UInt32 length;
+  UInt32 coverage;
+  MortSubtableMaskFlags flags;
+  MorxSpecificSubtable u;
+};
+typedef struct MorxSubtable MorxSubtable;
+struct MorxChain {
+  MortSubtableMaskFlags defaultFlags;
+  UInt32 length;
+  UInt32 nFeatures;
+  UInt32 nSubtables;
+  MortFeatureEntry featureEntries[1];
+
+};
+typedef struct MorxChain MorxChain;
+struct MorxTable {
+  Fixed version;
+  UInt32 nChains;
+  MorxChain chains[1];
+};
+typedef struct MorxTable MorxTable;
+
+
+
+enum {
+  kPROPTag = 0x70726F70,
+  kPROPCurrentVersion = 0x00030000,
+  kPROPPairOffsetShift = 8,
+  kPROPPairOffsetSign = 7,
+  kPROPIsFloaterMask = 0x8000,
+  kPROPCanHangLTMask = 0x4000,
+  kPROPCanHangRBMask = 0x2000,
+  kPROPUseRLPairMask = 0x1000,
+  kPROPPairOffsetMask = 0x0F00,
+  kPROPRightConnectMask = 0x0080,
+  kPROPZeroReserved = 0x0060,
+  kPROPDirectionMask = 0x001F
+};
+
+
+enum {
+  kPROPLDirectionClass = 0,
+  kPROPRDirectionClass = 1,
+  kPROPALDirectionClass = 2,
+  kPROPENDirectionClass = 3,
+  kPROPESDirectionClass = 4,
+  kPROPETDirectionClass = 5,
+  kPROPANDirectionClass = 6,
+  kPROPCSDirectionClass = 7,
+  kPROPPSDirectionClass = 8,
+  kPROPSDirectionClass = 9,
+  kPROPWSDirectionClass = 10,
+  kPROPONDirectionClass = 11,
+  kPROPSENDirectionClass = 12,
+  kPROPLREDirectionClass = 13,
+  kPROPLRODirectionClass = 14,
+  kPROPRLEDirectionClass = 15,
+  kPROPRLODirectionClass = 16,
+  kPROPPDFDirectionClass = 17,
+  kPROPNSMDirectionClass = 18,
+  kPROPBNDirectionClass = 19,
+  kPROPNumDirectionClasses = 20
+};
+
+
+
+typedef UInt16 PropCharProperties;
+struct PropTable {
+  Fixed version;
+  UInt16 format;
+  PropCharProperties defaultProps;
+  SFNTLookupTable lookup;
+};
+typedef struct PropTable PropTable;
+struct PropLookupSegment {
+  UInt16 lastGlyph;
+  UInt16 firstGlyph;
+  UInt16 value;
+};
+typedef struct PropLookupSegment PropLookupSegment;
+struct PropLookupSingle {
+  UInt16 glyph;
+  PropCharProperties props;
+};
+typedef struct PropLookupSingle PropLookupSingle;
+
+
+
+enum {
+  kTRAKTag = 0x7472616B,
+  kTRAKCurrentVersion = 0x00010000,
+  kTRAKUniformFormat = 0
+};
+
+
+
+typedef SInt16 TrakValue;
+struct TrakTableEntry {
+  Fixed track;
+  UInt16 nameTableIndex;
+  UInt16 sizesOffset;
+};
+typedef struct TrakTableEntry TrakTableEntry;
+struct TrakTableData {
+  UInt16 nTracks;
+  UInt16 nSizes;
+  UInt32 sizeTableOffset;
+  TrakTableEntry trakTable[1];
+};
+typedef struct TrakTableData TrakTableData;
+struct TrakTable {
+  Fixed version;
+  UInt16 format;
+  UInt16 horizOffset;
+  UInt16 vertOffset;
+};
+typedef struct TrakTable TrakTable;
+
+
+
+enum {
+  kKERNTag = 0x6B65726E,
+  kKERNCurrentVersion = 0x00010000,
+  kKERNVertical = 0x8000,
+  kKERNResetCrossStream = 0x8000,
+  kKERNCrossStream = 0x4000,
+  kKERNVariation = 0x2000,
+  kKERNUnusedBits = 0x1F00,
+  kKERNFormatMask = 0x00FF
+};
+
+enum {
+  kKERNOrderedList = 0,
+  kKERNStateTable = 1,
+  kKERNSimpleArray = 2,
+  kKERNIndexArray = 3
+};
+
+
+enum {
+  kKERNLineStart = 0x00000001,
+  kKERNLineEndKerning = 0x00000002,
+  kKERNNoCrossKerning = 0x00000004,
+  kKERNNotesRequested = 0x00000008,
+  kKERNNoStakeNote = 1,
+  kKERNCrossStreamResetNote = 2,
+  kKERNNotApplied = 0x00000001
+};
+
+
+
+typedef UInt8 KernTableFormat;
+typedef UInt16 KernSubtableInfo;
+typedef SInt16 KernKerningValue;
+typedef UInt16 KernArrayOffset;
+
+struct KernVersion0Header {
+  UInt16 version;
+  UInt16 nTables;
+  UInt16 firstSubtable[1];
+};
+typedef struct KernVersion0Header KernVersion0Header;
+
+struct KernTableHeader {
+  Fixed version;
+  SInt32 nTables;
+  UInt16 firstSubtable[1];
+};
+typedef struct KernTableHeader KernTableHeader;
+typedef KernTableHeader * KernTableHeaderPtr;
+typedef KernTableHeaderPtr * KernTableHeaderHandle;
+struct KernKerningPair {
+  UInt16 left;
+  UInt16 right;
+};
+typedef struct KernKerningPair KernKerningPair;
+
+struct KernOrderedListEntry {
+  KernKerningPair pair;
+  KernKerningValue value;
+};
+typedef struct KernOrderedListEntry KernOrderedListEntry;
+typedef KernOrderedListEntry * KernOrderedListEntryPtr;
+
+struct KernOrderedListHeader {
+  UInt16 nPairs;
+  UInt16 searchRange;
+  UInt16 entrySelector;
+  UInt16 rangeShift;
+  UInt16 table[1];
+};
+typedef struct KernOrderedListHeader KernOrderedListHeader;
+
+struct KernStateHeader {
+  STHeader header;
+  UInt16 valueTable;
+  UInt8 firstTable[1];
+};
+typedef struct KernStateHeader KernStateHeader;
+struct KernStateEntry {
+  UInt16 newState;
+  UInt16 flags;
+};
+typedef struct KernStateEntry KernStateEntry;
+
+
+
+
+
+
+struct KernOffsetTable {
+  UInt16 firstGlyph;
+  UInt16 nGlyphs;
+  KernArrayOffset offsetTable[1];
+};
+typedef struct KernOffsetTable KernOffsetTable;
+typedef KernOffsetTable * KernOffsetTablePtr;
+struct KernSimpleArrayHeader {
+  UInt16 rowWidth;
+  UInt16 leftOffsetTable;
+  UInt16 rightOffsetTable;
+  KernArrayOffset theArray;
+  UInt16 firstTable[1];
+};
+typedef struct KernSimpleArrayHeader KernSimpleArrayHeader;
+
+struct KernIndexArrayHeader {
+  UInt16 glyphCount;
+  UInt8 kernValueCount;
+  UInt8 leftClassCount;
+  UInt8 rightClassCount;
+  UInt8 flags;
+  SInt16 kernValue[1];
+  UInt8 leftClass[1];
+  UInt8 rightClass[1];
+  UInt8 kernIndex[1];
+};
+typedef struct KernIndexArrayHeader KernIndexArrayHeader;
+
+union KernFormatSpecificHeader {
+  KernOrderedListHeader orderedList;
+  KernStateHeader stateTable;
+  KernSimpleArrayHeader simpleArray;
+  KernIndexArrayHeader indexArray;
+};
+typedef union KernFormatSpecificHeader KernFormatSpecificHeader;
+
+struct KernVersion0SubtableHeader {
+  UInt16 version;
+  UInt16 length;
+  KernSubtableInfo stInfo;
+  KernFormatSpecificHeader fsHeader;
+};
+typedef struct KernVersion0SubtableHeader KernVersion0SubtableHeader;
+
+struct KernSubtableHeader {
+  SInt32 length;
+  KernSubtableInfo stInfo;
+  SInt16 tupleIndex;
+  KernFormatSpecificHeader fsHeader;
+};
+typedef struct KernSubtableHeader KernSubtableHeader;
+typedef KernSubtableHeader * KernSubtableHeaderPtr;
+
+
+
+enum {
+  kBSLNTag = 0x62736C6E,
+  kBSLNCurrentVersion = 0x00010000,
+  kBSLNDistanceFormatNoMap = 0,
+  kBSLNDistanceFormatWithMap = 1,
+  kBSLNControlPointFormatNoMap = 2,
+  kBSLNControlPointFormatWithMap = 3
+};
+
+
+enum {
+  kBSLNRomanBaseline = 0,
+  kBSLNIdeographicCenterBaseline = 1,
+  kBSLNIdeographicLowBaseline = 2,
+  kBSLNHangingBaseline = 3,
+  kBSLNMathBaseline = 4,
+  kBSLNLastBaseline = 31,
+  kBSLNNumBaselineClasses = kBSLNLastBaseline + 1,
+  kBSLNNoBaselineOverride = 255
+};
+
+
+typedef UInt32 BslnBaselineClass;
+
+typedef Fixed BslnBaselineRecord[32];
+
+
+
+
+struct BslnFormat0Part {
+  SInt16 deltas[32];
+};
+typedef struct BslnFormat0Part BslnFormat0Part;
+
+struct BslnFormat1Part {
+  SInt16 deltas[32];
+  SFNTLookupTable mappingData;
+};
+typedef struct BslnFormat1Part BslnFormat1Part;
+
+
+
+
+
+
+struct BslnFormat2Part {
+  UInt16 stdGlyph;
+  SInt16 ctlPoints[32];
+};
+typedef struct BslnFormat2Part BslnFormat2Part;
+
+
+
+
+
+struct BslnFormat3Part {
+  UInt16 stdGlyph;
+  SInt16 ctlPoints[32];
+  SFNTLookupTable mappingData;
+};
+typedef struct BslnFormat3Part BslnFormat3Part;
+
+union BslnFormatUnion {
+  BslnFormat0Part fmt0Part;
+  BslnFormat1Part fmt1Part;
+  BslnFormat2Part fmt2Part;
+  BslnFormat3Part fmt3Part;
+};
+typedef union BslnFormatUnion BslnFormatUnion;
+
+
+typedef UInt16 BslnTableFormat;
+
+struct BslnTable {
+  Fixed version;
+  BslnTableFormat format;
+  UInt16 defaultBaseline;
+  BslnFormatUnion parts;
+};
+typedef struct BslnTable BslnTable;
+typedef BslnTable * BslnTablePtr;
+
+
+
+
+
+extern "C" {
+
+
+
+typedef UInt32 FMGeneration;
+
+
+
+
+
+
+
+typedef SInt16 FMFontFamily;
+typedef SInt16 FMFontStyle;
+typedef SInt16 FMFontSize;
+
+
+
+
+
+
+
+typedef UInt32 FMFont;
+struct FMFontFamilyInstance {
+  FMFontFamily fontFamily;
+  FMFontStyle fontStyle;
+};
+typedef struct FMFontFamilyInstance FMFontFamilyInstance;
+struct FMFontFamilyIterator {
+  UInt32 reserved[16];
+};
+typedef struct FMFontFamilyIterator FMFontFamilyIterator;
+struct FMFontIterator {
+  UInt32 reserved[16];
+};
+typedef struct FMFontIterator FMFontIterator;
+struct FMFontFamilyInstanceIterator {
+  UInt32 reserved[16];
+};
+typedef struct FMFontFamilyInstanceIterator FMFontFamilyInstanceIterator;
+enum {
+  kInvalidGeneration = 0L,
+  kInvalidFontFamily = -1,
+  kInvalidFont = 0L
+};
+
+enum {
+  kFMCurrentFilterFormat = 0L
+};
+
+typedef UInt32 FMFilterSelector;
+enum {
+  kFMFontTechnologyFilterSelector = 1L,
+  kFMFontContainerFilterSelector = 2L,
+  kFMGenerationFilterSelector = 3L,
+  kFMFontFamilyCallbackFilterSelector = 4L,
+  kFMFontCallbackFilterSelector = 5L,
+  kFMFontDirectoryFilterSelector = 6L
+};
+
+enum {
+  kFMTrueTypeFontTechnology = 'true',
+  kFMPostScriptFontTechnology = 'typ1'
+};
+
+typedef OSStatus ( * FMFontFamilyCallbackFilterProcPtr)(FMFontFamily iFontFamily, void *iRefCon);
+typedef OSStatus ( * FMFontCallbackFilterProcPtr)(FMFont iFont, void *iRefCon);
+typedef FMFontFamilyCallbackFilterProcPtr FMFontFamilyCallbackFilterUPP;
+typedef FMFontCallbackFilterProcPtr FMFontCallbackFilterUPP;
+extern FMFontFamilyCallbackFilterUPP
+NewFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterProcPtr userRoutine) ;
+extern FMFontCallbackFilterUPP
+NewFMFontCallbackFilterUPP(FMFontCallbackFilterProcPtr userRoutine) ;
+extern void
+DisposeFMFontFamilyCallbackFilterUPP(FMFontFamilyCallbackFilterUPP userUPP) ;
+extern void
+DisposeFMFontCallbackFilterUPP(FMFontCallbackFilterUPP userUPP) ;
+extern OSStatus
+InvokeFMFontFamilyCallbackFilterUPP(
+  FMFontFamily iFontFamily,
+  void * iRefCon,
+  FMFontFamilyCallbackFilterUPP userUPP) ;
+extern OSStatus
+InvokeFMFontCallbackFilterUPP(
+  FMFont iFont,
+  void * iRefCon,
+  FMFontCallbackFilterUPP userUPP) ;
+
+struct FMFontDirectoryFilter {
+  SInt16 fontFolderDomain;
+  UInt32 reserved[2];
+};
+typedef struct FMFontDirectoryFilter FMFontDirectoryFilter;
+struct FMFilter {
+  UInt32 format;
+  FMFilterSelector selector;
+  union {
+    FourCharCode fontTechnologyFilter;
+    FSSpec fontContainerFilter;
+    FMGeneration generationFilter;
+    FMFontFamilyCallbackFilterUPP fontFamilyCallbackFilter;
+    FMFontCallbackFilterUPP fontCallbackFilter;
+    FMFontDirectoryFilter fontDirectoryFilter;
+  } filter;
+};
+typedef struct FMFilter FMFilter;
+
+typedef OptionBits ATSOptionFlags;
+typedef UInt32 ATSGeneration;
+typedef UInt32 ATSFontContainerRef;
+typedef UInt32 ATSFontFamilyRef;
+typedef UInt32 ATSFontRef;
+typedef UInt16 ATSGlyphRef;
+typedef Float32 ATSFontSize;
+enum {
+  kATSGenerationUnspecified = 0L,
+  kATSFontContainerRefUnspecified = 0L,
+  kATSFontFamilyRefUnspecified = 0L,
+  kATSFontRefUnspecified = 0L
+};
+
+struct ATSFontMetrics {
+  UInt32 version;
+  Float32 ascent;
+
+  Float32 descent;
+
+  Float32 leading;
+  Float32 avgAdvanceWidth;
+  Float32 maxAdvanceWidth;
+  Float32 minLeftSideBearing;
+  Float32 minRightSideBearing;
+  Float32 stemWidth;
+  Float32 stemHeight;
+  Float32 capHeight;
+  Float32 xHeight;
+  Float32 italicAngle;
+  Float32 underlinePosition;
+  Float32 underlineThickness;
+};
+typedef struct ATSFontMetrics ATSFontMetrics;
+enum {
+  kATSItalicQDSkew = (1 << 16) / 4,
+  kATSBoldQDStretch = (1 << 16) * 3 / 2,
+  kATSRadiansFactor = 1144
+};
+
+
+typedef UInt16 ATSCurveType;
+enum {
+  kATSCubicCurveType = 0x0001,
+  kATSQuadCurveType = 0x0002,
+  kATSOtherCurveType = 0x0003
+};
+
+
+
+
+
+
+enum {
+  kATSDeletedGlyphcode = 0xFFFF
+};
+
+struct ATSUCurvePath {
+  UInt32 vectors;
+  UInt32 controlBits[1];
+  Float32Point vector[1];
+};
+typedef struct ATSUCurvePath ATSUCurvePath;
+struct ATSUCurvePaths {
+  UInt32 contours;
+  ATSUCurvePath contour[1];
+};
+typedef struct ATSUCurvePaths ATSUCurvePaths;
+
+struct ATSGlyphIdealMetrics {
+  Float32Point advance;
+  Float32Point sideBearing;
+  Float32Point otherSideBearing;
+};
+typedef struct ATSGlyphIdealMetrics ATSGlyphIdealMetrics;
+
+struct ATSGlyphScreenMetrics {
+  Float32Point deviceAdvance;
+  Float32Point topLeft;
+  UInt32 height;
+  UInt32 width;
+  Float32Point sideBearing;
+  Float32Point otherSideBearing;
+};
+typedef struct ATSGlyphScreenMetrics ATSGlyphScreenMetrics;
+
+
+typedef ATSGlyphRef GlyphID;
+
+
+
+}
+extern "C" {
+
+
+
+
+
+
+
+
+
+enum {
+  kATSUseGlyphAdvance = 0x7FFFFFFF,
+  kATSUseLineHeight = 0x7FFFFFFF,
+  kATSNoTracking = (long)0x80000000
+};
+enum {
+
+
+
+
+
+
+  kATSUseCaretOrigins = 0,
+
+
+
+
+
+
+  kATSUseDeviceOrigins = 1,
+  kATSUseFractionalOrigins = 2,
+  kATSUseOriginFlags = 3
+};
+typedef UInt32 ATSULayoutOperationSelector;
+enum {
+
+
+
+
+  kATSULayoutOperationNone = 0x00000000,
+
+
+
+
+  kATSULayoutOperationJustification = 0x00000001,
+
+
+
+
+  kATSULayoutOperationMorph = 0x00000002,
+
+
+
+
+  kATSULayoutOperationKerningAdjustment = 0x00000004,
+
+
+
+
+  kATSULayoutOperationBaselineAdjustment = 0x00000008,
+
+
+
+
+  kATSULayoutOperationTrackingAdjustment = 0x00000010,
+
+
+
+
+
+  kATSULayoutOperationPostLayoutAdjustment = 0x00000020,
+  kATSULayoutOperationAppleReserved = (unsigned long)0xFFFFFFC0
+};
+typedef UInt32 ATSULayoutOperationCallbackStatus;
+enum {
+
+
+
+
+
+
+  kATSULayoutOperationCallbackStatusHandled = 0x00000000,
+
+
+
+
+
+
+  kATSULayoutOperationCallbackStatusContinue = 0x00000001
+};
+typedef UInt32 ATSLineLayoutOptions;
+enum {
+
+
+
+
+  kATSLineNoLayoutOptions = 0x00000000,
+
+
+
+
+  kATSLineIsDisplayOnly = 0x00000001,
+
+
+
+
+  kATSLineHasNoHangers = 0x00000002,
+
+
+
+
+  kATSLineHasNoOpticalAlignment = 0x00000004,
+
+
+
+
+  kATSLineKeepSpacesOutOfMargin = 0x00000008,
+
+
+
+
+  kATSLineNoSpecialJustification = 0x00000010,
+
+
+
+
+
+  kATSLineLastNoJustification = 0x00000020,
+
+
+
+
+
+  kATSLineFractDisable = 0x00000040,
+
+
+
+
+
+  kATSLineImposeNoAngleForEnds = 0x00000080,
+
+
+
+
+
+  kATSLineFillOutToWidth = 0x00000100,
+
+
+
+
+
+  kATSLineTabAdjustEnabled = 0x00000200,
+
+
+
+
+
+  kATSLineIgnoreFontLeading = 0x00000400,
+
+
+
+
+
+  kATSLineApplyAntiAliasing = 0x00000800,
+
+
+
+
+
+
+  kATSLineNoAntiAliasing = 0x00001000,
+
+
+
+
+
+
+  kATSLineDisableNegativeJustification = 0x00002000,
+
+
+
+
+
+
+
+  kATSLineDisableAutoAdjustDisplayPos = 0x00004000,
+
+
+
+
+
+  kATSLineUseQDRendering = 0x00008000,
+
+
+
+
+  kATSLineDisableAllJustification = 0x00010000,
+
+
+
+
+  kATSLineDisableAllGlyphMorphing = 0x00020000,
+
+
+
+
+  kATSLineDisableAllKerningAdjustments = 0x00040000,
+
+
+
+
+  kATSLineDisableAllBaselineAdjustments = 0x00080000,
+
+
+
+
+  kATSLineDisableAllTrackingAdjustments = 0x00100000,
+
+
+
+
+  kATSLineDisableAllLayoutOperations = kATSLineDisableAllJustification | kATSLineDisableAllGlyphMorphing | kATSLineDisableAllKerningAdjustments | kATSLineDisableAllBaselineAdjustments | kATSLineDisableAllTrackingAdjustments,
+
+
+
+
+
+  kATSLineUseDeviceMetrics = 0x01000000,
+
+
+
+
+
+  kATSLineAppleReserved = (unsigned long)0xFEE00000
+};
+typedef UInt32 ATSStyleRenderingOptions;
+enum {
+
+
+
+
+  kATSStyleNoOptions = 0x00000000,
+
+
+
+
+
+  kATSStyleNoHinting = 0x00000001,
+
+
+
+
+
+  kATSStyleApplyAntiAliasing = 0x00000002,
+
+
+
+
+
+
+  kATSStyleNoAntiAliasing = 0x00000004,
+
+
+
+
+
+  kATSStyleAppleReserved = (unsigned long)0xFFFFFFF8,
+
+
+
+
+
+
+  kATSStyleApplyHints = kATSStyleNoOptions
+};
+typedef UInt32 ATSGlyphInfoFlags;
+enum {
+
+
+
+
+
+  kATSGlyphInfoAppleReserved = 0x1FFBFFE8,
+
+
+
+
+  kATSGlyphInfoIsAttachment = (unsigned long)0x80000000,
+
+
+
+
+  kATSGlyphInfoIsLTHanger = 0x40000000,
+
+
+
+
+  kATSGlyphInfoIsRBHanger = 0x20000000,
+
+
+
+
+
+  kATSGlyphInfoTerminatorGlyph = 0x00080000,
+
+
+
+
+  kATSGlyphInfoIsWhiteSpace = 0x00040000,
+
+
+
+
+  kATSGlyphInfoHasImposedWidth = 0x00000010,
+
+
+
+
+
+
+
+  kATSGlyphInfoByteSizeMask = 0x00000007
+};
+struct ATSLayoutRecord {
+
+
+
+
+  ATSGlyphRef glyphID;
+
+
+
+
+  ATSGlyphInfoFlags flags;
+
+
+
+
+  ByteCount originalOffset;
+
+
+
+
+  Fixed realPos;
+};
+typedef struct ATSLayoutRecord ATSLayoutRecord;
+struct ATSTrapezoid {
+  FixedPoint upperLeft;
+  FixedPoint upperRight;
+  FixedPoint lowerRight;
+  FixedPoint lowerLeft;
+};
+typedef struct ATSTrapezoid ATSTrapezoid;
+struct ATSJustWidthDeltaEntryOverride {
+
+
+
+
+  Fixed beforeGrowLimit;
+
+
+
+
+  Fixed beforeShrinkLimit;
+
+
+
+
+  Fixed afterGrowLimit;
+
+
+
+
+  Fixed afterShrinkLimit;
+
+
+
+
+  JustificationFlags growFlags;
+
+
+
+
+  JustificationFlags shrinkFlags;
+};
+typedef struct ATSJustWidthDeltaEntryOverride ATSJustWidthDeltaEntryOverride;
+
+typedef ATSJustWidthDeltaEntryOverride ATSJustPriorityWidthDeltaOverrides[4];
+typedef struct ATSGlyphVector* ATSULineRef;
+typedef OSStatus ( * ATSUDirectLayoutOperationOverrideProcPtr)(ATSULayoutOperationSelector iCurrentOperation, ATSULineRef iLineRef, UInt32 iRefCon, void *iOperationCallbackParameterPtr, ATSULayoutOperationCallbackStatus *oCallbackStatus);
+typedef ATSUDirectLayoutOperationOverrideProcPtr ATSUDirectLayoutOperationOverrideUPP;
+extern ATSUDirectLayoutOperationOverrideUPP
+NewATSUDirectLayoutOperationOverrideUPP(ATSUDirectLayoutOperationOverrideProcPtr userRoutine) ;
+extern void
+DisposeATSUDirectLayoutOperationOverrideUPP(ATSUDirectLayoutOperationOverrideUPP userUPP) ;
+extern OSStatus
+InvokeATSUDirectLayoutOperationOverrideUPP(
+  ATSULayoutOperationSelector iCurrentOperation,
+  ATSULineRef iLineRef,
+  UInt32 iRefCon,
+  void * iOperationCallbackParameterPtr,
+  ATSULayoutOperationCallbackStatus * oCallbackStatus,
+  ATSUDirectLayoutOperationOverrideUPP userUPP) ;
+struct ATSULayoutOperationOverrideSpecifier {
+
+
+
+
+
+
+  ATSULayoutOperationSelector operationSelector;
+  ATSUDirectLayoutOperationOverrideUPP overrideUPP;
+
+};
+typedef struct ATSULayoutOperationOverrideSpecifier ATSULayoutOperationOverrideSpecifier;
+
+
+
+}
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+
+
+
+
+
+struct sfntDirectoryEntry {
+  FourCharCode tableTag;
+  UInt32 checkSum;
+  UInt32 offset;
+  UInt32 length;
+};
+typedef struct sfntDirectoryEntry sfntDirectoryEntry;
+
+struct sfntDirectory {
+  FourCharCode format;
+  UInt16 numOffsets;
+  UInt16 searchRange;
+  UInt16 entrySelector;
+  UInt16 rangeShift;
+  sfntDirectoryEntry table[1];
+};
+typedef struct sfntDirectory sfntDirectory;
+enum {
+  sizeof_sfntDirectory = 12
+};
+
+
+enum {
+  cmapFontTableTag = 'cmap'
+};
+
+enum {
+  kFontUnicodePlatform = 0,
+  kFontMacintoshPlatform = 1,
+  kFontReservedPlatform = 2,
+  kFontMicrosoftPlatform = 3,
+  kFontCustomPlatform = 4
+};
+
+enum {
+  kFontUnicodeDefaultSemantics = 0,
+  kFontUnicodeV1_1Semantics = 1,
+  kFontISO10646_1993Semantics = 2
+};
+
+enum {
+  kFontRomanScript = 0,
+  kFontJapaneseScript = 1,
+  kFontTraditionalChineseScript = 2,
+  kFontChineseScript = kFontTraditionalChineseScript,
+  kFontKoreanScript = 3,
+  kFontArabicScript = 4,
+  kFontHebrewScript = 5,
+  kFontGreekScript = 6,
+  kFontCyrillicScript = 7,
+  kFontRussian = kFontCyrillicScript,
+  kFontRSymbolScript = 8,
+  kFontDevanagariScript = 9,
+  kFontGurmukhiScript = 10,
+  kFontGujaratiScript = 11,
+  kFontOriyaScript = 12,
+  kFontBengaliScript = 13,
+  kFontTamilScript = 14,
+  kFontTeluguScript = 15,
+  kFontKannadaScript = 16,
+  kFontMalayalamScript = 17,
+  kFontSinhaleseScript = 18,
+  kFontBurmeseScript = 19,
+  kFontKhmerScript = 20,
+  kFontThaiScript = 21,
+  kFontLaotianScript = 22,
+  kFontGeorgianScript = 23,
+  kFontArmenianScript = 24,
+  kFontSimpleChineseScript = 25,
+  kFontTibetanScript = 26,
+  kFontMongolianScript = 27,
+  kFontGeezScript = 28,
+  kFontEthiopicScript = kFontGeezScript,
+  kFontAmharicScript = kFontGeezScript,
+  kFontSlavicScript = 29,
+  kFontEastEuropeanRomanScript = kFontSlavicScript,
+  kFontVietnameseScript = 30,
+  kFontExtendedArabicScript = 31,
+  kFontSindhiScript = kFontExtendedArabicScript,
+  kFontUninterpretedScript = 32
+};
+
+enum {
+  kFontMicrosoftSymbolScript = 0,
+  kFontMicrosoftStandardScript = 1,
+  kFontMicrosoftUCS4Script = 10
+};
+
+
+enum {
+  kFontCustom8BitScript = 0,
+  kFontCustom816BitScript = 1,
+  kFontCustom16BitScript = 2
+};
+
+
+enum {
+  kFontEnglishLanguage = 0,
+  kFontFrenchLanguage = 1,
+  kFontGermanLanguage = 2,
+  kFontItalianLanguage = 3,
+  kFontDutchLanguage = 4,
+  kFontSwedishLanguage = 5,
+  kFontSpanishLanguage = 6,
+  kFontDanishLanguage = 7,
+  kFontPortugueseLanguage = 8,
+  kFontNorwegianLanguage = 9,
+  kFontHebrewLanguage = 10,
+  kFontJapaneseLanguage = 11,
+  kFontArabicLanguage = 12,
+  kFontFinnishLanguage = 13,
+  kFontGreekLanguage = 14,
+  kFontIcelandicLanguage = 15,
+  kFontMalteseLanguage = 16,
+  kFontTurkishLanguage = 17,
+  kFontCroatianLanguage = 18,
+  kFontTradChineseLanguage = 19,
+  kFontUrduLanguage = 20,
+  kFontHindiLanguage = 21,
+  kFontThaiLanguage = 22,
+  kFontKoreanLanguage = 23,
+  kFontLithuanianLanguage = 24,
+  kFontPolishLanguage = 25,
+  kFontHungarianLanguage = 26,
+  kFontEstonianLanguage = 27,
+  kFontLettishLanguage = 28,
+  kFontLatvianLanguage = kFontLettishLanguage,
+  kFontSaamiskLanguage = 29,
+  kFontLappishLanguage = kFontSaamiskLanguage,
+  kFontFaeroeseLanguage = 30,
+  kFontFarsiLanguage = 31,
+  kFontPersianLanguage = kFontFarsiLanguage,
+  kFontRussianLanguage = 32,
+  kFontSimpChineseLanguage = 33,
+  kFontFlemishLanguage = 34,
+  kFontIrishLanguage = 35,
+  kFontAlbanianLanguage = 36,
+  kFontRomanianLanguage = 37,
+  kFontCzechLanguage = 38,
+  kFontSlovakLanguage = 39,
+  kFontSlovenianLanguage = 40,
+  kFontYiddishLanguage = 41,
+  kFontSerbianLanguage = 42,
+  kFontMacedonianLanguage = 43,
+  kFontBulgarianLanguage = 44,
+  kFontUkrainianLanguage = 45,
+  kFontByelorussianLanguage = 46,
+  kFontUzbekLanguage = 47,
+  kFontKazakhLanguage = 48,
+  kFontAzerbaijaniLanguage = 49,
+  kFontAzerbaijanArLanguage = 50,
+  kFontArmenianLanguage = 51,
+  kFontGeorgianLanguage = 52,
+  kFontMoldavianLanguage = 53,
+  kFontKirghizLanguage = 54,
+  kFontTajikiLanguage = 55,
+  kFontTurkmenLanguage = 56,
+  kFontMongolianLanguage = 57,
+  kFontMongolianCyrLanguage = 58,
+  kFontPashtoLanguage = 59,
+  kFontKurdishLanguage = 60,
+  kFontKashmiriLanguage = 61,
+  kFontSindhiLanguage = 62,
+  kFontTibetanLanguage = 63,
+  kFontNepaliLanguage = 64,
+  kFontSanskritLanguage = 65,
+  kFontMarathiLanguage = 66,
+  kFontBengaliLanguage = 67,
+  kFontAssameseLanguage = 68,
+  kFontGujaratiLanguage = 69,
+  kFontPunjabiLanguage = 70,
+  kFontOriyaLanguage = 71,
+  kFontMalayalamLanguage = 72,
+  kFontKannadaLanguage = 73,
+  kFontTamilLanguage = 74,
+  kFontTeluguLanguage = 75,
+  kFontSinhaleseLanguage = 76,
+  kFontBurmeseLanguage = 77,
+  kFontKhmerLanguage = 78,
+  kFontLaoLanguage = 79,
+  kFontVietnameseLanguage = 80,
+  kFontIndonesianLanguage = 81,
+  kFontTagalogLanguage = 82,
+  kFontMalayRomanLanguage = 83,
+  kFontMalayArabicLanguage = 84,
+  kFontAmharicLanguage = 85,
+  kFontTigrinyaLanguage = 86,
+  kFontGallaLanguage = 87,
+  kFontOromoLanguage = kFontGallaLanguage,
+  kFontSomaliLanguage = 88,
+  kFontSwahiliLanguage = 89,
+  kFontRuandaLanguage = 90,
+  kFontRundiLanguage = 91,
+  kFontChewaLanguage = 92,
+  kFontMalagasyLanguage = 93,
+  kFontEsperantoLanguage = 94,
+  kFontWelshLanguage = 128,
+  kFontBasqueLanguage = 129,
+  kFontCatalanLanguage = 130,
+  kFontLatinLanguage = 131,
+  kFontQuechuaLanguage = 132,
+  kFontGuaraniLanguage = 133,
+  kFontAymaraLanguage = 134,
+  kFontTatarLanguage = 135,
+  kFontUighurLanguage = 136,
+  kFontDzongkhaLanguage = 137,
+  kFontJavaneseRomLanguage = 138,
+  kFontSundaneseRomLanguage = 139
+};
+
+
+enum {
+  kFontNoPlatformCode = (unsigned long)(-1),
+  kFontNoScriptCode = (unsigned long)(-1),
+  kFontNoLanguageCode = (unsigned long)(-1)
+};
+
+struct sfntCMapSubHeader {
+  UInt16 format;
+  UInt16 length;
+  UInt16 languageID;
+};
+typedef struct sfntCMapSubHeader sfntCMapSubHeader;
+enum {
+  sizeof_sfntCMapSubHeader = 6
+};
+
+struct sfntCMapExtendedSubHeader {
+  UInt16 format;
+  UInt16 reserved;
+  UInt32 length;
+  UInt32 language;
+};
+typedef struct sfntCMapExtendedSubHeader sfntCMapExtendedSubHeader;
+enum {
+  sizeof_sfntCMapExtendedSubHeader = 12
+};
+
+struct sfntCMapEncoding {
+  UInt16 platformID;
+  UInt16 scriptID;
+  UInt32 offset;
+};
+typedef struct sfntCMapEncoding sfntCMapEncoding;
+enum {
+  sizeof_sfntCMapEncoding = 8
+};
+
+struct sfntCMapHeader {
+  UInt16 version;
+  UInt16 numTables;
+  sfntCMapEncoding encoding[1];
+};
+typedef struct sfntCMapHeader sfntCMapHeader;
+enum {
+  sizeof_sfntCMapHeader = 4
+};
+
+
+enum {
+  nameFontTableTag = 'name'
+};
+
+enum {
+  kFontCopyrightName = 0,
+  kFontFamilyName = 1,
+  kFontStyleName = 2,
+  kFontUniqueName = 3,
+  kFontFullName = 4,
+  kFontVersionName = 5,
+  kFontPostscriptName = 6,
+  kFontTrademarkName = 7,
+  kFontManufacturerName = 8,
+  kFontDesignerName = 9,
+  kFontDescriptionName = 10,
+  kFontVendorURLName = 11,
+  kFontDesignerURLName = 12,
+  kFontLicenseDescriptionName = 13,
+  kFontLicenseInfoURLName = 14,
+  kFontLastReservedName = 255
+};
+
+
+enum {
+  kFontNoNameCode = (unsigned long)(-1)
+};
+
+struct sfntNameRecord {
+  UInt16 platformID;
+  UInt16 scriptID;
+  UInt16 languageID;
+  UInt16 nameID;
+  UInt16 length;
+  UInt16 offset;
+};
+typedef struct sfntNameRecord sfntNameRecord;
+enum {
+  sizeof_sfntNameRecord = 12
+};
+
+struct sfntNameHeader {
+  UInt16 format;
+  UInt16 count;
+  UInt16 stringOffset;
+  sfntNameRecord rec[1];
+};
+typedef struct sfntNameHeader sfntNameHeader;
+enum {
+  sizeof_sfntNameHeader = 6
+};
+
+
+enum {
+  variationFontTableTag = 'fvar'
+};
+
+
+struct sfntVariationAxis {
+  FourCharCode axisTag;
+  Fixed minValue;
+  Fixed defaultValue;
+  Fixed maxValue;
+  SInt16 flags;
+  SInt16 nameID;
+};
+typedef struct sfntVariationAxis sfntVariationAxis;
+enum {
+  sizeof_sfntVariationAxis = 20
+};
+
+
+struct sfntInstance {
+  SInt16 nameID;
+  SInt16 flags;
+  Fixed coord[1];
+
+};
+typedef struct sfntInstance sfntInstance;
+enum {
+  sizeof_sfntInstance = 4
+};
+
+struct sfntVariationHeader {
+  Fixed version;
+  UInt16 offsetToData;
+  UInt16 countSizePairs;
+  UInt16 axisCount;
+  UInt16 axisSize;
+  UInt16 instanceCount;
+  UInt16 instanceSize;
+
+  sfntVariationAxis axis[1];
+  sfntInstance instance[1];
+};
+typedef struct sfntVariationHeader sfntVariationHeader;
+enum {
+  sizeof_sfntVariationHeader = 16
+};
+
+
+enum {
+  descriptorFontTableTag = 'fdsc'
+};
+
+struct sfntFontDescriptor {
+  FourCharCode name;
+  Fixed value;
+};
+typedef struct sfntFontDescriptor sfntFontDescriptor;
+struct sfntDescriptorHeader {
+  Fixed version;
+  SInt32 descriptorCount;
+  sfntFontDescriptor descriptor[1];
+};
+typedef struct sfntDescriptorHeader sfntDescriptorHeader;
+enum {
+  sizeof_sfntDescriptorHeader = 8
+};
+
+
+enum {
+  featureFontTableTag = 'feat'
+};
+
+struct sfntFeatureName {
+  UInt16 featureType;
+  UInt16 settingCount;
+  SInt32 offsetToSettings;
+  UInt16 featureFlags;
+  UInt16 nameID;
+};
+typedef struct sfntFeatureName sfntFeatureName;
+struct sfntFontFeatureSetting {
+  UInt16 setting;
+  UInt16 nameID;
+};
+typedef struct sfntFontFeatureSetting sfntFontFeatureSetting;
+struct sfntFontRunFeature {
+  UInt16 featureType;
+  UInt16 setting;
+};
+typedef struct sfntFontRunFeature sfntFontRunFeature;
+struct sfntFeatureHeader {
+  SInt32 version;
+  UInt16 featureNameCount;
+  UInt16 featureSetCount;
+  SInt32 reserved;
+  sfntFeatureName names[1];
+  sfntFontFeatureSetting settings[1];
+  sfntFontRunFeature runs[1];
+};
+typedef struct sfntFeatureHeader sfntFeatureHeader;
+
+enum {
+  os2FontTableTag = 'OS/2'
+};
+
+
+enum {
+  nonGlyphID = 65535L
+};
+
+
+
+
+
+enum {
+  kFontNoPlatform = -1,
+  kFontNoScript = -1,
+  kFontNoLanguage = -1,
+  kFontNoName = -1
+};
+
+
+
+
+
+typedef UInt32 FontNameCode;
+
+typedef UInt32 FontPlatformCode;
+typedef UInt32 FontScriptCode;
+typedef UInt32 FontLanguageCode;
+
+
+
+
+struct FontVariation {
+  FourCharCode name;
+  Fixed value;
+};
+typedef struct FontVariation FontVariation;
+
+extern "C" {
+
+
+
+
+
+
+
+enum {
+  kATSOptionFlagsDefault = kNilOptions,
+  kATSOptionFlagsComposeFontPostScriptName = 1 << 0,
+  kATSOptionFlagsUseDataForkAsResourceFork = 1 << 8,
+  kATSOptionFlagsUseResourceFork = 2 << 8,
+  kATSOptionFlagsUseDataFork = 3 << 8
+};
+
+enum {
+  kATSIterationCompleted = -980L,
+  kATSInvalidFontFamilyAccess = -981L,
+  kATSInvalidFontAccess = -982L,
+  kATSIterationScopeModified = -983L,
+  kATSInvalidFontTableAccess = -984L,
+  kATSInvalidFontContainerAccess = -985L
+};
+
+
+typedef UInt32 ATSFontContext;
+enum {
+  kATSFontContextUnspecified = 0,
+  kATSFontContextGlobal = 1,
+  kATSFontContextLocal = 2
+};
+
+enum {
+  kATSOptionFlagsDoNotNotify = 0x00000001 << 8,
+  kATSOptionFlagsIterationScopeMask = 0x00000007 << 12,
+  kATSOptionFlagsDefaultScope = 0x00000000 << 12,
+  kATSOptionFlagsUnRestrictedScope = 0x00000001 << 12,
+  kATSOptionFlagsRestrictedScope = 0x00000002 << 12,
+  kATSOptionFlagsProcessSubdirectories = 0x00000001 << 6
+};
+
+
+enum {
+  kATSOptionFlagsIterateByPrecedenceMask = 0x00000001 << 5
+};
+
+typedef UInt32 ATSFontFormat;
+enum {
+  kATSFontFormatUnspecified = 0
+};
+
+typedef OSStatus ( * ATSFontFamilyApplierFunction)(ATSFontFamilyRef iFamily, void *iRefCon);
+typedef OSStatus ( * ATSFontApplierFunction)(ATSFontRef iFont, void *iRefCon);
+typedef struct ATSFontFamilyIterator_* ATSFontFamilyIterator;
+typedef struct ATSFontIterator_* ATSFontIterator;
+enum {
+  kATSFontFilterCurrentVersion = 0
+};
+
+enum ATSFontFilterSelector {
+  kATSFontFilterSelectorUnspecified = 0,
+  kATSFontFilterSelectorGeneration = 3,
+  kATSFontFilterSelectorFontFamily = 7,
+  kATSFontFilterSelectorFontFamilyApplierFunction = 8,
+  kATSFontFilterSelectorFontApplierFunction = 9
+};
+typedef enum ATSFontFilterSelector ATSFontFilterSelector;
+
+struct ATSFontFilter {
+  UInt32 version;
+  ATSFontFilterSelector filterSelector;
+  union {
+    ATSGeneration generationFilter;
+    ATSFontFamilyRef fontFamilyFilter;
+    ATSFontFamilyApplierFunction fontFamilyApplierFunctionFilter;
+    ATSFontApplierFunction fontApplierFunctionFilter;
+  } filter;
+};
+typedef struct ATSFontFilter ATSFontFilter;
+
+typedef struct ATSFontNotificationRef_* ATSFontNotificationRef;
+typedef struct ATSFontNotificationInfoRef_* ATSFontNotificationInfoRef;
+enum ATSFontNotifyOption {
+
+
+
+
+  kATSFontNotifyOptionDefault = 0,
+  kATSFontNotifyOptionReceiveWhileSuspended = 1L << 0
+};
+typedef enum ATSFontNotifyOption ATSFontNotifyOption;
+enum ATSFontNotifyAction {
+  kATSFontNotifyActionFontsChanged = 1,
+  kATSFontNotifyActionDirectoriesChanged = 2
+};
+typedef enum ATSFontNotifyAction ATSFontNotifyAction;
+typedef void ( * ATSNotificationCallback)(ATSFontNotificationInfoRef info, void *refCon);
+extern ATSGeneration
+ATSGetGeneration(void) ;
+extern OSStatus
+ATSFontActivateFromFileSpecification(
+  const FSSpec * iFile,
+  ATSFontContext iContext,
+  ATSFontFormat iFormat,
+  void * iReserved,
+  ATSOptionFlags iOptions,
+  ATSFontContainerRef * oContainer) ;
+extern OSStatus
+ATSFontActivateFromMemory(
+  LogicalAddress iData,
+  ByteCount iLength,
+  ATSFontContext iContext,
+  ATSFontFormat iFormat,
+  void * iReserved,
+  ATSOptionFlags iOptions,
+  ATSFontContainerRef * oContainer) ;
+extern OSStatus
+ATSFontDeactivate(
+  ATSFontContainerRef iContainer,
+  void * iRefCon,
+  ATSOptionFlags iOptions) ;
+extern OSStatus
+ATSFontFamilyApplyFunction(
+  ATSFontFamilyApplierFunction iFunction,
+  void * iRefCon) ;
+extern OSStatus
+ATSFontFamilyIteratorCreate(
+  ATSFontContext iContext,
+  const ATSFontFilter * iFilter,
+  void * iRefCon,
+  ATSOptionFlags iOptions,
+  ATSFontFamilyIterator * ioIterator) ;
+extern OSStatus
+ATSFontFamilyIteratorRelease(ATSFontFamilyIterator * ioIterator) ;
+extern OSStatus
+ATSFontFamilyIteratorReset(
+  ATSFontContext iContext,
+  const ATSFontFilter * iFilter,
+  void * iRefCon,
+  ATSOptionFlags iOptions,
+  ATSFontFamilyIterator * ioIterator) ;
+extern OSStatus
+ATSFontFamilyIteratorNext(
+  ATSFontFamilyIterator iIterator,
+  ATSFontFamilyRef * oFamily) ;
+extern ATSFontFamilyRef
+ATSFontFamilyFindFromName(
+  CFStringRef iName,
+  ATSOptionFlags iOptions) ;
+extern ATSGeneration
+ATSFontFamilyGetGeneration(ATSFontFamilyRef iFamily) ;
+extern OSStatus
+ATSFontFamilyGetName(
+  ATSFontFamilyRef iFamily,
+  ATSOptionFlags iOptions,
+  CFStringRef * oName) ;
+extern TextEncoding
+ATSFontFamilyGetEncoding(ATSFontFamilyRef iFamily) ;
+extern OSStatus
+ATSFontApplyFunction(
+  ATSFontApplierFunction iFunction,
+  void * iRefCon) ;
+extern OSStatus
+ATSFontIteratorCreate(
+  ATSFontContext iContext,
+  const ATSFontFilter * iFilter,
+  void * iRefCon,
+  ATSOptionFlags iOptions,
+  ATSFontIterator * ioIterator) ;
+extern OSStatus
+ATSFontIteratorRelease(ATSFontIterator * ioIterator) ;
+extern OSStatus
+ATSFontIteratorReset(
+  ATSFontContext iContext,
+  const ATSFontFilter * iFilter,
+  void * iRefCon,
+  ATSOptionFlags iOptions,
+  ATSFontIterator * ioIterator) ;
+extern OSStatus
+ATSFontIteratorNext(
+  ATSFontIterator iIterator,
+  ATSFontRef * oFont) ;
+extern ATSFontRef
+ATSFontFindFromName(
+  CFStringRef iName,
+  ATSOptionFlags iOptions) ;
+extern ATSFontRef
+ATSFontFindFromPostScriptName(
+  CFStringRef iName,
+  ATSOptionFlags iOptions) ;
+extern OSStatus
+ATSFontFindFromContainer(
+  ATSFontContainerRef iContainer,
+  ATSOptionFlags iOptions,
+  ItemCount iCount,
+  ATSFontRef ioArray[],
+  ItemCount * oCount) ;
+extern ATSGeneration
+ATSFontGetGeneration(ATSFontRef iFont) ;
+extern OSStatus
+ATSFontGetName(
+  ATSFontRef iFont,
+  ATSOptionFlags iOptions,
+  CFStringRef * oName) ;
+extern OSStatus
+ATSFontGetPostScriptName(
+  ATSFontRef iFont,
+  ATSOptionFlags iOptions,
+  CFStringRef * oName) ;
+extern OSStatus
+ATSFontGetTableDirectory(
+  ATSFontRef iFont,
+  ByteCount iBufferSize,
+  void * ioBuffer,
+  ByteCount * oSize) ;
+extern OSStatus
+ATSFontGetTable(
+  ATSFontRef iFont,
+  FourCharCode iTag,
+  ByteOffset iOffset,
+  ByteCount iBufferSize,
+  void * ioBuffer,
+  ByteCount * oSize) ;
+extern OSStatus
+ATSFontGetHorizontalMetrics(
+  ATSFontRef iFont,
+  ATSOptionFlags iOptions,
+  ATSFontMetrics * oMetrics) ;
+extern OSStatus
+ATSFontGetVerticalMetrics(
+  ATSFontRef iFont,
+  ATSOptionFlags iOptions,
+  ATSFontMetrics * oMetrics) ;
+extern ATSFontFamilyRef
+ATSFontFamilyFindFromQuickDrawName(ConstStr255Param iName) ;
+extern OSStatus
+ATSFontFamilyGetQuickDrawName(
+  ATSFontFamilyRef iFamily,
+  Str255 oName) ;
+extern OSStatus
+ATSFontGetFileSpecification(
+  ATSFontRef iFont,
+  FSSpec * oFile) ;
+extern OSStatus
+ATSFontGetFontFamilyResource(
+  ATSFontRef iFont,
+  ByteCount iBufferSize,
+  void * ioBuffer,
+  ByteCount * oSize) ;
+extern OSStatus
+ATSFontNotify(
+  ATSFontNotifyAction action,
+  void * info) ;
+extern OSStatus
+ATSFontNotificationSubscribe(
+  ATSNotificationCallback callback,
+  ATSFontNotifyOption options,
+  void * iRefcon,
+  ATSFontNotificationRef * oNotificationRef) ;
+extern OSStatus
+ATSFontNotificationUnsubscribe(ATSFontNotificationRef notificationRef) ;
+struct ATSFontQuerySourceContext {
+
+
+
+
+
+  UInt32 version;
+
+
+
+
+
+  void * refCon;
+
+
+
+
+  CFAllocatorRetainCallBack retain;
+
+
+
+
+  CFAllocatorReleaseCallBack release;
+};
+typedef struct ATSFontQuerySourceContext ATSFontQuerySourceContext;
+
+
+
+
+
+
+
+enum ATSFontQueryMessageID {
+
+
+
+
+
+
+
+  kATSQueryActivateFontMessage = 'atsa'
+};
+typedef enum ATSFontQueryMessageID ATSFontQueryMessageID;
+typedef CFPropertyListRef ( * ATSFontQueryCallback)(ATSFontQueryMessageID msgid, CFPropertyListRef data, void *refCon);
+extern CFRunLoopSourceRef
+ATSCreateFontQueryRunLoopSource(
+  CFIndex queryOrder,
+  CFIndex sourceOrder,
+  ATSFontQueryCallback callout,
+  const ATSFontQuerySourceContext * context) ;
+
+
+}
+
+
+
+
+
+
+
+
+
+enum {
+  cexec68K = 0x00000001,
+  truetypeStreamType = 0x00000001,
+  type1StreamType = 0x00000002,
+  type3StreamType = 0x00000004,
+  type42StreamType = 0x00000008,
+  type42GXStreamType = 0x00000010,
+  portableStreamType = 0x00000020,
+  flattenedStreamType = 0x00000040,
+  cidType2StreamType = 0x00000080,
+  cidType0StreamType = 0x00000100,
+  type1CFFStreamType = 0x00000200,
+  evenOddModifierStreamType = 0x00008000,
+  eexecBinaryModifierStreamType = 0x00010000,
+  unicodeMappingModifierStreamType = 0x00020000,
+  scalerSpecifcModifierMask = 0x0000F000,
+  streamTypeModifierMask = (long)0xFFFFF000
+};
+
+
+typedef unsigned long scalerStreamTypeFlag;
+enum {
+  downloadStreamAction = 0,
+  asciiDownloadStreamAction = 1,
+  fontSizeQueryStreamAction = 2,
+  encodingOnlyStreamAction = 3,
+  prerequisiteQueryStreamAction = 4,
+  prerequisiteItemStreamAction = 5,
+  variationQueryStreamAction = 6,
+  variationPSOperatorStreamAction = 7
+};
+
+typedef long scalerStreamAction;
+enum {
+  selectAllVariations = -1
+};
+
+struct scalerPrerequisiteItem {
+  long enumeration;
+  long size;
+  unsigned char name[1];
+};
+typedef struct scalerPrerequisiteItem scalerPrerequisiteItem;
+struct scalerStream {
+  const void * streamRefCon;
+  const char * targetVersion;
+  scalerStreamTypeFlag types;
+  scalerStreamAction action;
+  unsigned long memorySize;
+  long variationCount;
+  const void * variations;
+  union {
+
+    struct {
+      const unsigned short * encoding;
+      long * glyphBits;
+      char * name;
+    } font;
+
+
+    struct {
+      long size;
+      void * list;
+    } prerequisiteQuery;
+
+    long prerequisiteItem;
+
+    long variationQueryResult;
+  } info;
+};
+typedef struct scalerStream scalerStream;
+struct scalerStreamData {
+  long hexFlag;
+  long byteCount;
+  const void * data;
+};
+typedef struct scalerStreamData scalerStreamData;
+
+
+
+
+extern "C" {
+}
+
+typedef struct CGAffineTransform CGAffineTransform;
+
+
+extern "C" {
+
+
+
+struct CGPoint {
+    float x;
+    float y;
+};
+typedef struct CGPoint CGPoint;
+
+
+
+struct CGSize {
+    float width;
+    float height;
+};
+typedef struct CGSize CGSize;
+
+
+
+struct CGRect {
+    CGPoint origin;
+    CGSize size;
+};
+typedef struct CGRect CGRect;
+
+
+
+enum CGRectEdge {
+    CGRectMinXEdge, CGRectMinYEdge, CGRectMaxXEdge, CGRectMaxYEdge
+};
+typedef enum CGRectEdge CGRectEdge;
+
+
+
+extern const CGPoint CGPointZero;
+
+
+
+extern const CGSize CGSizeZero;
+
+
+
+extern const CGRect CGRectZero;
+
+
+
+
+
+extern const CGRect CGRectNull;
+
+
+
+static inline CGPoint CGPointMake(float x, float y);
+
+
+
+static inline CGSize CGSizeMake(float width, float height);
+
+
+
+static inline CGRect CGRectMake(float x, float y, float width, float height);
+
+
+
+extern float CGRectGetMinX(CGRect rect);
+
+
+
+extern float CGRectGetMidX(CGRect rect);
+
+
+
+extern float CGRectGetMaxX(CGRect rect);
+
+
+
+extern float CGRectGetMinY(CGRect rect);
+
+
+
+extern float CGRectGetMidY(CGRect rect);
+
+
+
+extern float CGRectGetMaxY(CGRect rect);
+
+
+
+extern float CGRectGetWidth(CGRect rect);
+
+
+
+extern float CGRectGetHeight(CGRect rect);
+
+
+
+extern int CGPointEqualToPoint(CGPoint point1, CGPoint point2);
+
+
+
+extern int CGSizeEqualToSize(CGSize size1, CGSize size2);
+
+
+
+extern int CGRectEqualToRect(CGRect rect1, CGRect rect2);
+
+
+
+
+extern CGRect CGRectStandardize(CGRect rect);
+
+
+
+
+extern int CGRectIsEmpty(CGRect rect);
+
+
+
+
+extern int CGRectIsNull(CGRect rect);
+
+
+
+
+extern CGRect CGRectInset(CGRect rect, float dx, float dy);
+
+
+
+
+extern CGRect CGRectIntegral(CGRect rect);
+
+
+
+extern CGRect CGRectUnion(CGRect r1, CGRect r2);
+
+
+
+
+extern CGRect CGRectIntersection(CGRect r1, CGRect r2);
+
+
+
+extern CGRect CGRectOffset(CGRect rect, float dx, float dy);
+
+
+
+
+
+
+
+extern void CGRectDivide(CGRect rect, CGRect *slice, CGRect *remainder, float amount, CGRectEdge edge);
+
+
+
+extern int CGRectContainsPoint(CGRect rect, CGPoint point);
+
+
+
+
+
+extern int CGRectContainsRect(CGRect rect1, CGRect rect2);
+
+
+
+
+
+extern int CGRectIntersectsRect(CGRect rect1, CGRect rect2);
+
+
+
+static inline CGPoint CGPointMake(float x, float y)
+{
+    CGPoint p; p.x = x; p.y = y; return p;
+}
+
+static inline CGSize CGSizeMake(float width, float height)
+{
+    CGSize size; size.width = width; size.height = height; return size;
+}
+
+static inline CGRect CGRectMake(float x, float y, float width, float height)
+{
+    CGRect rect;
+    rect.origin.x = x; rect.origin.y = y;
+    rect.size.width = width; rect.size.height = height;
+    return rect;
+}
+
+}
+
+extern "C" {
+
+struct CGAffineTransform {
+    float a, b, c, d;
+    float tx, ty;
+};
+
+
+
+extern const CGAffineTransform CGAffineTransformIdentity;
+
+
+
+extern CGAffineTransform CGAffineTransformMake(float a, float b, float c, float d, float tx, float ty);
+
+
+
+
+extern CGAffineTransform CGAffineTransformMakeTranslation(float tx, float ty);
+
+
+
+
+extern CGAffineTransform CGAffineTransformMakeScale(float sx, float sy);
+
+
+
+
+extern CGAffineTransform CGAffineTransformMakeRotation(float angle);
+
+
+
+
+extern CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, float tx, float ty);
+
+
+
+
+extern CGAffineTransform CGAffineTransformScale(CGAffineTransform t, float sx, float sy);
+
+
+
+
+extern CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, float angle);
+
+
+
+
+extern CGAffineTransform CGAffineTransformInvert(CGAffineTransform t);
+
+
+
+
+extern CGAffineTransform CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
+
+
+
+
+
+extern CGPoint CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t);
+
+
+
+
+
+extern CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t);
+
+
+
+static inline CGAffineTransform
+__CGAffineTransformMake(float a, float b, float c, float d, float tx, float ty)
+{
+    CGAffineTransform t;
+
+    t.a = a; t.b = b; t.c = c; t.d = d; t.tx = tx; t.ty = ty;
+    return t;
+}
+
+
+
+static inline CGPoint
+__CGPointApplyAffineTransform(CGPoint point, CGAffineTransform t)
+{
+    CGPoint p;
+
+    p.x = t.a * point.x + t.c * point.y + t.tx;
+    p.y = t.b * point.x + t.d * point.y + t.ty;
+    return p;
+}
+
+
+
+static inline CGSize
+__CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t)
+{
+    CGSize s;
+
+    s.width = t.a * size.width + t.c * size.height;
+    s.height = t.b * size.width + t.d * size.height;
+    return s;
+}
+
+
+
+}
+typedef struct CGContext *CGContextRef;
+
+
+
+typedef struct CGColorSpace *CGColorSpaceRef;
+
+
+typedef struct CGDataProvider *CGDataProviderRef;
+
+
+
+
+extern "C" {
+struct CGDataProviderCallbacks {
+    size_t (*getBytes)(void *info, void *buffer, size_t count);
+    void (*skipBytes)(void *info, size_t count);
+    void (*rewind)(void *info);
+    void (*releaseProvider)(void *info);
+};
+typedef struct CGDataProviderCallbacks CGDataProviderCallbacks;
+struct CGDataProviderDirectAccessCallbacks {
+    const void *(*getBytePointer)(void *info);
+    void (*releaseBytePointer)(void *info, const void *pointer);
+    size_t (*getBytes)(void *info, void *buffer, size_t offset, size_t count);
+    void (*releaseProvider)(void *info);
+};
+typedef struct CGDataProviderDirectAccessCallbacks CGDataProviderDirectAccessCallbacks;
+
+
+
+extern CFTypeID CGDataProviderGetTypeID(void);
+
+
+
+
+extern CGDataProviderRef CGDataProviderCreate(void *info, const CGDataProviderCallbacks *callbacks);
+
+
+
+
+extern CGDataProviderRef CGDataProviderCreateDirectAccess(void *info, size_t size, const CGDataProviderDirectAccessCallbacks *callbacks);
+
+
+
+
+
+extern CGDataProviderRef CGDataProviderCreateWithData(void *info, const void *data, size_t size, void (*releaseData)(void *info, const void *data, size_t size));
+
+
+
+extern CGDataProviderRef CGDataProviderCreateWithURL(CFURLRef url);
+
+
+
+extern CGDataProviderRef CGDataProviderRetain(CGDataProviderRef provider);
+
+
+
+extern void CGDataProviderRelease(CGDataProviderRef provider);
+
+
+
+
+
+extern CGDataProviderRef CGDataProviderCreateWithFilename(const char *filename);
+
+}
+
+enum CGColorRenderingIntent {
+    kCGRenderingIntentDefault,
+    kCGRenderingIntentAbsoluteColorimetric,
+    kCGRenderingIntentRelativeColorimetric,
+    kCGRenderingIntentPerceptual,
+    kCGRenderingIntentSaturation
+};
+typedef enum CGColorRenderingIntent CGColorRenderingIntent;
+
+
+
+
+
+extern "C" {
+
+
+
+extern CFTypeID CGColorSpaceGetTypeID(void);
+
+
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreateDeviceGray(void);
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreateDeviceRGB(void);
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreateDeviceCMYK(void);
+extern CGColorSpaceRef CGColorSpaceCreateCalibratedGray(const float whitePoint[3], const float blackPoint[3], float gamma);
+extern CGColorSpaceRef CGColorSpaceCreateCalibratedRGB(const float whitePoint[3], const float blackPoint[3], const float gamma[3], const float matrix[9]);
+extern CGColorSpaceRef CGColorSpaceCreateLab(const float whitePoint[3], const float blackPoint[3], const float range[4]);
+extern CGColorSpaceRef CGColorSpaceCreateICCBased(size_t nComponents, const float *range, CGDataProviderRef profile, CGColorSpaceRef alternate);
+extern CGColorSpaceRef CGColorSpaceCreateIndexed(CGColorSpaceRef baseSpace, size_t lastIndex, const unsigned char *colorTable);
+
+
+
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreatePattern(CGColorSpaceRef baseSpace);
+
+
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreateWithPlatformColorSpace(void *platformColorSpaceReference);
+
+
+
+extern CGColorSpaceRef CGColorSpaceCreateWithName(CFStringRef name);
+
+
+
+
+
+extern size_t CGColorSpaceGetNumberOfComponents(const CGColorSpaceRef cs);
+
+
+
+
+
+extern CGColorSpaceRef CGColorSpaceRetain(CGColorSpaceRef cs);
+
+
+
+extern void CGColorSpaceRelease(CGColorSpaceRef cs);
+
+}
+typedef struct CGFont *CGFontRef;
+typedef unsigned short CGFontIndex;
+typedef CGFontIndex CGGlyph;
+
+
+
+
+
+enum {
+    kCGFontIndexMax = ((1 << 16) - 2),
+    kCGFontIndexInvalid = ((1 << 16) - 1),
+    kCGGlyphMax = kCGFontIndexMax
+};
+
+extern "C" {
+
+
+
+extern CFTypeID CGFontGetTypeID(void);
+
+
+
+
+
+extern CGFontRef CGFontCreateWithPlatformFont(void *platformFontReference);
+
+
+
+extern CGFontRef CGFontRetain(CGFontRef font);
+
+
+
+extern void CGFontRelease(CGFontRef font);
+
+}
+
+
+
+enum {
+    CGGlyphMin = 0,
+    CGGlyphMax = kCGGlyphMax
+};
+typedef struct CGImage *CGImageRef;
+
+
+
+
+
+
+extern "C" {
+
+enum CGImageAlphaInfo {
+    kCGImageAlphaNone,
+    kCGImageAlphaPremultipliedLast,
+    kCGImageAlphaPremultipliedFirst,
+    kCGImageAlphaLast,
+    kCGImageAlphaFirst,
+    kCGImageAlphaNoneSkipLast,
+    kCGImageAlphaNoneSkipFirst
+};
+typedef enum CGImageAlphaInfo CGImageAlphaInfo;
+
+
+
+extern CFTypeID CGImageGetTypeID(void);
+
+
+
+extern CGImageRef CGImageCreate(size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGColorSpaceRef colorspace, CGImageAlphaInfo alphaInfo, CGDataProviderRef provider, const float decode[], bool shouldInterpolate, CGColorRenderingIntent intent);
+
+
+
+extern CGImageRef CGImageMaskCreate(size_t width, size_t height, size_t bitsPerComponent, size_t bitsPerPixel, size_t bytesPerRow, CGDataProviderRef provider, const float decode[], bool shouldInterpolate);
+
+
+
+extern CGImageRef CGImageCreateWithJPEGDataProvider(CGDataProviderRef source, const float decode[], bool shouldInterpolate, CGColorRenderingIntent intent);
+
+
+
+extern CGImageRef CGImageCreateWithPNGDataProvider(CGDataProviderRef source, const float decode[], bool shouldInterpolate, CGColorRenderingIntent intent);
+
+
+
+extern CGImageRef CGImageRetain(CGImageRef image);
+
+
+
+extern void CGImageRelease(CGImageRef image);
+
+
+
+extern bool CGImageIsMask(CGImageRef image);
+
+
+
+extern size_t CGImageGetWidth(CGImageRef image);
+
+
+
+extern size_t CGImageGetHeight(CGImageRef image);
+
+
+
+extern size_t CGImageGetBitsPerComponent(CGImageRef image);
+
+
+
+extern size_t CGImageGetBitsPerPixel(CGImageRef image);
+
+
+
+extern size_t CGImageGetBytesPerRow(CGImageRef image);
+
+
+
+
+extern CGColorSpaceRef CGImageGetColorSpace(CGImageRef image);
+
+
+
+extern CGImageAlphaInfo CGImageGetAlphaInfo(CGImageRef image);
+
+
+
+extern CGDataProviderRef CGImageGetDataProvider(CGImageRef image);
+
+
+
+extern const float *CGImageGetDecode(CGImageRef image);
+
+
+
+extern bool CGImageGetShouldInterpolate(CGImageRef image);
+
+
+
+extern CGColorRenderingIntent CGImageGetRenderingIntent(CGImageRef image);
+
+}
+typedef struct CGPath *CGMutablePathRef;
+typedef const struct CGPath *CGPathRef;
+
+
+
+
+
+extern "C" {
+
+
+
+extern CFTypeID CGPathGetTypeID(void);
+
+
+
+extern CGMutablePathRef CGPathCreateMutable(void);
+
+
+
+extern CGPathRef CGPathCreateCopy(CGPathRef path);
+
+
+
+extern CGMutablePathRef CGPathCreateMutableCopy(CGPathRef path);
+
+
+
+extern CGPathRef CGPathRetain(CGPathRef path);
+
+
+
+extern void CGPathRelease(CGPathRef path);
+
+
+
+extern bool CGPathEqualToPath(CGPathRef path1, CGPathRef path2);
+
+
+
+
+
+
+extern void CGPathMoveToPoint(CGMutablePathRef path, const CGAffineTransform *m, float x, float y);
+
+
+
+
+
+extern void CGPathAddLineToPoint(CGMutablePathRef path, const CGAffineTransform *m, float x, float y);
+
+
+
+
+
+extern void CGPathAddQuadCurveToPoint(CGMutablePathRef path, const CGAffineTransform *m, float cpx, float cpy, float x, float y);
+
+
+
+
+
+
+extern void CGPathAddCurveToPoint(CGMutablePathRef path, const CGAffineTransform *m, float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
+
+
+
+
+extern void CGPathCloseSubpath(CGMutablePathRef path);
+
+
+
+
+
+
+extern void CGPathAddRect(CGMutablePathRef path, const CGAffineTransform *m, CGRect rect);
+
+
+
+
+
+extern void CGPathAddRects(CGMutablePathRef path, const CGAffineTransform *m, const CGRect rects[], size_t count);
+
+
+
+
+
+extern void CGPathAddLines(CGMutablePathRef path, const CGAffineTransform *m, const CGPoint points[], size_t count);
+extern void CGPathAddArc(CGMutablePathRef path, const CGAffineTransform *m, float x, float y, float radius, float startAngle, float endAngle, bool clockwise);
+extern void CGPathAddArcToPoint(CGMutablePathRef path, const CGAffineTransform *m, float x1, float y1, float x2, float y2, float radius);
+
+
+
+
+extern void CGPathAddPath(CGMutablePathRef path1, const CGAffineTransform *m, CGPathRef path2);
+
+
+
+
+
+extern bool CGPathIsEmpty(CGPathRef path);
+
+
+
+extern bool CGPathIsRect(CGPathRef path, CGRect *rect);
+
+
+
+
+extern CGPoint CGPathGetCurrentPoint(CGPathRef path);
+
+
+
+
+
+
+extern CGRect CGPathGetBoundingBox(CGPathRef path);
+
+enum CGPathElementType {
+    kCGPathElementMoveToPoint,
+    kCGPathElementAddLineToPoint,
+    kCGPathElementAddQuadCurveToPoint,
+    kCGPathElementAddCurveToPoint,
+    kCGPathElementCloseSubpath
+};
+typedef enum CGPathElementType CGPathElementType;
+
+struct CGPathElement {
+    CGPathElementType type;
+    CGPoint *points;
+};
+typedef struct CGPathElement CGPathElement;
+
+typedef void (*CGPathApplierFunction)(void *info, const CGPathElement *element);
+
+extern void CGPathApply(CGPathRef path, void *info, CGPathApplierFunction function);
+
+}
+typedef struct CGPattern *CGPatternRef;
+
+
+enum CGPatternTiling {
+    kCGPatternTilingNoDistortion,
+    kCGPatternTilingConstantSpacingMinimalDistortion,
+    kCGPatternTilingConstantSpacing
+};
+typedef enum CGPatternTiling CGPatternTiling;
+
+extern "C" {
+typedef void (*CGPatternDrawPatternCallback)(void *info, CGContextRef c);
+typedef void (*CGPatternReleaseInfoCallback)(void *info);
+
+struct CGPatternCallbacks {
+    unsigned int version;
+    CGPatternDrawPatternCallback drawPattern;
+    CGPatternReleaseInfoCallback releaseInfo;
+};
+typedef struct CGPatternCallbacks CGPatternCallbacks;
+
+
+
+extern CFTypeID CGPatternGetTypeID(void);
+
+
+
+extern CGPatternRef CGPatternCreate(void *info, CGRect bounds, CGAffineTransform matrix, float xStep, float yStep, CGPatternTiling tiling, bool isColored, const CGPatternCallbacks *callbacks);
+
+
+
+extern CGPatternRef CGPatternRetain(CGPatternRef pattern);
+
+
+
+extern void CGPatternRelease(CGPatternRef pattern);
+
+}
+typedef struct CGPDFDocument *CGPDFDocumentRef;
+
+
+
+
+
+
+extern "C" {
+
+
+
+extern CFTypeID CGPDFDocumentGetTypeID(void);
+
+
+
+
+extern CGPDFDocumentRef CGPDFDocumentCreateWithProvider(CGDataProviderRef provider);
+
+
+
+extern CGPDFDocumentRef CGPDFDocumentCreateWithURL(CFURLRef url);
+
+
+
+extern CGPDFDocumentRef CGPDFDocumentRetain(CGPDFDocumentRef document);
+
+
+
+extern void CGPDFDocumentRelease(CGPDFDocumentRef document);
+
+
+
+
+
+
+extern bool CGPDFDocumentIsEncrypted(CGPDFDocumentRef document);
+
+
+
+
+
+extern bool CGPDFDocumentUnlockWithPassword(CGPDFDocumentRef document, const char *password);
+
+
+
+
+
+extern bool CGPDFDocumentIsUnlocked(CGPDFDocumentRef document);
+
+
+
+
+
+
+extern bool CGPDFDocumentAllowsPrinting(CGPDFDocumentRef document);
+
+
+
+
+
+
+extern bool CGPDFDocumentAllowsCopying(CGPDFDocumentRef document);
+
+
+
+extern size_t CGPDFDocumentGetNumberOfPages(CGPDFDocumentRef document);
+
+
+
+extern CGRect CGPDFDocumentGetMediaBox(CGPDFDocumentRef document, int page);
+
+
+
+extern CGRect CGPDFDocumentGetCropBox(CGPDFDocumentRef document, int page);
+
+
+
+extern CGRect CGPDFDocumentGetBleedBox(CGPDFDocumentRef document, int page);
+
+
+
+extern CGRect CGPDFDocumentGetTrimBox(CGPDFDocumentRef document, int page);
+
+
+
+extern CGRect CGPDFDocumentGetArtBox(CGPDFDocumentRef document, int page);
+
+
+
+
+extern int CGPDFDocumentGetRotationAngle(CGPDFDocumentRef document, int page);
+
+}
+typedef struct CGFunction *CGFunctionRef;
+typedef void (*CGFunctionEvaluateCallback)(void *info, const float *in, float *out);
+typedef void (*CGFunctionReleaseInfoCallback)(void *info);
+struct CGFunctionCallbacks {
+    unsigned int version;
+    CGFunctionEvaluateCallback evaluate;
+    CGFunctionReleaseInfoCallback releaseInfo;
+};
+typedef struct CGFunctionCallbacks CGFunctionCallbacks;
+
+extern "C" {
+
+
+
+
+
+extern CFTypeID CGFunctionGetTypeID(void);
+extern CGFunctionRef CGFunctionCreate(void *info, size_t domainDimension, const float *domain, size_t rangeDimension, const float *range, const CGFunctionCallbacks *callbacks);
+
+
+
+
+
+
+extern CGFunctionRef CGFunctionRetain(CGFunctionRef function);
+
+
+
+
+
+
+extern void CGFunctionRelease(CGFunctionRef function);
+
+}
+
+
+
+typedef struct CGShading *CGShadingRef;
+
+extern "C" {
+
+
+
+
+
+extern CFTypeID CGShadingGetTypeID(void);
+extern CGShadingRef CGShadingCreateAxial(CGColorSpaceRef colorspace, CGPoint start, CGPoint end, CGFunctionRef function, bool extendStart, bool extendEnd);
+extern CGShadingRef CGShadingCreateRadial(CGColorSpaceRef colorspace, CGPoint start, float startRadius, CGPoint end, float endRadius, CGFunctionRef function, bool extendStart, bool extendEnd);
+
+
+
+
+
+
+extern CGShadingRef CGShadingRetain(CGShadingRef shading);
+
+
+
+
+
+
+extern void CGShadingRelease(CGShadingRef shading);
+
+}
+
+
+extern "C" {
+
+
+
+enum CGLineJoin {
+    kCGLineJoinMiter,
+    kCGLineJoinRound,
+    kCGLineJoinBevel
+};
+typedef enum CGLineJoin CGLineJoin;
+
+
+
+enum CGLineCap {
+    kCGLineCapButt,
+    kCGLineCapRound,
+    kCGLineCapSquare
+};
+typedef enum CGLineCap CGLineCap;
+
+
+
+enum CGPathDrawingMode {
+    kCGPathFill,
+    kCGPathEOFill,
+    kCGPathStroke,
+    kCGPathFillStroke,
+    kCGPathEOFillStroke
+};
+typedef enum CGPathDrawingMode CGPathDrawingMode;
+
+
+
+enum CGTextDrawingMode {
+    kCGTextFill,
+    kCGTextStroke,
+    kCGTextFillStroke,
+    kCGTextInvisible,
+    kCGTextFillClip,
+    kCGTextStrokeClip,
+    kCGTextFillStrokeClip,
+    kCGTextClip
+};
+typedef enum CGTextDrawingMode CGTextDrawingMode;
+
+
+
+enum CGTextEncoding {
+    kCGEncodingFontSpecific,
+    kCGEncodingMacRoman
+};
+typedef enum CGTextEncoding CGTextEncoding;
+
+enum CGInterpolationQuality {
+    kCGInterpolationDefault,
+    kCGInterpolationNone,
+    kCGInterpolationLow,
+    kCGInterpolationHigh
+};
+typedef enum CGInterpolationQuality CGInterpolationQuality;
+
+
+
+extern CFTypeID CGContextGetTypeID(void);
+
+
+
+
+
+
+
+extern void CGContextSaveGState(CGContextRef c);
+
+
+
+
+
+extern void CGContextRestoreGState(CGContextRef c);
+
+
+
+
+
+
+extern void CGContextScaleCTM(CGContextRef c, float sx, float sy);
+
+
+
+
+extern void CGContextTranslateCTM(CGContextRef c, float tx, float ty);
+
+
+
+
+extern void CGContextRotateCTM(CGContextRef c, float angle);
+
+
+
+
+extern void CGContextConcatCTM(CGContextRef c, CGAffineTransform transform);
+
+
+
+extern CGAffineTransform CGContextGetCTM(CGContextRef c);
+
+
+
+
+
+extern void CGContextSetLineWidth(CGContextRef c, float width);
+
+
+
+extern void CGContextSetLineCap(CGContextRef c, CGLineCap cap);
+
+
+
+extern void CGContextSetLineJoin(CGContextRef c, CGLineJoin join);
+
+
+
+extern void CGContextSetMiterLimit(CGContextRef c, float limit);
+
+
+
+extern void CGContextSetLineDash(CGContextRef c, float phase, const float lengths[], size_t count);
+
+
+
+
+extern void CGContextSetFlatness(CGContextRef c, float flatness);
+
+
+
+extern void CGContextSetAlpha(CGContextRef c, float alpha);
+extern void CGContextBeginPath(CGContextRef c);
+
+
+
+extern void CGContextMoveToPoint(CGContextRef c, float x, float y);
+
+
+
+extern void CGContextAddLineToPoint(CGContextRef c, float x, float y);
+
+
+
+
+extern void CGContextAddCurveToPoint(CGContextRef c, float cp1x, float cp1y, float cp2x, float cp2y, float x, float y);
+
+
+
+
+extern void CGContextAddQuadCurveToPoint(CGContextRef c, float cpx, float cpy, float x, float y);
+
+
+
+extern void CGContextClosePath(CGContextRef c);
+
+
+
+
+
+extern void CGContextAddRect(CGContextRef c, CGRect rect);
+
+
+
+extern void CGContextAddRects(CGContextRef c, const CGRect rects[], size_t count);
+
+
+
+extern void CGContextAddLines(CGContextRef c, const CGPoint points[], size_t count);
+extern void CGContextAddArc(CGContextRef c, float x, float y, float radius, float startAngle, float endAngle, int clockwise);
+
+
+
+
+
+
+extern void CGContextAddArcToPoint(CGContextRef c, float x1, float y1, float x2, float y2, float radius);
+
+
+
+
+extern void CGContextAddPath(CGContextRef context, CGPathRef path);
+
+
+
+
+
+extern int CGContextIsPathEmpty(CGContextRef c);
+
+
+
+
+extern CGPoint CGContextGetPathCurrentPoint(CGContextRef c);
+
+
+
+
+
+extern CGRect CGContextGetPathBoundingBox(CGContextRef c);
+
+
+
+
+
+extern void CGContextDrawPath(CGContextRef c, CGPathDrawingMode mode);
+
+
+
+
+
+
+extern void CGContextFillPath(CGContextRef c);
+
+
+
+
+extern void CGContextEOFillPath(CGContextRef c);
+
+
+
+extern void CGContextStrokePath(CGContextRef c);
+
+
+
+extern void CGContextFillRect(CGContextRef c, CGRect rect);
+
+
+
+
+extern void CGContextFillRects(CGContextRef c, const CGRect rects[], size_t count);
+
+
+
+extern void CGContextStrokeRect(CGContextRef c, CGRect rect);
+
+
+
+
+extern void CGContextStrokeRectWithWidth(CGContextRef c, CGRect rect, float width);
+
+
+
+
+extern void CGContextClearRect(CGContextRef c, CGRect rect);
+
+
+
+
+
+
+
+extern void CGContextClip(CGContextRef c);
+
+
+
+
+
+extern void CGContextEOClip(CGContextRef c);
+
+
+
+
+
+
+extern void CGContextClipToRect(CGContextRef c, CGRect rect);
+
+
+
+
+
+extern void CGContextClipToRects(CGContextRef c, const CGRect rects[], size_t count);
+
+
+
+
+
+
+
+extern void CGContextSetFillColorSpace(CGContextRef c, CGColorSpaceRef colorspace);
+
+
+
+
+
+extern void CGContextSetStrokeColorSpace(CGContextRef c, CGColorSpaceRef colorspace);
+extern void CGContextSetFillColor(CGContextRef c, const float components[]);
+
+
+
+
+
+
+
+extern void CGContextSetStrokeColor(CGContextRef c, const float components[]);
+extern void CGContextSetFillPattern(CGContextRef c, CGPatternRef pattern, const float components[]);
+extern void CGContextSetStrokePattern(CGContextRef c, CGPatternRef pattern, const float components[]);
+
+
+
+extern void CGContextSetPatternPhase(CGContextRef c, CGSize phase);
+
+
+
+
+
+
+extern void CGContextSetGrayFillColor(CGContextRef c, float gray, float alpha);
+
+
+
+
+extern void CGContextSetGrayStrokeColor(CGContextRef c, float gray, float alpha);
+
+
+
+
+
+extern void CGContextSetRGBFillColor(CGContextRef c, float red, float green, float blue, float alpha);
+
+
+
+
+
+extern void CGContextSetRGBStrokeColor(CGContextRef c, float red, float green, float blue, float alpha);
+
+
+
+
+
+extern void CGContextSetCMYKFillColor(CGContextRef c, float cyan, float magenta, float yellow, float black, float alpha);
+
+
+
+
+
+extern void CGContextSetCMYKStrokeColor(CGContextRef c, float cyan, float magenta, float yellow, float black, float alpha);
+
+
+
+
+
+extern void CGContextSetRenderingIntent(CGContextRef c, CGColorRenderingIntent intent);
+
+
+
+
+
+
+extern void CGContextDrawImage(CGContextRef c, CGRect rect, CGImageRef image);
+
+
+
+
+
+
+
+extern CGInterpolationQuality CGContextGetInterpolationQuality(CGContextRef c);
+
+
+
+extern void CGContextSetInterpolationQuality(CGContextRef c, CGInterpolationQuality quality);
+
+
+
+
+
+extern void CGContextDrawShading(CGContextRef c, CGShadingRef shading);
+
+
+
+
+
+
+
+extern void CGContextSetCharacterSpacing(CGContextRef c, float spacing);
+
+
+
+
+extern void CGContextSetTextPosition(CGContextRef c, float x, float y);
+
+
+
+
+extern CGPoint CGContextGetTextPosition(CGContextRef c);
+
+
+
+extern void CGContextSetTextMatrix(CGContextRef c, CGAffineTransform t);
+
+
+
+extern CGAffineTransform CGContextGetTextMatrix(CGContextRef c);
+
+
+
+extern void CGContextSetTextDrawingMode(CGContextRef c, CGTextDrawingMode mode);
+
+
+
+extern void CGContextSetFont(CGContextRef c, CGFontRef font);
+
+
+
+extern void CGContextSetFontSize(CGContextRef c, float size);
+
+
+
+
+
+extern void CGContextSelectFont(CGContextRef c, const char *name, float size, CGTextEncoding textEncoding);
+
+
+
+
+
+
+extern void CGContextShowText(CGContextRef c, const char *string, size_t length);
+
+
+
+
+extern void CGContextShowGlyphs(CGContextRef c, const CGGlyph g[], size_t count);
+extern void CGContextShowTextAtPoint(CGContextRef c, float x, float y, const char *string, size_t length);
+
+
+
+
+
+extern void CGContextShowGlyphsAtPoint(CGContextRef c, float x, float y, const CGGlyph glyphs[], size_t count);
+
+
+
+
+
+
+
+extern void CGContextDrawPDFDocument(CGContextRef c, CGRect rect, CGPDFDocumentRef document, int page);
+
+
+
+
+
+extern void CGContextBeginPage(CGContextRef c, const CGRect *mediaBox);
+
+
+
+extern void CGContextEndPage(CGContextRef c);
+
+
+
+
+
+extern CGContextRef CGContextRetain(CGContextRef c);
+
+
+
+extern void CGContextRelease(CGContextRef c);
+
+
+
+extern void CGContextFlush(CGContextRef c);
+
+
+
+extern void CGContextSynchronize(CGContextRef c);
+
+
+
+
+
+
+extern void CGContextSetShouldAntialias(CGContextRef c, bool shouldAntialias);
+
+
+
+
+
+
+extern void CGContextSetShouldSmoothFonts(CGContextRef c, bool shouldSmoothFonts);
+
+}
+
+extern "C" {
+extern CGContextRef CGBitmapContextCreate(void *data, size_t width, size_t height, size_t bitsPerComponent, size_t bytesPerRow, CGColorSpaceRef colorspace, CGImageAlphaInfo alphaInfo);
+
+
+
+
+extern void *CGBitmapContextGetData(CGContextRef c);
+
+
+
+
+extern size_t CGBitmapContextGetWidth(CGContextRef c);
+
+
+
+
+extern size_t CGBitmapContextGetHeight(CGContextRef c);
+
+
+
+
+extern size_t CGBitmapContextGetBitsPerComponent(CGContextRef c);
+
+
+
+
+extern size_t CGBitmapContextGetBitsPerPixel(CGContextRef c);
+
+
+
+
+extern size_t CGBitmapContextGetBytesPerRow(CGContextRef c);
+
+
+
+
+extern CGColorSpaceRef CGBitmapContextGetColorSpace(CGContextRef c);
+
+
+
+
+extern CGImageAlphaInfo CGBitmapContextGetAlphaInfo(CGContextRef c);
+
+}
+
+
+typedef struct CGDataConsumer *CGDataConsumerRef;
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+struct CGDataConsumerCallbacks {
+    size_t (*putBytes)(void *info, const void *buffer, size_t count);
+    void (*releaseConsumer)(void *info);
+};
+typedef struct CGDataConsumerCallbacks CGDataConsumerCallbacks;
+
+
+
+extern CFTypeID CGDataConsumerGetTypeID(void);
+
+
+
+
+extern CGDataConsumerRef CGDataConsumerCreate(void *info, const CGDataConsumerCallbacks *callbacks);
+
+
+
+extern CGDataConsumerRef CGDataConsumerCreateWithURL(CFURLRef url);
+
+
+
+extern CGDataConsumerRef CGDataConsumerRetain(CGDataConsumerRef consumer);
+
+
+
+extern void CGDataConsumerRelease(CGDataConsumerRef consumer);
+
+}
+
+extern "C" {
+
+
+enum _CGError {
+    kCGErrorSuccess = 0,
+    kCGErrorFirst = 1000,
+    kCGErrorFailure = kCGErrorFirst,
+    kCGErrorIllegalArgument = 1001,
+    kCGErrorInvalidConnection = 1002,
+    kCGErrorInvalidContext = 1003,
+    kCGErrorCannotComplete = 1004,
+    kCGErrorNameTooLong = 1005,
+    kCGErrorNotImplemented = 1006,
+    kCGErrorRangeCheck = 1007,
+    kCGErrorTypeCheck = 1008,
+    kCGErrorNoCurrentPoint = 1009,
+    kCGErrorInvalidOperation = 1010,
+    kCGErrorNoneAvailable = 1011,
+
+
+        kCGErrorApplicationRequiresNewerSystem = 1015,
+
+
+
+        kCGErrorApplicationNotPermittedToExecute = 1016,
+
+
+    kCGErrorLast = kCGErrorApplicationRequiresNewerSystem
+};
+typedef int32_t CGError;
+
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+extern "C" {
+
+typedef struct _CGDirectDisplayID * CGDirectDisplayID;
+typedef struct _CGDirectPaletteRef * CGDirectPaletteRef;
+typedef uint32_t CGDisplayCount;
+typedef uint32_t CGTableCount;
+typedef int32_t CGDisplayCoord;
+typedef uint8_t CGByteValue;
+typedef uint32_t CGOpenGLDisplayMask;
+typedef uint32_t CGBeamPosition;
+typedef int32_t CGMouseDelta;
+typedef double CGRefreshRate;
+
+typedef CGError CGDisplayErr;
+CGDirectDisplayID CGMainDisplayID(void);
+CGDisplayErr CGGetDisplaysWithPoint(CGPoint point,
+                             CGDisplayCount maxDisplays,
+                             CGDirectDisplayID * dspys,
+                             CGDisplayCount * dspyCnt);
+
+CGDisplayErr CGGetDisplaysWithRect(CGRect rect,
+                            CGDisplayCount maxDisplays,
+                            CGDirectDisplayID * dspys,
+                            CGDisplayCount * dspyCnt);
+
+CGDisplayErr CGGetDisplaysWithOpenGLDisplayMask(CGOpenGLDisplayMask mask,
+                            CGDisplayCount maxDisplays,
+                            CGDirectDisplayID * dspys,
+                            CGDisplayCount * dspyCnt);
+CGDisplayErr CGGetActiveDisplayList(CGDisplayCount maxDisplays,
+                             CGDirectDisplayID * activeDspys,
+                             CGDisplayCount * dspyCnt);
+CGDisplayErr CGGetOnlineDisplayList(CGDisplayCount maxDisplays,
+                                    CGDirectDisplayID * onlineDspys,
+                                    CGDisplayCount * dspyCnt);
+
+
+CGOpenGLDisplayMask CGDisplayIDToOpenGLDisplayMask(CGDirectDisplayID display);
+
+
+
+
+
+
+
+CGDirectDisplayID CGOpenGLDisplayMaskToDisplayID(CGOpenGLDisplayMask mask);
+
+
+CGRect CGDisplayBounds(CGDirectDisplayID display);
+
+size_t CGDisplayPixelsWide(CGDirectDisplayID display);
+size_t CGDisplayPixelsHigh(CGDirectDisplayID display);
+CFArrayRef CGDisplayAvailableModes(CGDirectDisplayID display);
+CFDictionaryRef CGDisplayBestModeForParameters(CGDirectDisplayID display, size_t bitsPerPixel, size_t width, size_t height, boolean_t * exactMatch);
+
+CFDictionaryRef CGDisplayBestModeForParametersAndRefreshRate(CGDirectDisplayID display, size_t bitsPerPixel, size_t width, size_t height, CGRefreshRate refresh, boolean_t * exactMatch);
+
+CFDictionaryRef CGDisplayBestModeForParametersAndRefreshRateWithProperty(CGDirectDisplayID display, size_t bitsPerPixel, size_t width, size_t height, CGRefreshRate refresh, CFStringRef property, boolean_t * exactMatch);
+
+
+
+
+
+CFDictionaryRef CGDisplayCurrentMode(CGDirectDisplayID display);
+CGDisplayErr CGDisplaySwitchToMode(CGDirectDisplayID display, CFDictionaryRef mode);
+
+
+size_t CGDisplayBitsPerPixel(CGDirectDisplayID display);
+size_t CGDisplayBitsPerSample(CGDirectDisplayID display);
+size_t CGDisplaySamplesPerPixel(CGDirectDisplayID display);
+size_t CGDisplayBytesPerRow(CGDirectDisplayID display);
+typedef float CGGammaValue;
+
+CGDisplayErr CGSetDisplayTransferByFormula(CGDirectDisplayID display,
+                                    CGGammaValue redMin,
+                                    CGGammaValue redMax,
+                                    CGGammaValue redGamma,
+                                    CGGammaValue greenMin,
+                                    CGGammaValue greenMax,
+                                    CGGammaValue greenGamma,
+                                    CGGammaValue blueMin,
+                                    CGGammaValue blueMax,
+                                    CGGammaValue blueGamma);
+
+CGDisplayErr CGGetDisplayTransferByFormula(CGDirectDisplayID display,
+                                    CGGammaValue *redMin,
+                                    CGGammaValue *redMax,
+                                    CGGammaValue *redGamma,
+                                    CGGammaValue *greenMin,
+                                    CGGammaValue *greenMax,
+                                    CGGammaValue *greenGamma,
+                                    CGGammaValue *blueMin,
+                                    CGGammaValue *blueMax,
+                                    CGGammaValue *blueGamma);
+CGDisplayErr CGSetDisplayTransferByTable(CGDirectDisplayID display,
+                                  CGTableCount tableSize,
+                                  const CGGammaValue *redTable,
+                                  const CGGammaValue *greenTable,
+                                  const CGGammaValue *blueTable);
+
+
+
+
+
+
+CGDisplayErr CGGetDisplayTransferByTable(CGDirectDisplayID display,
+                                  CGTableCount capacity,
+                                  CGGammaValue *redTable,
+                                  CGGammaValue *greenTable,
+                                  CGGammaValue *blueTable,
+                                  CGTableCount *sampleCount);
+
+
+CGDisplayErr CGSetDisplayTransferByByteTable(CGDirectDisplayID display,
+                                      CGTableCount tableSize,
+                                      const CGByteValue *redTable,
+                                      const CGByteValue *greenTable,
+                                      const CGByteValue *blueTable);
+
+
+void CGDisplayRestoreColorSyncSettings(void);
+
+
+
+boolean_t CGDisplayIsCaptured(CGDirectDisplayID display);
+CGDisplayErr CGDisplayCapture(CGDirectDisplayID display);
+CGDisplayErr CGDisplayRelease(CGDirectDisplayID display);
+
+
+
+
+
+
+CGDisplayErr CGCaptureAllDisplays(void);
+
+
+
+
+
+CGDisplayErr CGReleaseAllDisplays(void);
+
+
+
+
+
+void * CGShieldingWindowID(CGDirectDisplayID display);
+
+
+
+
+
+
+int32_t CGShieldingWindowLevel(void);
+
+
+
+
+
+
+void * CGDisplayBaseAddress(CGDirectDisplayID display);
+
+
+
+
+
+
+
+void * CGDisplayAddressForPosition(CGDirectDisplayID display, CGDisplayCoord x, CGDisplayCoord y);
+
+
+
+CGDisplayErr CGDisplayHideCursor(CGDirectDisplayID display);
+CGDisplayErr CGDisplayShowCursor(CGDirectDisplayID display);
+
+
+
+
+
+
+
+CGDisplayErr CGDisplayMoveCursorToPoint(CGDirectDisplayID display, CGPoint point);
+
+
+
+
+
+void CGGetLastMouseDelta( CGMouseDelta * deltaX, CGMouseDelta * deltaY );
+boolean_t CGDisplayCanSetPalette(CGDirectDisplayID display);
+CGDisplayErr CGDisplaySetPalette(CGDirectDisplayID display, const CGDirectPaletteRef palette);
+CGDisplayErr CGDisplayWaitForBeamPositionOutsideLines( CGDirectDisplayID display,
+                                                       CGBeamPosition upperScanLine,
+                                                       CGBeamPosition lowerScanLine );
+
+
+
+
+
+
+CGBeamPosition CGDisplayBeamPosition( CGDirectDisplayID display );
+
+}
+extern "C" {
+
+typedef float CGPaletteBlendFraction;
+
+
+
+
+
+
+
+struct _CGDeviceColor
+{
+    float red;
+    float green;
+    float blue;
+};
+typedef struct _CGDeviceColor CGDeviceColor;
+
+struct _CGDeviceByteColor
+{
+    CGByteValue red;
+    CGByteValue green;
+    CGByteValue blue;
+};
+typedef struct _CGDeviceByteColor CGDeviceByteColor;
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateDefaultColorPalette(void);
+
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateWithDisplay(CGDirectDisplayID display);
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateWithCapacity( CGTableCount capacity );
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateWithSamples(CGDeviceColor * sampleTable, CGTableCount sampleCount);
+
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateWithByteSamples(CGDeviceByteColor * sampleTable, CGTableCount sampleCount);
+
+
+
+
+void CGPaletteRelease( CGDirectPaletteRef palette );
+
+
+
+
+CGDeviceColor CGPaletteGetColorAtIndex(CGDirectPaletteRef palette, CGTableCount index);
+
+
+
+
+
+
+CGTableCount CGPaletteGetIndexForColor(CGDirectPaletteRef palette, CGDeviceColor color);
+
+
+
+
+CGTableCount CGPaletteGetNumberOfSamples(CGDirectPaletteRef palette);
+
+
+
+
+
+void CGPaletteSetColorAtIndex(CGDirectPaletteRef palette, CGDeviceColor color, CGTableCount index);
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateCopy(CGDirectPaletteRef palette);
+
+
+
+
+Boolean CGPaletteIsEqualToPalette(CGDirectPaletteRef palette1, CGDirectPaletteRef palette2);
+
+
+
+
+
+CGDirectPaletteRef CGPaletteCreateFromPaletteBlendedWithColor(
+                                          CGDirectPaletteRef palette,
+                                          CGPaletteBlendFraction fraction,
+                                          CGDeviceColor color);
+
+}
+extern "C" {
+typedef struct _CGDisplayConfigRef * CGDisplayConfigRef;
+
+
+CGError CGBeginDisplayConfiguration(CGDisplayConfigRef *pConfigRef);
+CGError CGConfigureDisplayOrigin(CGDisplayConfigRef configRef,
+                                 CGDirectDisplayID display,
+                                 CGDisplayCoord x,
+                                 CGDisplayCoord y);
+CGError CGConfigureDisplayMode(CGDisplayConfigRef configRef,
+                                CGDirectDisplayID display,
+                                CFDictionaryRef mode);
+CGError CGConfigureDisplayMirrorOfDisplay(CGDisplayConfigRef configRef,
+                                                     CGDirectDisplayID display,
+                                                     CGDirectDisplayID masterDisplay);
+
+
+CGError CGCancelDisplayConfiguration(CGDisplayConfigRef configRef);
+enum {
+    kCGConfigureForAppOnly = 0,
+    kCGConfigureForSession = 1,
+    kCGConfigurePermanently = 2
+};
+typedef u_int32_t CGConfigureOption;
+
+CGError CGCompleteDisplayConfiguration( CGDisplayConfigRef configRef, CGConfigureOption option );
+
+
+void CGRestorePermanentDisplayConfiguration(void);
+boolean_t CGDisplayIsActive(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsAsleep(CGDirectDisplayID display);
+
+
+
+
+
+ boolean_t CGDisplayIsOnline(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsMain(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsBuiltin(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsInMirrorSet(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsAlwaysInMirrorSet(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayIsInHWMirrorSet(CGDirectDisplayID display);
+
+
+CGDirectDisplayID CGDisplayMirrorsDisplay(CGDirectDisplayID display);
+
+
+boolean_t CGDisplayUsesOpenGLAcceleration(CGDirectDisplayID display);
+
+
+
+
+
+
+CGDirectDisplayID CGDisplayPrimaryDisplay(CGDirectDisplayID display);
+
+
+
+
+
+uint32_t CGDisplayUnitNumber(CGDirectDisplayID display);
+uint32_t CGDisplayVendorNumber(CGDirectDisplayID display);
+uint32_t CGDisplayModelNumber(CGDirectDisplayID display);
+uint32_t CGDisplaySerialNumber(CGDirectDisplayID display);
+
+
+
+
+}
+extern "C" {
+
+typedef uint32_t CGDisplayFadeReservationToken;
+
+
+typedef float CGDisplayBlendFraction;
+typedef float CGDisplayFadeInterval;
+CGError CGConfigureDisplayFadeEffect(CGDisplayConfigRef configRef,
+                                     CGDisplayFadeInterval fadeOutSeconds,
+                                     CGDisplayFadeInterval fadeInSeconds,
+                                     float fadeRed,
+                                     float fadeGreen,
+                                     float fadeBlue);
+
+
+
+
+
+
+
+typedef float CGDisplayReservationInterval;
+CGError CGAcquireDisplayFadeReservation(CGDisplayReservationInterval seconds,
+                                        CGDisplayFadeReservationToken * pNewToken);
+CGError CGReleaseDisplayFadeReservation(CGDisplayFadeReservationToken myToken);
+CGError CGDisplayFade(CGDisplayFadeReservationToken myToken,
+                      CGDisplayFadeInterval seconds,
+                      CGDisplayBlendFraction startBlend,
+                      CGDisplayBlendFraction endBlend,
+                      float redBlend, float greenBlend, float blueBlend,
+                      boolean_t synchronous );
+
+
+
+
+boolean_t CGDisplayFadeOperationInProgress(void);
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+extern CGContextRef CGPDFContextCreate(CGDataConsumerRef consumer, const CGRect *mediaBox, CFDictionaryRef auxiliaryInfo);
+
+
+
+extern CGContextRef CGPDFContextCreateWithURL(CFURLRef url, const CGRect *mediaBox, CFDictionaryRef auxiliaryInfo);
+}
+
+extern "C" {
+
+typedef CGError CGEventErr;
+typedef u_int32_t CGRectCount;
+typedef void (*CGScreenRefreshCallback)(CGRectCount count, const CGRect * rectArray, void * userParameter);
+
+
+
+
+
+
+
+extern void CGRegisterScreenRefreshCallback( CGScreenRefreshCallback function, void * userParameter );
+
+
+
+
+
+extern void CGUnregisterScreenRefreshCallback( CGScreenRefreshCallback function, void * userParameter );
+extern CGEventErr CGWaitForScreenRefreshRects( CGRect ** pRectArray, CGRectCount * pCount );
+
+
+
+
+extern void CGReleaseScreenRefreshRects( CGRect * rectArray );
+typedef u_int32_t CGButtonCount;
+extern CGEventErr CGPostMouseEvent( CGPoint mouseCursorPosition,
+                                        boolean_t updateMouseCursorPosition,
+                                        CGButtonCount buttonCount,
+                                        boolean_t mouseButtonDown, ... );
+typedef u_int32_t CGWheelCount;
+extern CGEventErr CGPostScrollWheelEvent( CGWheelCount wheelCount,
+                                            int32_t wheel1, ... );
+typedef u_int16_t CGCharCode;
+typedef u_int16_t CGKeyCode;
+
+extern CGEventErr CGPostKeyboardEvent( CGCharCode keyChar,
+                                          CGKeyCode virtualKey,
+                                          boolean_t keyDown );
+
+
+
+
+
+extern CGEventErr CGWarpMouseCursorPosition( CGPoint newCursorPosition );
+extern CGEventErr CGInhibitLocalEvents( boolean_t doInhibit);
+
+
+
+
+
+extern CGEventErr CGSetLocalEventsSuppressionInterval(CFTimeInterval seconds);
+extern CGEventErr CGEnableEventStateCombining(boolean_t doCombineState);
+enum
+{
+    kCGEventFilterMaskPermitLocalMouseEvents = 0x00000001,
+    kCGEventFilterMaskPermitLocalKeyboardEvents = 0x00000002,
+    kCGEventFilterMaskPermitSystemDefinedEvents = 0x00000004
+};
+typedef uint32_t CGEventFilterMask;
+
+enum
+{
+    kCGEventSupressionStateSupressionInterval = 0,
+    kCGEventSupressionStateRemoteMouseDrag,
+    kCGNumberOfEventSupressionStates
+};
+typedef uint32_t CGEventSupressionState;
+
+
+
+
+
+extern CGEventErr CGSetLocalEventsFilterDuringSupressionState(CGEventFilterMask filter,
+CGEventSupressionState state);
+extern CGEventErr CGAssociateMouseAndMouseCursorPosition(boolean_t connected);
+extern CFMachPortRef CGWindowServerCFMachPort(void);
+
+
+}
+
+extern "C" {
+typedef int32_t CGWindowLevel;
+typedef int32_t CGWindowLevelKey;
+
+enum _CGCommonWindowLevelKey {
+    kCGBaseWindowLevelKey = 0,
+    kCGMinimumWindowLevelKey,
+    kCGDesktopWindowLevelKey,
+    kCGBackstopMenuLevelKey,
+    kCGNormalWindowLevelKey,
+    kCGFloatingWindowLevelKey,
+    kCGTornOffMenuWindowLevelKey,
+    kCGDockWindowLevelKey,
+    kCGMainMenuWindowLevelKey,
+    kCGStatusWindowLevelKey,
+    kCGModalPanelWindowLevelKey,
+    kCGPopUpMenuWindowLevelKey,
+    kCGDraggingWindowLevelKey,
+    kCGScreenSaverWindowLevelKey,
+    kCGMaximumWindowLevelKey,
+    kCGOverlayWindowLevelKey,
+    kCGHelpWindowLevelKey,
+    kCGUtilityWindowLevelKey,
+    kCGDesktopIconWindowLevelKey,
+    kCGCursorWindowLevelKey,
+    kCGNumberOfWindowLevelKeys
+};
+
+CGWindowLevel CGWindowLevelForKey( CGWindowLevelKey key );
+}
+
+
+
+extern "C" {
+
+
+typedef long CMError;
+
+typedef struct OpaqueCMProfileRef* CMProfileRef;
+
+typedef struct OpaqueCMProfileSearchRef* CMProfileSearchRef;
+
+typedef struct OpaqueCMMatchRef* CMMatchRef;
+
+typedef struct OpaqueCMWorldRef* CMWorldRef;
+
+
+
+typedef UInt32 CMDisplayIDType;
+
+
+typedef OSErr ( * CMFlattenProcPtr)(long command, long *size, void *data, void *refCon);
+
+typedef Boolean ( * CMBitmapCallBackProcPtr)(long progress, void *refCon);
+
+typedef Boolean ( * CMConcatCallBackProcPtr)(long progress, void *refCon);
+
+typedef Boolean ( * CMProfileFilterProcPtr)(CMProfileRef prof, void *refCon);
+
+typedef OSErr ( * CMProfileAccessProcPtr)(long command, long offset, long *size, void *data, void *refCon);
+typedef CMFlattenProcPtr CMFlattenUPP;
+typedef CMBitmapCallBackProcPtr CMBitmapCallBackUPP;
+typedef CMConcatCallBackProcPtr CMConcatCallBackUPP;
+typedef CMProfileFilterProcPtr CMProfileFilterUPP;
+typedef CMProfileAccessProcPtr CMProfileAccessUPP;
+extern CMFlattenUPP
+NewCMFlattenUPP(CMFlattenProcPtr userRoutine) ;
+extern CMBitmapCallBackUPP
+NewCMBitmapCallBackUPP(CMBitmapCallBackProcPtr userRoutine) ;
+extern CMConcatCallBackUPP
+NewCMConcatCallBackUPP(CMConcatCallBackProcPtr userRoutine) ;
+extern CMProfileFilterUPP
+NewCMProfileFilterUPP(CMProfileFilterProcPtr userRoutine) ;
+extern CMProfileAccessUPP
+NewCMProfileAccessUPP(CMProfileAccessProcPtr userRoutine) ;
+extern void
+DisposeCMFlattenUPP(CMFlattenUPP userUPP) ;
+extern void
+DisposeCMBitmapCallBackUPP(CMBitmapCallBackUPP userUPP) ;
+extern void
+DisposeCMConcatCallBackUPP(CMConcatCallBackUPP userUPP) ;
+extern void
+DisposeCMProfileFilterUPP(CMProfileFilterUPP userUPP) ;
+extern void
+DisposeCMProfileAccessUPP(CMProfileAccessUPP userUPP) ;
+extern OSErr
+InvokeCMFlattenUPP(
+  long command,
+  long * size,
+  void * data,
+  void * refCon,
+  CMFlattenUPP userUPP) ;
+extern Boolean
+InvokeCMBitmapCallBackUPP(
+  long progress,
+  void * refCon,
+  CMBitmapCallBackUPP userUPP) ;
+extern Boolean
+InvokeCMConcatCallBackUPP(
+  long progress,
+  void * refCon,
+  CMConcatCallBackUPP userUPP) ;
+extern Boolean
+InvokeCMProfileFilterUPP(
+  CMProfileRef prof,
+  void * refCon,
+  CMProfileFilterUPP userUPP) ;
+extern OSErr
+InvokeCMProfileAccessUPP(
+  long command,
+  long offset,
+  long * size,
+  void * data,
+  void * refCon,
+  CMProfileAccessUPP userUPP) ;
+
+
+
+}
+
+
+
+
+
+enum {
+  cmICCProfileVersion4 = 0x04000000,
+  cmICCProfileVersion2 = 0x02000000,
+  cmICCProfileVersion21 = 0x02100000,
+  cmCS2ProfileVersion = cmICCProfileVersion2,
+  cmCS1ProfileVersion = 0x00000100
+};
+
+
+enum {
+  cmProfileMajorVersionMask = (long)0xFF000000,
+  cmCurrentProfileMajorVersion = 0x02000000
+};
+
+
+enum {
+  cmMagicNumber = 'acsp'
+};
+
+
+
+
+
+
+enum {
+  cmICCReservedFlagsMask = 0x0000FFFF,
+  cmEmbeddedMask = 0x00000001,
+  cmEmbeddedUseMask = 0x00000002,
+  cmCMSReservedFlagsMask = (long)0xFFFF0000,
+  cmQualityMask = 0x00030000,
+  cmInterpolationMask = 0x00040000,
+  cmGamutCheckingMask = 0x00080000
+};
+
+
+enum {
+  cmEmbeddedProfile = 0,
+  cmEmbeddedUse = 1
+};
+
+
+enum {
+  cmNormalMode = 0,
+  cmDraftMode = 1,
+  cmBestMode = 2
+};
+
+
+
+
+
+
+enum {
+  cmReflectiveTransparentMask = 0x00000001,
+  cmGlossyMatteMask = 0x00000002
+};
+
+
+enum {
+  cmReflective = 0,
+  cmGlossy = 1
+};
+
+
+
+enum {
+  cmPerceptual = 0,
+  cmRelativeColorimetric = 1,
+  cmSaturation = 2,
+  cmAbsoluteColorimetric = 3
+};
+
+
+
+
+enum {
+  cmAsciiData = 0,
+  cmBinaryData = 1
+};
+
+
+enum {
+  cmPrtrDefaultScreens = 0,
+  cmLinesPer = 1
+};
+
+
+enum {
+  cmNumHeaderElements = 10
+};
+
+
+enum {
+  cmAToB0Tag = 'A2B0',
+  cmAToB1Tag = 'A2B1',
+  cmAToB2Tag = 'A2B2',
+  cmBlueColorantTag = 'bXYZ',
+  cmBlueTRCTag = 'bTRC',
+  cmBToA0Tag = 'B2A0',
+  cmBToA1Tag = 'B2A1',
+  cmBToA2Tag = 'B2A2',
+  cmCalibrationDateTimeTag = 'calt',
+  cmChromaticAdaptationTag = 'chad',
+  cmCharTargetTag = 'targ',
+  cmCopyrightTag = 'cprt',
+  cmDeviceMfgDescTag = 'dmnd',
+  cmDeviceModelDescTag = 'dmdd',
+  cmGamutTag = 'gamt',
+  cmGrayTRCTag = 'kTRC',
+  cmGreenColorantTag = 'gXYZ',
+  cmGreenTRCTag = 'gTRC',
+  cmLuminanceTag = 'lumi',
+  cmMeasurementTag = 'meas',
+  cmMediaBlackPointTag = 'bkpt',
+  cmMediaWhitePointTag = 'wtpt',
+  cmNamedColorTag = 'ncol',
+  cmNamedColor2Tag = 'ncl2',
+  cmPreview0Tag = 'pre0',
+  cmPreview1Tag = 'pre1',
+  cmPreview2Tag = 'pre2',
+  cmProfileDescriptionTag = 'desc',
+  cmProfileSequenceDescTag = 'pseq',
+  cmPS2CRD0Tag = 'psd0',
+  cmPS2CRD1Tag = 'psd1',
+  cmPS2CRD2Tag = 'psd2',
+  cmPS2CRD3Tag = 'psd3',
+  cmPS2CSATag = 'ps2s',
+  cmPS2RenderingIntentTag = 'ps2i',
+  cmRedColorantTag = 'rXYZ',
+  cmRedTRCTag = 'rTRC',
+  cmScreeningDescTag = 'scrd',
+  cmScreeningTag = 'scrn',
+  cmTechnologyTag = 'tech',
+  cmUcrBgTag = 'bfd ',
+  cmViewingConditionsDescTag = 'vued',
+  cmViewingConditionsTag = 'view'
+};
+
+
+enum {
+  cmPS2CRDVMSizeTag = 'psvm',
+  cmVideoCardGammaTag = 'vcgt',
+  cmMakeAndModelTag = 'mmod',
+  cmProfileDescriptionMLTag = 'dscm',
+  cmNativeDisplayInfoTag = 'ndin'
+};
+
+
+enum {
+  cmSigCrdInfoType = 'crdi',
+  cmSigCurveType = 'curv',
+  cmSigDataType = 'data',
+  cmSigDateTimeType = 'dtim',
+  cmSigLut16Type = 'mft2',
+  cmSigLut8Type = 'mft1',
+  cmSigMeasurementType = 'meas',
+  cmSigMultiFunctA2BType = 'mAB ',
+  cmSigMultiFunctB2AType = 'mBA ',
+  cmSigNamedColorType = 'ncol',
+  cmSigNamedColor2Type = 'ncl2',
+  cmSigParametricCurveType = 'para',
+  cmSigProfileDescriptionType = 'desc',
+  cmSigProfileSequenceDescType = 'pseq',
+  cmSigScreeningType = 'scrn',
+  cmSigS15Fixed16Type = 'sf32',
+  cmSigSignatureType = 'sig ',
+  cmSigTextType = 'text',
+  cmSigU16Fixed16Type = 'uf32',
+  cmSigU1Fixed15Type = 'uf16',
+  cmSigUInt8Type = 'ui08',
+  cmSigUInt16Type = 'ui16',
+  cmSigUInt32Type = 'ui32',
+  cmSigUInt64Type = 'ui64',
+  cmSigUcrBgType = 'bfd ',
+  cmSigUnicodeTextType = 'utxt',
+  cmSigViewingConditionsType = 'view',
+  cmSigXYZType = 'XYZ '
+};
+
+
+enum {
+  cmSigPS2CRDVMSizeType = 'psvm',
+  cmSigVideoCardGammaType = 'vcgt',
+  cmSigMakeAndModelType = 'mmod',
+  cmSigNativeDisplayInfoType = 'ndin',
+  cmSigMultiLocalizedUniCodeType = 'mluc'
+};
+
+
+
+enum {
+  cmTechnologyDigitalCamera = 'dcam',
+  cmTechnologyFilmScanner = 'fscn',
+  cmTechnologyReflectiveScanner = 'rscn',
+  cmTechnologyInkJetPrinter = 'ijet',
+  cmTechnologyThermalWaxPrinter = 'twax',
+  cmTechnologyElectrophotographicPrinter = 'epho',
+  cmTechnologyElectrostaticPrinter = 'esta',
+  cmTechnologyDyeSublimationPrinter = 'dsub',
+  cmTechnologyPhotographicPaperPrinter = 'rpho',
+  cmTechnologyFilmWriter = 'fprn',
+  cmTechnologyVideoMonitor = 'vidm',
+  cmTechnologyVideoCamera = 'vidc',
+  cmTechnologyProjectionTelevision = 'pjtv',
+  cmTechnologyCRTDisplay = 'CRT ',
+  cmTechnologyPMDisplay = 'PMD ',
+  cmTechnologyAMDisplay = 'AMD ',
+  cmTechnologyPhotoCD = 'KPCD',
+  cmTechnologyPhotoImageSetter = 'imgs',
+  cmTechnologyGravure = 'grav',
+  cmTechnologyOffsetLithography = 'offs',
+  cmTechnologySilkscreen = 'silk',
+  cmTechnologyFlexography = 'flex'
+};
+
+
+
+
+enum {
+  cmFlare0 = 0x00000000,
+  cmFlare100 = 0x00000001
+};
+
+
+enum {
+  cmGeometryUnknown = 0x00000000,
+  cmGeometry045or450 = 0x00000001,
+  cmGeometry0dord0 = 0x00000002
+};
+
+
+enum {
+  cmStdobsUnknown = 0x00000000,
+  cmStdobs1931TwoDegrees = 0x00000001,
+  cmStdobs1964TenDegrees = 0x00000002
+};
+
+
+enum {
+  cmIlluminantUnknown = 0x00000000,
+  cmIlluminantD50 = 0x00000001,
+  cmIlluminantD65 = 0x00000002,
+  cmIlluminantD93 = 0x00000003,
+  cmIlluminantF2 = 0x00000004,
+  cmIlluminantD55 = 0x00000005,
+  cmIlluminantA = 0x00000006,
+  cmIlluminantEquiPower = 0x00000007,
+  cmIlluminantF8 = 0x00000008
+};
+
+
+enum {
+  cmSpotFunctionUnknown = 0,
+  cmSpotFunctionDefault = 1,
+  cmSpotFunctionRound = 2,
+  cmSpotFunctionDiamond = 3,
+  cmSpotFunctionEllipse = 4,
+  cmSpotFunctionLine = 5,
+  cmSpotFunctionSquare = 6,
+  cmSpotFunctionCross = 7
+};
+
+
+enum {
+  cmXYZData = 'XYZ ',
+  cmLabData = 'Lab ',
+  cmLuvData = 'Luv ',
+  cmYCbCrData = 'YCbr',
+  cmYxyData = 'Yxy ',
+  cmRGBData = 'RGB ',
+  cmSRGBData = 'sRGB',
+  cmGrayData = 'GRAY',
+  cmHSVData = 'HSV ',
+  cmHLSData = 'HLS ',
+  cmCMYKData = 'CMYK',
+  cmCMYData = 'CMY ',
+  cmMCH5Data = 'MCH5',
+  cmMCH6Data = 'MCH6',
+  cmMCH7Data = 'MCH7',
+  cmMCH8Data = 'MCH8',
+  cm3CLRData = '3CLR',
+  cm4CLRData = '4CLR',
+  cm5CLRData = '5CLR',
+  cm6CLRData = '6CLR',
+  cm7CLRData = '7CLR',
+  cm8CLRData = '8CLR',
+  cm9CLRData = '9CLR',
+  cm10CLRData = 'ACLR',
+  cm11CLRData = 'BCLR',
+  cm12CLRData = 'CCLR',
+  cm13CLRData = 'DCLR',
+  cm14CLRData = 'ECLR',
+  cm15CLRData = 'FCLR',
+  cmNamedData = 'NAME'
+};
+
+
+enum {
+  cmInputClass = 'scnr',
+  cmDisplayClass = 'mntr',
+  cmOutputClass = 'prtr',
+  cmLinkClass = 'link',
+  cmAbstractClass = 'abst',
+  cmColorSpaceClass = 'spac',
+  cmNamedColorClass = 'nmcl'
+};
+
+
+enum {
+  cmMacintosh = 'APPL',
+  cmMicrosoft = 'MSFT',
+  cmSolaris = 'SUNW',
+  cmSiliconGraphics = 'SGI ',
+  cmTaligent = 'TGNT'
+};
+
+
+enum {
+  cmParametricType0 = 0,
+  cmParametricType1 = 1,
+  cmParametricType2 = 2,
+  cmParametricType3 = 3,
+  cmParametricType4 = 4
+};
+
+
+
+enum {
+  cmCS1ChromTag = 'chrm',
+  cmCS1TRCTag = 'trc ',
+  cmCS1NameTag = 'name',
+  cmCS1CustTag = 'cust'
+};
+
+
+struct CMDateTime {
+  UInt16 year;
+  UInt16 month;
+  UInt16 dayOfTheMonth;
+  UInt16 hours;
+  UInt16 minutes;
+  UInt16 seconds;
+};
+typedef struct CMDateTime CMDateTime;
+struct CMFixedXYColor {
+  Fixed x;
+  Fixed y;
+};
+typedef struct CMFixedXYColor CMFixedXYColor;
+struct CMFixedXYZColor {
+  Fixed X;
+  Fixed Y;
+  Fixed Z;
+};
+typedef struct CMFixedXYZColor CMFixedXYZColor;
+
+typedef UInt16 CMXYZComponent;
+struct CMXYZColor {
+  CMXYZComponent X;
+  CMXYZComponent Y;
+  CMXYZComponent Z;
+};
+typedef struct CMXYZColor CMXYZColor;
+
+
+
+typedef unsigned char CMProfileMD5[16];
+typedef CMProfileMD5 * CMProfileMD5Ptr;
+
+
+
+
+
+
+
+  inline Boolean CMProfileMD5AreEqual(CMProfileMD5 a, CMProfileMD5 b)
+  {
+    return ((long*)a)[0]==((long*)b)[0] && ((long*)a)[1]==((long*)b)[1] &&
+         ((long*)a)[2]==((long*)b)[2] && ((long*)a)[3]==((long*)b)[3];
+  }
+
+
+
+
+
+
+struct CM2Header {
+  UInt32 size;
+  OSType CMMType;
+  UInt32 profileVersion;
+  OSType profileClass;
+  OSType dataColorSpace;
+  OSType profileConnectionSpace;
+  CMDateTime dateTime;
+  OSType CS2profileSignature;
+  OSType platform;
+  UInt32 flags;
+  OSType deviceManufacturer;
+  UInt32 deviceModel;
+  UInt32 deviceAttributes[2];
+  UInt32 renderingIntent;
+  CMFixedXYZColor white;
+  OSType creator;
+  char reserved[44];
+};
+typedef struct CM2Header CM2Header;
+struct CM4Header {
+  UInt32 size;
+  OSType CMMType;
+  UInt32 profileVersion;
+  OSType profileClass;
+  OSType dataColorSpace;
+  OSType profileConnectionSpace;
+  CMDateTime dateTime;
+  OSType CS2profileSignature;
+  OSType platform;
+  UInt32 flags;
+  OSType deviceManufacturer;
+  UInt32 deviceModel;
+  UInt32 deviceAttributes[2];
+  UInt32 renderingIntent;
+  CMFixedXYZColor white;
+  OSType creator;
+  CMProfileMD5 digest;
+  char reserved[28];
+};
+typedef struct CM4Header CM4Header;
+struct CMTagRecord {
+  OSType tag;
+  UInt32 elementOffset;
+  UInt32 elementSize;
+};
+typedef struct CMTagRecord CMTagRecord;
+struct CMTagElemTable {
+  UInt32 count;
+  CMTagRecord tagList[1];
+};
+typedef struct CMTagElemTable CMTagElemTable;
+struct CM2Profile {
+  CM2Header header;
+  CMTagElemTable tagTable;
+  char elemData[1];
+};
+typedef struct CM2Profile CM2Profile;
+typedef CM2Profile * CM2ProfilePtr;
+typedef CM2ProfilePtr * CM2ProfileHandle;
+
+struct CMAdaptationMatrixType {
+  OSType typeDescriptor;
+  unsigned long reserved;
+  Fixed adaptationMatrix[9];
+};
+typedef struct CMAdaptationMatrixType CMAdaptationMatrixType;
+struct CMCurveType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 countValue;
+  UInt16 data[1];
+};
+typedef struct CMCurveType CMCurveType;
+struct CMDataType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 dataFlag;
+  char data[1];
+};
+typedef struct CMDataType CMDataType;
+struct CMDateTimeType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  CMDateTime dateTime;
+};
+typedef struct CMDateTimeType CMDateTimeType;
+struct CMLut16Type {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt8 inputChannels;
+  UInt8 outputChannels;
+  UInt8 gridPoints;
+  UInt8 reserved2;
+  Fixed matrix[3][3];
+  UInt16 inputTableEntries;
+  UInt16 outputTableEntries;
+  UInt16 inputTable[1];
+};
+typedef struct CMLut16Type CMLut16Type;
+struct CMLut8Type {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt8 inputChannels;
+  UInt8 outputChannels;
+  UInt8 gridPoints;
+  UInt8 reserved2;
+  Fixed matrix[3][3];
+  UInt8 inputTable[1];
+};
+typedef struct CMLut8Type CMLut8Type;
+struct CMMultiFunctLutType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt8 inputChannels;
+  UInt8 outputChannels;
+  UInt16 reserved2;
+  UInt32 offsetBcurves;
+  UInt32 offsetMatrix;
+  UInt32 offsetMcurves;
+  UInt32 offsetCLUT;
+  UInt32 offsetAcurves;
+  UInt8 data[1];
+};
+typedef struct CMMultiFunctLutType CMMultiFunctLutType;
+typedef CMMultiFunctLutType CMMultiFunctLutA2BType;
+typedef CMMultiFunctLutType CMMultiFunctLutB2AType;
+struct CMMultiFunctCLUTType {
+  UInt8 gridPoints[16];
+  UInt8 entrySize;
+  UInt8 reserved[3];
+  UInt8 data[1];
+};
+typedef struct CMMultiFunctCLUTType CMMultiFunctCLUTType;
+struct CMMeasurementType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 standardObserver;
+  CMFixedXYZColor backingXYZ;
+  UInt32 geometry;
+  UInt32 flare;
+  UInt32 illuminant;
+};
+typedef struct CMMeasurementType CMMeasurementType;
+struct CMNamedColorType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 vendorFlag;
+  UInt32 count;
+  UInt8 prefixName[1];
+};
+typedef struct CMNamedColorType CMNamedColorType;
+struct CMNamedColor2EntryType {
+  UInt8 rootName[32];
+  UInt16 PCSColorCoords[3];
+  UInt16 DeviceColorCoords[1];
+};
+typedef struct CMNamedColor2EntryType CMNamedColor2EntryType;
+struct CMNamedColor2Type {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 vendorFlag;
+  UInt32 count;
+  UInt32 deviceChannelCount;
+  UInt8 prefixName[32];
+  UInt8 suffixName[32];
+  char data[1];
+};
+typedef struct CMNamedColor2Type CMNamedColor2Type;
+struct CMNativeDisplayInfo {
+  UInt32 dataSize;
+  CMFixedXYColor redPhosphor;
+  CMFixedXYColor greenPhosphor;
+  CMFixedXYColor bluePhosphor;
+  CMFixedXYColor whitePoint;
+  Fixed redGammaValue;
+  Fixed greenGammaValue;
+  Fixed blueGammaValue;
+
+
+
+  UInt16 gammaChannels;
+  UInt16 gammaEntryCount;
+  UInt16 gammaEntrySize;
+  char gammaData[1];
+};
+typedef struct CMNativeDisplayInfo CMNativeDisplayInfo;
+struct CMNativeDisplayInfoType {
+  OSType typeDescriptor;
+  unsigned long reserved;
+  CMNativeDisplayInfo nativeDisplayInfo;
+};
+typedef struct CMNativeDisplayInfoType CMNativeDisplayInfoType;
+struct CMParametricCurveType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt16 functionType;
+  UInt16 reserved2;
+  Fixed value[1];
+};
+typedef struct CMParametricCurveType CMParametricCurveType;
+struct CMTextDescriptionType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 ASCIICount;
+  UInt8 ASCIIName[2];
+};
+typedef struct CMTextDescriptionType CMTextDescriptionType;
+struct CMTextType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt8 text[1];
+};
+typedef struct CMTextType CMTextType;
+struct CMUnicodeTextType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UniChar text[1];
+};
+typedef struct CMUnicodeTextType CMUnicodeTextType;
+struct CMScreeningChannelRec {
+  Fixed frequency;
+  Fixed angle;
+  UInt32 spotFunction;
+};
+typedef struct CMScreeningChannelRec CMScreeningChannelRec;
+struct CMScreeningType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 screeningFlag;
+  UInt32 channelCount;
+  CMScreeningChannelRec channelInfo[1];
+};
+typedef struct CMScreeningType CMScreeningType;
+struct CMSignatureType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  OSType signature;
+};
+typedef struct CMSignatureType CMSignatureType;
+struct CMS15Fixed16ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  Fixed value[1];
+};
+typedef struct CMS15Fixed16ArrayType CMS15Fixed16ArrayType;
+struct CMU16Fixed16ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 value[1];
+};
+typedef struct CMU16Fixed16ArrayType CMU16Fixed16ArrayType;
+struct CMUInt8ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt8 value[1];
+};
+typedef struct CMUInt8ArrayType CMUInt8ArrayType;
+struct CMUInt16ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt16 value[1];
+};
+typedef struct CMUInt16ArrayType CMUInt16ArrayType;
+struct CMUInt32ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 value[1];
+};
+typedef struct CMUInt32ArrayType CMUInt32ArrayType;
+struct CMUInt64ArrayType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 value[1];
+};
+typedef struct CMUInt64ArrayType CMUInt64ArrayType;
+struct CMViewingConditionsType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  CMFixedXYZColor illuminant;
+  CMFixedXYZColor surround;
+  UInt32 stdIlluminant;
+};
+typedef struct CMViewingConditionsType CMViewingConditionsType;
+struct CMXYZType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  CMFixedXYZColor XYZ[1];
+};
+typedef struct CMXYZType CMXYZType;
+struct CMProfileSequenceDescType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 count;
+  char data[1];
+};
+typedef struct CMProfileSequenceDescType CMProfileSequenceDescType;
+struct CMUcrBgType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 ucrCount;
+  UInt16 ucrValues[1];
+};
+typedef struct CMUcrBgType CMUcrBgType;
+
+struct CMIntentCRDVMSize {
+  long renderingIntent;
+  UInt32 VMSize;
+};
+typedef struct CMIntentCRDVMSize CMIntentCRDVMSize;
+struct CMPS2CRDVMSizeType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 count;
+  CMIntentCRDVMSize intentCRD[1];
+};
+typedef struct CMPS2CRDVMSizeType CMPS2CRDVMSizeType;
+enum {
+  cmVideoCardGammaTableType = 0,
+  cmVideoCardGammaFormulaType = 1
+};
+
+struct CMVideoCardGammaTable {
+  UInt16 channels;
+  UInt16 entryCount;
+  UInt16 entrySize;
+  char data[1];
+};
+typedef struct CMVideoCardGammaTable CMVideoCardGammaTable;
+struct CMVideoCardGammaFormula {
+  Fixed redGamma;
+  Fixed redMin;
+  Fixed redMax;
+  Fixed greenGamma;
+  Fixed greenMin;
+  Fixed greenMax;
+  Fixed blueGamma;
+  Fixed blueMin;
+  Fixed blueMax;
+};
+typedef struct CMVideoCardGammaFormula CMVideoCardGammaFormula;
+struct CMVideoCardGamma {
+  UInt32 tagType;
+  union {
+    CMVideoCardGammaTable table;
+    CMVideoCardGammaFormula formula;
+  } u;
+};
+typedef struct CMVideoCardGamma CMVideoCardGamma;
+struct CMVideoCardGammaType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  CMVideoCardGamma gamma;
+};
+typedef struct CMVideoCardGammaType CMVideoCardGammaType;
+struct CMMakeAndModel {
+  OSType manufacturer;
+  UInt32 model;
+  UInt32 serialNumber;
+  UInt32 manufactureDate;
+  UInt32 reserved1;
+  UInt32 reserved2;
+  UInt32 reserved3;
+  UInt32 reserved4;
+};
+typedef struct CMMakeAndModel CMMakeAndModel;
+struct CMMakeAndModelType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  CMMakeAndModel makeAndModel;
+};
+typedef struct CMMakeAndModelType CMMakeAndModelType;
+struct CMMultiLocalizedUniCodeEntryRec {
+  char languageCode[2];
+  char regionCode[2];
+  UInt32 textLength;
+  UInt32 textOffset;
+};
+typedef struct CMMultiLocalizedUniCodeEntryRec CMMultiLocalizedUniCodeEntryRec;
+struct CMMultiLocalizedUniCodeType {
+  OSType typeDescriptor;
+  UInt32 reserved;
+  UInt32 entryCount;
+  UInt32 entrySize;
+
+
+
+
+};
+typedef struct CMMultiLocalizedUniCodeType CMMultiLocalizedUniCodeType;
+
+
+
+enum {
+  cmGrayResponse = 0,
+  cmRedResponse = 1,
+  cmGreenResponse = 2,
+  cmBlueResponse = 3,
+  cmCyanResponse = 4,
+  cmMagentaResponse = 5,
+  cmYellowResponse = 6,
+  cmUcrResponse = 7,
+  cmBgResponse = 8,
+  cmOnePlusLastResponse = 9
+};
+
+
+
+enum {
+  cmMonitorDevice = 'mntr',
+  cmScannerDevice = 'scnr',
+  cmPrinterDevice = 'prtr'
+};
+
+
+struct CMIString {
+  ScriptCode theScript;
+  Str63 theString;
+};
+typedef struct CMIString CMIString;
+
+enum {
+  cmPerceptualMatch = 0x0000,
+  cmColorimetricMatch = 0x0001,
+  cmSaturationMatch = 0x0002
+};
+
+
+enum {
+  cmNativeMatchingPreferred = 0x00000001,
+  cmTurnOffCache = 0x00000002
+};
+
+
+typedef long CMMatchOption;
+typedef long CMMatchFlag;
+struct CMHeader {
+  UInt32 size;
+  OSType CMMType;
+  UInt32 applProfileVersion;
+  OSType dataType;
+  OSType deviceType;
+  OSType deviceManufacturer;
+  UInt32 deviceModel;
+  UInt32 deviceAttributes[2];
+  UInt32 profileNameOffset;
+  UInt32 customDataOffset;
+  CMMatchFlag flags;
+  CMMatchOption options;
+  CMXYZColor white;
+  CMXYZColor black;
+};
+typedef struct CMHeader CMHeader;
+struct CMProfileChromaticities {
+  CMXYZColor red;
+  CMXYZColor green;
+  CMXYZColor blue;
+  CMXYZColor cyan;
+  CMXYZColor magenta;
+  CMXYZColor yellow;
+};
+typedef struct CMProfileChromaticities CMProfileChromaticities;
+struct CMProfileResponse {
+  UInt16 counts[9];
+  UInt16 data[1];
+};
+typedef struct CMProfileResponse CMProfileResponse;
+struct CMProfile {
+  CMHeader header;
+  CMProfileChromaticities profile;
+  CMProfileResponse response;
+  CMIString profileName;
+  char customData[1];
+};
+typedef struct CMProfile CMProfile;
+typedef CMProfile * CMProfilePtr;
+typedef CMProfilePtr * CMProfileHandle;
+extern "C" {
+
+
+
+enum {
+  kDefaultCMMSignature = 'appl'
+};
+
+
+enum {
+  cmTrap = 0xABEE
+};
+
+
+
+enum {
+  cmBeginProfile = 220,
+  cmEndProfile = 221,
+  cmEnableMatching = 222,
+  cmDisableMatching = 223,
+  cmComment = 224
+};
+
+
+enum {
+  cmBeginProfileSel = 0,
+  cmContinueProfileSel = 1,
+  cmEndProfileSel = 2,
+  cmProfileIdentifierSel = 3
+};
+
+
+
+enum {
+  cmMatchCMMType = 0x00000001,
+  cmMatchApplProfileVersion = 0x00000002,
+  cmMatchDataType = 0x00000004,
+  cmMatchDeviceType = 0x00000008,
+  cmMatchDeviceManufacturer = 0x00000010,
+  cmMatchDeviceModel = 0x00000020,
+  cmMatchDeviceAttributes = 0x00000040,
+  cmMatchFlags = 0x00000080,
+  cmMatchOptions = 0x00000100,
+  cmMatchWhite = 0x00000200,
+  cmMatchBlack = 0x00000400
+};
+
+
+enum {
+  cmMatchAnyProfile = 0x00000000,
+  cmMatchProfileCMMType = 0x00000001,
+  cmMatchProfileClass = 0x00000002,
+  cmMatchDataColorSpace = 0x00000004,
+  cmMatchProfileConnectionSpace = 0x00000008,
+  cmMatchManufacturer = 0x00000010,
+  cmMatchModel = 0x00000020,
+  cmMatchAttributes = 0x00000040,
+  cmMatchProfileFlags = 0x00000080
+};
+
+
+
+enum {
+  cmPS7bit = 1,
+  cmPS8bit = 2
+};
+
+
+enum {
+  cmEmbedWholeProfile = 0x00000000,
+  cmEmbedProfileIdentifier = 0x00000001
+};
+
+
+enum {
+  cmOpenReadSpool = 1,
+  cmOpenWriteSpool = 2,
+  cmReadSpool = 3,
+  cmWriteSpool = 4,
+  cmCloseSpool = 5
+};
+
+
+enum {
+  cmOpenReadAccess = 1,
+  cmOpenWriteAccess = 2,
+  cmReadAccess = 3,
+  cmWriteAccess = 4,
+  cmCloseAccess = 5,
+  cmCreateNewAccess = 6,
+  cmAbortWriteAccess = 7,
+  cmBeginAccess = 8,
+  cmEndAccess = 9
+};
+
+
+
+enum {
+  cmInputUse = 'inpt',
+  cmOutputUse = 'outp',
+  cmDisplayUse = 'dply',
+  cmProofUse = 'pruf'
+};
+
+
+
+union CMAppleProfileHeader {
+  CMHeader cm1;
+  CM2Header cm2;
+  CM4Header cm4;
+};
+typedef union CMAppleProfileHeader CMAppleProfileHeader;
+
+struct CMConcatProfileSet {
+  UInt16 keyIndex;
+  UInt16 count;
+  CMProfileRef profileSet[1];
+};
+typedef struct CMConcatProfileSet CMConcatProfileSet;
+
+struct NCMConcatProfileSpec {
+  UInt32 renderingIntent;
+  UInt32 transformTag;
+  CMProfileRef profile;
+};
+typedef struct NCMConcatProfileSpec NCMConcatProfileSpec;
+struct NCMConcatProfileSet {
+  OSType cmm;
+  UInt32 flags;
+  UInt32 flagsMask;
+  UInt32 profileCount;
+  NCMConcatProfileSpec profileSpecs[1];
+};
+typedef struct NCMConcatProfileSet NCMConcatProfileSet;
+enum {
+  kNoTransform = 0,
+  kUseAtoB = 1,
+  kUseBtoA = 2,
+  kUseBtoB = 3,
+
+  kDeviceToPCS = kUseAtoB,
+  kPCSToDevice = kUseBtoA,
+  kPCSToPCS = kUseBtoB,
+  kUseProfileIntent = (long)0xFFFFFFFF
+};
+
+
+
+struct CMRGBColor {
+  UInt16 red;
+  UInt16 green;
+  UInt16 blue;
+};
+typedef struct CMRGBColor CMRGBColor;
+struct CMCMYKColor {
+  UInt16 cyan;
+  UInt16 magenta;
+  UInt16 yellow;
+  UInt16 black;
+};
+typedef struct CMCMYKColor CMCMYKColor;
+struct CMCMYColor {
+  UInt16 cyan;
+  UInt16 magenta;
+  UInt16 yellow;
+};
+typedef struct CMCMYColor CMCMYColor;
+struct CMHLSColor {
+  UInt16 hue;
+  UInt16 lightness;
+  UInt16 saturation;
+};
+typedef struct CMHLSColor CMHLSColor;
+struct CMHSVColor {
+  UInt16 hue;
+  UInt16 saturation;
+  UInt16 value;
+};
+typedef struct CMHSVColor CMHSVColor;
+struct CMLabColor {
+  UInt16 L;
+  UInt16 a;
+  UInt16 b;
+};
+typedef struct CMLabColor CMLabColor;
+struct CMLuvColor {
+  UInt16 L;
+  UInt16 u;
+  UInt16 v;
+};
+typedef struct CMLuvColor CMLuvColor;
+struct CMYxyColor {
+  UInt16 capY;
+  UInt16 x;
+  UInt16 y;
+};
+typedef struct CMYxyColor CMYxyColor;
+struct CMGrayColor {
+  UInt16 gray;
+};
+typedef struct CMGrayColor CMGrayColor;
+struct CMMultichannel5Color {
+  UInt8 components[5];
+};
+typedef struct CMMultichannel5Color CMMultichannel5Color;
+struct CMMultichannel6Color {
+  UInt8 components[6];
+};
+typedef struct CMMultichannel6Color CMMultichannel6Color;
+struct CMMultichannel7Color {
+  UInt8 components[7];
+};
+typedef struct CMMultichannel7Color CMMultichannel7Color;
+struct CMMultichannel8Color {
+  UInt8 components[8];
+};
+typedef struct CMMultichannel8Color CMMultichannel8Color;
+struct CMNamedColor {
+  UInt32 namedColorIndex;
+};
+typedef struct CMNamedColor CMNamedColor;
+union CMColor {
+  CMRGBColor rgb;
+  CMHSVColor hsv;
+  CMHLSColor hls;
+  CMXYZColor XYZ;
+  CMLabColor Lab;
+  CMLuvColor Luv;
+  CMYxyColor Yxy;
+  CMCMYKColor cmyk;
+  CMCMYColor cmy;
+  CMGrayColor gray;
+  CMMultichannel5Color mc5;
+  CMMultichannel6Color mc6;
+  CMMultichannel7Color mc7;
+  CMMultichannel8Color mc8;
+  CMNamedColor namedColor;
+};
+typedef union CMColor CMColor;
+
+struct CMProfileSearchRecord {
+  CMHeader header;
+  UInt32 fieldMask;
+  UInt32 reserved[2];
+};
+typedef struct CMProfileSearchRecord CMProfileSearchRecord;
+typedef CMProfileSearchRecord * CMProfileSearchRecordPtr;
+typedef CMProfileSearchRecordPtr * CMProfileSearchRecordHandle;
+
+struct CMSearchRecord {
+  OSType CMMType;
+  OSType profileClass;
+  OSType dataColorSpace;
+  OSType profileConnectionSpace;
+  UInt32 deviceManufacturer;
+  UInt32 deviceModel;
+  UInt32 deviceAttributes[2];
+  UInt32 profileFlags;
+  UInt32 searchMask;
+  CMProfileFilterUPP filter;
+};
+typedef struct CMSearchRecord CMSearchRecord;
+
+struct CMMInfo {
+  UInt32 dataSize;
+  OSType CMMType;
+  OSType CMMMfr;
+  UInt32 CMMVersion;
+  unsigned char ASCIIName[32];
+  unsigned char ASCIIDesc[256];
+  UniCharCount UniCodeNameCount;
+  UniChar UniCodeName[32];
+  UniCharCount UniCodeDescCount;
+  UniChar UniCodeDesc[256];
+};
+typedef struct CMMInfo CMMInfo;
+
+struct CMMInfoRecord {
+  OSType CMMType;
+  long CMMVersion;
+};
+typedef struct CMMInfoRecord CMMInfoRecord;
+struct CMCWInfoRecord {
+  UInt32 cmmCount;
+  CMMInfoRecord cmmInfo[2];
+};
+typedef struct CMCWInfoRecord CMCWInfoRecord;
+
+struct CMProfileIdentifier {
+  CM2Header profileHeader;
+  CMDateTime calibrationDate;
+  UInt32 ASCIIProfileDescriptionLen;
+  char ASCIIProfileDescription[1];
+};
+typedef struct CMProfileIdentifier CMProfileIdentifier;
+typedef CMProfileIdentifier * CMProfileIdentifierPtr;
+
+enum {
+  cmColorSpaceSpaceMask = 0x0000003F,
+  cmColorSpacePremulAlphaMask = 0x00000040,
+  cmColorSpaceAlphaMask = 0x00000080,
+  cmColorSpaceSpaceAndAlphaMask = 0x000000FF,
+  cmColorSpacePackingMask = 0x0000FF00,
+  cmColorSpaceEncodingMask = 0x000F0000,
+  cmColorSpaceReservedMask = (long)0xFFF00000
+};
+
+
+enum {
+  cmNoColorPacking = 0x0000,
+  cmWord5ColorPacking = 0x0500,
+  cmWord565ColorPacking = 0x0600,
+  cmLong8ColorPacking = 0x0800,
+  cmLong10ColorPacking = 0x0A00,
+  cmAlphaFirstPacking = 0x1000,
+  cmOneBitDirectPacking = 0x0B00,
+  cmAlphaLastPacking = 0x0000,
+  cm8_8ColorPacking = 0x2800,
+  cm16_8ColorPacking = 0x2000,
+  cm24_8ColorPacking = 0x2100,
+  cm32_8ColorPacking = cmLong8ColorPacking,
+  cm40_8ColorPacking = 0x2200,
+  cm48_8ColorPacking = 0x2300,
+  cm56_8ColorPacking = 0x2400,
+  cm64_8ColorPacking = 0x2500,
+  cm32_16ColorPacking = 0x2600,
+  cm48_16ColorPacking = 0x2900,
+  cm64_16ColorPacking = 0x2A00,
+  cm32_32ColorPacking = 0x2700,
+  cmLittleEndianPacking = 0x4000,
+  cmReverseChannelPacking = 0x8000
+};
+
+
+enum {
+  cmSRGB16ChannelEncoding = 0x00010000
+};
+
+
+enum {
+  cmNoSpace = 0x0000,
+  cmRGBSpace = 0x0001,
+  cmCMYKSpace = 0x0002,
+  cmHSVSpace = 0x0003,
+  cmHLSSpace = 0x0004,
+  cmYXYSpace = 0x0005,
+  cmXYZSpace = 0x0006,
+  cmLUVSpace = 0x0007,
+  cmLABSpace = 0x0008,
+  cmReservedSpace1 = 0x0009,
+  cmGraySpace = 0x000A,
+  cmReservedSpace2 = 0x000B,
+  cmGamutResultSpace = 0x000C,
+  cmNamedIndexedSpace = 0x0010,
+  cmMCFiveSpace = 0x0011,
+  cmMCSixSpace = 0x0012,
+  cmMCSevenSpace = 0x0013,
+  cmMCEightSpace = 0x0014,
+  cmAlphaPmulSpace = 0x0040,
+  cmAlphaSpace = 0x0080,
+  cmRGBASpace = cmRGBSpace + cmAlphaSpace,
+  cmGrayASpace = cmGraySpace + cmAlphaSpace,
+  cmRGBAPmulSpace = cmRGBASpace + cmAlphaPmulSpace,
+  cmGrayAPmulSpace = cmGrayASpace + cmAlphaPmulSpace
+};
+
+
+
+
+enum {
+  cmGray8Space = cmGraySpace + cm8_8ColorPacking,
+  cmGray16Space = cmGraySpace,
+  cmGray16LSpace = cmGraySpace + cmLittleEndianPacking,
+  cmGrayA16Space = cmGrayASpace + cm16_8ColorPacking,
+  cmGrayA32Space = cmGrayASpace,
+  cmGrayA32LSpace = cmGrayASpace + cmLittleEndianPacking,
+  cmGrayA16PmulSpace = cmGrayAPmulSpace + cm16_8ColorPacking,
+  cmGrayA32PmulSpace = cmGrayAPmulSpace,
+  cmGrayA32LPmulSpace = cmGrayAPmulSpace + cmLittleEndianPacking,
+  cmRGB16Space = cmRGBSpace + cmWord5ColorPacking,
+  cmRGB16LSpace = cmRGBSpace + cmWord5ColorPacking + cmLittleEndianPacking,
+  cmRGB565Space = cmRGBSpace + cmWord565ColorPacking,
+  cmRGB565LSpace = cmRGBSpace + cmWord565ColorPacking + cmLittleEndianPacking,
+  cmRGB24Space = cmRGBSpace + cm24_8ColorPacking,
+  cmRGB32Space = cmRGBSpace + cm32_8ColorPacking,
+  cmRGB48Space = cmRGBSpace + cm48_16ColorPacking,
+  cmRGB48LSpace = cmRGBSpace + cm48_16ColorPacking + cmLittleEndianPacking,
+  cmARGB32Space = cmRGBASpace + cm32_8ColorPacking + cmAlphaFirstPacking,
+  cmARGB64Space = cmRGBASpace + cm64_16ColorPacking + cmAlphaFirstPacking,
+  cmARGB64LSpace = cmRGBASpace + cm64_16ColorPacking + cmAlphaFirstPacking + cmLittleEndianPacking,
+  cmRGBA32Space = cmRGBASpace + cm32_8ColorPacking + cmAlphaLastPacking,
+  cmRGBA64Space = cmRGBASpace + cm64_16ColorPacking + cmAlphaLastPacking,
+  cmRGBA64LSpace = cmRGBASpace + cm64_16ColorPacking + cmAlphaLastPacking + cmLittleEndianPacking,
+  cmARGB32PmulSpace = cmRGBAPmulSpace + cm32_8ColorPacking + cmAlphaFirstPacking,
+  cmARGB64PmulSpace = cmRGBAPmulSpace + cm64_16ColorPacking + cmAlphaFirstPacking,
+  cmARGB64LPmulSpace = cmRGBAPmulSpace + cm64_16ColorPacking + cmAlphaFirstPacking + cmLittleEndianPacking,
+  cmRGBA32PmulSpace = cmRGBAPmulSpace + cm32_8ColorPacking + cmAlphaLastPacking,
+  cmRGBA64PmulSpace = cmRGBAPmulSpace + cm64_16ColorPacking + cmAlphaLastPacking,
+  cmRGBA64LPmulSpace = cmRGBAPmulSpace + cm64_16ColorPacking + cmAlphaLastPacking + cmLittleEndianPacking,
+  cmCMYK32Space = cmCMYKSpace + cm32_8ColorPacking,
+  cmCMYK64Space = cmCMYKSpace + cm64_16ColorPacking,
+  cmCMYK64LSpace = cmCMYKSpace + cm64_16ColorPacking + cmLittleEndianPacking,
+  cmHSV32Space = cmHSVSpace + cmLong10ColorPacking,
+  cmHLS32Space = cmHLSSpace + cmLong10ColorPacking,
+  cmYXY32Space = cmYXYSpace + cmLong10ColorPacking,
+  cmXYZ24Space = cmXYZSpace + cm24_8ColorPacking,
+  cmXYZ32Space = cmXYZSpace + cmLong10ColorPacking,
+  cmXYZ48Space = cmXYZSpace + cm48_16ColorPacking,
+  cmXYZ48LSpace = cmXYZSpace + cm48_16ColorPacking + cmLittleEndianPacking,
+  cmLUV32Space = cmLUVSpace + cmLong10ColorPacking,
+  cmLAB24Space = cmLABSpace + cm24_8ColorPacking,
+  cmLAB32Space = cmLABSpace + cmLong10ColorPacking,
+  cmLAB48Space = cmLABSpace + cm48_16ColorPacking,
+  cmLAB48LSpace = cmLABSpace + cm48_16ColorPacking + cmLittleEndianPacking,
+  cmGamutResult1Space = cmOneBitDirectPacking + cmGamutResultSpace,
+  cmNamedIndexed32Space = cm32_32ColorPacking + cmNamedIndexedSpace,
+  cmNamedIndexed32LSpace = cm32_32ColorPacking + cmNamedIndexedSpace + cmLittleEndianPacking,
+  cmMCFive8Space = cm40_8ColorPacking + cmMCFiveSpace,
+  cmMCSix8Space = cm48_8ColorPacking + cmMCSixSpace,
+  cmMCSeven8Space = cm56_8ColorPacking + cmMCSevenSpace,
+  cmMCEight8Space = cm64_8ColorPacking + cmMCEightSpace
+};
+
+
+typedef UInt32 CMBitmapColorSpace;
+struct CMBitmap {
+  char * image;
+  long width;
+  long height;
+  long rowBytes;
+  long pixelSize;
+  CMBitmapColorSpace space;
+  long user1;
+  long user2;
+};
+typedef struct CMBitmap CMBitmap;
+
+
+typedef UInt32 CMChromaticAdaptation;
+enum {
+  cmUseDefaultChromaticAdaptation = 0,
+  cmLinearChromaticAdaptation = 1,
+  cmVonKriesChromaticAdaptation = 2,
+  cmBradfordChromaticAdaptation = 3
+};
+
+
+
+enum {
+  CS_MAX_PATH = 256
+};
+
+enum {
+  cmNoProfileBase = 0,
+  cmFileBasedProfile = 1,
+  cmHandleBasedProfile = 2,
+  cmPtrBasedProfile = 3,
+  cmProcedureBasedProfile = 4,
+  cmPathBasedProfile = 5,
+  cmBufferBasedProfile = 6
+};
+
+struct CMFileLocation {
+  FSSpec spec;
+};
+typedef struct CMFileLocation CMFileLocation;
+struct CMHandleLocation {
+  Handle h;
+};
+typedef struct CMHandleLocation CMHandleLocation;
+struct CMPtrLocation {
+  Ptr p;
+};
+typedef struct CMPtrLocation CMPtrLocation;
+struct CMProcedureLocation {
+  CMProfileAccessUPP proc;
+  void * refCon;
+};
+typedef struct CMProcedureLocation CMProcedureLocation;
+struct CMPathLocation {
+  char path[256];
+};
+typedef struct CMPathLocation CMPathLocation;
+struct CMBufferLocation {
+  void * buffer;
+  UInt32 size;
+};
+typedef struct CMBufferLocation CMBufferLocation;
+union CMProfLoc {
+  CMFileLocation fileLoc;
+  CMHandleLocation handleLoc;
+  CMPtrLocation ptrLoc;
+  CMProcedureLocation procLoc;
+  CMPathLocation pathLoc;
+  CMBufferLocation bufferLoc;
+};
+typedef union CMProfLoc CMProfLoc;
+struct CMProfileLocation {
+  short locType;
+  CMProfLoc u;
+};
+typedef struct CMProfileLocation CMProfileLocation;
+enum {
+  cmOriginalProfileLocationSize = 72,
+  cmCurrentProfileLocationSize = 2 + CS_MAX_PATH
+};
+
+
+enum {
+  cmProfileIterateDataVersion1 = 0x00010000,
+  cmProfileIterateDataVersion2 = 0x00020000,
+  cmProfileIterateDataVersion3 = 0x00030000
+};
+
+struct CMProfileIterateData {
+  UInt32 dataVersion;
+  CM2Header header;
+  ScriptCode code;
+  Str255 name;
+  CMProfileLocation location;
+  UniCharCount uniCodeNameCount;
+  UniChar * uniCodeName;
+  unsigned char * asciiName;
+  CMMakeAndModel * makeAndModel;
+  CMProfileMD5 * digest;
+};
+typedef struct CMProfileIterateData CMProfileIterateData;
+
+typedef OSErr ( * CMProfileIterateProcPtr)(CMProfileIterateData *iterateData, void *refCon);
+typedef OSErr ( * CMMIterateProcPtr)(CMMInfo *iterateData, void *refCon);
+typedef CMProfileIterateProcPtr CMProfileIterateUPP;
+typedef CMMIterateProcPtr CMMIterateUPP;
+extern CMProfileIterateUPP
+NewCMProfileIterateUPP(CMProfileIterateProcPtr userRoutine) ;
+extern CMMIterateUPP
+NewCMMIterateUPP(CMMIterateProcPtr userRoutine) ;
+extern void
+DisposeCMProfileIterateUPP(CMProfileIterateUPP userUPP) ;
+extern void
+DisposeCMMIterateUPP(CMMIterateUPP userUPP) ;
+extern OSErr
+InvokeCMProfileIterateUPP(
+  CMProfileIterateData * iterateData,
+  void * refCon,
+  CMProfileIterateUPP userUPP) ;
+extern OSErr
+InvokeCMMIterateUPP(
+  CMMInfo * iterateData,
+  void * refCon,
+  CMMIterateUPP userUPP) ;
+extern CMError
+CMNewProfile(
+  CMProfileRef * prof,
+  const CMProfileLocation * theProfile) ;
+extern CMError
+CMOpenProfile(
+  CMProfileRef * prof,
+  const CMProfileLocation * theProfile) ;
+extern CMError
+CMCloseProfile(CMProfileRef prof) ;
+extern CMError
+CMUpdateProfile(CMProfileRef prof) ;
+extern CMError
+CMCopyProfile(
+  CMProfileRef * targetProf,
+  const CMProfileLocation * targetLocation,
+  CMProfileRef srcProf) ;
+extern CMError
+CMValidateProfile(
+  CMProfileRef prof,
+  Boolean * valid,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetProfileLocation(
+  CMProfileRef prof,
+  CMProfileLocation * theProfile) ;
+extern CMError
+NCMGetProfileLocation(
+  CMProfileRef prof,
+  CMProfileLocation * theProfile,
+  UInt32 * locationSize) ;
+extern CMError
+CMFlattenProfile(
+  CMProfileRef prof,
+  UInt32 flags,
+  CMFlattenUPP proc,
+  void * refCon,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetProfileHeader(
+  CMProfileRef prof,
+  CMAppleProfileHeader * header) ;
+extern CMError
+CMSetProfileHeader(
+  CMProfileRef prof,
+  const CMAppleProfileHeader * header) ;
+extern CMError
+CMProfileElementExists(
+  CMProfileRef prof,
+  OSType tag,
+  Boolean * found) ;
+extern CMError
+CMCountProfileElements(
+  CMProfileRef prof,
+  UInt32 * elementCount) ;
+extern CMError
+CMGetProfileElement(
+  CMProfileRef prof,
+  OSType tag,
+  UInt32 * elementSize,
+  void * elementData) ;
+extern CMError
+CMSetProfileElement(
+  CMProfileRef prof,
+  OSType tag,
+  UInt32 elementSize,
+  const void * elementData) ;
+extern CMError
+CMSetProfileElementSize(
+  CMProfileRef prof,
+  OSType tag,
+  UInt32 elementSize) ;
+extern CMError
+CMSetProfileElementReference(
+  CMProfileRef prof,
+  OSType elementTag,
+  OSType referenceTag) ;
+extern CMError
+CMGetPartialProfileElement(
+  CMProfileRef prof,
+  OSType tag,
+  UInt32 offset,
+  UInt32 * byteCount,
+  void * elementData) ;
+extern CMError
+CMSetPartialProfileElement(
+  CMProfileRef prof,
+  OSType tag,
+  UInt32 offset,
+  UInt32 byteCount,
+  const void * elementData) ;
+extern CMError
+CMGetIndProfileElementInfo(
+  CMProfileRef prof,
+  UInt32 index,
+  OSType * tag,
+  UInt32 * elementSize,
+  Boolean * refs) ;
+extern CMError
+CMGetIndProfileElement(
+  CMProfileRef prof,
+  UInt32 index,
+  UInt32 * elementSize,
+  void * elementData) ;
+extern CMError
+CMRemoveProfileElement(
+  CMProfileRef prof,
+  OSType tag) ;
+extern CMError
+CMGetScriptProfileDescription(
+  CMProfileRef prof,
+  Str255 name,
+  ScriptCode * code) ;
+extern CMError
+CMGetProfileDescriptions(
+  CMProfileRef prof,
+  char * aName,
+  UInt32 * aCount,
+  Str255 mName,
+  ScriptCode * mCode,
+  UniChar * uName,
+  UniCharCount * uCount) ;
+extern CMError
+CMSetProfileDescriptions(
+  CMProfileRef prof,
+  const char * aName,
+  UInt32 aCount,
+  ConstStr255Param mName,
+  ScriptCode mCode,
+  const UniChar * uName,
+  UniCharCount uCount) ;
+extern CMError
+CMCopyProfileLocalizedStringDictionary(
+  CMProfileRef prof,
+  OSType tag,
+  CFDictionaryRef * theDict) ;
+extern CMError
+CMSetProfileLocalizedStringDictionary(
+  CMProfileRef prof,
+  OSType tag,
+  CFDictionaryRef theDict) ;
+extern CMError
+CMCopyProfileLocalizedString(
+  CMProfileRef prof,
+  OSType tag,
+  CFStringRef reqLocale,
+  CFStringRef * locale,
+  CFStringRef * str) ;
+extern CMError
+CMCloneProfileRef(CMProfileRef prof) ;
+extern CMError
+CMGetProfileRefCount(
+  CMProfileRef prof,
+  long * count) ;
+extern CMError
+CMProfileModified(
+  CMProfileRef prof,
+  Boolean * modified) ;
+extern CMError
+CMGetProfileMD5(
+  CMProfileRef prof,
+  CMProfileMD5 digest) ;
+extern CMError
+CMGetNamedColorInfo(
+  CMProfileRef prof,
+  UInt32 * deviceChannels,
+  OSType * deviceColorSpace,
+  OSType * PCSColorSpace,
+  UInt32 * count,
+  StringPtr prefix,
+  StringPtr suffix) ;
+extern CMError
+CMGetNamedColorValue(
+  CMProfileRef prof,
+  StringPtr name,
+  CMColor * deviceColor,
+  CMColor * PCSColor) ;
+extern CMError
+CMGetIndNamedColorValue(
+  CMProfileRef prof,
+  UInt32 index,
+  CMColor * deviceColor,
+  CMColor * PCSColor) ;
+extern CMError
+CMGetNamedColorIndex(
+  CMProfileRef prof,
+  StringPtr name,
+  UInt32 * index) ;
+extern CMError
+CMGetNamedColorName(
+  CMProfileRef prof,
+  UInt32 index,
+  StringPtr name) ;
+extern CMError
+NCWNewColorWorld(
+  CMWorldRef * cw,
+  CMProfileRef src,
+  CMProfileRef dst) ;
+extern CMError
+CWConcatColorWorld(
+  CMWorldRef * cw,
+  CMConcatProfileSet * profileSet) ;
+extern CMError
+CWNewLinkProfile(
+  CMProfileRef * prof,
+  const CMProfileLocation * targetLocation,
+  CMConcatProfileSet * profileSet) ;
+extern CMError
+NCWConcatColorWorld(
+  CMWorldRef * cw,
+  NCMConcatProfileSet * profileSet,
+  CMConcatCallBackUPP proc,
+  void * refCon) ;
+extern CMError
+NCWNewLinkProfile(
+  CMProfileRef * prof,
+  const CMProfileLocation * targetLocation,
+  NCMConcatProfileSet * profileSet,
+  CMConcatCallBackUPP proc,
+  void * refCon) ;
+extern void
+CWDisposeColorWorld(CMWorldRef cw) ;
+extern CMError
+CWMatchColors(
+  CMWorldRef cw,
+  CMColor * myColors,
+  UInt32 count) ;
+extern CMError
+CWCheckColors(
+  CMWorldRef cw,
+  CMColor * myColors,
+  UInt32 count,
+  UInt32 * result) ;
+extern CMError
+CWMatchBitmap(
+  CMWorldRef cw,
+  CMBitmap * bitmap,
+  CMBitmapCallBackUPP progressProc,
+  void * refCon,
+  CMBitmap * matchedBitmap) ;
+extern CMError
+CWCheckBitmap(
+  CMWorldRef cw,
+  const CMBitmap * bitmap,
+  CMBitmapCallBackUPP progressProc,
+  void * refCon,
+  CMBitmap * resultBitmap) ;
+extern CMError
+CMCreateProfileIdentifier(
+  CMProfileRef prof,
+  CMProfileIdentifierPtr ident,
+  UInt32 * size) ;
+extern CMError
+CMGetSystemProfile(CMProfileRef * prof) ;
+extern CMError
+CMSetSystemProfile(const FSSpec * profileFileSpec) ;
+extern CMError
+NCMSetSystemProfile(const CMProfileLocation * profLoc) ;
+extern CMError
+CMGetDefaultProfileBySpace(
+  OSType dataColorSpace,
+  CMProfileRef * prof) ;
+extern CMError
+CMSetDefaultProfileBySpace(
+  OSType dataColorSpace,
+  CMProfileRef prof) ;
+extern CMError
+CMGetProfileByAVID(
+  CMDisplayIDType theID,
+  CMProfileRef * prof) ;
+extern CMError
+CMSetProfileByAVID(
+  CMDisplayIDType theID,
+  CMProfileRef prof) ;
+extern CMError
+CMGetGammaByAVID(
+  CMDisplayIDType theID,
+  CMVideoCardGamma * gamma,
+  UInt32 * size) ;
+extern CMError
+CMSetGammaByAVID(
+  CMDisplayIDType theID,
+  CMVideoCardGamma * gamma) ;
+extern CMError
+CMGetDefaultProfileByUse(
+  OSType use,
+  CMProfileRef * prof) ;
+extern CMError
+CMSetDefaultProfileByUse(
+  OSType use,
+  CMProfileRef prof) ;
+extern CMError
+CMNewProfileSearch(
+  CMSearchRecord * searchSpec,
+  void * refCon,
+  UInt32 * count,
+  CMProfileSearchRef * searchResult) ;
+extern CMError
+CMUpdateProfileSearch(
+  CMProfileSearchRef search,
+  void * refCon,
+  UInt32 * count) ;
+extern void
+CMDisposeProfileSearch(CMProfileSearchRef search) ;
+extern CMError
+CMSearchGetIndProfile(
+  CMProfileSearchRef search,
+  UInt32 index,
+  CMProfileRef * prof) ;
+extern CMError
+CMSearchGetIndProfileFileSpec(
+  CMProfileSearchRef search,
+  UInt32 index,
+  FSSpec * profileFile) ;
+extern CMError
+CMProfileIdentifierFolderSearch(
+  CMProfileIdentifierPtr ident,
+  UInt32 * matchedCount,
+  CMProfileSearchRef * searchResult) ;
+extern CMError
+CMProfileIdentifierListSearch(
+  CMProfileIdentifierPtr ident,
+  CMProfileRef * profileList,
+  UInt32 listSize,
+  UInt32 * matchedCount,
+  CMProfileRef * matchedList) ;
+extern CMError
+CMIterateColorSyncFolder(
+  CMProfileIterateUPP proc,
+  UInt32 * seed,
+  UInt32 * count,
+  void * refCon) ;
+extern CMError
+NCMUnflattenProfile(
+  CMProfileLocation * targetLocation,
+  CMFlattenUPP proc,
+  void * refCon,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetColorSyncFolderSpec(
+  short vRefNum,
+  Boolean createFolder,
+  short * foundVRefNum,
+  long * foundDirID) ;
+extern CMError
+CMGetCWInfo(
+  CMWorldRef cw,
+  CMCWInfoRecord * info) ;
+extern CMError
+CMGetPreferredCMM(
+  OSType * cmmType,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMIterateCMMInfo(
+  CMMIterateUPP proc,
+  UInt32 * count,
+  void * refCon) ;
+extern CMError
+CMGetColorSyncVersion(UInt32 * version) ;
+extern CMError
+CMLaunchControlPanel(UInt32 flags) ;
+extern CMError
+CMConvertXYZToLab(
+  const CMColor * src,
+  const CMXYZColor * white,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertLabToXYZ(
+  const CMColor * src,
+  const CMXYZColor * white,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertXYZToLuv(
+  const CMColor * src,
+  const CMXYZColor * white,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertLuvToXYZ(
+  const CMColor * src,
+  const CMXYZColor * white,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertXYZToYxy(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertYxyToXYZ(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertRGBToHLS(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertHLSToRGB(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertRGBToHSV(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertHSVToRGB(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertRGBToGray(
+  const CMColor * src,
+  CMColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertXYZToFixedXYZ(
+  const CMXYZColor * src,
+  CMFixedXYZColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertFixedXYZToXYZ(
+  const CMFixedXYZColor * src,
+  CMXYZColor * dst,
+  UInt32 count) ;
+extern CMError
+CMConvertXYZToXYZ(
+  const CMColor * src,
+  const CMXYZColor * srcIlluminant,
+  CMColor * dst,
+  const CMXYZColor * dstIlluminant,
+  CMChromaticAdaptation method,
+  UInt32 count) ;
+extern CMError
+CMGetPS2ColorSpace(
+  CMProfileRef srcProf,
+  UInt32 flags,
+  CMFlattenUPP proc,
+  void * refCon,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetPS2ColorRenderingIntent(
+  CMProfileRef srcProf,
+  UInt32 flags,
+  CMFlattenUPP proc,
+  void * refCon,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetPS2ColorRendering(
+  CMProfileRef srcProf,
+  CMProfileRef dstProf,
+  UInt32 flags,
+  CMFlattenUPP proc,
+  void * refCon,
+  Boolean * preferredCMMnotfound) ;
+extern CMError
+CMGetPS2ColorRenderingVMSize(
+  CMProfileRef srcProf,
+  CMProfileRef dstProf,
+  UInt32 * vmSize,
+  Boolean * preferredCMMnotfound) ;
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+enum {
+  cmDeviceInfoVersion1 = 0x00010000,
+  cmDeviceProfileInfoVersion1 = 0x00010000,
+  cmDeviceProfileInfoVersion2 = 0x00020000
+};
+
+enum {
+  cmCurrentDeviceInfoVersion = cmDeviceInfoVersion1,
+  cmCurrentProfileInfoVersion = cmDeviceProfileInfoVersion1
+};
+
+
+
+
+
+enum {
+  cmDefaultDeviceID = 0,
+  cmDefaultProfileID = 0
+};
+
+
+
+
+
+enum {
+  cmDeviceStateDefault = 0x00000000,
+  cmDeviceStateOffline = 0x00000001,
+  cmDeviceStateBusy = 0x00000002,
+  cmDeviceStateForceNotify = (long)0x80000000,
+  cmDeviceStateDeviceRsvdBits = 0x00FF0000,
+  cmDeviceStateAppleRsvdBits = (long)0xFF00FFFF
+};
+enum {
+  cmIterateFactoryDeviceProfiles = 0x00000001,
+  cmIterateCustomDeviceProfiles = 0x00000002,
+  cmIterateCurrentDeviceProfiles = 0x00000003,
+  cmIterateAllDeviceProfiles = 0x00000004,
+  cmIterateDeviceProfilesMask = 0x0000000F
+};
+
+
+
+
+enum {
+  cmDeviceDBNotFoundErr = -4227,
+  cmDeviceAlreadyRegistered = -4228,
+  cmDeviceNotRegistered = -4229,
+  cmDeviceProfilesNotFound = -4230,
+  cmInternalCFErr = -4231
+};
+typedef UInt32 CMDeviceState;
+
+
+
+typedef UInt32 CMDeviceID;
+
+
+
+typedef UInt32 CMDeviceProfileID;
+
+
+
+enum {
+  cmScannerDeviceClass = 'scnr',
+  cmCameraDeviceClass = 'cmra',
+  cmDisplayDeviceClass = 'mntr',
+  cmPrinterDeviceClass = 'prtr',
+  cmProofDeviceClass = 'pruf'
+};
+
+typedef OSType CMDeviceClass;
+
+
+
+
+struct CMDeviceScope {
+  CFStringRef deviceUser;
+  CFStringRef deviceHost;
+};
+typedef struct CMDeviceScope CMDeviceScope;
+typedef CMDeviceScope CMDeviceProfileScope;
+
+
+
+
+struct CMDeviceInfo {
+  UInt32 dataVersion;
+  CMDeviceClass deviceClass;
+  CMDeviceID deviceID;
+  CMDeviceScope deviceScope;
+  CMDeviceState deviceState;
+  CMDeviceProfileID defaultProfileID;
+  CFDictionaryRef * deviceName;
+
+  UInt32 profileCount;
+  UInt32 reserved;
+};
+typedef struct CMDeviceInfo CMDeviceInfo;
+typedef CMDeviceInfo * CMDeviceInfoPtr;
+
+
+
+
+struct CMDeviceProfileInfo {
+  UInt32 dataVersion;
+  CMDeviceProfileID profileID;
+  CMProfileLocation profileLoc;
+  CFDictionaryRef profileName;
+  UInt32 reserved;
+};
+typedef struct CMDeviceProfileInfo CMDeviceProfileInfo;
+struct NCMDeviceProfileInfo {
+  UInt32 dataVersion;
+  CMDeviceProfileID profileID;
+  CMProfileLocation profileLoc;
+  CFDictionaryRef profileName;
+  CMDeviceProfileScope profileScope;
+  UInt32 reserved;
+};
+typedef struct NCMDeviceProfileInfo NCMDeviceProfileInfo;
+
+
+
+
+struct CMDeviceProfileArray {
+  UInt32 profileCount;
+  CMDeviceProfileInfo profiles[1];
+};
+typedef struct CMDeviceProfileArray CMDeviceProfileArray;
+typedef CMDeviceProfileArray * CMDeviceProfileArrayPtr;
+
+
+
+typedef OSErr ( * CMIterateDeviceInfoProcPtr)(const CMDeviceInfo *deviceInfo, void *refCon);
+typedef OSErr ( * CMIterateDeviceProfileProcPtr)(const CMDeviceInfo *deviceInfo, const NCMDeviceProfileInfo *profileInfo, void *refCon);
+extern CMError
+CMRegisterColorDevice(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CFDictionaryRef deviceName,
+  const CMDeviceScope * deviceScope) ;
+extern CMError
+CMUnregisterColorDevice(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID) ;
+extern CMError
+CMSetDefaultDevice(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID) ;
+extern CMError
+CMGetDefaultDevice(
+  CMDeviceClass deviceClass,
+  CMDeviceID * deviceID) ;
+extern CMError
+CMSetDeviceFactoryProfiles(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceProfileID defaultProfID,
+  const CMDeviceProfileArray * deviceProfiles) ;
+extern CMError
+CMGetDeviceFactoryProfiles(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceProfileID * defaultProfID,
+  UInt32 * arraySize,
+  CMDeviceProfileArray * deviceProfiles) ;
+extern CMError
+CMSetDeviceProfiles(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  const CMDeviceProfileScope * profileScope,
+  const CMDeviceProfileArray * deviceProfiles) ;
+extern CMError
+CMGetDeviceProfiles(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  UInt32 * arraySize,
+  CMDeviceProfileArray * deviceProfiles) ;
+extern CMError
+CMSetDeviceDefaultProfileID(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceProfileID defaultProfID) ;
+extern CMError
+CMGetDeviceDefaultProfileID(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceProfileID * defaultProfID) ;
+extern CMError
+CMGetDeviceProfile(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceProfileID profileID,
+  CMProfileLocation * deviceProfLoc) ;
+extern CMError
+CMSetDeviceProfile(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  const CMDeviceProfileScope * profileScope,
+  CMDeviceProfileID profileID,
+  const CMProfileLocation * deviceProfLoc) ;
+extern CMError
+CMSetDeviceState(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceState deviceState) ;
+extern CMError
+CMGetDeviceState(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceState * deviceState) ;
+extern CMError
+CMGetDeviceInfo(
+  CMDeviceClass deviceClass,
+  CMDeviceID deviceID,
+  CMDeviceInfo * deviceInfo) ;
+extern CMError
+CMIterateColorDevices(
+  CMIterateDeviceInfoProcPtr proc,
+  UInt32 * seed,
+  UInt32 * count,
+  void * refCon) ;
+extern CMError
+CMIterateDeviceProfiles(
+  CMIterateDeviceProfileProcPtr proc,
+  UInt32 * seed,
+  UInt32 * count,
+  UInt32 flags,
+  void * refCon) ;
+
+
+
+
+
+}
+
+
+
+enum {
+  CMMInterfaceVersion = 1
+};
+
+
+
+enum {
+
+  kCMMOpen = -1,
+  kCMMClose = -2,
+  kCMMGetInfo = -4,
+  kNCMMInit = 6,
+  kCMMMatchColors = 1,
+  kCMMCheckColors = 2,
+
+
+  kCMMValidateProfile = 8,
+  kCMMMatchBitmap = 9,
+  kCMMCheckBitmap = 10,
+  kCMMConcatenateProfiles = 5,
+  kCMMConcatInit = 7,
+  kCMMNewLinkProfile = 16,
+  kNCMMConcatInit = 18,
+  kNCMMNewLinkProfile = 19,
+  kCMMGetPS2ColorSpace = 11,
+  kCMMGetPS2ColorRenderingIntent = 12,
+  kCMMGetPS2ColorRendering = 13,
+  kCMMGetPS2ColorRenderingVMSize = 17,
+
+
+  kCMMFlattenProfile = 14,
+  kCMMUnflattenProfile = 15,
+
+
+  kCMMInit = 0,
+  kCMMGetNamedColorInfo = 70,
+  kCMMGetNamedColorValue = 71,
+  kCMMGetIndNamedColorValue = 72,
+  kCMMGetNamedColorIndex = 73,
+  kCMMGetNamedColorName = 74,
+
+
+  kCMMMatchPixMap = 3,
+  kCMMCheckPixMap = 4
+};
+
+
+
+extern "C" {
+
+
+enum {
+
+  cmspInvalidImageFile = -4220,
+  cmspInvalidImageSpace = -4221,
+  cmspInvalidProfileEmbed = -4222,
+  cmspInvalidProfileSource = -4223,
+  cmspInvalidProfileDest = -4224,
+  cmspInvalidProfileProof = -4225,
+  cmspInvalidProfileLink = -4226
+};
+
+
+
+
+
+
+enum {
+  cmspFavorEmbeddedMask = 0x00000001
+};
+
+
+
+typedef CMError ( * ValidateImageProcPtr)(const FSSpec * spec);
+typedef CMError ( * GetImageSpaceProcPtr)(const FSSpec *spec, OSType *space);
+typedef CMError ( * ValidateSpaceProcPtr)(const FSSpec *spec, OSType *space);
+typedef CMError ( * EmbedImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, CMProfileRef embedProf, UInt32 embedFlags);
+typedef CMError ( * UnembedImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto);
+typedef CMError ( * MatchImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, UInt32 qual, UInt32 srcIntent, CMProfileRef srcProf, CMProfileRef dstProf, CMProfileRef prfProf, UInt32 matchFlags);
+typedef CMError ( * CountImageProfilesProcPtr)(const FSSpec *spec, UInt32 *count);
+typedef CMError ( * GetIndImageProfileProcPtr)(const FSSpec *spec, UInt32 index, CMProfileRef *prof);
+typedef CMError ( * SetIndImageProfileProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, UInt32 index, CMProfileRef prof, UInt32 embedFlags);
+
+typedef CMError ( * CMValidImageProcPtr)(const FSSpec * spec);
+typedef CMError ( * CMGetImageSpaceProcPtr)(const FSSpec *spec, OSType *space);
+typedef CMError ( * CMEmbedImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl, CMProfileRef embProf);
+typedef CMError ( * CMUnembedImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl);
+typedef CMError ( * CMMatchImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl, UInt32 qual, CMProfileRef srcProf, UInt32 srcIntent, CMProfileRef dstProf);
+typedef CMError ( * CMProofImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl, UInt32 qual, CMProfileRef srcProf, UInt32 srcIntent, CMProfileRef dstProf, CMProfileRef prfProf);
+typedef CMError ( * CMLinkImageProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl, UInt32 qual, CMProfileRef lnkProf, UInt32 lnkIntent);
+typedef CMError ( * CMCountImageProfilesProcPtr)(const FSSpec *spec, UInt32 *count);
+typedef CMError ( * CMGetIndImageProfileProcPtr)(const FSSpec *spec, UInt32 index, CMProfileRef *prof);
+typedef CMError ( * CMSetIndImageProfileProcPtr)(const FSSpec *specFrom, const FSSpec *specInto, Boolean repl, UInt32 index, CMProfileRef prof);
+extern CMError
+CMValidImage(const FSSpec * spec);
+extern CMError
+CMGetImageSpace(
+  const FSSpec * spec,
+  OSType * space);
+extern CMError
+CMEmbedImage(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl,
+  CMProfileRef embProf);
+extern CMError
+CMUnembedImage(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl);
+extern CMError
+CMMatchImage(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl,
+  UInt32 qual,
+  CMProfileRef srcProf,
+  UInt32 srcIntent,
+  CMProfileRef dstProf);
+extern CMError
+CMProofImage(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl,
+  UInt32 qual,
+  CMProfileRef srcProf,
+  UInt32 srcIntent,
+  CMProfileRef dstProf,
+  CMProfileRef prfProf);
+extern CMError
+CMLinkImage(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl,
+  UInt32 qual,
+  CMProfileRef lnkProf,
+  UInt32 lnkIntent);
+extern CMError
+CMCountImageProfiles(
+  const FSSpec * spec,
+  UInt32 * count);
+extern CMError
+CMGetIndImageProfile(
+  const FSSpec * spec,
+  UInt32 index,
+  CMProfileRef * prof);
+extern CMError
+CMSetIndImageProfile(
+  const FSSpec * specFrom,
+  const FSSpec * specInto,
+  Boolean repl,
+  UInt32 index,
+  CMProfileRef prof);
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  typeBoolean = 'bool',
+  typeChar = 'TEXT'
+};
+
+
+enum {
+  typeSInt16 = 'shor',
+  typeSInt32 = 'long',
+  typeUInt32 = 'magn',
+  typeSInt64 = 'comp',
+  typeIEEE32BitFloatingPoint = 'sing',
+  typeIEEE64BitFloatingPoint = 'doub',
+  type128BitFloatingPoint = 'ldbl',
+  typeDecimalStruct = 'decm'
+};
+
+
+enum {
+  typeSMInt = typeSInt16,
+  typeShortInteger = typeSInt16,
+  typeInteger = typeSInt32,
+  typeLongInteger = typeSInt32,
+  typeMagnitude = typeUInt32,
+  typeComp = typeSInt64,
+  typeSMFloat = typeIEEE32BitFloatingPoint,
+  typeShortFloat = typeIEEE32BitFloatingPoint,
+  typeFloat = typeIEEE64BitFloatingPoint,
+  typeLongFloat = typeIEEE64BitFloatingPoint,
+  typeExtended = 'exte'
+};
+
+
+enum {
+  typeAEList = 'list',
+  typeAERecord = 'reco',
+  typeAppleEvent = 'aevt',
+  typeEventRecord = 'evrc',
+  typeTrue = 'true',
+  typeFalse = 'fals',
+  typeAlias = 'alis',
+  typeEnumerated = 'enum',
+  typeType = 'type',
+  typeAppParameters = 'appa',
+  typeProperty = 'prop',
+  typeFSS = 'fss ',
+  typeFSRef = 'fsrf',
+  typeFileURL = 'furl',
+  typeKeyword = 'keyw',
+  typeSectionH = 'sect',
+  typeWildCard = '****',
+  typeApplSignature = 'sign',
+  typeQDRectangle = 'qdrt',
+  typeFixed = 'fixd',
+  typeProcessSerialNumber = 'psn ',
+  typeApplicationURL = 'aprl',
+  typeNull = 'null'
+};
+
+
+enum {
+  typeKernelProcessID = 'kpid',
+  typeMachPort = 'port'
+};
+
+
+enum {
+  keyTransactionIDAttr = 'tran',
+  keyReturnIDAttr = 'rtid',
+  keyEventClassAttr = 'evcl',
+  keyEventIDAttr = 'evid',
+  keyAddressAttr = 'addr',
+  keyOptionalKeywordAttr = 'optk',
+  keyTimeoutAttr = 'timo',
+  keyInteractLevelAttr = 'inte',
+  keyEventSourceAttr = 'esrc',
+  keyMissedKeywordAttr = 'miss',
+  keyOriginalAddressAttr = 'from',
+  keyAcceptTimeoutAttr = 'actm'
+};
+
+
+enum {
+  kAEDebugPOSTHeader = (1 << 0),
+  kAEDebugReplyHeader = (1 << 1),
+  kAEDebugXMLRequest = (1 << 2),
+  kAEDebugXMLResponse = (1 << 3),
+  kAEDebugXMLDebugAll = (long)0xFFFFFFFF
+};
+
+
+
+
+
+enum {
+  kSOAP1999Schema = 'ss99',
+  kSOAP2001Schema = 'ss01'
+};
+
+enum {
+
+  keyUserNameAttr = 'unam',
+  keyUserPasswordAttr = 'pass',
+  keyDisableAuthenticationAttr = 'auth',
+
+
+  keyXMLDebuggingAttr = 'xdbg',
+
+  kAERPCClass = 'rpc ',
+  kAEXMLRPCScheme = 'RPC2',
+  kAESOAPScheme = 'SOAP',
+  kAESharedScriptHandler = 'wscp',
+
+  keyRPCMethodName = 'meth',
+  keyRPCMethodParam = 'parm',
+  keyRPCMethodParamOrder = '/ord',
+
+  keyAEPOSTHeaderData = 'phed',
+  keyAEReplyHeaderData = 'rhed',
+  keyAEXMLRequestData = 'xreq',
+  keyAEXMLReplyData = 'xrep',
+
+  keyAdditionalHTTPHeaders = 'ahed',
+  keySOAPAction = 'sact',
+  keySOAPMethodNameSpace = 'mspc',
+  keySOAPMethodNameSpaceURI = 'mspu',
+  keySOAPSchemaVersion = 'ssch'
+};
+enum {
+  keySOAPStructureMetaData = '/smd',
+  keySOAPSMDNamespace = 'ssns',
+  keySOAPSMDNamespaceURI = 'ssnu',
+  keySOAPSMDType = 'sstp'
+};
+
+
+
+
+
+
+enum {
+
+  kAEUseHTTPProxyAttr = 'xupr',
+
+  kAEHTTPProxyPortAttr = 'xhtp',
+  kAEHTTPProxyHostAttr = 'xhth'
+};
+
+
+
+
+
+
+enum {
+  kAESocks4Protocol = 4,
+  kAESocks5Protocol = 5
+};
+
+enum {
+  kAEUseSocksAttr = 'xscs',
+
+  kAESocksProxyAttr = 'xsok',
+
+  kAESocksHostAttr = 'xshs',
+  kAESocksPortAttr = 'xshp',
+  kAESocksUserAttr = 'xshu',
+
+  kAESocksPasswordAttr = 'xshw'
+};
+
+
+
+enum {
+  kAEDescListFactorNone = 0,
+  kAEDescListFactorType = 4,
+  kAEDescListFactorTypeAndSize = 8
+};
+
+
+enum {
+
+  kAutoGenerateReturnID = -1,
+
+  kAnyTransactionID = 0
+};
+
+
+typedef ResType DescType;
+typedef FourCharCode AEKeyword;
+
+typedef struct OpaqueAEDataStorageType* AEDataStorageType;
+
+
+
+
+typedef AEDataStorageType * AEDataStorage;
+struct AEDesc {
+  DescType descriptorType;
+  AEDataStorage dataHandle;
+};
+typedef struct AEDesc AEDesc;
+typedef AEDesc * AEDescPtr;
+struct AEKeyDesc {
+  AEKeyword descKey;
+  AEDesc descContent;
+};
+typedef struct AEKeyDesc AEKeyDesc;
+
+
+typedef AEDesc AEDescList;
+
+typedef AEDescList AERecord;
+
+typedef AEDesc AEAddressDesc;
+
+typedef AERecord AppleEvent;
+typedef AppleEvent * AppleEventPtr;
+typedef SInt16 AEReturnID;
+typedef SInt32 AETransactionID;
+typedef FourCharCode AEEventClass;
+typedef FourCharCode AEEventID;
+typedef SInt8 AEArrayType;
+enum {
+  kAEDataArray = 0,
+  kAEPackedArray = 1,
+  kAEDescArray = 3,
+  kAEKeyDescArray = 4
+};
+
+
+enum {
+  kAEHandleArray = 2
+};
+
+union AEArrayData {
+  short kAEDataArray[1];
+  char kAEPackedArray[1];
+  Handle kAEHandleArray[1];
+  AEDesc kAEDescArray[1];
+  AEKeyDesc kAEKeyDescArray[1];
+};
+typedef union AEArrayData AEArrayData;
+typedef AEArrayData * AEArrayDataPointer;
+
+
+
+
+typedef SInt16 AESendPriority;
+enum {
+  kAENormalPriority = 0x00000000,
+  kAEHighPriority = 0x00000001
+};
+
+
+typedef SInt32 AESendMode;
+enum {
+  kAENoReply = 0x00000001,
+  kAEQueueReply = 0x00000002,
+  kAEWaitReply = 0x00000003,
+  kAEDontReconnect = 0x00000080,
+  kAEWantReceipt = 0x00000200,
+  kAENeverInteract = 0x00000010,
+  kAECanInteract = 0x00000020,
+  kAEAlwaysInteract = 0x00000030,
+  kAECanSwitchLayer = 0x00000040,
+  kAEDontRecord = 0x00001000,
+  kAEDontExecute = 0x00002000,
+  kAEProcessNonReplyEvents = 0x00008000
+};
+
+
+
+enum {
+  kAEDefaultTimeout = -1,
+  kNoTimeOut = -2
+};
+
+
+
+
+
+typedef OSErr ( * AECoerceDescProcPtr)(const AEDesc *fromDesc, DescType toType, long handlerRefcon, AEDesc *toDesc);
+typedef OSErr ( * AECoercePtrProcPtr)(DescType typeCode, const void *dataPtr, Size dataSize, DescType toType, long handlerRefcon, AEDesc *result);
+typedef AECoerceDescProcPtr AECoerceDescUPP;
+typedef AECoercePtrProcPtr AECoercePtrUPP;
+extern AECoerceDescUPP
+NewAECoerceDescUPP(AECoerceDescProcPtr userRoutine) ;
+extern AECoercePtrUPP
+NewAECoercePtrUPP(AECoercePtrProcPtr userRoutine) ;
+extern void
+DisposeAECoerceDescUPP(AECoerceDescUPP userUPP) ;
+extern void
+DisposeAECoercePtrUPP(AECoercePtrUPP userUPP) ;
+extern OSErr
+InvokeAECoerceDescUPP(
+  const AEDesc * fromDesc,
+  DescType toType,
+  long handlerRefcon,
+  AEDesc * toDesc,
+  AECoerceDescUPP userUPP) ;
+extern OSErr
+InvokeAECoercePtrUPP(
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize,
+  DescType toType,
+  long handlerRefcon,
+  AEDesc * result,
+  AECoercePtrUPP userUPP) ;
+
+
+
+
+
+typedef AECoerceDescUPP AECoercionHandlerUPP;
+extern OSErr
+AEInstallCoercionHandler(
+  DescType fromType,
+  DescType toType,
+  AECoercionHandlerUPP handler,
+  long handlerRefcon,
+  Boolean fromTypeIsDesc,
+  Boolean isSysHandler) ;
+extern OSErr
+AERemoveCoercionHandler(
+  DescType fromType,
+  DescType toType,
+  AECoercionHandlerUPP handler,
+  Boolean isSysHandler) ;
+extern OSErr
+AEGetCoercionHandler(
+  DescType fromType,
+  DescType toType,
+  AECoercionHandlerUPP * handler,
+  long * handlerRefcon,
+  Boolean * fromTypeIsDesc,
+  Boolean isSysHandler) ;
+extern OSErr
+AECoercePtr(
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize,
+  DescType toType,
+  AEDesc * result) ;
+extern OSErr
+AECoerceDesc(
+  const AEDesc * theAEDesc,
+  DescType toType,
+  AEDesc * result) ;
+extern void
+AEInitializeDesc(AEDesc * desc) ;
+
+
+
+
+    inline void AEInitializeDescInline(AEDesc* d) { d->descriptorType = typeNull; d->dataHandle = __null; };
+extern OSErr
+AECreateDesc(
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize,
+  AEDesc * result) ;
+extern OSErr
+AEDisposeDesc(AEDesc * theAEDesc) ;
+extern OSErr
+AEDuplicateDesc(
+  const AEDesc * theAEDesc,
+  AEDesc * result) ;
+typedef void ( * AEDisposeExternalProcPtr)(const void *dataPtr, Size dataLength, long refcon);
+typedef AEDisposeExternalProcPtr AEDisposeExternalUPP;
+extern OSStatus
+AECreateDescFromExternalPtr(
+  OSType descriptorType,
+  const void * dataPtr,
+  Size dataLength,
+  AEDisposeExternalUPP disposeCallback,
+  long disposeRefcon,
+  AEDesc * theDesc) ;
+extern OSErr
+AECreateList(
+  const void * factoringPtr,
+  Size factoredSize,
+  Boolean isRecord,
+  AEDescList * resultList) ;
+extern OSErr
+AECountItems(
+  const AEDescList * theAEDescList,
+  long * theCount) ;
+extern OSErr
+AEPutPtr(
+  AEDescList * theAEDescList,
+  long index,
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize) ;
+extern OSErr
+AEPutDesc(
+  AEDescList * theAEDescList,
+  long index,
+  const AEDesc * theAEDesc) ;
+extern OSErr
+AEGetNthPtr(
+  const AEDescList * theAEDescList,
+  long index,
+  DescType desiredType,
+  AEKeyword * theAEKeyword,
+  DescType * typeCode,
+  void * dataPtr,
+  Size maximumSize,
+  Size * actualSize) ;
+extern OSErr
+AEGetNthDesc(
+  const AEDescList * theAEDescList,
+  long index,
+  DescType desiredType,
+  AEKeyword * theAEKeyword,
+  AEDesc * result) ;
+extern OSErr
+AESizeOfNthItem(
+  const AEDescList * theAEDescList,
+  long index,
+  DescType * typeCode,
+  Size * dataSize) ;
+extern OSErr
+AEGetArray(
+  const AEDescList * theAEDescList,
+  AEArrayType arrayType,
+  AEArrayDataPointer arrayPtr,
+  Size maximumSize,
+  DescType * itemType,
+  Size * itemSize,
+  long * itemCount) ;
+extern OSErr
+AEPutArray(
+  AEDescList * theAEDescList,
+  AEArrayType arrayType,
+  const AEArrayData * arrayPtr,
+  DescType itemType,
+  Size itemSize,
+  long itemCount) ;
+extern OSErr
+AEDeleteItem(
+  AEDescList * theAEDescList,
+  long index) ;
+extern Boolean
+AECheckIsRecord(const AEDesc * theDesc) ;
+extern OSErr
+AECreateAppleEvent(
+  AEEventClass theAEEventClass,
+  AEEventID theAEEventID,
+  const AEAddressDesc * target,
+  AEReturnID returnID,
+  AETransactionID transactionID,
+  AppleEvent * result) ;
+extern OSErr
+AEPutParamPtr(
+  AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize) ;
+extern OSErr
+AEPutParamDesc(
+  AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  const AEDesc * theAEDesc) ;
+extern OSErr
+AEGetParamPtr(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType desiredType,
+  DescType * typeCode,
+  void * dataPtr,
+  Size maximumSize,
+  Size * actualSize) ;
+extern OSErr
+AEGetParamDesc(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType desiredType,
+  AEDesc * result) ;
+extern OSErr
+AESizeOfParam(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType * typeCode,
+  Size * dataSize) ;
+extern OSErr
+AEDeleteParam(
+  AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword) ;
+extern OSErr
+AEGetAttributePtr(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType desiredType,
+  DescType * typeCode,
+  void * dataPtr,
+  Size maximumSize,
+  Size * actualSize) ;
+extern OSErr
+AEGetAttributeDesc(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType desiredType,
+  AEDesc * result) ;
+extern OSErr
+AESizeOfAttribute(
+  const AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType * typeCode,
+  Size * dataSize) ;
+extern OSErr
+AEPutAttributePtr(
+  AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize) ;
+extern OSErr
+AEPutAttributeDesc(
+  AppleEvent * theAppleEvent,
+  AEKeyword theAEKeyword,
+  const AEDesc * theAEDesc) ;
+extern Size
+AESizeOfFlattenedDesc(const AEDesc * theAEDesc) ;
+extern OSStatus
+AEFlattenDesc(
+  const AEDesc * theAEDesc,
+  Ptr buffer,
+  Size bufferSize,
+  Size * actualSize) ;
+extern OSStatus
+AEUnflattenDesc(
+  Ptr buffer,
+  AEDesc * result) ;
+extern OSErr
+AEGetDescData(
+  const AEDesc * theAEDesc,
+  void * dataPtr,
+  Size maximumSize) ;
+extern Size
+AEGetDescDataSize(const AEDesc * theAEDesc) ;
+extern OSErr
+AEReplaceDescData(
+  DescType typeCode,
+  const void * dataPtr,
+  Size dataSize,
+  AEDesc * theAEDesc) ;
+extern OSStatus
+AEGetDescDataRange(
+  const AEDesc * dataDesc,
+  void * buffer,
+  Size offset,
+  Size length) ;
+
+
+
+
+
+typedef OSErr ( * AEEventHandlerProcPtr)(const AppleEvent *theAppleEvent, AppleEvent *reply, long handlerRefcon);
+typedef AEEventHandlerProcPtr AEEventHandlerUPP;
+extern AEDisposeExternalUPP
+NewAEDisposeExternalUPP(AEDisposeExternalProcPtr userRoutine) ;
+extern AEEventHandlerUPP
+NewAEEventHandlerUPP(AEEventHandlerProcPtr userRoutine) ;
+extern void
+DisposeAEDisposeExternalUPP(AEDisposeExternalUPP userUPP) ;
+extern void
+DisposeAEEventHandlerUPP(AEEventHandlerUPP userUPP) ;
+extern void
+InvokeAEDisposeExternalUPP(
+  const void * dataPtr,
+  Size dataLength,
+  long refcon,
+  AEDisposeExternalUPP userUPP) ;
+extern OSErr
+InvokeAEEventHandlerUPP(
+  const AppleEvent * theAppleEvent,
+  AppleEvent * reply,
+  long handlerRefcon,
+  AEEventHandlerUPP userUPP) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+
+  keyDirectObject = '----',
+  keyErrorNumber = 'errn',
+  keyErrorString = 'errs',
+  keyProcessSerialNumber = 'psn ',
+  keyPreDispatch = 'phac',
+  keySelectProc = 'selh',
+
+  keyAERecorderCount = 'recr',
+
+  keyAEVersion = 'vers'
+};
+
+
+enum {
+  kCoreEventClass = 'aevt'
+};
+
+
+enum {
+  kAEOpenApplication = 'oapp',
+  kAEOpenDocuments = 'odoc',
+  kAEPrintDocuments = 'pdoc',
+  kAEQuitApplication = 'quit',
+  kAEAnswer = 'ansr',
+  kAEApplicationDied = 'obit',
+  kAEShowPreferences = 'pref'
+};
+
+
+enum {
+  kAEStartRecording = 'reca',
+  kAEStopRecording = 'recc',
+  kAENotifyStartRecording = 'rec1',
+  kAENotifyStopRecording = 'rec0',
+  kAENotifyRecording = 'recr'
+};
+typedef SInt8 AEEventSource;
+enum {
+  kAEUnknownSource = 0,
+  kAEDirectCall = 1,
+  kAESameProcess = 2,
+  kAELocalProcess = 3,
+  kAERemoteProcess = 4
+};
+extern OSErr
+AEInstallEventHandler(
+  AEEventClass theAEEventClass,
+  AEEventID theAEEventID,
+  AEEventHandlerUPP handler,
+  long handlerRefcon,
+  Boolean isSysHandler) ;
+extern OSErr
+AERemoveEventHandler(
+  AEEventClass theAEEventClass,
+  AEEventID theAEEventID,
+  AEEventHandlerUPP handler,
+  Boolean isSysHandler) ;
+extern OSErr
+AEGetEventHandler(
+  AEEventClass theAEEventClass,
+  AEEventID theAEEventID,
+  AEEventHandlerUPP * handler,
+  long * handlerRefcon,
+  Boolean isSysHandler) ;
+extern OSErr
+AEInstallSpecialHandler(
+  AEKeyword functionClass,
+  AEEventHandlerUPP handler,
+  Boolean isSysHandler) ;
+extern OSErr
+AERemoveSpecialHandler(
+  AEKeyword functionClass,
+  AEEventHandlerUPP handler,
+  Boolean isSysHandler) ;
+extern OSErr
+AEGetSpecialHandler(
+  AEKeyword functionClass,
+  AEEventHandlerUPP * handler,
+  Boolean isSysHandler) ;
+extern OSErr
+AEManagerInfo(
+  AEKeyword keyWord,
+  long * result) ;
+}
+
+
+
+extern "C" {
+extern OSErr
+CreateOffsetDescriptor(
+  long theOffset,
+  AEDesc * theDescriptor) ;
+extern OSErr
+CreateCompDescriptor(
+  DescType comparisonOperator,
+  AEDesc * operand1,
+  AEDesc * operand2,
+  Boolean disposeInputs,
+  AEDesc * theDescriptor) ;
+extern OSErr
+CreateLogicalDescriptor(
+  AEDescList * theLogicalTerms,
+  DescType theLogicOperator,
+  Boolean disposeInputs,
+  AEDesc * theDescriptor) ;
+extern OSErr
+CreateObjSpecifier(
+  DescType desiredClass,
+  AEDesc * theContainer,
+  DescType keyForm,
+  AEDesc * keyData,
+  Boolean disposeInputs,
+  AEDesc * objSpecifier) ;
+extern OSErr
+CreateRangeDescriptor(
+  AEDesc * rangeStart,
+  AEDesc * rangeStop,
+  Boolean disposeInputs,
+  AEDesc * theDescriptor) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+
+  kAEAND = 'AND ',
+  kAEOR = 'OR  ',
+  kAENOT = 'NOT ',
+
+  kAEFirst = 'firs',
+  kAELast = 'last',
+  kAEMiddle = 'midd',
+  kAEAny = 'any ',
+  kAEAll = 'all ',
+
+  kAENext = 'next',
+  kAEPrevious = 'prev',
+
+  keyAECompOperator = 'relo',
+  keyAELogicalTerms = 'term',
+  keyAELogicalOperator = 'logc',
+  keyAEObject1 = 'obj1',
+  keyAEObject2 = 'obj2',
+
+  keyAEDesiredClass = 'want',
+  keyAEContainer = 'from',
+  keyAEKeyForm = 'form',
+  keyAEKeyData = 'seld'
+};
+
+enum {
+
+  keyAERangeStart = 'star',
+  keyAERangeStop = 'stop',
+
+  keyDisposeTokenProc = 'xtok',
+  keyAECompareProc = 'cmpr',
+  keyAECountProc = 'cont',
+  keyAEMarkTokenProc = 'mkid',
+  keyAEMarkProc = 'mark',
+  keyAEAdjustMarksProc = 'adjm',
+  keyAEGetErrDescProc = 'indc'
+};
+
+
+enum {
+
+  formAbsolutePosition = 'indx',
+  formRelativePosition = 'rele',
+  formTest = 'test',
+  formRange = 'rang',
+  formPropertyID = 'prop',
+  formName = 'name',
+
+  typeObjectSpecifier = 'obj ',
+  typeObjectBeingExamined = 'exmn',
+  typeCurrentContainer = 'ccnt',
+  typeToken = 'toke',
+  typeRelativeDescriptor = 'rel ',
+  typeAbsoluteOrdinal = 'abso',
+  typeIndexDescriptor = 'inde',
+  typeRangeDescriptor = 'rang',
+  typeLogicalDescriptor = 'logi',
+  typeCompDescriptor = 'cmpd',
+  typeOSLTokenList = 'ostl'
+};
+
+
+enum {
+  kAEIDoMinimum = 0x0000,
+  kAEIDoWhose = 0x0001,
+  kAEIDoMarking = 0x0004,
+  kAEPassSubDescs = 0x0008,
+  kAEResolveNestedLists = 0x0010,
+  kAEHandleSimpleRanges = 0x0020,
+  kAEUseRelativeIterators = 0x0040
+};
+
+
+enum {
+  typeWhoseDescriptor = 'whos',
+  formWhose = 'whos',
+  typeWhoseRange = 'wrng',
+  keyAEWhoseRangeStart = 'wstr',
+  keyAEWhoseRangeStop = 'wstp',
+  keyAEIndex = 'kidx',
+  keyAETest = 'ktst'
+};
+
+
+
+
+
+
+
+struct ccntTokenRecord {
+  DescType tokenClass;
+  AEDesc token;
+};
+typedef struct ccntTokenRecord ccntTokenRecord;
+typedef ccntTokenRecord * ccntTokenRecPtr;
+typedef ccntTokenRecPtr * ccntTokenRecHandle;
+
+
+
+
+
+
+typedef OSErr ( * OSLAccessorProcPtr)(DescType desiredClass, const AEDesc *container, DescType containerClass, DescType form, const AEDesc *selectionData, AEDesc *value, long accessorRefcon);
+typedef OSErr ( * OSLCompareProcPtr)(DescType oper, const AEDesc *obj1, const AEDesc *obj2, Boolean *result);
+typedef OSErr ( * OSLCountProcPtr)(DescType desiredType, DescType containerClass, const AEDesc *container, long *result);
+typedef OSErr ( * OSLDisposeTokenProcPtr)(AEDesc * unneededToken);
+typedef OSErr ( * OSLGetMarkTokenProcPtr)(const AEDesc *dContainerToken, DescType containerClass, AEDesc *result);
+typedef OSErr ( * OSLGetErrDescProcPtr)(AEDesc ** appDescPtr);
+typedef OSErr ( * OSLMarkProcPtr)(const AEDesc *dToken, const AEDesc *markToken, long index);
+typedef OSErr ( * OSLAdjustMarksProcPtr)(long newStart, long newStop, const AEDesc *markToken);
+typedef OSLAccessorProcPtr OSLAccessorUPP;
+typedef OSLCompareProcPtr OSLCompareUPP;
+typedef OSLCountProcPtr OSLCountUPP;
+typedef OSLDisposeTokenProcPtr OSLDisposeTokenUPP;
+typedef OSLGetMarkTokenProcPtr OSLGetMarkTokenUPP;
+typedef OSLGetErrDescProcPtr OSLGetErrDescUPP;
+typedef OSLMarkProcPtr OSLMarkUPP;
+typedef OSLAdjustMarksProcPtr OSLAdjustMarksUPP;
+extern OSLAccessorUPP
+NewOSLAccessorUPP(OSLAccessorProcPtr userRoutine) ;
+extern OSLCompareUPP
+NewOSLCompareUPP(OSLCompareProcPtr userRoutine) ;
+extern OSLCountUPP
+NewOSLCountUPP(OSLCountProcPtr userRoutine) ;
+extern OSLDisposeTokenUPP
+NewOSLDisposeTokenUPP(OSLDisposeTokenProcPtr userRoutine) ;
+extern OSLGetMarkTokenUPP
+NewOSLGetMarkTokenUPP(OSLGetMarkTokenProcPtr userRoutine) ;
+extern OSLGetErrDescUPP
+NewOSLGetErrDescUPP(OSLGetErrDescProcPtr userRoutine) ;
+extern OSLMarkUPP
+NewOSLMarkUPP(OSLMarkProcPtr userRoutine) ;
+extern OSLAdjustMarksUPP
+NewOSLAdjustMarksUPP(OSLAdjustMarksProcPtr userRoutine) ;
+extern void
+DisposeOSLAccessorUPP(OSLAccessorUPP userUPP) ;
+extern void
+DisposeOSLCompareUPP(OSLCompareUPP userUPP) ;
+extern void
+DisposeOSLCountUPP(OSLCountUPP userUPP) ;
+extern void
+DisposeOSLDisposeTokenUPP(OSLDisposeTokenUPP userUPP) ;
+extern void
+DisposeOSLGetMarkTokenUPP(OSLGetMarkTokenUPP userUPP) ;
+extern void
+DisposeOSLGetErrDescUPP(OSLGetErrDescUPP userUPP) ;
+extern void
+DisposeOSLMarkUPP(OSLMarkUPP userUPP) ;
+extern void
+DisposeOSLAdjustMarksUPP(OSLAdjustMarksUPP userUPP) ;
+extern OSErr
+InvokeOSLAccessorUPP(
+  DescType desiredClass,
+  const AEDesc * container,
+  DescType containerClass,
+  DescType form,
+  const AEDesc * selectionData,
+  AEDesc * value,
+  long accessorRefcon,
+  OSLAccessorUPP userUPP) ;
+extern OSErr
+InvokeOSLCompareUPP(
+  DescType oper,
+  const AEDesc * obj1,
+  const AEDesc * obj2,
+  Boolean * result,
+  OSLCompareUPP userUPP) ;
+extern OSErr
+InvokeOSLCountUPP(
+  DescType desiredType,
+  DescType containerClass,
+  const AEDesc * container,
+  long * result,
+  OSLCountUPP userUPP) ;
+extern OSErr
+InvokeOSLDisposeTokenUPP(
+  AEDesc * unneededToken,
+  OSLDisposeTokenUPP userUPP) ;
+extern OSErr
+InvokeOSLGetMarkTokenUPP(
+  const AEDesc * dContainerToken,
+  DescType containerClass,
+  AEDesc * result,
+  OSLGetMarkTokenUPP userUPP) ;
+extern OSErr
+InvokeOSLGetErrDescUPP(
+  AEDesc ** appDescPtr,
+  OSLGetErrDescUPP userUPP) ;
+extern OSErr
+InvokeOSLMarkUPP(
+  const AEDesc * dToken,
+  const AEDesc * markToken,
+  long index,
+  OSLMarkUPP userUPP) ;
+extern OSErr
+InvokeOSLAdjustMarksUPP(
+  long newStart,
+  long newStop,
+  const AEDesc * markToken,
+  OSLAdjustMarksUPP userUPP) ;
+extern OSErr
+AEObjectInit(void) ;
+extern OSErr
+AESetObjectCallbacks(
+  OSLCompareUPP myCompareProc,
+  OSLCountUPP myCountProc,
+  OSLDisposeTokenUPP myDisposeTokenProc,
+  OSLGetMarkTokenUPP myGetMarkTokenProc,
+  OSLMarkUPP myMarkProc,
+  OSLAdjustMarksUPP myAdjustMarksProc,
+  OSLGetErrDescUPP myGetErrDescProcPtr) ;
+extern OSErr
+AEResolve(
+  const AEDesc * objectSpecifier,
+  short callbackFlags,
+  AEDesc * theToken) ;
+extern OSErr
+AEInstallObjectAccessor(
+  DescType desiredClass,
+  DescType containerType,
+  OSLAccessorUPP theAccessor,
+  long accessorRefcon,
+  Boolean isSysHandler) ;
+extern OSErr
+AERemoveObjectAccessor(
+  DescType desiredClass,
+  DescType containerType,
+  OSLAccessorUPP theAccessor,
+  Boolean isSysHandler) ;
+extern OSErr
+AEGetObjectAccessor(
+  DescType desiredClass,
+  DescType containerType,
+  OSLAccessorUPP * accessor,
+  long * accessorRefcon,
+  Boolean isSysHandler) ;
+extern OSErr
+AEDisposeToken(AEDesc * theToken) ;
+extern OSErr
+AECallObjectAccessor(
+  DescType desiredClass,
+  const AEDesc * containerToken,
+  DescType containerClass,
+  DescType keyForm,
+  const AEDesc * keyData,
+  AEDesc * token) ;
+
+
+
+
+
+
+}
+
+
+
+
+enum {
+  cAEList = 'list',
+  cApplication = 'capp',
+  cArc = 'carc',
+  cBoolean = 'bool',
+  cCell = 'ccel',
+  cChar = 'cha ',
+  cColorTable = 'clrt',
+  cColumn = 'ccol',
+  cDocument = 'docu',
+  cDrawingArea = 'cdrw',
+  cEnumeration = 'enum',
+  cFile = 'file',
+  cFixed = 'fixd',
+  cFixedPoint = 'fpnt',
+  cFixedRectangle = 'frct',
+  cGraphicLine = 'glin',
+  cGraphicObject = 'cgob',
+  cGraphicShape = 'cgsh',
+  cGraphicText = 'cgtx',
+  cGroupedGraphic = 'cpic'
+};
+
+enum {
+  cInsertionLoc = 'insl',
+  cInsertionPoint = 'cins',
+  cIntlText = 'itxt',
+  cIntlWritingCode = 'intl',
+  cItem = 'citm',
+  cLine = 'clin',
+  cLongDateTime = 'ldt ',
+  cLongFixed = 'lfxd',
+  cLongFixedPoint = 'lfpt',
+  cLongFixedRectangle = 'lfrc',
+  cLongInteger = 'long',
+  cLongPoint = 'lpnt',
+  cLongRectangle = 'lrct',
+  cMachineLoc = 'mLoc',
+  cMenu = 'cmnu',
+  cMenuItem = 'cmen',
+  cObject = 'cobj',
+  cObjectSpecifier = 'obj ',
+  cOpenableObject = 'coob',
+  cOval = 'covl'
+};
+
+enum {
+  cParagraph = 'cpar',
+  cPICT = 'PICT',
+  cPixel = 'cpxl',
+  cPixelMap = 'cpix',
+  cPolygon = 'cpgn',
+  cProperty = 'prop',
+  cQDPoint = 'QDpt',
+  cQDRectangle = 'qdrt',
+  cRectangle = 'crec',
+  cRGBColor = 'cRGB',
+  cRotation = 'trot',
+  cRoundedRectangle = 'crrc',
+  cRow = 'crow',
+  cSelection = 'csel',
+  cShortInteger = 'shor',
+  cTable = 'ctbl',
+  cText = 'ctxt',
+  cTextFlow = 'cflo',
+  cTextStyles = 'tsty',
+  cType = 'type'
+};
+
+enum {
+  cVersion = 'vers',
+  cWindow = 'cwin',
+  cWord = 'cwor',
+  enumArrows = 'arro',
+  enumJustification = 'just',
+  enumKeyForm = 'kfrm',
+  enumPosition = 'posi',
+  enumProtection = 'prtn',
+  enumQuality = 'qual',
+  enumSaveOptions = 'savo',
+  enumStyle = 'styl',
+  enumTransferMode = 'tran',
+  formUniqueID = 'ID  ',
+  kAEAbout = 'abou',
+  kAEAfter = 'afte',
+  kAEAliasSelection = 'sali',
+  kAEAllCaps = 'alcp',
+  kAEArrowAtEnd = 'aren',
+  kAEArrowAtStart = 'arst',
+  kAEArrowBothEnds = 'arbo'
+};
+
+enum {
+  kAEAsk = 'ask ',
+  kAEBefore = 'befo',
+  kAEBeginning = 'bgng',
+  kAEBeginsWith = 'bgwt',
+  kAEBeginTransaction = 'begi',
+  kAEBold = 'bold',
+  kAECaseSensEquals = 'cseq',
+  kAECentered = 'cent',
+  kAEChangeView = 'view',
+  kAEClone = 'clon',
+  kAEClose = 'clos',
+  kAECondensed = 'cond',
+  kAEContains = 'cont',
+  kAECopy = 'copy',
+  kAECoreSuite = 'core',
+  kAECountElements = 'cnte',
+  kAECreateElement = 'crel',
+  kAECreatePublisher = 'cpub',
+  kAECut = 'cut ',
+  kAEDelete = 'delo'
+};
+
+enum {
+  kAEDoObjectsExist = 'doex',
+  kAEDoScript = 'dosc',
+  kAEDrag = 'drag',
+  kAEDuplicateSelection = 'sdup',
+  kAEEditGraphic = 'edit',
+  kAEEmptyTrash = 'empt',
+  kAEEnd = 'end ',
+  kAEEndsWith = 'ends',
+  kAEEndTransaction = 'endt',
+  kAEEquals = '=   ',
+  kAEExpanded = 'pexp',
+  kAEFast = 'fast',
+  kAEFinderEvents = 'FNDR',
+  kAEFormulaProtect = 'fpro',
+  kAEFullyJustified = 'full',
+  kAEGetClassInfo = 'qobj',
+  kAEGetData = 'getd',
+  kAEGetDataSize = 'dsiz',
+  kAEGetEventInfo = 'gtei',
+  kAEGetInfoSelection = 'sinf'
+};
+
+enum {
+  kAEGetPrivilegeSelection = 'sprv',
+  kAEGetSuiteInfo = 'gtsi',
+  kAEGreaterThan = '>   ',
+  kAEGreaterThanEquals = '>=  ',
+  kAEGrow = 'grow',
+  kAEHidden = 'hidn',
+  kAEHiQuality = 'hiqu',
+  kAEImageGraphic = 'imgr',
+  kAEIsUniform = 'isun',
+  kAEItalic = 'ital',
+  kAELeftJustified = 'left',
+  kAELessThan = '<   ',
+  kAELessThanEquals = '<=  ',
+  kAELowercase = 'lowc',
+  kAEMakeObjectsVisible = 'mvis',
+  kAEMiscStandards = 'misc',
+  kAEModifiable = 'modf',
+  kAEMove = 'move',
+  kAENo = 'no  ',
+  kAENoArrow = 'arno'
+};
+
+enum {
+  kAENonmodifiable = 'nmod',
+  kAEOpen = 'odoc',
+  kAEOpenSelection = 'sope',
+  kAEOutline = 'outl',
+  kAEPageSetup = 'pgsu',
+  kAEPaste = 'past',
+  kAEPlain = 'plan',
+  kAEPrint = 'pdoc',
+  kAEPrintSelection = 'spri',
+  kAEPrintWindow = 'pwin',
+  kAEPutAwaySelection = 'sput',
+  kAEQDAddOver = 'addo',
+  kAEQDAddPin = 'addp',
+  kAEQDAdMax = 'admx',
+  kAEQDAdMin = 'admn',
+  kAEQDBic = 'bic ',
+  kAEQDBlend = 'blnd',
+  kAEQDCopy = 'cpy ',
+  kAEQDNotBic = 'nbic',
+  kAEQDNotCopy = 'ncpy'
+};
+
+enum {
+  kAEQDNotOr = 'ntor',
+  kAEQDNotXor = 'nxor',
+  kAEQDOr = 'or  ',
+  kAEQDSubOver = 'subo',
+  kAEQDSubPin = 'subp',
+  kAEQDSupplementalSuite = 'qdsp',
+  kAEQDXor = 'xor ',
+  kAEQuickdrawSuite = 'qdrw',
+  kAEQuitAll = 'quia',
+  kAERedo = 'redo',
+  kAERegular = 'regl',
+  kAEReopenApplication = 'rapp',
+  kAEReplace = 'rplc',
+  kAERequiredSuite = 'reqd',
+  kAERestart = 'rest',
+  kAERevealSelection = 'srev',
+  kAERevert = 'rvrt',
+  kAERightJustified = 'rght',
+  kAESave = 'save',
+  kAESelect = 'slct',
+  kAESetData = 'setd'
+};
+
+enum {
+  kAESetPosition = 'posn',
+  kAEShadow = 'shad',
+  kAEShowClipboard = 'shcl',
+  kAEShutDown = 'shut',
+  kAESleep = 'slep',
+  kAESmallCaps = 'smcp',
+  kAESpecialClassProperties = 'c@#!',
+  kAEStrikethrough = 'strk',
+  kAESubscript = 'sbsc',
+  kAESuperscript = 'spsc',
+  kAETableSuite = 'tbls',
+  kAETextSuite = 'TEXT',
+  kAETransactionTerminated = 'ttrm',
+  kAEUnderline = 'undl',
+  kAEUndo = 'undo',
+  kAEWholeWordEquals = 'wweq',
+  kAEYes = 'yes ',
+  kAEZoom = 'zoom'
+};
+
+
+enum {
+  kAELogOut = 'logo',
+  kAEReallyLogOut = 'rlgo',
+  kAEShowRestartDialog = 'rrst',
+  kAEShowShutdownDialog = 'rsdn'
+};
+
+
+enum {
+  kAEMouseClass = 'mous',
+  kAEDown = 'down',
+  kAEUp = 'up  ',
+  kAEMoved = 'move',
+  kAEStoppedMoving = 'stop',
+  kAEWindowClass = 'wind',
+  kAEUpdate = 'updt',
+  kAEActivate = 'actv',
+  kAEDeactivate = 'dact',
+  kAECommandClass = 'cmnd',
+  kAEKeyClass = 'keyc',
+  kAERawKey = 'rkey',
+  kAEVirtualKey = 'keyc',
+  kAENavigationKey = 'nave',
+  kAEAutoDown = 'auto',
+  kAEApplicationClass = 'appl',
+  kAESuspend = 'susp',
+  kAEResume = 'rsme',
+  kAEDiskEvent = 'disk',
+  kAENullEvent = 'null',
+  kAEWakeUpEvent = 'wake',
+  kAEScrapEvent = 'scrp',
+  kAEHighLevel = 'high'
+};
+
+enum {
+  keyAEAngle = 'kang',
+  keyAEArcAngle = 'parc'
+};
+
+enum {
+  keyAEBaseAddr = 'badd',
+  keyAEBestType = 'pbst',
+  keyAEBgndColor = 'kbcl',
+  keyAEBgndPattern = 'kbpt',
+  keyAEBounds = 'pbnd',
+  keyAECellList = 'kclt',
+  keyAEClassID = 'clID',
+  keyAEColor = 'colr',
+  keyAEColorTable = 'cltb',
+  keyAECurveHeight = 'kchd',
+  keyAECurveWidth = 'kcwd',
+  keyAEDashStyle = 'pdst',
+  keyAEData = 'data',
+  keyAEDefaultType = 'deft',
+  keyAEDefinitionRect = 'pdrt',
+  keyAEDescType = 'dstp',
+  keyAEDestination = 'dest',
+  keyAEDoAntiAlias = 'anta',
+  keyAEDoDithered = 'gdit',
+  keyAEDoRotate = 'kdrt'
+};
+
+enum {
+  keyAEDoScale = 'ksca',
+  keyAEDoTranslate = 'ktra',
+  keyAEEditionFileLoc = 'eloc',
+  keyAEElements = 'elms',
+  keyAEEndPoint = 'pend',
+  keyAEEventClass = 'evcl',
+  keyAEEventID = 'evti',
+  keyAEFile = 'kfil',
+  keyAEFileType = 'fltp',
+  keyAEFillColor = 'flcl',
+  keyAEFillPattern = 'flpt',
+  keyAEFlipHorizontal = 'kfho',
+  keyAEFlipVertical = 'kfvt',
+  keyAEFont = 'font',
+  keyAEFormula = 'pfor',
+  keyAEGraphicObjects = 'gobs',
+  keyAEID = 'ID  ',
+  keyAEImageQuality = 'gqua',
+  keyAEInsertHere = 'insh',
+  keyAEKeyForms = 'keyf'
+};
+
+enum {
+  keyAEKeyword = 'kywd',
+  keyAELevel = 'levl',
+  keyAELineArrow = 'arro',
+  keyAEName = 'pnam',
+  keyAENewElementLoc = 'pnel',
+  keyAEObject = 'kobj',
+  keyAEObjectClass = 'kocl',
+  keyAEOffStyles = 'ofst',
+  keyAEOnStyles = 'onst',
+  keyAEParameters = 'prms',
+  keyAEParamFlags = 'pmfg',
+  keyAEPenColor = 'ppcl',
+  keyAEPenPattern = 'pppa',
+  keyAEPenWidth = 'ppwd',
+  keyAEPixelDepth = 'pdpt',
+  keyAEPixMapMinus = 'kpmm',
+  keyAEPMTable = 'kpmt',
+  keyAEPointList = 'ptlt',
+  keyAEPointSize = 'ptsz',
+  keyAEPosition = 'kpos'
+};
+
+enum {
+  keyAEPropData = 'prdt',
+  keyAEProperties = 'qpro',
+  keyAEProperty = 'kprp',
+  keyAEPropFlags = 'prfg',
+  keyAEPropID = 'prop',
+  keyAEProtection = 'ppro',
+  keyAERenderAs = 'kren',
+  keyAERequestedType = 'rtyp',
+  keyAEResult = '----',
+  keyAEResultInfo = 'rsin',
+  keyAERotation = 'prot',
+  keyAERotPoint = 'krtp',
+  keyAERowList = 'krls',
+  keyAESaveOptions = 'savo',
+  keyAEScale = 'pscl',
+  keyAEScriptTag = 'psct',
+  keyAEShowWhere = 'show',
+  keyAEStartAngle = 'pang',
+  keyAEStartPoint = 'pstp',
+  keyAEStyles = 'ksty'
+};
+
+enum {
+  keyAESuiteID = 'suit',
+  keyAEText = 'ktxt',
+  keyAETextColor = 'ptxc',
+  keyAETextFont = 'ptxf',
+  keyAETextPointSize = 'ptps',
+  keyAETextStyles = 'txst',
+  keyAETextLineHeight = 'ktlh',
+  keyAETextLineAscent = 'ktas',
+  keyAETheText = 'thtx',
+  keyAETransferMode = 'pptm',
+  keyAETranslation = 'ptrs',
+  keyAETryAsStructGraf = 'toog',
+  keyAEUniformStyles = 'ustl',
+  keyAEUpdateOn = 'pupd',
+  keyAEUserTerm = 'utrm',
+  keyAEWindow = 'wndw',
+  keyAEWritingCode = 'wrcd'
+};
+
+enum {
+  keyMiscellaneous = 'fmsc',
+  keySelection = 'fsel',
+  keyWindow = 'kwnd',
+
+  keyWhen = 'when',
+  keyWhere = 'wher',
+  keyModifiers = 'mods',
+  keyKey = 'key ',
+  keyKeyCode = 'code',
+  keyKeyboard = 'keyb',
+  keyDriveNumber = 'drv#',
+  keyErrorCode = 'err#',
+  keyHighLevelClass = 'hcls',
+  keyHighLevelID = 'hid '
+};
+
+enum {
+  pArcAngle = 'parc',
+  pBackgroundColor = 'pbcl',
+  pBackgroundPattern = 'pbpt',
+  pBestType = 'pbst',
+  pBounds = 'pbnd',
+  pClass = 'pcls',
+  pClipboard = 'pcli',
+  pColor = 'colr',
+  pColorTable = 'cltb',
+  pContents = 'pcnt',
+  pCornerCurveHeight = 'pchd',
+  pCornerCurveWidth = 'pcwd',
+  pDashStyle = 'pdst',
+  pDefaultType = 'deft',
+  pDefinitionRect = 'pdrt',
+  pEnabled = 'enbl',
+  pEndPoint = 'pend',
+  pFillColor = 'flcl',
+  pFillPattern = 'flpt',
+  pFont = 'font'
+};
+
+enum {
+  pFormula = 'pfor',
+  pGraphicObjects = 'gobs',
+  pHasCloseBox = 'hclb',
+  pHasTitleBar = 'ptit',
+  pID = 'ID  ',
+  pIndex = 'pidx',
+  pInsertionLoc = 'pins',
+  pIsFloating = 'isfl',
+  pIsFrontProcess = 'pisf',
+  pIsModal = 'pmod',
+  pIsModified = 'imod',
+  pIsResizable = 'prsz',
+  pIsStationeryPad = 'pspd',
+  pIsZoomable = 'iszm',
+  pIsZoomed = 'pzum',
+  pItemNumber = 'itmn',
+  pJustification = 'pjst',
+  pLineArrow = 'arro',
+  pMenuID = 'mnid',
+  pName = 'pnam'
+};
+
+enum {
+  pNewElementLoc = 'pnel',
+  pPenColor = 'ppcl',
+  pPenPattern = 'pppa',
+  pPenWidth = 'ppwd',
+  pPixelDepth = 'pdpt',
+  pPointList = 'ptlt',
+  pPointSize = 'ptsz',
+  pProtection = 'ppro',
+  pRotation = 'prot',
+  pScale = 'pscl',
+  pScript = 'scpt',
+  pScriptTag = 'psct',
+  pSelected = 'selc',
+  pSelection = 'sele',
+  pStartAngle = 'pang',
+  pStartPoint = 'pstp',
+  pTextColor = 'ptxc',
+  pTextFont = 'ptxf',
+  pTextItemDelimiters = 'txdl',
+  pTextPointSize = 'ptps'
+};
+
+enum {
+  pTextStyles = 'txst',
+  pTransferMode = 'pptm',
+  pTranslation = 'ptrs',
+  pUniformStyles = 'ustl',
+  pUpdateOn = 'pupd',
+  pUserSelection = 'pusl',
+  pVersion = 'vers',
+  pVisible = 'pvis'
+};
+
+enum {
+  typeAEText = 'tTXT',
+  typeArc = 'carc',
+  typeBest = 'best',
+  typeCell = 'ccel',
+  typeClassInfo = 'gcli',
+  typeColorTable = 'clrt',
+  typeColumn = 'ccol',
+  typeDashStyle = 'tdas',
+  typeData = 'tdta',
+  typeDrawingArea = 'cdrw',
+  typeElemInfo = 'elin',
+  typeEnumeration = 'enum',
+  typeEPS = 'EPS ',
+  typeEventInfo = 'evin'
+};
+
+enum {
+  typeFinderWindow = 'fwin',
+  typeFixedPoint = 'fpnt',
+  typeFixedRectangle = 'frct',
+  typeGraphicLine = 'glin',
+  typeGraphicText = 'cgtx',
+  typeGroupedGraphic = 'cpic',
+  typeInsertionLoc = 'insl',
+  typeIntlText = 'itxt',
+  typeIntlWritingCode = 'intl',
+  typeLongDateTime = 'ldt ',
+  typeISO8601DateTime = 'isot',
+  typeLongFixed = 'lfxd',
+  typeLongFixedPoint = 'lfpt',
+  typeLongFixedRectangle = 'lfrc',
+  typeLongPoint = 'lpnt',
+  typeLongRectangle = 'lrct',
+  typeMachineLoc = 'mLoc',
+  typeOval = 'covl',
+  typeParamInfo = 'pmin',
+  typePict = 'PICT'
+};
+
+enum {
+  typePixelMap = 'cpix',
+  typePixMapMinus = 'tpmm',
+  typePolygon = 'cpgn',
+  typePropInfo = 'pinf',
+  typePtr = 'ptr ',
+  typeQDPoint = 'QDpt',
+  typeQDRegion = 'Qrgn',
+  typeRectangle = 'crec',
+  typeRGB16 = 'tr16',
+  typeRGB96 = 'tr96',
+  typeRGBColor = 'cRGB',
+  typeRotation = 'trot',
+  typeRoundedRectangle = 'crrc',
+  typeRow = 'crow',
+  typeScrapStyles = 'styl',
+  typeScript = 'scpt',
+  typeStyledText = 'STXT',
+  typeSuiteInfo = 'suin',
+  typeTable = 'ctbl',
+  typeTextStyles = 'tsty'
+};
+
+enum {
+  typeTIFF = 'TIFF',
+  typeVersion = 'vers'
+};
+
+enum {
+  kAEMenuClass = 'menu',
+  kAEMenuSelect = 'mhit',
+  kAEMouseDown = 'mdwn',
+  kAEMouseDownInBack = 'mdbk',
+  kAEKeyDown = 'kdwn',
+  kAEResized = 'rsiz',
+  kAEPromise = 'prom'
+};
+
+enum {
+  keyMenuID = 'mid ',
+  keyMenuItem = 'mitm',
+  keyCloseAllWindows = 'caw ',
+  keyOriginalBounds = 'obnd',
+  keyNewBounds = 'nbnd',
+  keyLocalWhere = 'lwhr'
+};
+
+enum {
+  typeHIMenu = 'mobj',
+  typeHIWindow = 'wobj'
+};
+
+enum {
+  kBySmallIcon = 0,
+  kByIconView = 1,
+  kByNameView = 2,
+  kByDateView = 3,
+  kBySizeView = 4,
+  kByKindView = 5,
+  kByCommentView = 6,
+  kByLabelView = 7,
+  kByVersionView = 8
+};
+
+enum {
+  kAEInfo = 11,
+  kAEMain = 0,
+  kAESharing = 13
+};
+
+enum {
+  kAEZoomIn = 7,
+  kAEZoomOut = 8
+};
+
+enum {
+  kTextServiceClass = 'tsvc',
+  kUpdateActiveInputArea = 'updt',
+  kShowHideInputWindow = 'shiw',
+  kPos2Offset = 'p2st',
+  kOffset2Pos = 'st2p',
+  kUnicodeNotFromInputMethod = 'unim',
+  kGetSelectedText = 'gtxt',
+  keyAETSMDocumentRefcon = 'refc',
+  keyAEServerInstance = 'srvi',
+  keyAETheData = 'kdat',
+  keyAEFixLength = 'fixl',
+  keyAEUpdateRange = 'udng',
+  keyAECurrentPoint = 'cpos',
+  keyAEBufferSize = 'buff',
+  keyAEMoveView = 'mvvw',
+  keyAENextBody = 'nxbd',
+  keyAETSMScriptTag = 'sclg',
+  keyAETSMTextFont = 'ktxf',
+  keyAETSMTextFMFont = 'ktxm',
+  keyAETSMTextPointSize = 'ktps',
+  keyAETSMEventRecord = 'tevt',
+  keyAETSMEventRef = 'tevr',
+  keyAETextServiceEncoding = 'tsen',
+  keyAETextServiceMacEncoding = 'tmen',
+  keyAETSMGlyphInfoArray = 'tgia',
+  typeTextRange = 'txrn',
+  typeComponentInstance = 'cmpi',
+  typeOffsetArray = 'ofay',
+  typeTextRangeArray = 'tray',
+  typeLowLevelEventRecord = 'evtr',
+  typeGlyphInfoArray = 'glia',
+  typeEventRef = 'evrf',
+  typeText = typeChar
+};
+
+
+
+enum {
+  kTSMOutsideOfBody = 1,
+  kTSMInsideOfBody = 2,
+  kTSMInsideOfActiveInputArea = 3
+};
+
+enum {
+  kNextBody = 1,
+  kPreviousBody = 2
+};
+
+struct TextRange {
+  long fStart;
+  long fEnd;
+  short fHiliteStyle;
+};
+typedef struct TextRange TextRange;
+typedef TextRange * TextRangePtr;
+typedef TextRangePtr * TextRangeHandle;
+struct TextRangeArray {
+  short fNumOfRanges;
+  TextRange fRange[1];
+};
+typedef struct TextRangeArray TextRangeArray;
+typedef TextRangeArray * TextRangeArrayPtr;
+typedef TextRangeArrayPtr * TextRangeArrayHandle;
+struct OffsetArray {
+  short fNumOfOffsets;
+  long fOffset[1];
+};
+typedef struct OffsetArray OffsetArray;
+typedef OffsetArray * OffsetArrayPtr;
+typedef OffsetArrayPtr * OffsetArrayHandle;
+struct WritingCode {
+  ScriptCode theScriptCode;
+  LangCode theLangCode;
+};
+typedef struct WritingCode WritingCode;
+struct IntlText {
+  ScriptCode theScriptCode;
+  LangCode theLangCode;
+  char theText[1];
+};
+typedef struct IntlText IntlText;
+
+
+enum {
+  kCaretPosition = 1,
+  kRawText = 2,
+  kSelectedRawText = 3,
+  kConvertedText = 4,
+  kSelectedConvertedText = 5,
+  kBlockFillText = 6,
+  kOutlineText = 7,
+  kSelectedText = 8
+};
+
+enum {
+  keyAEHiliteRange = 'hrng',
+  keyAEPinRange = 'pnrg',
+  keyAEClauseOffsets = 'clau',
+  keyAEOffset = 'ofst',
+  keyAEPoint = 'gpos',
+  keyAELeftSide = 'klef',
+  keyAERegionClass = 'rgnc',
+  keyAEDragging = 'bool'
+};
+enum {
+
+  typeUnicodeText = 'utxt',
+  typeStyledUnicodeText = 'sutx',
+  typeUTF8Text = 'utf8',
+  typeEncodedString = 'encs',
+  typeCString = 'cstr',
+  typePString = 'pstr'
+};
+
+enum {
+
+  typeMeters = 'metr',
+  typeInches = 'inch',
+  typeFeet = 'feet',
+  typeYards = 'yard',
+  typeMiles = 'mile',
+  typeKilometers = 'kmtr',
+  typeCentimeters = 'cmtr',
+  typeSquareMeters = 'sqrm',
+  typeSquareFeet = 'sqft',
+  typeSquareYards = 'sqyd',
+  typeSquareMiles = 'sqmi',
+  typeSquareKilometers = 'sqkm',
+  typeLiters = 'litr',
+  typeQuarts = 'qrts',
+  typeGallons = 'galn',
+  typeCubicMeters = 'cmet',
+  typeCubicFeet = 'cfet',
+  typeCubicInches = 'cuin',
+  typeCubicCentimeter = 'ccmt',
+  typeCubicYards = 'cyrd',
+  typeKilograms = 'kgrm',
+  typeGrams = 'gram',
+  typeOunces = 'ozs ',
+  typePounds = 'lbs ',
+  typeDegreesC = 'degc',
+  typeDegreesF = 'degf',
+  typeDegreesK = 'degk'
+};
+
+enum {
+
+  kFAServerApp = 'ssrv',
+  kDoFolderActionEvent = 'fola',
+  kFolderActionCode = 'actn',
+  kFolderOpenedEvent = 'fopn',
+  kFolderClosedEvent = 'fclo',
+  kFolderWindowMovedEvent = 'fsiz',
+  kFolderItemsAddedEvent = 'fget',
+  kFolderItemsRemovedEvent = 'flos',
+  kItemList = 'flst',
+  kNewSizeParameter = 'fnsz',
+  kFASuiteCode = 'faco',
+  kFAAttachCommand = 'atfa',
+  kFARemoveCommand = 'rmfa',
+  kFAEditCommand = 'edfa',
+  kFAFileParam = 'faal',
+  kFAIndexParam = 'indx'
+};
+
+
+enum {
+
+  kAEInternetSuite = 'gurl',
+  kAEISWebStarSuite = 'WWW½'
+};
+
+enum {
+
+  kAEISGetURL = 'gurl',
+  KAEISHandleCGI = 'sdoc'
+};
+
+enum {
+
+  cURL = 'url ',
+  cInternetAddress = 'IPAD',
+  cHTML = 'html',
+  cFTPItem = 'ftp '
+};
+
+enum {
+
+  kAEISHTTPSearchArgs = 'kfor',
+  kAEISPostArgs = 'post',
+  kAEISMethod = 'meth',
+  kAEISClientAddress = 'addr',
+  kAEISUserName = 'user',
+  kAEISPassword = 'pass',
+  kAEISFromUser = 'frmu',
+  kAEISServerName = 'svnm',
+  kAEISServerPort = 'svpt',
+  kAEISScriptName = 'scnm',
+  kAEISContentType = 'ctyp',
+  kAEISReferrer = 'refr',
+  kAEISUserAgent = 'Agnt',
+  kAEISAction = 'Kact',
+  kAEISActionPath = 'Kapt',
+  kAEISClientIP = 'Kcip',
+  kAEISFullRequest = 'Kfrq'
+};
+
+enum {
+
+  pScheme = 'pusc',
+  pHost = 'HOST',
+  pPath = 'FTPc',
+  pUserName = 'RAun',
+  pUserPassword = 'RApw',
+  pDNSForm = 'pDNS',
+  pURL = 'pURL',
+  pTextEncoding = 'ptxe',
+  pFTPKind = 'kind'
+};
+
+enum {
+
+  eScheme = 'esch',
+  eurlHTTP = 'http',
+  eurlHTTPS = 'htps',
+  eurlFTP = 'ftp ',
+  eurlMail = 'mail',
+  eurlFile = 'file',
+  eurlGopher = 'gphr',
+  eurlTelnet = 'tlnt',
+  eurlNews = 'news',
+  eurlSNews = 'snws',
+  eurlNNTP = 'nntp',
+  eurlMessage = 'mess',
+  eurlMailbox = 'mbox',
+  eurlMulti = 'mult',
+  eurlLaunch = 'laun',
+  eurlAFP = 'afp ',
+  eurlAT = 'at  ',
+  eurlEPPC = 'eppc',
+  eurlRTSP = 'rtsp',
+  eurlIMAP = 'imap',
+  eurlNFS = 'unfs',
+  eurlPOP = 'upop',
+  eurlLDAP = 'uldp',
+  eurlUnknown = 'url?'
+};
+
+enum {
+
+  kConnSuite = 'macc',
+  cDevSpec = 'cdev',
+  cAddressSpec = 'cadr',
+  cADBAddress = 'cadb',
+  cAppleTalkAddress = 'cat ',
+  cBusAddress = 'cbus',
+  cEthernetAddress = 'cen ',
+  cFireWireAddress = 'cfw ',
+  cIPAddress = 'cip ',
+  cLocalTalkAddress = 'clt ',
+  cSCSIAddress = 'cscs',
+  cTokenRingAddress = 'ctok',
+  cUSBAddress = 'cusb',
+
+  pDeviceType = 'pdvt',
+  pDeviceAddress = 'pdva',
+  pConduit = 'pcon',
+  pProtocol = 'pprt',
+  pATMachine = 'patm',
+  pATZone = 'patz',
+  pATType = 'patt',
+  pDottedDecimal = 'pipd',
+  pDNS = 'pdns',
+  pPort = 'ppor',
+  pNetwork = 'pnet',
+  pNode = 'pnod',
+  pSocket = 'psoc',
+  pSCSIBus = 'pscb',
+  pSCSILUN = 'pslu',
+
+  eDeviceType = 'edvt',
+  eAddressSpec = 'eads',
+  eConduit = 'econ',
+  eProtocol = 'epro',
+  eADB = 'eadb',
+  eAnalogAudio = 'epau',
+  eAppleTalk = 'epat',
+  eAudioLineIn = 'ecai',
+  eAudioLineOut = 'ecal',
+  eAudioOut = 'ecao',
+  eBus = 'ebus',
+  eCDROM = 'ecd ',
+  eCommSlot = 'eccm',
+  eDigitalAudio = 'epda',
+  eDisplay = 'edds',
+  eDVD = 'edvd',
+  eEthernet = 'ecen',
+  eFireWire = 'ecfw',
+  eFloppy = 'efd ',
+  eHD = 'ehd ',
+  eInfrared = 'ecir',
+  eIP = 'epip',
+  eIrDA = 'epir',
+  eIRTalk = 'epit',
+  eKeyboard = 'ekbd',
+  eLCD = 'edlc',
+  eLocalTalk = 'eclt',
+  eMacIP = 'epmi',
+  eMacVideo = 'epmv',
+  eMicrophone = 'ecmi',
+  eModemPort = 'ecmp',
+  eModemPrinterPort = 'empp',
+  eModem = 'edmm',
+  eMonitorOut = 'ecmn',
+  eMouse = 'emou',
+  eNuBusCard = 'ednb',
+  eNuBus = 'enub',
+  ePCcard = 'ecpc',
+  ePCIbus = 'ecpi',
+  ePCIcard = 'edpi',
+  ePDSslot = 'ecpd',
+  ePDScard = 'epds',
+  ePointingDevice = 'edpd',
+  ePostScript = 'epps',
+  ePPP = 'eppp',
+  ePrinterPort = 'ecpp',
+  ePrinter = 'edpr',
+  eSvideo = 'epsv',
+  eSCSI = 'ecsc',
+  eSerial = 'epsr',
+  eSpeakers = 'edsp',
+  eStorageDevice = 'edst',
+  eSVGA = 'epsg',
+  eTokenRing = 'etok',
+  eTrackball = 'etrk',
+  eTrackpad = 'edtp',
+  eUSB = 'ecus',
+  eVideoIn = 'ecvi',
+  eVideoMonitor = 'edvm',
+  eVideoOut = 'ecvo'
+};
+
+enum {
+
+  cKeystroke = 'kprs',
+  pKeystrokeKey = 'kMsg',
+  pModifiers = 'kMod',
+  pKeyKind = 'kknd',
+  eModifiers = 'eMds',
+  eOptionDown = 'Kopt',
+  eCommandDown = 'Kcmd',
+  eControlDown = 'Kctl',
+  eShiftDown = 'Ksft',
+  eCapsLockDown = 'Kclk',
+  eKeyKind = 'ekst',
+
+  eEscapeKey = 0x6B733500,
+  eDeleteKey = 0x6B733300,
+  eTabKey = 0x6B733000,
+  eReturnKey = 0x6B732400,
+  eClearKey = 0x6B734700,
+  eEnterKey = 0x6B734C00,
+  eUpArrowKey = 0x6B737E00,
+  eDownArrowKey = 0x6B737D00,
+  eLeftArrowKey = 0x6B737B00,
+  eRightArrowKey = 0x6B737C00,
+  eHelpKey = 0x6B737200,
+  eHomeKey = 0x6B737300,
+  ePageUpKey = 0x6B737400,
+  ePageDownKey = 0x6B737900,
+  eForwardDelKey = 0x6B737500,
+  eEndKey = 0x6B737700,
+  eF1Key = 0x6B737A00,
+  eF2Key = 0x6B737800,
+  eF3Key = 0x6B736300,
+  eF4Key = 0x6B737600,
+  eF5Key = 0x6B736000,
+  eF6Key = 0x6B736100,
+  eF7Key = 0x6B736200,
+  eF8Key = 0x6B736400,
+  eF9Key = 0x6B736500,
+  eF10Key = 0x6B736D00,
+  eF11Key = 0x6B736700,
+  eF12Key = 0x6B736F00,
+  eF13Key = 0x6B736900,
+  eF14Key = 0x6B736B00,
+  eF15Key = 0x6B737100
+};
+
+
+
+
+
+
+enum {
+  kAEUserTerminology = 'aeut',
+  kAETerminologyExtension = 'aete',
+  kAEScriptingSizeResource = 'scsz',
+  kAEOSAXSizeResource = 'osiz'
+};
+
+enum {
+  kAEUTHasReturningParam = 31,
+  kAEUTOptional = 15,
+  kAEUTlistOfItems = 14,
+  kAEUTEnumerated = 13,
+  kAEUTReadWrite = 12,
+  kAEUTChangesState = 12,
+  kAEUTTightBindingFunction = 12,
+
+  kAEUTEnumsAreTypes = 11,
+  kAEUTEnumListIsExclusive = 10,
+  kAEUTReplyIsReference = 9,
+  kAEUTDirectParamIsReference = 9,
+  kAEUTParamIsReference = 9,
+  kAEUTPropertyIsReference = 9,
+  kAEUTNotDirectParamIsTarget = 8,
+  kAEUTParamIsTarget = 8,
+  kAEUTApostrophe = 3,
+  kAEUTFeminine = 2,
+  kAEUTMasculine = 1,
+  kAEUTPlural = 0
+};
+
+struct TScriptingSizeResource {
+  short scriptingSizeFlags;
+  unsigned long minStackSize;
+  unsigned long preferredStackSize;
+  unsigned long maxStackSize;
+  unsigned long minHeapSize;
+  unsigned long preferredHeapSize;
+  unsigned long maxHeapSize;
+};
+typedef struct TScriptingSizeResource TScriptingSizeResource;
+enum {
+  kLaunchToGetTerminology = (1 << 15),
+  kDontFindAppBySignature = (1 << 14),
+  kAlwaysSendSubject = (1 << 13)
+};
+
+
+enum {
+  kReadExtensionTermsMask = (1 << 15)
+};
+
+enum {
+
+
+  kOSIZDontOpenResourceFile = 15,
+  kOSIZdontAcceptRemoteEvents = 14,
+  kOSIZOpenWithReadPermission = 13,
+  kOSIZCodeInSharedLibraries = 11
+};
+
+
+
+
+
+extern "C" {
+
+
+typedef UInt32 AEBuildErrorCode;
+enum {
+  aeBuildSyntaxNoErr = 0,
+  aeBuildSyntaxBadToken = 1,
+  aeBuildSyntaxBadEOF = 2,
+  aeBuildSyntaxNoEOF = 3,
+  aeBuildSyntaxBadNegative = 4,
+  aeBuildSyntaxMissingQuote = 5,
+  aeBuildSyntaxBadHex = 6,
+  aeBuildSyntaxOddHex = 7,
+  aeBuildSyntaxNoCloseHex = 8,
+  aeBuildSyntaxUncoercedHex = 9,
+  aeBuildSyntaxNoCloseString = 10,
+  aeBuildSyntaxBadDesc = 11,
+  aeBuildSyntaxBadData = 12,
+  aeBuildSyntaxNoCloseParen = 13,
+  aeBuildSyntaxNoCloseBracket = 14,
+  aeBuildSyntaxNoCloseBrace = 15,
+  aeBuildSyntaxNoKey = 16,
+  aeBuildSyntaxNoColon = 17,
+  aeBuildSyntaxCoercedList = 18,
+  aeBuildSyntaxUncoercedDoubleAt = 19
+};
+
+
+
+struct AEBuildError {
+  AEBuildErrorCode fError;
+  UInt32 fErrorPos;
+};
+typedef struct AEBuildError AEBuildError;
+extern OSStatus
+AEBuildDesc(
+  AEDesc * dst,
+  AEBuildError * error,
+  const char * src,
+  ...) ;
+extern OSStatus
+vAEBuildDesc(
+  AEDesc * dst,
+  AEBuildError * error,
+  const char * src,
+  va_list args) ;
+extern OSStatus
+AEBuildParameters(
+  AppleEvent * event,
+  AEBuildError * error,
+  const char * format,
+  ...) ;
+extern OSStatus
+vAEBuildParameters(
+  AppleEvent * event,
+  AEBuildError * error,
+  const char * format,
+  va_list args) ;
+extern OSStatus
+AEBuildAppleEvent(
+  AEEventClass theClass,
+  AEEventID theID,
+  DescType addressType,
+  const void * addressData,
+  long addressLength,
+  short returnID,
+  long transactionID,
+  AppleEvent * result,
+  AEBuildError * error,
+  const char * paramsFmt,
+  ...) ;
+extern OSStatus
+vAEBuildAppleEvent(
+  AEEventClass theClass,
+  AEEventID theID,
+  DescType addressType,
+  const void * addressData,
+  long addressLength,
+  short returnID,
+  long transactionID,
+  AppleEvent * resultEvt,
+  AEBuildError * error,
+  const char * paramsFmt,
+  va_list args) ;
+extern OSStatus
+AEPrintDescToHandle(
+  const AEDesc * desc,
+  Handle * result) ;
+typedef struct OpaqueAEStreamRef* AEStreamRef;
+extern AEStreamRef
+AEStreamOpen(void) ;
+extern OSStatus
+AEStreamClose(
+  AEStreamRef ref,
+  AEDesc * desc) ;
+extern OSStatus
+AEStreamOpenDesc(
+  AEStreamRef ref,
+  DescType newType) ;
+extern OSStatus
+AEStreamWriteData(
+  AEStreamRef ref,
+  const void * data,
+  Size length) ;
+extern OSStatus
+AEStreamCloseDesc(AEStreamRef ref) ;
+extern OSStatus
+AEStreamWriteDesc(
+  AEStreamRef ref,
+  DescType newType,
+  const void * data,
+  Size length) ;
+extern OSStatus
+AEStreamWriteAEDesc(
+  AEStreamRef ref,
+  const AEDesc * desc) ;
+extern OSStatus
+AEStreamOpenList(AEStreamRef ref) ;
+extern OSStatus
+AEStreamCloseList(AEStreamRef ref) ;
+extern OSStatus
+AEStreamOpenRecord(
+  AEStreamRef ref,
+  DescType newType) ;
+extern OSStatus
+AEStreamSetRecordType(
+  AEStreamRef ref,
+  DescType newType) ;
+extern OSStatus
+AEStreamCloseRecord(AEStreamRef ref) ;
+extern OSStatus
+AEStreamWriteKeyDesc(
+  AEStreamRef ref,
+  AEKeyword key,
+  DescType newType,
+  const void * data,
+  Size length) ;
+extern OSStatus
+AEStreamOpenKeyDesc(
+  AEStreamRef ref,
+  AEKeyword key,
+  DescType newType) ;
+extern OSStatus
+AEStreamWriteKey(
+  AEStreamRef ref,
+  AEKeyword key) ;
+extern AEStreamRef
+AEStreamCreateEvent(
+  AEEventClass clazz,
+  AEEventID id,
+  DescType targetType,
+  const void * targetData,
+  long targetLength,
+  short returnID,
+  long transactionID) ;
+extern AEStreamRef
+AEStreamOpenEvent(AppleEvent * event) ;
+extern OSStatus
+AEStreamOptionalParam(
+  AEStreamRef ref,
+  AEKeyword key) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+  keyReplyPortAttr = 'repp'
+};
+
+
+enum {
+  typeReplyPortAttr = keyReplyPortAttr
+};
+
+
+
+
+
+}
+
+
+
+
+extern "C" {
+
+
+extern OSStatus
+StandardGlyphs(
+  void * dataStream,
+  ByteCount size) ;
+
+
+
+enum {
+
+  leftCaret = 0,
+  rightCaret = -1,
+  kHilite = 1
+};
+
+enum {
+  smLeftCaret = 0,
+  smRightCaret = -1,
+  smHilite = 1
+};
+
+enum {
+
+  onlyStyleRun = 0,
+  leftStyleRun = 1,
+  rightStyleRun = 2,
+  middleStyleRun = 3,
+  smOnlyStyleRun = 0,
+  smLeftStyleRun = 1,
+  smRightStyleRun = 2,
+  smMiddleStyleRun = 3
+};
+
+
+typedef short JustStyleCode;
+
+typedef short TruncCode;
+enum {
+
+  truncEnd = 0,
+  truncMiddle = 0x4000,
+  smTruncEnd = 0,
+  smTruncMiddle = 0x4000
+};
+
+enum {
+
+  notTruncated = 0,
+  truncated = 1,
+  truncErr = -1,
+  smNotTruncated = 0,
+  smTruncated = 1,
+  smTruncErr = -1
+};
+
+typedef SInt8 StyledLineBreakCode;
+enum {
+  smBreakWord = 0,
+  smBreakChar = 1,
+  smBreakOverflow = 2
+};
+
+
+enum {
+
+  tfAntiAlias = 1 << 0,
+  tfUnicode = 1 << 1
+};
+
+
+struct FontInfo {
+  short ascent;
+  short descent;
+  short widMax;
+  short leading;
+};
+typedef struct FontInfo FontInfo;
+
+typedef short FormatOrder[1];
+typedef FormatOrder * FormatOrderPtr;
+
+
+
+typedef Boolean ( * StyleRunDirectionProcPtr)(short styleRunIndex, void *dirParam);
+typedef StyleRunDirectionProcPtr StyleRunDirectionUPP;
+extern StyleRunDirectionUPP
+NewStyleRunDirectionUPP(StyleRunDirectionProcPtr userRoutine) ;
+extern void
+DisposeStyleRunDirectionUPP(StyleRunDirectionUPP userUPP) ;
+extern Boolean
+InvokeStyleRunDirectionUPP(
+  short styleRunIndex,
+  void * dirParam,
+  StyleRunDirectionUPP userUPP) ;
+extern short
+PixelToChar(
+  Ptr textBuf,
+  long textLength,
+  Fixed slop,
+  Fixed pixelWidth,
+  Boolean * leadingEdge,
+  Fixed * widthRemaining,
+  JustStyleCode styleRunPosition,
+  Point numer,
+  Point denom) ;
+extern short
+CharToPixel(
+  Ptr textBuf,
+  long textLength,
+  Fixed slop,
+  long offset,
+  short direction,
+  JustStyleCode styleRunPosition,
+  Point numer,
+  Point denom) ;
+extern void
+DrawJustified(
+  Ptr textPtr,
+  long textLength,
+  Fixed slop,
+  JustStyleCode styleRunPosition,
+  Point numer,
+  Point denom) ;
+extern void
+MeasureJustified(
+  Ptr textPtr,
+  long textLength,
+  Fixed slop,
+  Ptr charLocs,
+  JustStyleCode styleRunPosition,
+  Point numer,
+  Point denom) ;
+extern Fixed
+PortionLine(
+  Ptr textPtr,
+  long textLen,
+  JustStyleCode styleRunPosition,
+  Point numer,
+  Point denom) ;
+extern void
+HiliteText(
+  Ptr textPtr,
+  short textLength,
+  short firstOffset,
+  short secondOffset,
+  OffsetTable offsets) ;
+extern long
+VisibleLength(
+  Ptr textPtr,
+  long textLength) ;
+extern void
+GetFormatOrder(
+  FormatOrderPtr ordering,
+  short firstFormat,
+  short lastFormat,
+  Boolean lineRight,
+  StyleRunDirectionUPP rlDirProc,
+  Ptr dirParam) ;
+extern void
+TextFont(short font) ;
+extern void
+TextFace(StyleParameter face) ;
+extern void
+TextMode(short mode) ;
+extern void
+TextSize(short size) ;
+extern void
+SpaceExtra(Fixed extra) ;
+extern void
+DrawChar(CharParameter ch) ;
+extern void
+DrawString(ConstStr255Param s) ;
+extern void
+DrawText(
+  const void * textBuf,
+  short firstByte,
+  short byteCount) ;
+extern short
+CharWidth(CharParameter ch) ;
+extern short
+StringWidth(ConstStr255Param s) ;
+extern short
+TextWidth(
+  const void * textBuf,
+  short firstByte,
+  short byteCount) ;
+extern void
+MeasureText(
+  short count,
+  const void * textAddr,
+  void * charLocs) ;
+extern void
+GetFontInfo(FontInfo * info) ;
+extern void
+CharExtra(Fixed extra) ;
+extern void
+StdText(
+  short count,
+  const void * textAddr,
+  Point numer,
+  Point denom) ;
+extern short
+StdTxMeas(
+  short byteCount,
+  const void * textAddr,
+  Point * numer,
+  Point * denom,
+  FontInfo * info) ;
+extern StyledLineBreakCode
+StyledLineBreak(
+  Ptr textPtr,
+  long textLen,
+  long textStart,
+  long textEnd,
+  long flags,
+  Fixed * textWidth,
+  long * textOffset) ;
+extern short
+TruncString(
+  short width,
+  Str255 theString,
+  TruncCode truncWhere) ;
+extern short
+TruncText(
+  short width,
+  Ptr textPtr,
+  short * length,
+  TruncCode truncWhere) ;
+extern void
+stdtext(
+  short count,
+  const void * textAddr,
+  const Point * numer,
+  const Point * denom) ;
+extern UInt32
+SwapQDTextFlags(UInt32 newFlags) ;
+
+
+}
+extern "C" {
+
+
+
+enum {
+  invalColReq = -1
+};
+
+enum {
+
+  srcCopy = 0,
+  srcOr = 1,
+  srcXor = 2,
+  srcBic = 3,
+  notSrcCopy = 4,
+  notSrcOr = 5,
+  notSrcXor = 6,
+  notSrcBic = 7,
+  patCopy = 8,
+  patOr = 9,
+  patXor = 10,
+  patBic = 11,
+  notPatCopy = 12,
+  notPatOr = 13,
+  notPatXor = 14,
+  notPatBic = 15,
+  grayishTextOr = 49,
+  hilitetransfermode = 50,
+  hilite = 50,
+  blend = 32,
+  addPin = 33,
+  addOver = 34,
+  subPin = 35,
+  addMax = 37,
+  adMax = 37,
+  subOver = 38,
+  adMin = 39,
+  ditherCopy = 64,
+  transparent = 36
+};
+
+enum {
+  italicBit = 1,
+  ulineBit = 2,
+  outlineBit = 3,
+  shadowBit = 4,
+  condenseBit = 5,
+  extendBit = 6
+};
+
+enum {
+
+  normalBit = 0,
+  inverseBit = 1,
+  redBit = 4,
+  greenBit = 3,
+  blueBit = 2,
+  cyanBit = 8,
+  magentaBit = 7,
+  yellowBit = 6,
+  blackBit = 5
+};
+
+enum {
+  blackColor = 33,
+  whiteColor = 30,
+  redColor = 205,
+  greenColor = 341,
+  blueColor = 409,
+  cyanColor = 273,
+  magentaColor = 137,
+  yellowColor = 69
+};
+
+enum {
+  picLParen = 0,
+  picRParen = 1,
+  clutType = 0,
+  fixedType = 1,
+  directType = 2,
+  gdDevType = 0
+};
+
+enum {
+  interlacedDevice = 2,
+  hwMirroredDevice = 4,
+  roundedDevice = 5,
+  hasAuxMenuBar = 6,
+  burstDevice = 7,
+  ext32Device = 8,
+  ramInit = 10,
+  mainScreen = 11,
+  allInit = 12,
+  screenDevice = 13,
+  noDriver = 14,
+  screenActive = 15,
+  hiliteBit = 7,
+  pHiliteBit = 0,
+  defQDColors = 127,
+
+  RGBDirect = 16,
+
+  baseAddr32 = 4
+};
+
+
+enum {
+  sysPatListID = 0,
+  iBeamCursor = 1,
+  crossCursor = 2,
+  plusCursor = 3,
+  watchCursor = 4
+};
+
+enum {
+  kQDGrafVerbFrame = 0,
+  kQDGrafVerbPaint = 1,
+  kQDGrafVerbErase = 2,
+  kQDGrafVerbInvert = 3,
+  kQDGrafVerbFill = 4
+};
+typedef SInt8 GrafVerb;
+enum {
+  chunky = 0,
+  chunkyPlanar = 1,
+  planar = 2
+};
+
+typedef SInt8 PixelType;
+typedef short Bits16[16];
+struct Pattern {
+  UInt8 pat[8];
+};
+typedef struct Pattern Pattern;
+
+
+
+
+
+typedef const Pattern * ConstPatternParam;
+typedef Pattern * PatPtr;
+typedef PatPtr * PatHandle;
+typedef SignedByte QDByte;
+typedef QDByte * QDPtr;
+typedef QDPtr * QDHandle;
+typedef short QDErr;
+enum {
+  singleDevicesBit = 0,
+  dontMatchSeedsBit = 1,
+  allDevicesBit = 2
+};
+
+enum {
+  singleDevices = 1 << singleDevicesBit,
+  dontMatchSeeds = 1 << dontMatchSeedsBit,
+  allDevices = 1 << allDevicesBit
+};
+
+typedef unsigned long DeviceLoopFlags;
+
+
+
+typedef SInt32 PrinterStatusOpcode;
+enum {
+  kPrinterFontStatus = 0,
+  kPrinterScalingStatus = 1
+};
+
+struct PrinterFontStatus {
+  SInt32 oResult;
+  SInt16 iFondID;
+  Style iStyle;
+};
+typedef struct PrinterFontStatus PrinterFontStatus;
+struct PrinterScalingStatus {
+  Point oScalingFactors;
+};
+typedef struct PrinterScalingStatus PrinterScalingStatus;
+struct BitMap {
+  Ptr baseAddr;
+  short rowBytes;
+  Rect bounds;
+};
+typedef struct BitMap BitMap;
+typedef BitMap * BitMapPtr;
+typedef BitMapPtr * BitMapHandle;
+struct Cursor {
+  Bits16 data;
+  Bits16 mask;
+  Point hotSpot;
+};
+typedef struct Cursor Cursor;
+typedef Cursor * CursPtr;
+typedef CursPtr * CursHandle;
+struct PenState {
+  Point pnLoc;
+  Point pnSize;
+  short pnMode;
+  Pattern pnPat;
+};
+typedef struct PenState PenState;
+typedef struct OpaqueRgnHandle* RgnHandle;
+
+
+struct Picture {
+  short picSize;
+  Rect picFrame;
+};
+typedef struct Picture Picture;
+typedef Picture * PicPtr;
+typedef PicPtr * PicHandle;
+struct MacPolygon {
+  short polySize;
+  Rect polyBBox;
+  Point polyPoints[1];
+};
+typedef struct MacPolygon MacPolygon;
+
+
+
+
+typedef MacPolygon Polygon;
+typedef MacPolygon * PolyPtr;
+typedef PolyPtr * PolyHandle;
+typedef void ( * QDTextProcPtr)(short byteCount, const void *textBuf, Point numer, Point denom);
+typedef void ( * QDLineProcPtr)(Point newPt);
+typedef void ( * QDRectProcPtr)(GrafVerb verb, const Rect *r);
+typedef void ( * QDRRectProcPtr)(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight);
+typedef void ( * QDOvalProcPtr)(GrafVerb verb, const Rect *r);
+typedef void ( * QDArcProcPtr)(GrafVerb verb, const Rect *r, short startAngle, short arcAngle);
+typedef void ( * QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
+typedef void ( * QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
+typedef void ( * QDBitsProcPtr)(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn);
+typedef void ( * QDCommentProcPtr)(short kind, short dataSize, Handle dataHandle);
+typedef short ( * QDTxMeasProcPtr)(short byteCount, const void *textAddr, Point *numer, Point *denom, FontInfo *info);
+typedef void ( * QDGetPicProcPtr)(void *dataPtr, short byteCount);
+typedef void ( * QDPutPicProcPtr)(const void *dataPtr, short byteCount);
+typedef void ( * QDOpcodeProcPtr)(const Rect *fromRect, const Rect *toRect, UInt16 opcode, SInt16 version);
+typedef OSStatus ( * QDStdGlyphsProcPtr)(void *dataStream, ByteCount size);
+typedef void ( * QDJShieldCursorProcPtr)(short left, short top, short right, short bottom);
+typedef QDTextProcPtr QDTextUPP;
+typedef QDLineProcPtr QDLineUPP;
+typedef QDRectProcPtr QDRectUPP;
+typedef QDRRectProcPtr QDRRectUPP;
+typedef QDOvalProcPtr QDOvalUPP;
+typedef QDArcProcPtr QDArcUPP;
+typedef QDPolyProcPtr QDPolyUPP;
+typedef QDRgnProcPtr QDRgnUPP;
+typedef QDBitsProcPtr QDBitsUPP;
+typedef QDCommentProcPtr QDCommentUPP;
+typedef QDTxMeasProcPtr QDTxMeasUPP;
+typedef QDGetPicProcPtr QDGetPicUPP;
+typedef QDPutPicProcPtr QDPutPicUPP;
+typedef QDOpcodeProcPtr QDOpcodeUPP;
+typedef QDStdGlyphsProcPtr QDStdGlyphsUPP;
+typedef QDJShieldCursorProcPtr QDJShieldCursorUPP;
+struct QDProcs {
+  QDTextUPP textProc;
+  QDLineUPP lineProc;
+  QDRectUPP rectProc;
+  QDRRectUPP rRectProc;
+  QDOvalUPP ovalProc;
+  QDArcUPP arcProc;
+  QDPolyUPP polyProc;
+  QDRgnUPP rgnProc;
+  QDBitsUPP bitsProc;
+  QDCommentUPP commentProc;
+  QDTxMeasUPP txMeasProc;
+  QDGetPicUPP getPicProc;
+  QDPutPicUPP putPicProc;
+};
+typedef struct QDProcs QDProcs;
+typedef QDProcs * QDProcsPtr;
+extern QDTextUPP
+NewQDTextUPP(QDTextProcPtr userRoutine) ;
+extern QDLineUPP
+NewQDLineUPP(QDLineProcPtr userRoutine) ;
+extern QDRectUPP
+NewQDRectUPP(QDRectProcPtr userRoutine) ;
+extern QDRRectUPP
+NewQDRRectUPP(QDRRectProcPtr userRoutine) ;
+extern QDOvalUPP
+NewQDOvalUPP(QDOvalProcPtr userRoutine) ;
+extern QDArcUPP
+NewQDArcUPP(QDArcProcPtr userRoutine) ;
+extern QDPolyUPP
+NewQDPolyUPP(QDPolyProcPtr userRoutine) ;
+extern QDRgnUPP
+NewQDRgnUPP(QDRgnProcPtr userRoutine) ;
+extern QDBitsUPP
+NewQDBitsUPP(QDBitsProcPtr userRoutine) ;
+extern QDCommentUPP
+NewQDCommentUPP(QDCommentProcPtr userRoutine) ;
+extern QDTxMeasUPP
+NewQDTxMeasUPP(QDTxMeasProcPtr userRoutine) ;
+extern QDGetPicUPP
+NewQDGetPicUPP(QDGetPicProcPtr userRoutine) ;
+extern QDPutPicUPP
+NewQDPutPicUPP(QDPutPicProcPtr userRoutine) ;
+extern QDOpcodeUPP
+NewQDOpcodeUPP(QDOpcodeProcPtr userRoutine) ;
+extern QDStdGlyphsUPP
+NewQDStdGlyphsUPP(QDStdGlyphsProcPtr userRoutine) ;
+extern QDJShieldCursorUPP
+NewQDJShieldCursorUPP(QDJShieldCursorProcPtr userRoutine) ;
+extern void
+DisposeQDTextUPP(QDTextUPP userUPP) ;
+extern void
+DisposeQDLineUPP(QDLineUPP userUPP) ;
+extern void
+DisposeQDRectUPP(QDRectUPP userUPP) ;
+extern void
+DisposeQDRRectUPP(QDRRectUPP userUPP) ;
+extern void
+DisposeQDOvalUPP(QDOvalUPP userUPP) ;
+extern void
+DisposeQDArcUPP(QDArcUPP userUPP) ;
+extern void
+DisposeQDPolyUPP(QDPolyUPP userUPP) ;
+extern void
+DisposeQDRgnUPP(QDRgnUPP userUPP) ;
+extern void
+DisposeQDBitsUPP(QDBitsUPP userUPP) ;
+extern void
+DisposeQDCommentUPP(QDCommentUPP userUPP) ;
+extern void
+DisposeQDTxMeasUPP(QDTxMeasUPP userUPP) ;
+extern void
+DisposeQDGetPicUPP(QDGetPicUPP userUPP) ;
+extern void
+DisposeQDPutPicUPP(QDPutPicUPP userUPP) ;
+extern void
+DisposeQDOpcodeUPP(QDOpcodeUPP userUPP) ;
+extern void
+DisposeQDStdGlyphsUPP(QDStdGlyphsUPP userUPP) ;
+extern void
+DisposeQDJShieldCursorUPP(QDJShieldCursorUPP userUPP) ;
+extern void
+InvokeQDTextUPP(
+  short byteCount,
+  const void * textBuf,
+  Point numer,
+  Point denom,
+  QDTextUPP userUPP) ;
+extern void
+InvokeQDLineUPP(
+  Point newPt,
+  QDLineUPP userUPP) ;
+extern void
+InvokeQDRectUPP(
+  GrafVerb verb,
+  const Rect * r,
+  QDRectUPP userUPP) ;
+extern void
+InvokeQDRRectUPP(
+  GrafVerb verb,
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight,
+  QDRRectUPP userUPP) ;
+extern void
+InvokeQDOvalUPP(
+  GrafVerb verb,
+  const Rect * r,
+  QDOvalUPP userUPP) ;
+extern void
+InvokeQDArcUPP(
+  GrafVerb verb,
+  const Rect * r,
+  short startAngle,
+  short arcAngle,
+  QDArcUPP userUPP) ;
+extern void
+InvokeQDPolyUPP(
+  GrafVerb verb,
+  PolyHandle poly,
+  QDPolyUPP userUPP) ;
+extern void
+InvokeQDRgnUPP(
+  GrafVerb verb,
+  RgnHandle rgn,
+  QDRgnUPP userUPP) ;
+extern void
+InvokeQDBitsUPP(
+  const BitMap * srcBits,
+  const Rect * srcRect,
+  const Rect * dstRect,
+  short mode,
+  RgnHandle maskRgn,
+  QDBitsUPP userUPP) ;
+extern void
+InvokeQDCommentUPP(
+  short kind,
+  short dataSize,
+  Handle dataHandle,
+  QDCommentUPP userUPP) ;
+extern short
+InvokeQDTxMeasUPP(
+  short byteCount,
+  const void * textAddr,
+  Point * numer,
+  Point * denom,
+  FontInfo * info,
+  QDTxMeasUPP userUPP) ;
+extern void
+InvokeQDGetPicUPP(
+  void * dataPtr,
+  short byteCount,
+  QDGetPicUPP userUPP) ;
+extern void
+InvokeQDPutPicUPP(
+  const void * dataPtr,
+  short byteCount,
+  QDPutPicUPP userUPP) ;
+extern void
+InvokeQDOpcodeUPP(
+  const Rect * fromRect,
+  const Rect * toRect,
+  UInt16 opcode,
+  SInt16 version,
+  QDOpcodeUPP userUPP) ;
+extern OSStatus
+InvokeQDStdGlyphsUPP(
+  void * dataStream,
+  ByteCount size,
+  QDStdGlyphsUPP userUPP) ;
+extern void
+InvokeQDJShieldCursorUPP(
+  short left,
+  short top,
+  short right,
+  short bottom,
+  QDJShieldCursorUPP userUPP) ;
+typedef struct OpaqueWindowPtr* WindowPtr;
+typedef struct OpaqueDialogPtr* DialogPtr;
+typedef struct OpaqueGrafPtr* GrafPtr;
+
+
+typedef WindowPtr WindowRef;
+
+typedef UInt16 DragConstraint;
+enum {
+  kNoConstraint = 0,
+  kVerticalConstraint = 1,
+  kHorizontalConstraint = 2
+};
+
+
+typedef void ( * DragGrayRgnProcPtr)(void);
+
+
+
+
+
+struct RGBColor {
+  unsigned short red;
+  unsigned short green;
+  unsigned short blue;
+};
+typedef struct RGBColor RGBColor;
+typedef RGBColor * RGBColorPtr;
+typedef RGBColorPtr * RGBColorHdl;
+typedef Boolean ( * ColorSearchProcPtr)(RGBColor *rgb, long *position);
+typedef Boolean ( * ColorComplementProcPtr)(RGBColor * rgb);
+typedef DragGrayRgnProcPtr DragGrayRgnUPP;
+typedef ColorSearchProcPtr ColorSearchUPP;
+typedef ColorComplementProcPtr ColorComplementUPP;
+extern DragGrayRgnUPP
+NewDragGrayRgnUPP(DragGrayRgnProcPtr userRoutine) ;
+extern ColorSearchUPP
+NewColorSearchUPP(ColorSearchProcPtr userRoutine) ;
+extern ColorComplementUPP
+NewColorComplementUPP(ColorComplementProcPtr userRoutine) ;
+extern void
+DisposeDragGrayRgnUPP(DragGrayRgnUPP userUPP) ;
+extern void
+DisposeColorSearchUPP(ColorSearchUPP userUPP) ;
+extern void
+DisposeColorComplementUPP(ColorComplementUPP userUPP) ;
+extern void
+InvokeDragGrayRgnUPP(DragGrayRgnUPP userUPP) ;
+extern Boolean
+InvokeColorSearchUPP(
+  RGBColor * rgb,
+  long * position,
+  ColorSearchUPP userUPP) ;
+extern Boolean
+InvokeColorComplementUPP(
+  RGBColor * rgb,
+  ColorComplementUPP userUPP) ;
+
+struct ColorSpec {
+  short value;
+  RGBColor rgb;
+};
+typedef struct ColorSpec ColorSpec;
+typedef ColorSpec * ColorSpecPtr;
+typedef ColorSpec CSpecArray[1];
+struct ColorTable {
+  long ctSeed;
+  short ctFlags;
+  short ctSize;
+  CSpecArray ctTable;
+};
+typedef struct ColorTable ColorTable;
+typedef ColorTable * CTabPtr;
+typedef CTabPtr * CTabHandle;
+struct xColorSpec {
+  short value;
+  RGBColor rgb;
+  short xalpha;
+};
+typedef struct xColorSpec xColorSpec;
+typedef xColorSpec * xColorSpecPtr;
+typedef xColorSpec xCSpecArray[1];
+struct MatchRec {
+  unsigned short red;
+  unsigned short green;
+  unsigned short blue;
+  long matchData;
+};
+typedef struct MatchRec MatchRec;
+enum {
+  k1MonochromePixelFormat = 0x00000001,
+  k2IndexedPixelFormat = 0x00000002,
+  k4IndexedPixelFormat = 0x00000004,
+  k8IndexedPixelFormat = 0x00000008,
+  k16BE555PixelFormat = 0x00000010,
+  k24RGBPixelFormat = 0x00000018,
+  k32ARGBPixelFormat = 0x00000020,
+  k1IndexedGrayPixelFormat = 0x00000021,
+  k2IndexedGrayPixelFormat = 0x00000022,
+  k4IndexedGrayPixelFormat = 0x00000024,
+  k8IndexedGrayPixelFormat = 0x00000028
+};
+
+
+
+enum {
+  k16LE555PixelFormat = 'L555',
+  k16LE5551PixelFormat = '5551',
+  k16BE565PixelFormat = 'B565',
+  k16LE565PixelFormat = 'L565',
+  k24BGRPixelFormat = '24BG',
+  k32BGRAPixelFormat = 'BGRA',
+  k32ABGRPixelFormat = 'ABGR',
+  k32RGBAPixelFormat = 'RGBA',
+  kYUVSPixelFormat = 'yuvs',
+  kYUVUPixelFormat = 'yuvu',
+  kYVU9PixelFormat = 'YVU9',
+  kYUV411PixelFormat = 'Y411',
+  kYVYU422PixelFormat = 'YVYU',
+  kUYVY422PixelFormat = 'UYVY',
+  kYUV211PixelFormat = 'Y211',
+  k2vuyPixelFormat = '2vuy'
+};
+
+
+struct PixMap {
+  Ptr baseAddr;
+  short rowBytes;
+  Rect bounds;
+  short pmVersion;
+  short packType;
+  long packSize;
+  Fixed hRes;
+  Fixed vRes;
+  short pixelType;
+  short pixelSize;
+  short cmpCount;
+  short cmpSize;
+
+
+
+
+
+  OSType pixelFormat;
+    CTabHandle pmTable;
+  void* pmExt;
+
+};
+typedef struct PixMap PixMap;
+typedef PixMap * PixMapPtr;
+typedef PixMapPtr * PixMapHandle;
+struct PixPat {
+  short patType;
+  PixMapHandle patMap;
+  Handle patData;
+  Handle patXData;
+  short patXValid;
+  Handle patXMap;
+  Pattern pat1Data;
+};
+typedef struct PixPat PixPat;
+typedef PixPat * PixPatPtr;
+typedef PixPatPtr * PixPatHandle;
+struct CCrsr {
+  short crsrType;
+  PixMapHandle crsrMap;
+  Handle crsrData;
+  Handle crsrXData;
+  short crsrXValid;
+  Handle crsrXHandle;
+  Bits16 crsr1Data;
+  Bits16 crsrMask;
+  Point crsrHotSpot;
+  long crsrXTable;
+  long crsrID;
+};
+typedef struct CCrsr CCrsr;
+typedef CCrsr * CCrsrPtr;
+typedef CCrsrPtr * CCrsrHandle;
+struct GammaTbl {
+  short gVersion;
+  short gType;
+  short gFormulaSize;
+  short gChanCnt;
+  short gDataCnt;
+  short gDataWidth;
+  short gFormulaData[1];
+};
+typedef struct GammaTbl GammaTbl;
+typedef GammaTbl * GammaTblPtr;
+typedef GammaTblPtr * GammaTblHandle;
+struct ITab {
+  long iTabSeed;
+  short iTabRes;
+  Byte iTTable[1];
+};
+typedef struct ITab ITab;
+typedef ITab * ITabPtr;
+typedef ITabPtr * ITabHandle;
+struct SProcRec {
+  Handle nxtSrch;
+  ColorSearchUPP srchProc;
+};
+typedef struct SProcRec SProcRec;
+typedef SProcRec * SProcPtr;
+typedef SProcPtr * SProcHndl;
+struct CProcRec {
+  Handle nxtComp;
+  ColorComplementUPP compProc;
+};
+typedef struct CProcRec CProcRec;
+typedef CProcRec * CProcPtr;
+typedef CProcPtr * CProcHndl;
+typedef struct GDevice GDevice;
+typedef GDevice * GDPtr;
+typedef GDPtr * GDHandle;
+struct GDevice {
+  short gdRefNum;
+  short gdID;
+  short gdType;
+  ITabHandle gdITable;
+  short gdResPref;
+  SProcHndl gdSearchProc;
+  CProcHndl gdCompProc;
+  short gdFlags;
+  PixMapHandle gdPMap;
+  long gdRefCon;
+  GDHandle gdNextGD;
+  Rect gdRect;
+  long gdMode;
+  short gdCCBytes;
+  short gdCCDepth;
+  Handle gdCCXData;
+  Handle gdCCXMask;
+
+
+
+  Handle gdExt;
+
+};
+
+struct GrafVars {
+  RGBColor rgbOpColor;
+  RGBColor rgbHiliteColor;
+  Handle pmFgColor;
+  short pmFgIndex;
+  Handle pmBkColor;
+  short pmBkIndex;
+  short pmFlags;
+};
+typedef struct GrafVars GrafVars;
+typedef GrafVars * GVarPtr;
+typedef GVarPtr * GVarHandle;
+
+
+
+
+
+typedef GrafPtr CGrafPtr;
+
+
+typedef OSStatus ( * QDPrinterStatusProcPtr)(PrinterStatusOpcode opcode, CGrafPtr currentPort, void *printerStatus);
+typedef QDPrinterStatusProcPtr QDPrinterStatusUPP;
+
+struct CQDProcs {
+  QDTextUPP textProc;
+  QDLineUPP lineProc;
+  QDRectUPP rectProc;
+  QDRRectUPP rRectProc;
+  QDOvalUPP ovalProc;
+  QDArcUPP arcProc;
+  QDPolyUPP polyProc;
+  QDRgnUPP rgnProc;
+  QDBitsUPP bitsProc;
+  QDCommentUPP commentProc;
+  QDTxMeasUPP txMeasProc;
+  QDGetPicUPP getPicProc;
+  QDPutPicUPP putPicProc;
+  QDOpcodeUPP opcodeProc;
+  UniversalProcPtr newProc1;
+  QDStdGlyphsUPP glyphsProc;
+  QDPrinterStatusUPP printerStatusProc;
+  UniversalProcPtr newProc4;
+  UniversalProcPtr newProc5;
+  UniversalProcPtr newProc6;
+};
+typedef struct CQDProcs CQDProcs;
+typedef CQDProcs * CQDProcsPtr;
+typedef WindowPtr CWindowPtr;
+
+
+
+
+struct ReqListRec {
+  short reqLSize;
+  short reqLData[1];
+};
+typedef struct ReqListRec ReqListRec;
+struct OpenCPicParams {
+  Rect srcRect;
+  Fixed hRes;
+  Fixed vRes;
+  short version;
+  short reserved1;
+  long reserved2;
+};
+typedef struct OpenCPicParams OpenCPicParams;
+enum {
+  kCursorImageMajorVersion = 0x0001,
+  kCursorImageMinorVersion = 0x0000
+};
+
+struct CursorImageRec {
+  UInt16 majorVersion;
+  UInt16 minorVersion;
+  PixMapHandle cursorPixMap;
+  BitMapHandle cursorBitMask;
+};
+typedef struct CursorImageRec CursorImageRec;
+typedef CursorImageRec * CursorImagePtr;
+typedef void ( * DeviceLoopDrawingProcPtr)(short depth, short deviceFlags, GDHandle targetDevice, long userData);
+typedef DeviceLoopDrawingProcPtr DeviceLoopDrawingUPP;
+extern DeviceLoopDrawingUPP
+NewDeviceLoopDrawingUPP(DeviceLoopDrawingProcPtr userRoutine) ;
+extern void
+DisposeDeviceLoopDrawingUPP(DeviceLoopDrawingUPP userUPP) ;
+extern void
+InvokeDeviceLoopDrawingUPP(
+  short depth,
+  short deviceFlags,
+  GDHandle targetDevice,
+  long userData,
+  DeviceLoopDrawingUPP userUPP) ;
+extern OSErr
+LockPortBits(GrafPtr port) ;
+extern OSErr
+UnlockPortBits(GrafPtr port) ;
+
+
+
+
+enum {
+  kQDParseRegionFromTop = (1 << 0),
+  kQDParseRegionFromBottom = (1 << 1),
+  kQDParseRegionFromLeft = (1 << 2),
+  kQDParseRegionFromRight = (1 << 3),
+  kQDParseRegionFromTopLeft = kQDParseRegionFromTop | kQDParseRegionFromLeft,
+  kQDParseRegionFromBottomRight = kQDParseRegionFromBottom | kQDParseRegionFromRight
+};
+
+typedef SInt32 QDRegionParseDirection;
+enum {
+  kQDRegionToRectsMsgInit = 1,
+  kQDRegionToRectsMsgParse = 2,
+  kQDRegionToRectsMsgTerminate = 3
+};
+
+typedef OSStatus ( * RegionToRectsProcPtr)(UInt16 message, RgnHandle rgn, const Rect *rect, void *refCon);
+typedef RegionToRectsProcPtr RegionToRectsUPP;
+extern RegionToRectsUPP
+NewRegionToRectsUPP(RegionToRectsProcPtr userRoutine) ;
+extern void
+DisposeRegionToRectsUPP(RegionToRectsUPP userUPP) ;
+extern OSStatus
+InvokeRegionToRectsUPP(
+  UInt16 message,
+  RgnHandle rgn,
+  const Rect * rect,
+  void * refCon,
+  RegionToRectsUPP userUPP) ;
+extern OSStatus
+QDRegionToRects(
+  RgnHandle rgn,
+  QDRegionParseDirection dir,
+  RegionToRectsUPP proc,
+  void * userData) ;
+extern void
+SetPort(GrafPtr port) ;
+extern void
+GetPort(GrafPtr * port) ;
+extern Boolean
+QDSwapPort(
+  CGrafPtr inNewPort,
+  CGrafPtr * outOldPort) ;
+extern void
+GrafDevice(short device) ;
+extern void
+SetPortBits(const BitMap * bm) ;
+extern void
+PortSize(
+  short width,
+  short height) ;
+extern void
+MovePortTo(
+  short leftGlobal,
+  short topGlobal) ;
+extern void
+SetOrigin(
+  short h,
+  short v) ;
+extern void
+SetClip(RgnHandle rgn) ;
+extern void
+GetClip(RgnHandle rgn) ;
+extern void
+ClipRect(const Rect * r) ;
+extern void
+BackPat(const Pattern * pat) ;
+extern void
+InitCursor(void) ;
+extern void
+SetCursor(const Cursor * crsr) ;
+extern void
+HideCursor(void) ;
+extern void
+ShowCursor(void) ;
+extern void
+ObscureCursor(void) ;
+extern void
+HidePen(void) ;
+extern void
+ShowPen(void) ;
+extern void
+GetPen(Point * pt) ;
+extern void
+GetPenState(PenState * pnState) ;
+extern void
+SetPenState(const PenState * pnState) ;
+extern void
+PenSize(
+  short width,
+  short height) ;
+extern void
+PenMode(short mode) ;
+extern void
+PenPat(const Pattern * pat) ;
+extern void
+PenNormal(void) ;
+extern void
+MoveTo(
+  short h,
+  short v) ;
+extern void
+Move(
+  short dh,
+  short dv) ;
+extern void
+LineTo(
+  short h,
+  short v) ;
+extern void
+Line(
+  short dh,
+  short dv) ;
+extern void
+ForeColor(long color) ;
+extern void
+BackColor(long color) ;
+extern void
+ColorBit(short whichBit) ;
+extern void
+SetRect(
+  Rect * r,
+  short left,
+  short top,
+  short right,
+  short bottom) ;
+extern void
+OffsetRect(
+  Rect * r,
+  short dh,
+  short dv) ;
+extern void
+InsetRect(
+  Rect * r,
+  short dh,
+  short dv) ;
+extern Boolean
+SectRect(
+  const Rect * src1,
+  const Rect * src2,
+  Rect * dstRect) ;
+extern void
+UnionRect(
+  const Rect * src1,
+  const Rect * src2,
+  Rect * dstRect) ;
+extern Boolean
+EqualRect(
+  const Rect * rect1,
+  const Rect * rect2) ;
+extern Boolean
+EmptyRect(const Rect * r) ;
+extern void
+FrameRect(const Rect * r) ;
+extern void
+PaintRect(const Rect * r) ;
+extern void
+EraseRect(const Rect * r) ;
+extern void
+InvertRect(const Rect * r) ;
+extern void
+FillRect(
+  const Rect * r,
+  const Pattern * pat) ;
+extern void
+FrameOval(const Rect * r) ;
+extern void
+PaintOval(const Rect * r) ;
+extern void
+EraseOval(const Rect * r) ;
+extern void
+InvertOval(const Rect * r) ;
+extern void
+FillOval(
+  const Rect * r,
+  const Pattern * pat) ;
+extern void
+FrameRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight) ;
+extern void
+PaintRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight) ;
+extern void
+EraseRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight) ;
+extern void
+InvertRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight) ;
+extern void
+FillRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight,
+  const Pattern * pat) ;
+extern void
+FrameArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle) ;
+extern void
+PaintArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle) ;
+extern void
+EraseArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle) ;
+extern void
+InvertArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle) ;
+extern void
+FillArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle,
+  const Pattern * pat) ;
+extern RgnHandle
+NewRgn(void) ;
+extern void
+OpenRgn(void) ;
+extern void
+CloseRgn(RgnHandle dstRgn) ;
+extern OSErr
+BitMapToRegion(
+  RgnHandle region,
+  const BitMap * bMap) ;
+extern void
+HandleToRgn(
+  Handle oldRegion,
+  RgnHandle region) ;
+extern void
+RgnToHandle(
+  RgnHandle region,
+  Handle flattenedRgnDataHdl) ;
+extern void
+DisposeRgn(RgnHandle rgn) ;
+extern void
+CopyRgn(
+  RgnHandle srcRgn,
+  RgnHandle dstRgn) ;
+extern void
+SetEmptyRgn(RgnHandle rgn) ;
+extern void
+SetRectRgn(
+  RgnHandle rgn,
+  short left,
+  short top,
+  short right,
+  short bottom) ;
+extern void
+RectRgn(
+  RgnHandle rgn,
+  const Rect * r) ;
+extern void
+OffsetRgn(
+  RgnHandle rgn,
+  short dh,
+  short dv) ;
+extern void
+InsetRgn(
+  RgnHandle rgn,
+  short dh,
+  short dv) ;
+extern void
+SectRgn(
+  RgnHandle srcRgnA,
+  RgnHandle srcRgnB,
+  RgnHandle dstRgn) ;
+extern void
+UnionRgn(
+  RgnHandle srcRgnA,
+  RgnHandle srcRgnB,
+  RgnHandle dstRgn) ;
+extern void
+DiffRgn(
+  RgnHandle srcRgnA,
+  RgnHandle srcRgnB,
+  RgnHandle dstRgn) ;
+extern void
+XorRgn(
+  RgnHandle srcRgnA,
+  RgnHandle srcRgnB,
+  RgnHandle dstRgn) ;
+extern Boolean
+RectInRgn(
+  const Rect * r,
+  RgnHandle rgn) ;
+extern Boolean
+EqualRgn(
+  RgnHandle rgnA,
+  RgnHandle rgnB) ;
+extern Boolean
+EmptyRgn(RgnHandle rgn) ;
+extern void
+FrameRgn(RgnHandle rgn) ;
+extern void
+PaintRgn(RgnHandle rgn) ;
+extern void
+EraseRgn(RgnHandle rgn) ;
+extern void
+InvertRgn(RgnHandle rgn) ;
+extern void
+FillRgn(
+  RgnHandle rgn,
+  const Pattern * pat) ;
+extern void
+ScrollRect(
+  const Rect * r,
+  short dh,
+  short dv,
+  RgnHandle updateRgn) ;
+extern void
+CopyBits(
+  const BitMap * srcBits,
+  const BitMap * dstBits,
+  const Rect * srcRect,
+  const Rect * dstRect,
+  short mode,
+  RgnHandle maskRgn) ;
+extern void
+SeedFill(
+  const void * srcPtr,
+  void * dstPtr,
+  short srcRow,
+  short dstRow,
+  short height,
+  short words,
+  short seedH,
+  short seedV) ;
+extern void
+CalcMask(
+  const void * srcPtr,
+  void * dstPtr,
+  short srcRow,
+  short dstRow,
+  short height,
+  short words) ;
+extern void
+CopyMask(
+  const BitMap * srcBits,
+  const BitMap * maskBits,
+  const BitMap * dstBits,
+  const Rect * srcRect,
+  const Rect * maskRect,
+  const Rect * dstRect) ;
+extern PicHandle
+OpenPicture(const Rect * picFrame) ;
+extern void
+PicComment(
+  short kind,
+  short dataSize,
+  Handle dataHandle) ;
+extern void
+ClosePicture(void) ;
+extern void
+DrawPicture(
+  PicHandle myPicture,
+  const Rect * dstRect) ;
+extern void
+KillPicture(PicHandle myPicture) ;
+extern PolyHandle
+OpenPoly(void) ;
+extern void
+ClosePoly(void) ;
+extern void
+KillPoly(PolyHandle poly) ;
+extern void
+OffsetPoly(
+  PolyHandle poly,
+  short dh,
+  short dv) ;
+extern void
+FramePoly(PolyHandle poly) ;
+extern void
+PaintPoly(PolyHandle poly) ;
+extern void
+ErasePoly(PolyHandle poly) ;
+extern void
+InvertPoly(PolyHandle poly) ;
+extern void
+FillPoly(
+  PolyHandle poly,
+  const Pattern * pat) ;
+extern void
+SetPt(
+  Point * pt,
+  short h,
+  short v) ;
+extern void
+LocalToGlobal(Point * pt) ;
+extern void
+GlobalToLocal(Point * pt) ;
+extern short
+Random(void) ;
+extern void
+StuffHex(
+  void * thingPtr,
+  ConstStr255Param s) ;
+extern Boolean
+GetPixel(
+  short h,
+  short v) ;
+extern void
+ScalePt(
+  Point * pt,
+  const Rect * srcRect,
+  const Rect * dstRect) ;
+extern void
+MapPt(
+  Point * pt,
+  const Rect * srcRect,
+  const Rect * dstRect) ;
+extern void
+MapRect(
+  Rect * r,
+  const Rect * srcRect,
+  const Rect * dstRect) ;
+extern void
+MapRgn(
+  RgnHandle rgn,
+  const Rect * srcRect,
+  const Rect * dstRect) ;
+extern void
+MapPoly(
+  PolyHandle poly,
+  const Rect * srcRect,
+  const Rect * dstRect) ;
+extern void
+SetStdProcs(QDProcs * procs) ;
+extern void
+StdRect(
+  GrafVerb verb,
+  const Rect * r) ;
+extern void
+StdRRect(
+  GrafVerb verb,
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight) ;
+extern void
+StdOval(
+  GrafVerb verb,
+  const Rect * r) ;
+extern void
+StdArc(
+  GrafVerb verb,
+  const Rect * r,
+  short startAngle,
+  short arcAngle) ;
+extern void
+StdPoly(
+  GrafVerb verb,
+  PolyHandle poly) ;
+extern void
+StdRgn(
+  GrafVerb verb,
+  RgnHandle rgn) ;
+extern void
+StdBits(
+  const BitMap * srcBits,
+  const Rect * srcRect,
+  const Rect * dstRect,
+  short mode,
+  RgnHandle maskRgn) ;
+extern void
+StdComment(
+  short kind,
+  short dataSize,
+  Handle dataHandle) ;
+extern void
+StdGetPic(
+  void * dataPtr,
+  short byteCount) ;
+extern void
+StdPutPic(
+  const void * dataPtr,
+  short byteCount) ;
+extern void
+StdOpcode(
+  const Rect * fromRect,
+  const Rect * toRect,
+  UInt16 opcode,
+  SInt16 version) ;
+extern void
+AddPt(
+  Point src,
+  Point * dst) ;
+extern Boolean
+EqualPt(
+  Point pt1,
+  Point pt2) ;
+extern Boolean
+PtInRect(
+  Point pt,
+  const Rect * r) ;
+extern void
+Pt2Rect(
+  Point pt1,
+  Point pt2,
+  Rect * dstRect) ;
+extern void
+PtToAngle(
+  const Rect * r,
+  Point pt,
+  short * angle) ;
+extern void
+SubPt(
+  Point src,
+  Point * dst) ;
+extern Boolean
+PtInRgn(
+  Point pt,
+  RgnHandle rgn) ;
+extern void
+StdLine(Point newPt) ;
+extern PixMapHandle
+NewPixMap(void) ;
+extern void
+DisposePixMap(PixMapHandle pm) ;
+extern void
+CopyPixMap(
+  PixMapHandle srcPM,
+  PixMapHandle dstPM) ;
+extern PixPatHandle
+NewPixPat(void) ;
+extern void
+DisposePixPat(PixPatHandle pp) ;
+extern void
+CopyPixPat(
+  PixPatHandle srcPP,
+  PixPatHandle dstPP) ;
+extern void
+PenPixPat(PixPatHandle pp) ;
+extern void
+BackPixPat(PixPatHandle pp) ;
+extern PixPatHandle
+GetPixPat(short patID) ;
+extern void
+MakeRGBPat(
+  PixPatHandle pp,
+  const RGBColor * myColor) ;
+extern void
+FillCRect(
+  const Rect * r,
+  PixPatHandle pp) ;
+extern void
+FillCOval(
+  const Rect * r,
+  PixPatHandle pp) ;
+extern void
+FillCRoundRect(
+  const Rect * r,
+  short ovalWidth,
+  short ovalHeight,
+  PixPatHandle pp) ;
+extern void
+FillCArc(
+  const Rect * r,
+  short startAngle,
+  short arcAngle,
+  PixPatHandle pp) ;
+extern void
+FillCRgn(
+  RgnHandle rgn,
+  PixPatHandle pp) ;
+extern void
+FillCPoly(
+  PolyHandle poly,
+  PixPatHandle pp) ;
+extern void
+RGBForeColor(const RGBColor * color) ;
+extern void
+RGBBackColor(const RGBColor * color) ;
+extern void
+SetCPixel(
+  short h,
+  short v,
+  const RGBColor * cPix) ;
+extern void
+SetPortPix(PixMapHandle pm) ;
+extern void
+GetCPixel(
+  short h,
+  short v,
+  RGBColor * cPix) ;
+extern void
+GetForeColor(RGBColor * color) ;
+extern void
+GetBackColor(RGBColor * color) ;
+extern void
+SeedCFill(
+  const BitMap * srcBits,
+  const BitMap * dstBits,
+  const Rect * srcRect,
+  const Rect * dstRect,
+  short seedH,
+  short seedV,
+  ColorSearchUPP matchProc,
+  long matchData) ;
+extern void
+CalcCMask(
+  const BitMap * srcBits,
+  const BitMap * dstBits,
+  const Rect * srcRect,
+  const Rect * dstRect,
+  const RGBColor * seedRGB,
+  ColorSearchUPP matchProc,
+  long matchData) ;
+extern PicHandle
+OpenCPicture(const OpenCPicParams * newHeader) ;
+extern void
+OpColor(const RGBColor * color) ;
+extern void
+HiliteColor(const RGBColor * color) ;
+extern void
+DisposeCTable(CTabHandle cTable) ;
+extern CTabHandle
+GetCTable(short ctID) ;
+extern CCrsrHandle
+GetCCursor(short crsrID) ;
+extern void
+SetCCursor(CCrsrHandle cCrsr) ;
+extern void
+AllocCursor(void) ;
+extern void
+DisposeCCursor(CCrsrHandle cCrsr) ;
+extern void
+SetStdCProcs(CQDProcs * procs) ;
+extern GDHandle
+GetMaxDevice(const Rect * globalRect) ;
+extern long
+GetCTSeed(void) ;
+extern GDHandle
+GetDeviceList(void) ;
+extern GDHandle
+GetMainDevice(void) ;
+extern GDHandle
+GetNextDevice(GDHandle curDevice) ;
+extern Boolean
+TestDeviceAttribute(
+  GDHandle gdh,
+  short attribute) ;
+extern void
+SetDeviceAttribute(
+  GDHandle gdh,
+  short attribute,
+  Boolean value) ;
+extern void
+InitGDevice(
+  short qdRefNum,
+  long mode,
+  GDHandle gdh) ;
+extern GDHandle
+NewGDevice(
+  short refNum,
+  long mode) ;
+extern void
+DisposeGDevice(GDHandle gdh) ;
+extern void
+SetGDevice(GDHandle gd) ;
+extern GDHandle
+GetGDevice(void) ;
+extern long
+Color2Index(const RGBColor * myColor) ;
+extern void
+Index2Color(
+  long index,
+  RGBColor * aColor) ;
+extern void
+InvertColor(RGBColor * myColor) ;
+extern Boolean
+RealColor(const RGBColor * color) ;
+extern void
+GetSubTable(
+  CTabHandle myColors,
+  short iTabRes,
+  CTabHandle targetTbl) ;
+extern void
+MakeITable(
+  CTabHandle cTabH,
+  ITabHandle iTabH,
+  short res) ;
+extern void
+AddSearch(ColorSearchUPP searchProc) ;
+extern void
+AddComp(ColorComplementUPP compProc) ;
+extern void
+DelSearch(ColorSearchUPP searchProc) ;
+extern void
+DelComp(ColorComplementUPP compProc) ;
+extern void
+SetClientID(short id) ;
+extern void
+ProtectEntry(
+  short index,
+  Boolean protect) ;
+extern void
+ReserveEntry(
+  short index,
+  Boolean reserve) ;
+extern void
+SetEntries(
+  short start,
+  short count,
+  CSpecArray aTable) ;
+extern void
+SaveEntries(
+  CTabHandle srcTable,
+  CTabHandle resultTable,
+  ReqListRec * selection) ;
+extern void
+RestoreEntries(
+  CTabHandle srcTable,
+  CTabHandle dstTable,
+  ReqListRec * selection) ;
+extern short
+QDError(void) ;
+extern void
+CopyDeepMask(
+  const BitMap * srcBits,
+  const BitMap * maskBits,
+  const BitMap * dstBits,
+  const Rect * srcRect,
+  const Rect * maskRect,
+  const Rect * dstRect,
+  short mode,
+  RgnHandle maskRgn) ;
+extern void
+DeviceLoop(
+  RgnHandle drawingRgn,
+  DeviceLoopDrawingUPP drawingProc,
+  long userData,
+  DeviceLoopFlags flags) ;
+extern Ptr
+GetMaskTable(void) ;
+extern PatHandle
+GetPattern(short patternID) ;
+extern CursHandle
+GetCursor(short cursorID) ;
+extern PicHandle
+GetPicture(short pictureID) ;
+extern long
+DeltaPoint(
+  Point ptA,
+  Point ptB) ;
+extern void
+ShieldCursor(
+  const Rect * shieldRect,
+  Point offsetPt) ;
+extern void
+ScreenRes(
+  short * scrnHRes,
+  short * scrnVRes) ;
+extern void
+GetIndPattern(
+  Pattern * thePat,
+  short patternListID,
+  short index) ;
+extern long
+deltapoint(
+  Point * ptA,
+  Point * ptB) ;
+extern void
+PackBits(
+  Ptr * srcPtr,
+  Ptr * dstPtr,
+  short srcBytes) ;
+extern void
+UnpackBits(
+  Ptr * srcPtr,
+  Ptr * dstPtr,
+  short dstBytes) ;
+extern Fixed
+SlopeFromAngle(short angle) ;
+extern short
+AngleFromSlope(Fixed slope) ;
+
+
+
+enum {
+  colorXorXFer = 52,
+  noiseXFer = 53,
+  customXFer = 54
+};
+
+
+enum {
+  kXFer1PixelAtATime = 0x00000001,
+  kXFerConvertPixelToRGB32 = 0x00000002
+};
+
+struct CustomXFerRec {
+  UInt32 version;
+  void * srcPixels;
+  void * destPixels;
+  void * resultPixels;
+  UInt32 refCon;
+  UInt32 pixelSize;
+  UInt32 pixelCount;
+  Point firstPixelHV;
+  Rect destBounds;
+};
+typedef struct CustomXFerRec CustomXFerRec;
+typedef CustomXFerRec * CustomXFerRecPtr;
+typedef void ( * CustomXFerProcPtr)(CustomXFerRecPtr info);
+extern OSErr
+GetPortCustomXFerProc(
+  CGrafPtr port,
+  CustomXFerProcPtr * proc,
+  UInt32 * flags,
+  UInt32 * refCon) ;
+extern OSErr
+SetPortCustomXFerProc(
+  CGrafPtr port,
+  CustomXFerProcPtr proc,
+  UInt32 flags,
+  UInt32 refCon) ;
+
+
+
+enum {
+  kCursorComponentsVersion = 0x00010001
+};
+
+enum {
+  kCursorComponentType = 'curs'
+};
+
+
+enum {
+  cursorDoesAnimate = 1L << 0,
+  cursorDoesHardware = 1L << 1,
+  cursorDoesUnreadableScreenBits = 1L << 2
+};
+
+
+enum {
+  kRenderCursorInHardware = 1L << 0,
+  kRenderCursorInSoftware = 1L << 1
+};
+
+
+struct CursorInfo {
+  long version;
+  long capabilities;
+  long animateDuration;
+  Rect bounds;
+  Point hotspot;
+  long reserved;
+
+};
+typedef struct CursorInfo CursorInfo;
+
+enum {
+  kCursorComponentInit = 0x0001,
+  kCursorComponentGetInfo = 0x0002,
+  kCursorComponentSetOutputMode = 0x0003,
+  kCursorComponentSetData = 0x0004,
+  kCursorComponentReconfigure = 0x0005,
+  kCursorComponentDraw = 0x0006,
+  kCursorComponentErase = 0x0007,
+  kCursorComponentMove = 0x0008,
+  kCursorComponentAnimate = 0x0009,
+  kCursorComponentLastReserved = 0x0050
+};
+extern OSErr
+OpenCursorComponent(
+  Component c,
+  ComponentInstance * ci) ;
+extern OSErr
+CloseCursorComponent(ComponentInstance ci) ;
+extern OSErr
+SetCursorComponent(ComponentInstance ci) ;
+extern OSErr
+CursorComponentChanged(ComponentInstance ci) ;
+extern OSErr
+CursorComponentSetData(
+  ComponentInstance ci,
+  long data) ;
+extern CMError
+CWMatchPixMap(
+  CMWorldRef cw,
+  PixMap * myPixMap,
+  CMBitmapCallBackUPP progressProc,
+  void * refCon) ;
+extern CMError
+CWCheckPixMap(
+  CMWorldRef cw,
+  PixMap * myPixMap,
+  CMBitmapCallBackUPP progressProc,
+  void * refCon,
+  BitMap * resultBitMap) ;
+extern CMError
+NCMBeginMatching(
+  CMProfileRef src,
+  CMProfileRef dst,
+  CMMatchRef * myRef) ;
+extern void
+CMEndMatching(CMMatchRef myRef) ;
+extern void
+NCMDrawMatchedPicture(
+  PicHandle myPicture,
+  CMProfileRef dst,
+  Rect * myRect) ;
+extern void
+CMEnableMatchingComment(Boolean enableIt) ;
+extern CMError
+NCMUseProfileComment(
+  CMProfileRef prof,
+  UInt32 flags) ;
+extern Boolean
+IsValidPort(CGrafPtr port) ;
+extern PixMapHandle
+GetPortPixMap(CGrafPtr port) ;
+extern const BitMap *
+GetPortBitMapForCopyBits(CGrafPtr port) ;
+extern Rect *
+GetPortBounds(
+  CGrafPtr port,
+  Rect * rect) ;
+extern RGBColor *
+GetPortForeColor(
+  CGrafPtr port,
+  RGBColor * foreColor) ;
+extern RGBColor *
+GetPortBackColor(
+  CGrafPtr port,
+  RGBColor * backColor) ;
+extern RGBColor *
+GetPortOpColor(
+  CGrafPtr port,
+  RGBColor * opColor) ;
+extern RGBColor *
+GetPortHiliteColor(
+  CGrafPtr port,
+  RGBColor * hiliteColor) ;
+extern CQDProcsPtr
+GetPortGrafProcs(CGrafPtr port) ;
+extern short
+GetPortTextFont(CGrafPtr port) ;
+extern Style
+GetPortTextFace(CGrafPtr port) ;
+extern short
+GetPortTextMode(CGrafPtr port) ;
+extern short
+GetPortTextSize(CGrafPtr port) ;
+extern short
+GetPortChExtra(CGrafPtr port) ;
+extern short
+GetPortFracHPenLocation(CGrafPtr port) ;
+extern Fixed
+GetPortSpExtra(CGrafPtr port) ;
+extern short
+GetPortPenVisibility(CGrafPtr port) ;
+extern RgnHandle
+GetPortVisibleRegion(
+  CGrafPtr port,
+  RgnHandle visRgn) ;
+extern RgnHandle
+GetPortClipRegion(
+  CGrafPtr port,
+  RgnHandle clipRgn) ;
+extern PixPatHandle
+GetPortBackPixPat(
+  CGrafPtr port,
+  PixPatHandle backPattern) ;
+extern PixPatHandle
+GetPortPenPixPat(
+  CGrafPtr port,
+  PixPatHandle penPattern) ;
+extern PixPatHandle
+GetPortFillPixPat(
+  CGrafPtr port,
+  PixPatHandle fillPattern) ;
+extern Point *
+GetPortPenSize(
+  CGrafPtr port,
+  Point * penSize) ;
+extern SInt32
+GetPortPenMode(CGrafPtr port) ;
+extern Point *
+GetPortPenLocation(
+  CGrafPtr port,
+  Point * penLocation) ;
+extern Boolean
+IsPortRegionBeingDefined(CGrafPtr port) ;
+extern Boolean
+IsPortPictureBeingDefined(CGrafPtr port) ;
+extern Boolean
+IsPortPolyBeingDefined(CGrafPtr port) ;
+extern Boolean
+IsPortOffscreen(CGrafPtr port) ;
+extern Boolean
+IsPortColor(CGrafPtr port) ;
+extern Boolean
+IsPortVisibleRegionEmpty(CGrafPtr port) ;
+extern Boolean
+IsPortClipRegionEmpty(CGrafPtr port) ;
+extern void
+SectRegionWithPortClipRegion(
+  CGrafPtr port,
+  RgnHandle ioRegion) ;
+extern void
+SectRegionWithPortVisibleRegion(
+  CGrafPtr port,
+  RgnHandle ioRegion) ;
+extern Handle
+SwapPortPicSaveHandle(
+  CGrafPtr port,
+  Handle inPicSaveHdl) ;
+extern Handle
+SwapPortPolySaveHandle(
+  CGrafPtr port,
+  Handle inPolySaveHdl) ;
+extern Handle
+SwapPortRegionSaveHandle(
+  CGrafPtr port,
+  Handle inRegionSaveHdl) ;
+extern void
+SetPortBounds(
+  CGrafPtr port,
+  const Rect * rect) ;
+extern void
+SetPortOpColor(
+  CGrafPtr port,
+  const RGBColor * opColor) ;
+extern void
+SetPortGrafProcs(
+  CGrafPtr port,
+  CQDProcsPtr procs) ;
+extern void
+SetPortTextFont(
+  CGrafPtr port,
+  short txFont) ;
+extern void
+SetPortTextSize(
+  CGrafPtr port,
+  short txSize) ;
+extern void
+SetPortTextFace(
+  CGrafPtr port,
+  StyleParameter face) ;
+extern void
+SetPortTextMode(
+  CGrafPtr port,
+  short mode) ;
+extern void
+SetPortVisibleRegion(
+  CGrafPtr port,
+  RgnHandle visRgn) ;
+extern void
+SetPortClipRegion(
+  CGrafPtr port,
+  RgnHandle clipRgn) ;
+extern void
+SetPortPenPixPat(
+  CGrafPtr port,
+  PixPatHandle penPattern) ;
+extern void
+SetPortFillPixPat(
+  CGrafPtr port,
+  PixPatHandle penPattern) ;
+extern void
+SetPortBackPixPat(
+  CGrafPtr port,
+  PixPatHandle backPattern) ;
+extern void
+SetPortPenSize(
+  CGrafPtr port,
+  Point penSize) ;
+extern void
+SetPortPenMode(
+  CGrafPtr port,
+  SInt32 penMode) ;
+extern void
+SetPortFracHPenLocation(
+  CGrafPtr port,
+  short pnLocHFrac) ;
+extern Rect *
+GetPixBounds(
+  PixMapHandle pixMap,
+  Rect * bounds) ;
+extern short
+GetPixDepth(PixMapHandle pixMap) ;
+extern long
+GetQDGlobalsRandomSeed(void) ;
+extern BitMap *
+GetQDGlobalsScreenBits(BitMap * screenBits) ;
+extern Cursor *
+GetQDGlobalsArrow(Cursor * arrow) ;
+extern Pattern *
+GetQDGlobalsDarkGray(Pattern * dkGray) ;
+extern Pattern *
+GetQDGlobalsLightGray(Pattern * ltGray) ;
+extern Pattern *
+GetQDGlobalsGray(Pattern * gray) ;
+extern Pattern *
+GetQDGlobalsBlack(Pattern * black) ;
+extern Pattern *
+GetQDGlobalsWhite(Pattern * white) ;
+extern CGrafPtr
+GetQDGlobalsThePort(void) ;
+extern void
+SetQDGlobalsRandomSeed(long randomSeed) ;
+extern void
+SetQDGlobalsArrow(const Cursor * arrow) ;
+extern Rect *
+GetRegionBounds(
+  RgnHandle region,
+  Rect * bounds) ;
+extern Boolean
+IsRegionRectangular(RgnHandle region) ;
+extern CGrafPtr
+CreateNewPort(void) ;
+extern void
+DisposePort(CGrafPtr port) ;
+extern void
+SetQDError(OSErr err) ;
+extern Point *
+QDLocalToGlobalPoint(
+  CGrafPtr port,
+  Point * point) ;
+extern Point *
+QDGlobalToLocalPoint(
+  CGrafPtr port,
+  Point * point) ;
+extern Rect *
+QDLocalToGlobalRect(
+  CGrafPtr port,
+  Rect * bounds) ;
+extern Rect *
+QDGlobalToLocalRect(
+  CGrafPtr port,
+  Rect * bounds) ;
+extern RgnHandle
+QDLocalToGlobalRegion(
+  CGrafPtr port,
+  RgnHandle region) ;
+extern RgnHandle
+QDGlobalToLocalRegion(
+  CGrafPtr port,
+  RgnHandle region) ;
+extern Boolean
+QDIsPortBuffered(CGrafPtr port) ;
+extern Boolean
+QDIsPortBufferDirty(CGrafPtr port) ;
+extern void
+QDFlushPortBuffer(
+  CGrafPtr port,
+  RgnHandle region) ;
+extern OSStatus
+QDGetDirtyRegion(
+  CGrafPtr port,
+  RgnHandle rgn) ;
+extern OSStatus
+QDSetDirtyRegion(
+  CGrafPtr port,
+  RgnHandle rgn) ;
+extern OSStatus
+QDAddRectToDirtyRegion(
+  CGrafPtr inPort,
+  const Rect * inBounds) ;
+extern OSStatus
+QDAddRegionToDirtyRegion(
+  CGrafPtr inPort,
+  RgnHandle inRegion) ;
+extern OSStatus
+CreateCGContextForPort(
+  CGrafPtr inPort,
+  CGContextRef * outContext) ;
+extern OSStatus
+ClipCGContextToRegion(
+  CGContextRef gc,
+  const Rect * portRect,
+  RgnHandle region) ;
+extern OSStatus
+SyncCGContextOriginWithPort(
+  CGContextRef inContext,
+  CGrafPtr port) ;
+extern OSStatus
+QDBeginCGContext(
+  CGrafPtr inPort,
+  CGContextRef * outContext) ;
+extern OSStatus
+QDEndCGContext(
+  CGrafPtr inPort,
+  CGContextRef * inoutContext) ;
+typedef struct OpaqueQDRegionBitsRef* QDRegionBitsRef;
+extern QDRegionBitsRef
+QDSaveRegionBits(RgnHandle region) ;
+extern OSStatus
+QDRestoreRegionBits(
+  RgnHandle region,
+  QDRegionBitsRef regionBits) ;
+extern OSStatus
+QDDisposeRegionBits(QDRegionBitsRef regionBits) ;
+extern CGrafPtr
+CreateNewPortForCGDisplayID(UInt32 inCGDisplayID) ;
+extern void
+QDDisplayWaitCursor(Boolean forceWaitCursor) ;
+extern void
+QDSetPatternOrigin(Point origin) ;
+extern void
+QDGetPatternOrigin(Point * origin) ;
+extern Boolean
+QDIsNamedPixMapCursorRegistered(const char name[128]) ;
+extern OSStatus
+QDRegisterNamedPixMapCursor(
+  PixMapHandle crsrData,
+  PixMapHandle crsrMask,
+  Point hotSpot,
+  const char name[128]) ;
+extern OSStatus
+QDUnregisterNamedPixMapCursur(const char name[128]) ;
+extern OSStatus
+QDSetNamedPixMapCursor(const char name[128]) ;
+extern OSStatus
+QDSetCursorScale(float scale) ;
+
+
+
+
+enum {
+  kQDUseDefaultTextRendering = 0,
+
+  kQDUseTrueTypeScalerGlyphs = (1 << 0),
+  kQDUseCGTextRendering = (1 << 1),
+  kQDUseCGTextMetrics = (1 << 2),
+  kQDSupportedFlags = kQDUseTrueTypeScalerGlyphs | kQDUseCGTextRendering | kQDUseCGTextMetrics,
+  kQDDontChangeFlags = (long)0xFFFFFFFF
+};
+extern UInt32
+QDSwapTextFlags(UInt32 newFlags) ;
+extern UInt32
+QDSwapPortTextFlags(
+  CGrafPtr port,
+  UInt32 newFlags) ;
+extern SInt16
+LMGetScrVRes(void) ;
+extern void
+LMSetScrVRes(SInt16 value) ;
+extern SInt16
+LMGetScrHRes(void) ;
+extern void
+LMSetScrHRes(SInt16 value) ;
+extern GDHandle
+LMGetMainDevice(void) ;
+extern void
+LMSetMainDevice(GDHandle value) ;
+extern GDHandle
+LMGetDeviceList(void) ;
+extern void
+LMSetDeviceList(GDHandle value) ;
+extern Handle
+LMGetQDColors(void) ;
+extern void
+LMSetQDColors(Handle value) ;
+extern Handle
+LMGetWidthListHand(void) ;
+extern void
+LMSetWidthListHand(Handle value) ;
+extern UInt8
+LMGetHiliteMode(void) ;
+extern void
+LMSetHiliteMode(UInt8 value) ;
+extern Ptr
+LMGetWidthPtr(void) ;
+extern void
+LMSetWidthPtr(Ptr value) ;
+extern Handle
+LMGetWidthTabHandle(void) ;
+extern void
+LMSetWidthTabHandle(Handle value) ;
+extern SInt32
+LMGetLastSPExtra(void) ;
+extern void
+LMSetLastSPExtra(SInt32 value) ;
+extern Handle
+LMGetLastFOND(void) ;
+extern void
+LMSetLastFOND(Handle value) ;
+extern UInt8
+LMGetFractEnable(void) ;
+extern void
+LMSetFractEnable(UInt8 value) ;
+extern GDHandle
+LMGetTheGDevice(void) ;
+extern void
+LMSetTheGDevice(GDHandle value) ;
+extern void
+LMGetHiliteRGB(RGBColor * hiliteRGBValue) ;
+extern void
+LMSetHiliteRGB(const RGBColor * hiliteRGBValue) ;
+extern Boolean
+LMGetCursorNew(void) ;
+extern void
+LMSetCursorNew(Boolean value) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  pixPurgeBit = 0,
+  noNewDeviceBit = 1,
+  useTempMemBit = 2,
+  keepLocalBit = 3,
+  useDistantHdwrMemBit = 4,
+  useLocalHdwrMemBit = 5,
+  pixelsPurgeableBit = 6,
+  pixelsLockedBit = 7,
+  mapPixBit = 16,
+  newDepthBit = 17,
+  alignPixBit = 18,
+  newRowBytesBit = 19,
+  reallocPixBit = 20,
+  clipPixBit = 28,
+  stretchPixBit = 29,
+  ditherPixBit = 30,
+  gwFlagErrBit = 31
+};
+
+enum {
+  pixPurge = 1L << pixPurgeBit,
+  noNewDevice = 1L << noNewDeviceBit,
+  useTempMem = 1L << useTempMemBit,
+  keepLocal = 1L << keepLocalBit,
+  useDistantHdwrMem = 1L << useDistantHdwrMemBit,
+  useLocalHdwrMem = 1L << useLocalHdwrMemBit,
+  pixelsPurgeable = 1L << pixelsPurgeableBit,
+  pixelsLocked = 1L << pixelsLockedBit,
+  kAllocDirectDrawSurface = 1L << 14,
+  mapPix = 1L << mapPixBit,
+  newDepth = 1L << newDepthBit,
+  alignPix = 1L << alignPixBit,
+  newRowBytes = 1L << newRowBytesBit,
+  reallocPix = 1L << reallocPixBit,
+  clipPix = 1L << clipPixBit,
+  stretchPix = 1L << stretchPixBit,
+  ditherPix = 1L << ditherPixBit,
+  gwFlagErr = 1L << gwFlagErrBit
+};
+
+typedef unsigned long GWorldFlags;
+
+typedef CGrafPtr GWorldPtr;
+extern QDErr
+NewGWorld(
+  GWorldPtr * offscreenGWorld,
+  short PixelDepth,
+  const Rect * boundsRect,
+  CTabHandle cTable,
+  GDHandle aGDevice,
+  GWorldFlags flags) ;
+
+
+
+enum {
+  deviceIsIndirect = (1L << 0),
+  deviceNeedsLock = (1L << 1),
+  deviceIsStatic = (1L << 2),
+  deviceIsExternalBuffer = (1L << 3),
+  deviceIsDDSurface = (1L << 4),
+  deviceIsDCISurface = (1L << 5),
+  deviceIsGDISurface = (1L << 6),
+  deviceIsAScreen = (1L << 7),
+  deviceIsOverlaySurface = (1L << 8)
+};
+extern QDErr
+NewGWorldFromPtr(
+  GWorldPtr * offscreenGWorld,
+  unsigned long PixelFormat,
+  const Rect * boundsRect,
+  CTabHandle cTable,
+  GDHandle aGDevice,
+  GWorldFlags flags,
+  Ptr newBuffer,
+  long rowBytes) ;
+extern Boolean
+LockPixels(PixMapHandle pm) ;
+extern void
+UnlockPixels(PixMapHandle pm) ;
+extern GWorldFlags
+UpdateGWorld(
+  GWorldPtr * offscreenGWorld,
+  short pixelDepth,
+  const Rect * boundsRect,
+  CTabHandle cTable,
+  GDHandle aGDevice,
+  GWorldFlags flags) ;
+extern void
+DisposeGWorld(GWorldPtr offscreenGWorld) ;
+extern void
+GetGWorld(
+  CGrafPtr * port,
+  GDHandle * gdh) ;
+extern void
+SetGWorld(
+  CGrafPtr port,
+  GDHandle gdh) ;
+extern void
+CTabChanged(CTabHandle ctab) ;
+extern void
+PixPatChanged(PixPatHandle ppat) ;
+extern void
+PortChanged(GrafPtr port) ;
+extern void
+GDeviceChanged(GDHandle gdh) ;
+extern void
+AllowPurgePixels(PixMapHandle pm) ;
+extern void
+NoPurgePixels(PixMapHandle pm) ;
+extern GWorldFlags
+GetPixelsState(PixMapHandle pm) ;
+extern void
+SetPixelsState(
+  PixMapHandle pm,
+  GWorldFlags state) ;
+extern Ptr
+GetPixBaseAddr(PixMapHandle pm) ;
+extern long
+GetPixRowBytes(PixMapHandle pm) ;
+extern QDErr
+NewScreenBuffer(
+  const Rect * globalRect,
+  Boolean purgeable,
+  GDHandle * gdh,
+  PixMapHandle * offscreenPixMap) ;
+extern void
+DisposeScreenBuffer(PixMapHandle offscreenPixMap) ;
+extern GDHandle
+GetGWorldDevice(GWorldPtr offscreenGWorld) ;
+extern Boolean
+QDDone(GrafPtr port) ;
+extern long
+OffscreenVersion(void) ;
+extern QDErr
+NewTempScreenBuffer(
+  const Rect * globalRect,
+  Boolean purgeable,
+  GDHandle * gdh,
+  PixMapHandle * offscreenPixMap) ;
+extern Boolean
+PixMap32Bit(PixMapHandle pmHandle) ;
+extern PixMapHandle
+GetGWorldPixMap(GWorldPtr offscreenGWorld) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef struct QDPict* QDPictRef;
+extern QDPictRef
+QDPictCreateWithProvider(CGDataProviderRef provider) ;
+extern QDPictRef
+QDPictCreateWithURL(CFURLRef url) ;
+extern QDPictRef
+QDPictRetain(QDPictRef pictRef) ;
+extern void
+QDPictRelease(QDPictRef pictRef) ;
+extern CGRect
+QDPictGetBounds(QDPictRef pictRef) ;
+extern void
+QDPictGetResolution(
+  QDPictRef pictRef,
+  float * xRes,
+  float * yRes) ;
+extern OSStatus
+QDPictDrawToCGContext(
+  CGContextRef ctx,
+  CGRect rect,
+  QDPictRef pictRef) ;
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+enum {
+  systemFont = 0,
+  applFont = 1
+};
+
+enum {
+  kFMDefaultOptions = kNilOptions
+};
+
+
+enum {
+  kFMDefaultActivationContext = kFMDefaultOptions,
+  kFMGlobalActivationContext = 0x00000001,
+  kFMLocalActivationContext = kFMDefaultActivationContext
+};
+
+
+enum {
+  kFMDefaultIterationScope = kFMDefaultOptions,
+  kFMGlobalIterationScope = 0x00000001,
+  kFMLocalIterationScope = kFMDefaultIterationScope
+};
+
+
+
+enum {
+  kPlatformDefaultGuiFontID = applFont
+};
+
+enum {
+  commandMark = 17,
+  checkMark = 18,
+  diamondMark = 19,
+  appleMark = 20
+};
+
+enum {
+  propFont = 36864L,
+  prpFntH = 36865L,
+  prpFntW = 36866L,
+  prpFntHW = 36867L,
+  fixedFont = 45056L,
+  fxdFntH = 45057L,
+  fxdFntW = 45058L,
+  fxdFntHW = 45059L,
+  fontWid = 44208L
+};
+
+struct FMInput {
+  short family;
+  short size;
+  Style face;
+  Boolean needBits;
+  short device;
+  Point numer;
+  Point denom;
+};
+typedef struct FMInput FMInput;
+struct FMOutput {
+  short errNum;
+  Handle fontHandle;
+  UInt8 boldPixels;
+  UInt8 italicPixels;
+  UInt8 ulOffset;
+  UInt8 ulShadow;
+  UInt8 ulThick;
+  UInt8 shadowPixels;
+  SInt8 extra;
+  UInt8 ascent;
+  UInt8 descent;
+  UInt8 widMax;
+  SInt8 leading;
+  SInt8 curStyle;
+  Point numer;
+  Point denom;
+};
+typedef struct FMOutput FMOutput;
+typedef FMOutput * FMOutputPtr;
+typedef FMOutputPtr FMOutPtr;
+struct FMetricRec {
+  Fixed ascent;
+  Fixed descent;
+  Fixed leading;
+  Fixed widMax;
+  Handle wTabHandle;
+};
+typedef struct FMetricRec FMetricRec;
+typedef FMetricRec * FMetricRecPtr;
+typedef FMetricRecPtr * FMetricRecHandle;
+extern void
+GetFontName(
+  short familyID,
+  Str255 name) ;
+extern void
+GetFNum(
+  ConstStr255Param name,
+  short * familyID) ;
+extern Boolean
+RealFont(
+  short fontNum,
+  short size) ;
+extern FMOutPtr
+FMSwapFont(const FMInput * inRec) ;
+extern void
+SetFScaleDisable(Boolean fscaleDisable) ;
+extern void
+FontMetrics(FMetricRecPtr theMetrics) ;
+extern void
+SetFractEnable(Boolean fractEnable) ;
+extern short
+GetDefFontSize(void) ;
+extern Boolean
+IsOutline(
+  Point numer,
+  Point denom) ;
+extern void
+SetOutlinePreferred(Boolean outlinePreferred) ;
+extern Boolean
+GetOutlinePreferred(void) ;
+extern OSErr
+OutlineMetrics(
+  short byteCount,
+  const void * textPtr,
+  Point numer,
+  Point denom,
+  short * yMax,
+  short * yMin,
+  FixedPtr awArray,
+  FixedPtr lsbArray,
+  RectPtr boundsArray) ;
+extern void
+SetPreserveGlyph(Boolean preserveGlyph) ;
+extern Boolean
+GetPreserveGlyph(void) ;
+extern short
+GetSysFont(void) ;
+extern short
+GetAppFont(void) ;
+extern OSStatus
+SetAntiAliasedTextEnabled(
+  Boolean iEnable,
+  SInt16 iMinFontSize) ;
+extern Boolean
+IsAntiAliasedTextEnabled(SInt16 * oMinFontSize) ;
+extern void
+QDTextBounds(
+  short byteCount,
+  const void * textAddr,
+  Rect * bounds) ;
+extern OSErr
+FetchFontInfo(
+  SInt16 fontID,
+  SInt16 fontSize,
+  SInt16 fontStyle,
+  FontInfo * info) ;
+extern OSStatus
+FMCreateFontFamilyIterator(
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions,
+  FMFontFamilyIterator * ioIterator) ;
+extern OSStatus
+FMDisposeFontFamilyIterator(FMFontFamilyIterator * ioIterator) ;
+extern OSStatus
+FMResetFontFamilyIterator(
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions,
+  FMFontFamilyIterator * ioIterator) ;
+extern OSStatus
+FMGetNextFontFamily(
+  FMFontFamilyIterator * ioIterator,
+  FMFontFamily * oFontFamily) ;
+extern OSStatus
+FMCreateFontIterator(
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions,
+  FMFontIterator * ioIterator) ;
+extern OSStatus
+FMDisposeFontIterator(FMFontIterator * ioIterator) ;
+extern OSStatus
+FMResetFontIterator(
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions,
+  FMFontIterator * ioIterator) ;
+extern OSStatus
+FMGetNextFont(
+  FMFontIterator * ioIterator,
+  FMFont * oFont) ;
+extern OSStatus
+FMCreateFontFamilyInstanceIterator(
+  FMFontFamily iFontFamily,
+  FMFontFamilyInstanceIterator * ioIterator) ;
+extern OSStatus
+FMDisposeFontFamilyInstanceIterator(FMFontFamilyInstanceIterator * ioIterator) ;
+extern OSStatus
+FMResetFontFamilyInstanceIterator(
+  FMFontFamily iFontFamily,
+  FMFontFamilyInstanceIterator * ioIterator) ;
+extern OSStatus
+FMGetNextFontFamilyInstance(
+  FMFontFamilyInstanceIterator * ioIterator,
+  FMFont * oFont,
+  FMFontStyle * oStyle,
+  FMFontSize * oSize) ;
+extern FMFontFamily
+FMGetFontFamilyFromName(ConstStr255Param iName) ;
+extern OSStatus
+FMGetFontFamilyName(
+  FMFontFamily iFontFamily,
+  Str255 oName) ;
+extern OSStatus
+FMGetFontFamilyTextEncoding(
+  FMFontFamily iFontFamily,
+  TextEncoding * oTextEncoding) ;
+extern OSStatus
+FMGetFontFamilyGeneration(
+  FMFontFamily iFontFamily,
+  FMGeneration * oGeneration) ;
+extern OSStatus
+FMGetFontFormat(
+  FMFont iFont,
+  FourCharCode * oFormat) ;
+extern OSStatus
+FMGetFontTableDirectory(
+  FMFont iFont,
+  ByteCount iLength,
+  void * iBuffer,
+  ByteCount * oActualLength) ;
+extern OSStatus
+FMGetFontTable(
+  FMFont iFont,
+  FourCharCode iTag,
+  ByteOffset iOffset,
+  ByteCount iLength,
+  void * iBuffer,
+  ByteCount * oActualLength) ;
+extern OSStatus
+FMGetFontGeneration(
+  FMFont iFont,
+  FMGeneration * oGeneration) ;
+extern OSStatus
+FMGetFontContainer(
+  FMFont iFont,
+  FSSpec * oFontContainer) ;
+extern OSStatus
+FMGetFontFromFontFamilyInstance(
+  FMFontFamily iFontFamily,
+  FMFontStyle iStyle,
+  FMFont * oFont,
+  FMFontStyle * oIntrinsicStyle) ;
+extern OSStatus
+FMGetFontFamilyInstanceFromFont(
+  FMFont iFont,
+  FMFontFamily * oFontFamily,
+  FMFontStyle * oStyle) ;
+extern ATSFontRef
+FMGetATSFontRefFromFont(FMFont iFont) ;
+extern ATSFontFamilyRef
+FMGetATSFontFamilyRefFromFontFamily(FMFontFamily iFamily) ;
+extern FMFont
+FMGetFontFromATSFontRef(ATSFontRef iFont) ;
+extern FMFontFamily
+FMGetFontFamilyFromATSFontFamilyRef(ATSFontFamilyRef iFamily) ;
+extern OSStatus
+FMActivateFonts(
+  const FSSpec * iFontContainer,
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions) ;
+extern OSStatus
+FMDeactivateFonts(
+  const FSSpec * iFontContainer,
+  const FMFilter * iFilter,
+  void * iRefCon,
+  OptionBits iOptions) ;
+extern FMGeneration
+FMGetGeneration(void) ;
+extern OSStatus
+FMGetFontContainerFromFontFamilyInstance(
+  FMFontFamily iFontFamily,
+  FMFontStyle iStyle,
+  FMFontSize iFontSize,
+  FSSpec * oFontContainer) ;
+extern OSStatus
+FMGetFontFamilyResource(
+  FMFontFamily iFontFamily,
+  FMFontStyle iFontStyle,
+  FMFontSize iFontSize,
+  ByteCount iBufferSize,
+  void * ioBuffer,
+  ByteCount * oSize) ;
+
+
+
+typedef FMFontFamily FontFamilyID;
+typedef FMFontSize FontPointSize;
+
+
+
+
+
+
+enum {
+  kFMUseGlobalScopeOption = 0x00000001
+};
+
+enum {
+  kFontIDNewYork = 2,
+  kFontIDGeneva = 3,
+  kFontIDMonaco = 4,
+  kFontIDVenice = 5,
+  kFontIDLondon = 6,
+  kFontIDAthens = 7,
+  kFontIDSanFrancisco = 8,
+  kFontIDToronto = 9,
+  kFontIDCairo = 11,
+  kFontIDLosAngeles = 12,
+  kFontIDTimes = 20,
+  kFontIDHelvetica = 21,
+  kFontIDCourier = 22,
+  kFontIDSymbol = 23,
+  kFontIDMobile = 24
+};
+struct WidEntry {
+  short widStyle;
+};
+typedef struct WidEntry WidEntry;
+struct WidTable {
+  short numWidths;
+};
+typedef struct WidTable WidTable;
+struct AsscEntry {
+  short fontSize;
+  short fontStyle;
+  short fontID;
+};
+typedef struct AsscEntry AsscEntry;
+struct FontAssoc {
+  short numAssoc;
+};
+typedef struct FontAssoc FontAssoc;
+struct StyleTable {
+  short fontClass;
+  long offset;
+  long reserved;
+  char indexes[48];
+};
+typedef struct StyleTable StyleTable;
+struct NameTable {
+  short stringCount;
+  Str255 baseFontName;
+};
+typedef struct NameTable NameTable;
+struct KernPair {
+  char kernFirst;
+  char kernSecond;
+  short kernWidth;
+};
+typedef struct KernPair KernPair;
+struct KernEntry {
+  short kernStyle;
+  short kernLength;
+};
+typedef struct KernEntry KernEntry;
+struct KernTable {
+  short numKerns;
+};
+typedef struct KernTable KernTable;
+struct WidthTable {
+  Fixed tabData[256];
+  Handle tabFont;
+  long sExtra;
+  long style;
+  short fID;
+  short fSize;
+  short face;
+  short device;
+  Point inNumer;
+  Point inDenom;
+  short aFID;
+  Handle fHand;
+  Boolean usedFam;
+  UInt8 aFace;
+  short vOutput;
+  short hOutput;
+  short vFactor;
+  short hFactor;
+  short aSize;
+  short tabSize;
+};
+typedef struct WidthTable WidthTable;
+typedef WidthTable * WidthTablePtr;
+typedef WidthTablePtr * WidthTableHdl;
+struct FamRec {
+  short ffFlags;
+  short ffFamID;
+  short ffFirstChar;
+  short ffLastChar;
+  short ffAscent;
+  short ffDescent;
+  short ffLeading;
+  short ffWidMax;
+  long ffWTabOff;
+  long ffKernOff;
+  long ffStylOff;
+  short ffProperty[9];
+  short ffIntl[2];
+  short ffVersion;
+};
+typedef struct FamRec FamRec;
+struct FontRec {
+  short fontType;
+  short firstChar;
+  short lastChar;
+  short widMax;
+  short kernMax;
+  short nDescent;
+  short fRectWidth;
+  short fRectHeight;
+  unsigned short owTLoc;
+  short ascent;
+  short descent;
+  short leading;
+  short rowWords;
+};
+typedef struct FontRec FontRec;
+typedef FontRec * FontRecPtr;
+typedef FontRecPtr * FontRecHdl;
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  pmCourteous = 0,
+  pmDithered = 0x0001,
+  pmTolerant = 0x0002,
+  pmAnimated = 0x0004,
+  pmExplicit = 0x0008,
+  pmWhite = 0x0010,
+  pmBlack = 0x0020,
+  pmInhibitG2 = 0x0100,
+  pmInhibitC2 = 0x0200,
+  pmInhibitG4 = 0x0400,
+  pmInhibitC4 = 0x0800,
+  pmInhibitG8 = 0x1000,
+  pmInhibitC8 = 0x2000,
+  pmNoUpdates = 0x8000,
+  pmBkUpdates = 0xA000,
+  pmFgUpdates = 0xC000,
+  pmAllUpdates = 0xE000
+};
+
+struct ColorInfo {
+  RGBColor ciRGB;
+  short ciUsage;
+  short ciTolerance;
+  short ciDataFields[3];
+};
+typedef struct ColorInfo ColorInfo;
+typedef ColorInfo * ColorInfoPtr;
+typedef ColorInfoPtr * ColorInfoHandle;
+struct Palette {
+  short pmEntries;
+  short pmDataFields[7];
+  ColorInfo pmInfo[1];
+};
+typedef struct Palette Palette;
+typedef Palette * PalettePtr;
+typedef PalettePtr * PaletteHandle;
+extern void
+InitPalettes(void) ;
+extern PaletteHandle
+NewPalette(
+  short entries,
+  CTabHandle srcColors,
+  short srcUsage,
+  short srcTolerance) ;
+extern PaletteHandle
+GetNewPalette(short PaletteID) ;
+extern void
+DisposePalette(PaletteHandle srcPalette) ;
+extern void
+ActivatePalette(WindowRef srcWindow) ;
+extern void
+SetPalette(
+  WindowRef dstWindow,
+  PaletteHandle srcPalette,
+  Boolean cUpdates) ;
+extern void
+NSetPalette(
+  WindowRef dstWindow,
+  PaletteHandle srcPalette,
+  short nCUpdates) ;
+extern PaletteHandle
+GetPalette(WindowRef srcWindow) ;
+extern void
+CopyPalette(
+  PaletteHandle srcPalette,
+  PaletteHandle dstPalette,
+  short srcEntry,
+  short dstEntry,
+  short dstLength) ;
+extern void
+PmForeColor(short dstEntry) ;
+extern void
+PmBackColor(short dstEntry) ;
+extern void
+AnimateEntry(
+  WindowRef dstWindow,
+  short dstEntry,
+  const RGBColor * srcRGB) ;
+extern void
+AnimatePalette(
+  WindowRef dstWindow,
+  CTabHandle srcCTab,
+  short srcIndex,
+  short dstEntry,
+  short dstLength) ;
+extern void
+GetEntryColor(
+  PaletteHandle srcPalette,
+  short srcEntry,
+  RGBColor * dstRGB) ;
+extern void
+SetEntryColor(
+  PaletteHandle dstPalette,
+  short dstEntry,
+  const RGBColor * srcRGB) ;
+extern void
+GetEntryUsage(
+  PaletteHandle srcPalette,
+  short srcEntry,
+  short * dstUsage,
+  short * dstTolerance) ;
+extern void
+SetEntryUsage(
+  PaletteHandle dstPalette,
+  short dstEntry,
+  short srcUsage,
+  short srcTolerance) ;
+extern void
+CTab2Palette(
+  CTabHandle srcCTab,
+  PaletteHandle dstPalette,
+  short srcUsage,
+  short srcTolerance) ;
+extern void
+Palette2CTab(
+  PaletteHandle srcPalette,
+  CTabHandle dstCTab) ;
+extern long
+Entry2Index(short entry) ;
+extern void
+RestoreDeviceClut(GDHandle gd) ;
+extern void
+ResizePalette(
+  PaletteHandle p,
+  short size) ;
+extern void
+SaveFore(ColorSpec * c) ;
+extern void
+SaveBack(ColorSpec * c) ;
+extern void
+RestoreFore(const ColorSpec * c) ;
+extern void
+RestoreBack(const ColorSpec * c) ;
+extern OSErr
+SetDepth(
+  GDHandle gd,
+  short depth,
+  short whichFlags,
+  short flags) ;
+extern short
+HasDepth(
+  GDHandle gd,
+  short depth,
+  short whichFlags,
+  short flags) ;
+extern short
+PMgrVersion(void) ;
+extern void
+SetPaletteUpdates(
+  PaletteHandle p,
+  short updates) ;
+extern short
+GetPaletteUpdates(PaletteHandle p) ;
+extern Boolean
+GetGray(
+  GDHandle device,
+  const RGBColor * backGround,
+  RGBColor * foreGround) ;
+
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  returnColorTable = 0x0001,
+  returnPalette = 0x0002,
+  recordComments = 0x0004,
+  recordFontInfo = 0x0008,
+  suppressBlackAndWhite = 0x0010
+};
+
+enum {
+
+  systemMethod = 0,
+  popularMethod = 1,
+  medianMethod = 2
+};
+
+enum {
+
+  ColorBankIsCustom = -1,
+  ColorBankIsExactAnd555 = 0,
+  ColorBankIs555 = 1
+};
+
+typedef long PictInfoID;
+struct CommentSpec {
+  short count;
+  short ID;
+};
+typedef struct CommentSpec CommentSpec;
+typedef CommentSpec * CommentSpecPtr;
+typedef CommentSpecPtr * CommentSpecHandle;
+struct FontSpec {
+  short pictFontID;
+  short sysFontID;
+  long size[4];
+  short style;
+  long nameOffset;
+};
+typedef struct FontSpec FontSpec;
+typedef FontSpec * FontSpecPtr;
+typedef FontSpecPtr * FontSpecHandle;
+struct PictInfo {
+  short version;
+  long uniqueColors;
+  PaletteHandle thePalette;
+  CTabHandle theColorTable;
+  Fixed hRes;
+  Fixed vRes;
+  short depth;
+  Rect sourceRect;
+  long textCount;
+  long lineCount;
+  long rectCount;
+  long rRectCount;
+  long ovalCount;
+  long arcCount;
+  long polyCount;
+  long regionCount;
+  long bitMapCount;
+  long pixMapCount;
+  long commentCount;
+  long uniqueComments;
+  CommentSpecHandle commentHandle;
+  long uniqueFonts;
+  FontSpecHandle fontHandle;
+  Handle fontNamesHandle;
+  long reserved1;
+  long reserved2;
+};
+typedef struct PictInfo PictInfo;
+typedef PictInfo * PictInfoPtr;
+typedef PictInfoPtr * PictInfoHandle;
+typedef OSErr ( * InitPickMethodProcPtr)(SInt16 colorsRequested, UInt32 *dataRef, SInt16 *colorBankType);
+typedef OSErr ( * RecordColorsProcPtr)(UInt32 dataRef, RGBColor *colorsArray, SInt32 colorCount, SInt32 *uniqueColors);
+typedef OSErr ( * CalcColorTableProcPtr)(UInt32 dataRef, SInt16 colorsRequested, void *colorBankPtr, CSpecArray resultPtr);
+typedef OSErr ( * DisposeColorPickMethodProcPtr)(UInt32 dataRef);
+typedef InitPickMethodProcPtr InitPickMethodUPP;
+typedef RecordColorsProcPtr RecordColorsUPP;
+typedef CalcColorTableProcPtr CalcColorTableUPP;
+typedef DisposeColorPickMethodProcPtr DisposeColorPickMethodUPP;
+extern InitPickMethodUPP
+NewInitPickMethodUPP(InitPickMethodProcPtr userRoutine) ;
+extern RecordColorsUPP
+NewRecordColorsUPP(RecordColorsProcPtr userRoutine) ;
+extern CalcColorTableUPP
+NewCalcColorTableUPP(CalcColorTableProcPtr userRoutine) ;
+extern DisposeColorPickMethodUPP
+NewDisposeColorPickMethodUPP(DisposeColorPickMethodProcPtr userRoutine) ;
+extern void
+DisposeInitPickMethodUPP(InitPickMethodUPP userUPP) ;
+extern void
+DisposeRecordColorsUPP(RecordColorsUPP userUPP) ;
+extern void
+DisposeCalcColorTableUPP(CalcColorTableUPP userUPP) ;
+extern void
+DisposeDisposeColorPickMethodUPP(DisposeColorPickMethodUPP userUPP) ;
+extern OSErr
+InvokeInitPickMethodUPP(
+  SInt16 colorsRequested,
+  UInt32 * dataRef,
+  SInt16 * colorBankType,
+  InitPickMethodUPP userUPP) ;
+extern OSErr
+InvokeRecordColorsUPP(
+  UInt32 dataRef,
+  RGBColor * colorsArray,
+  SInt32 colorCount,
+  SInt32 * uniqueColors,
+  RecordColorsUPP userUPP) ;
+extern OSErr
+InvokeCalcColorTableUPP(
+  UInt32 dataRef,
+  SInt16 colorsRequested,
+  void * colorBankPtr,
+  CSpecArray resultPtr,
+  CalcColorTableUPP userUPP) ;
+extern OSErr
+InvokeDisposeColorPickMethodUPP(
+  UInt32 dataRef,
+  DisposeColorPickMethodUPP userUPP) ;
+extern OSErr
+GetPictInfo(
+  PicHandle thePictHandle,
+  PictInfo * thePictInfo,
+  short verb,
+  short colorsRequested,
+  short colorPickMethod,
+  short version) ;
+extern OSErr
+GetPixMapInfo(
+  PixMapHandle thePixMapHandle,
+  PictInfo * thePictInfo,
+  short verb,
+  short colorsRequested,
+  short colorPickMethod,
+  short version) ;
+extern OSErr
+NewPictInfo(
+  PictInfoID * thePictInfoID,
+  short verb,
+  short colorsRequested,
+  short colorPickMethod,
+  short version) ;
+extern OSErr
+RecordPictInfo(
+  PictInfoID thePictInfoID,
+  PicHandle thePictHandle) ;
+extern OSErr
+RecordPixMapInfo(
+  PictInfoID thePictInfoID,
+  PixMapHandle thePixMapHandle) ;
+extern OSErr
+RetrievePictInfo(
+  PictInfoID thePictInfoID,
+  PictInfo * thePictInfo,
+  short colorsRequested) ;
+extern OSErr
+DisposePictInfo(PictInfoID thePictInfoID) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef Fixed ATSUTextMeasurement;
+
+
+
+
+
+
+
+typedef FMFont ATSUFontID;
+
+
+
+
+typedef UInt16 ATSUFontFeatureType;
+typedef UInt16 ATSUFontFeatureSelector;
+
+
+
+
+typedef FourCharCode ATSUFontVariationAxis;
+typedef Fixed ATSUFontVariationValue;
+
+
+
+
+
+typedef struct OpaqueATSUTextLayout* ATSUTextLayout;
+
+
+
+
+
+typedef struct OpaqueATSUStyle* ATSUStyle;
+
+
+
+
+
+typedef struct OpaqueATSUFontFallbacks* ATSUFontFallbacks;
+typedef UInt32 ATSUAttributeTag;
+enum {
+
+  kATSULineWidthTag = 1L,
+
+  kATSULineRotationTag = 2L,
+
+  kATSULineDirectionTag = 3L,
+
+  kATSULineJustificationFactorTag = 4L,
+
+  kATSULineFlushFactorTag = 5L,
+
+  kATSULineBaselineValuesTag = 6L,
+
+  kATSULineLayoutOptionsTag = 7L,
+
+  kATSULineAscentTag = 8L,
+
+  kATSULineDescentTag = 9L,
+
+  kATSULineLangRegionTag = 10L,
+
+  kATSULineTextLocatorTag = 11L,
+
+  kATSULineTruncationTag = 12L,
+
+  kATSULineFontFallbacksTag = 13L,
+
+  kATSULayoutOperationOverrideTag = 15L,
+
+  kATSUMaxLineTag = 16L,
+
+  kATSULineLanguageTag = 10L,
+
+  kATSUCGContextTag = 32767L,
+
+
+
+  kATSUQDBoldfaceTag = 256L,
+
+  kATSUQDItalicTag = 257L,
+
+  kATSUQDUnderlineTag = 258L,
+
+  kATSUQDCondensedTag = 259L,
+
+  kATSUQDExtendedTag = 260L,
+
+
+  kATSUFontTag = 261L,
+
+  kATSUSizeTag = 262L,
+
+  kATSUColorTag = 263L,
+
+
+  kATSULangRegionTag = 264L,
+
+  kATSUVerticalCharacterTag = 265L,
+
+  kATSUImposeWidthTag = 266L,
+
+  kATSUBeforeWithStreamShiftTag = 267L,
+
+  kATSUAfterWithStreamShiftTag = 268L,
+
+  kATSUCrossStreamShiftTag = 269L,
+
+  kATSUTrackingTag = 270L,
+
+  kATSUHangingInhibitFactorTag = 271L,
+
+  kATSUKerningInhibitFactorTag = 272L,
+
+  kATSUDecompositionFactorTag = 273L,
+
+  kATSUBaselineClassTag = 274L,
+
+  kATSUPriorityJustOverrideTag = 275L,
+
+  kATSUNoLigatureSplitTag = 276L,
+
+  kATSUNoCaretAngleTag = 277L,
+
+  kATSUSuppressCrossKerningTag = 278L,
+
+  kATSUNoOpticalAlignmentTag = 279L,
+
+  kATSUForceHangingTag = 280L,
+
+  kATSUNoSpecialJustificationTag = 281L,
+
+  kATSUStyleTextLocatorTag = 282L,
+
+  kATSUStyleRenderingOptionsTag = 283L,
+
+  kATSUAscentTag = 284L,
+
+  kATSUDescentTag = 285L,
+
+  kATSULeadingTag = 286L,
+
+  kATSUGlyphSelectorTag = 287L,
+
+  kATSURGBAlphaColorTag = 288L,
+
+  kATSUFontMatrixTag = 289L,
+
+  kATSUMaxStyleTag = 290L,
+
+  kATSULanguageTag = 264L,
+
+  kATSUMaxATSUITagValue = 65535L
+};
+
+
+
+
+
+
+typedef void * ATSUAttributeValuePtr;
+typedef const void * ConstATSUAttributeValuePtr;
+struct ATSUAttributeInfo {
+  ATSUAttributeTag fTag;
+  ByteCount fValueSize;
+};
+typedef struct ATSUAttributeInfo ATSUAttributeInfo;
+struct ATSUCaret {
+  Fixed fX;
+  Fixed fY;
+  Fixed fDeltaX;
+  Fixed fDeltaY;
+};
+typedef struct ATSUCaret ATSUCaret;
+
+
+
+
+
+
+typedef UInt16 ATSUCursorMovementType;
+enum {
+  kATSUByCharacter = 0,
+  kATSUByTypographicCluster = 1,
+  kATSUByWord = 2,
+  kATSUByCharacterCluster = 3,
+  kATSUByCluster = 1
+};
+
+
+
+
+
+typedef UInt32 ATSULineTruncation;
+enum {
+  kATSUTruncateNone = 0,
+  kATSUTruncateStart = 1,
+  kATSUTruncateEnd = 2,
+  kATSUTruncateMiddle = 3,
+  kATSUTruncateSpecificationMask = 0x00000007,
+
+  kATSUTruncFeatNoSquishing = 0x00000008
+};
+
+
+
+
+
+
+typedef UInt16 ATSUVerticalCharacterType;
+enum {
+  kATSUStronglyHorizontal = 0,
+  kATSUStronglyVertical = 1
+};
+
+
+
+
+
+
+
+typedef UInt16 ATSUStyleComparison;
+enum {
+  kATSUStyleUnequal = 0,
+  kATSUStyleContains = 1,
+  kATSUStyleEquals = 2,
+  kATSUStyleContainedBy = 3
+};
+typedef UInt16 ATSUFontFallbackMethod;
+enum {
+  kATSUDefaultFontFallbacks = 0,
+  kATSULastResortOnlyFallback = 1,
+  kATSUSequentialFallbacksPreferred = 2,
+  kATSUSequentialFallbacksExclusive = 3
+};
+typedef UInt16 ATSUTabType;
+enum {
+  kATSULeftTab = 0,
+  kATSUCenterTab = 1,
+  kATSURightTab = 2,
+  kATSUNumberTabTypes = 3
+};
+
+
+
+
+
+
+struct ATSUTab {
+  ATSUTextMeasurement tabPosition;
+  ATSUTabType tabType;
+};
+typedef struct ATSUTab ATSUTab;
+
+
+
+
+
+
+typedef UInt16 GlyphCollection;
+enum {
+  kGlyphCollectionGID = 0,
+  kGlyphCollectionAdobeCNS1 = 1,
+  kGlyphCollectionAdobeGB1 = 2,
+  kGlyphCollectionAdobeJapan1 = 3,
+  kGlyphCollectionAdobeJapan2 = 4,
+  kGlyphCollectionAdobeKorea1 = 5,
+  kGlyphCollectionUnspecified = 0xFF
+};
+
+
+
+
+
+
+struct ATSUGlyphSelector {
+  GlyphCollection collection;
+  GlyphID glyphID;
+};
+typedef struct ATSUGlyphSelector ATSUGlyphSelector;
+struct ATSUGlyphInfo {
+  GlyphID glyphID;
+  UInt16 reserved;
+  UInt32 layoutFlags;
+  UniCharArrayOffset charIndex;
+  ATSUStyle style;
+  Float32 deltaY;
+  Float32 idealX;
+  SInt16 screenX;
+  SInt16 caretX;
+};
+typedef struct ATSUGlyphInfo ATSUGlyphInfo;
+struct ATSUGlyphInfoArray {
+  ATSUTextLayout layout;
+  ItemCount numGlyphs;
+  ATSUGlyphInfo glyphs[1];
+};
+typedef struct ATSUGlyphInfoArray ATSUGlyphInfoArray;
+
+
+
+typedef UInt32 ATSUHighlightMethod;
+enum {
+  kInvertHighlighting = 0,
+  kRedrawHighlighting = 1
+};
+
+typedef UInt32 ATSUBackgroundDataType;
+enum {
+  kATSUBackgroundColor = 0,
+  kATSUBackgroundCallback = 1
+};
+
+struct ATSURGBAlphaColor {
+  float red;
+  float green;
+  float blue;
+  float alpha;
+};
+typedef struct ATSURGBAlphaColor ATSURGBAlphaColor;
+typedef ATSURGBAlphaColor ATSUBackgroundColor;
+typedef Boolean ( * RedrawBackgroundProcPtr)(ATSUTextLayout iLayout, UniCharArrayOffset iTextOffset, UniCharCount iTextLength, ATSTrapezoid iUnhighlightArea[], ItemCount iTrapezoidCount);
+typedef RedrawBackgroundProcPtr RedrawBackgroundUPP;
+extern RedrawBackgroundUPP
+NewRedrawBackgroundUPP(RedrawBackgroundProcPtr userRoutine) ;
+extern void
+DisposeRedrawBackgroundUPP(RedrawBackgroundUPP userUPP) ;
+extern Boolean
+InvokeRedrawBackgroundUPP(
+  ATSUTextLayout iLayout,
+  UniCharArrayOffset iTextOffset,
+  UniCharCount iTextLength,
+  ATSTrapezoid iUnhighlightArea[],
+  ItemCount iTrapezoidCount,
+  RedrawBackgroundUPP userUPP) ;
+
+union ATSUBackgroundData {
+  ATSUBackgroundColor backgroundColor;
+  RedrawBackgroundUPP backgroundUPP;
+};
+typedef union ATSUBackgroundData ATSUBackgroundData;
+struct ATSUUnhighlightData {
+  ATSUBackgroundDataType dataType;
+  ATSUBackgroundData unhighlightData;
+};
+typedef struct ATSUUnhighlightData ATSUUnhighlightData;
+
+
+
+
+enum {
+  kATSULeftToRightBaseDirection = 0,
+  kATSURightToLeftBaseDirection = 1
+};
+enum {
+  kATSUInvalidFontID = 0
+};
+
+
+enum {
+  kATSUUseLineControlWidth = 0x7FFFFFFF
+};
+
+
+enum {
+  kATSUNoSelector = 0x0000FFFF
+};
+
+
+enum {
+  kATSUUseGrafPortPenLoc = (unsigned long)0xFFFFFFFF,
+  kATSUClearAll = (unsigned long)0xFFFFFFFF
+};
+
+
+enum {
+  kATSUFromTextBeginning = (unsigned long)0xFFFFFFFF,
+  kATSUToTextEnd = (unsigned long)0xFFFFFFFF
+};
+extern OSStatus
+ATSUCopyToHandle(
+  ATSUStyle iStyle,
+  Handle oStyleHandle) ;
+extern OSStatus
+ATSUPasteFromHandle(
+  ATSUStyle iStyle,
+  Handle iStyleHandle) ;
+extern OSStatus
+ATSUCreateFontFallbacks(ATSUFontFallbacks * oFontFallback) ;
+extern OSStatus
+ATSUDisposeFontFallbacks(ATSUFontFallbacks iFontFallbacks) ;
+extern OSStatus
+ATSUSetObjFontFallbacks(
+  ATSUFontFallbacks iFontFallbacks,
+  ItemCount iFontFallbacksCount,
+  const ATSUFontID iFonts[],
+  ATSUFontFallbackMethod iFontFallbackMethod) ;
+extern OSStatus
+ATSUGetObjFontFallbacks(
+  ATSUFontFallbacks iFontFallbacks,
+  ItemCount iMaxFontFallbacksCount,
+  ATSUFontID oFonts[],
+  ATSUFontFallbackMethod * oFontFallbackMethod,
+  ItemCount * oActualFallbacksCount) ;
+extern OSStatus
+ATSUCreateStyle(ATSUStyle * oStyle) ;
+extern OSStatus
+ATSUCreateAndCopyStyle(
+  ATSUStyle iStyle,
+  ATSUStyle * oStyle) ;
+extern OSStatus
+ATSUDisposeStyle(ATSUStyle iStyle) ;
+extern OSStatus
+ATSUSetStyleRefCon(
+  ATSUStyle iStyle,
+  UInt32 iRefCon) ;
+extern OSStatus
+ATSUGetStyleRefCon(
+  ATSUStyle iStyle,
+  UInt32 * oRefCon) ;
+extern OSStatus
+ATSUCompareStyles(
+  ATSUStyle iFirstStyle,
+  ATSUStyle iSecondStyle,
+  ATSUStyleComparison * oComparison) ;
+extern OSStatus
+ATSUCopyAttributes(
+  ATSUStyle iSourceStyle,
+  ATSUStyle iDestinationStyle) ;
+extern OSStatus
+ATSUOverwriteAttributes(
+  ATSUStyle iSourceStyle,
+  ATSUStyle iDestinationStyle) ;
+extern OSStatus
+ATSUUnderwriteAttributes(
+  ATSUStyle iSourceStyle,
+  ATSUStyle iDestinationStyle) ;
+extern OSStatus
+ATSUClearStyle(ATSUStyle iStyle) ;
+extern OSStatus
+ATSUStyleIsEmpty(
+  ATSUStyle iStyle,
+  Boolean * oIsClear) ;
+extern OSStatus
+ATSUCalculateBaselineDeltas(
+  ATSUStyle iStyle,
+  BslnBaselineClass iBaselineClass,
+  BslnBaselineRecord oBaselineDeltas) ;
+extern OSStatus
+ATSUSetAttributes(
+  ATSUStyle iStyle,
+  ItemCount iAttributeCount,
+  const ATSUAttributeTag iTag[],
+  const ByteCount iValueSize[],
+  const ATSUAttributeValuePtr iValue[]) ;
+extern OSStatus
+ATSUGetAttribute(
+  ATSUStyle iStyle,
+  ATSUAttributeTag iTag,
+  ByteCount iExpectedValueSize,
+  ATSUAttributeValuePtr oValue,
+  ByteCount * oActualValueSize) ;
+extern OSStatus
+ATSUGetAllAttributes(
+  ATSUStyle iStyle,
+  ATSUAttributeInfo oAttributeInfoArray[],
+  ItemCount iTagValuePairArraySize,
+  ItemCount * oTagValuePairCount) ;
+extern OSStatus
+ATSUClearAttributes(
+  ATSUStyle iStyle,
+  ItemCount iTagCount,
+  const ATSUAttributeTag iTag[]) ;
+extern OSStatus
+ATSUSetFontFeatures(
+  ATSUStyle iStyle,
+  ItemCount iFeatureCount,
+  const ATSUFontFeatureType iType[],
+  const ATSUFontFeatureSelector iSelector[]) ;
+extern OSStatus
+ATSUGetFontFeature(
+  ATSUStyle iStyle,
+  ItemCount iFeatureIndex,
+  ATSUFontFeatureType * oFeatureType,
+  ATSUFontFeatureSelector * oFeatureSelector) ;
+extern OSStatus
+ATSUGetAllFontFeatures(
+  ATSUStyle iStyle,
+  ItemCount iMaximumFeatureCount,
+  ATSUFontFeatureType oFeatureType[],
+  ATSUFontFeatureSelector oFeatureSelector[],
+  ItemCount * oActualFeatureCount) ;
+extern OSStatus
+ATSUClearFontFeatures(
+  ATSUStyle iStyle,
+  ItemCount iFeatureCount,
+  const ATSUFontFeatureType iType[],
+  const ATSUFontFeatureSelector iSelector[]) ;
+extern OSStatus
+ATSUSetVariations(
+  ATSUStyle iStyle,
+  ItemCount iVariationCount,
+  const ATSUFontVariationAxis iAxes[],
+  const ATSUFontVariationValue iValue[]) ;
+extern OSStatus
+ATSUGetFontVariationValue(
+  ATSUStyle iStyle,
+  ATSUFontVariationAxis iFontVariationAxis,
+  ATSUFontVariationValue * oFontVariationValue) ;
+extern OSStatus
+ATSUGetAllFontVariations(
+  ATSUStyle iStyle,
+  ItemCount iVariationCount,
+  ATSUFontVariationAxis oVariationAxes[],
+  ATSUFontVariationValue oFontVariationValues[],
+  ItemCount * oActualVariationCount) ;
+extern OSStatus
+ATSUClearFontVariations(
+  ATSUStyle iStyle,
+  ItemCount iAxisCount,
+  const ATSUFontVariationAxis iAxis[]) ;
+extern OSStatus
+ATSUCreateTextLayout(ATSUTextLayout * oTextLayout) ;
+extern OSStatus
+ATSUCreateAndCopyTextLayout(
+  ATSUTextLayout iTextLayout,
+  ATSUTextLayout * oTextLayout) ;
+extern OSStatus
+ATSUCreateTextLayoutWithTextPtr(
+  ConstUniCharArrayPtr iText,
+  UniCharArrayOffset iTextOffset,
+  UniCharCount iTextLength,
+  UniCharCount iTextTotalLength,
+  ItemCount iNumberOfRuns,
+  const UniCharCount iRunLengths[],
+  ATSUStyle iStyles[],
+  ATSUTextLayout * oTextLayout) ;
+extern OSStatus
+ATSUCreateTextLayoutWithTextHandle(
+  UniCharArrayHandle iText,
+  UniCharArrayOffset iTextOffset,
+  UniCharCount iTextLength,
+  UniCharCount iTextTotalLength,
+  ItemCount iNumberOfRuns,
+  const UniCharCount iRunLengths[],
+  ATSUStyle iStyles[],
+  ATSUTextLayout * oTextLayout) ;
+extern OSStatus
+ATSUClearLayoutCache(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart) ;
+extern OSStatus
+ATSUDisposeTextLayout(ATSUTextLayout iTextLayout) ;
+extern OSStatus
+ATSUSetTextLayoutRefCon(
+  ATSUTextLayout iTextLayout,
+  UInt32 iRefCon) ;
+extern OSStatus
+ATSUGetTextLayoutRefCon(
+  ATSUTextLayout iTextLayout,
+  UInt32 * oRefCon) ;
+extern OSStatus
+ATSUGetGlyphBounds(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iTextBasePointX,
+  ATSUTextMeasurement iTextBasePointY,
+  UniCharArrayOffset iBoundsCharStart,
+  UniCharCount iBoundsCharLength,
+  UInt16 iTypeOfBounds,
+  ItemCount iMaxNumberOfBounds,
+  ATSTrapezoid oGlyphBounds[],
+  ItemCount * oActualNumberOfBounds) ;
+extern OSStatus
+ATSUIdle(ATSUTextLayout iTextLayout) ;
+extern OSStatus
+ATSUSetTextPointerLocation(
+  ATSUTextLayout iTextLayout,
+  ConstUniCharArrayPtr iText,
+  UniCharArrayOffset iTextOffset,
+  UniCharCount iTextLength,
+  UniCharCount iTextTotalLength) ;
+extern OSStatus
+ATSUSetTextHandleLocation(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayHandle iText,
+  UniCharArrayOffset iTextOffset,
+  UniCharCount iTextLength,
+  UniCharCount iTextTotalLength) ;
+extern OSStatus
+ATSUGetTextLocation(
+  ATSUTextLayout iTextLayout,
+  void ** oText,
+  Boolean * oTextIsStoredInHandle,
+  UniCharArrayOffset * oOffset,
+  UniCharCount * oTextLength,
+  UniCharCount * oTextTotalLength) ;
+extern OSStatus
+ATSUTextDeleted(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iDeletedRangeStart,
+  UniCharCount iDeletedRangeLength) ;
+extern OSStatus
+ATSUTextInserted(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iInsertionLocation,
+  UniCharCount iInsertionLength) ;
+extern OSStatus
+ATSUTextMoved(
+  ATSUTextLayout iTextLayout,
+  ConstUniCharArrayPtr iNewLocation) ;
+extern OSStatus
+ATSUCopyLayoutControls(
+  ATSUTextLayout iSourceTextLayout,
+  ATSUTextLayout iDestTextLayout) ;
+extern OSStatus
+ATSUSetLayoutControls(
+  ATSUTextLayout iTextLayout,
+  ItemCount iAttributeCount,
+  const ATSUAttributeTag iTag[],
+  const ByteCount iValueSize[],
+  const ATSUAttributeValuePtr iValue[]) ;
+extern OSStatus
+ATSUGetLayoutControl(
+  ATSUTextLayout iTextLayout,
+  ATSUAttributeTag iTag,
+  ByteCount iExpectedValueSize,
+  ATSUAttributeValuePtr oValue,
+  ByteCount * oActualValueSize) ;
+extern OSStatus
+ATSUGetAllLayoutControls(
+  ATSUTextLayout iTextLayout,
+  ATSUAttributeInfo oAttributeInfoArray[],
+  ItemCount iTagValuePairArraySize,
+  ItemCount * oTagValuePairCount) ;
+extern OSStatus
+ATSUClearLayoutControls(
+  ATSUTextLayout iTextLayout,
+  ItemCount iTagCount,
+  const ATSUAttributeTag iTag[]) ;
+extern OSStatus
+ATSUCopyLineControls(
+  ATSUTextLayout iSourceTextLayout,
+  UniCharArrayOffset iSourceLineStart,
+  ATSUTextLayout iDestTextLayout,
+  UniCharArrayOffset iDestLineStart) ;
+extern OSStatus
+ATSUSetLineControls(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  ItemCount iAttributeCount,
+  const ATSUAttributeTag iTag[],
+  const ByteCount iValueSize[],
+  const ATSUAttributeValuePtr iValue[]) ;
+extern OSStatus
+ATSUGetLineControl(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  ATSUAttributeTag iTag,
+  ByteCount iExpectedValueSize,
+  ATSUAttributeValuePtr oValue,
+  ByteCount * oActualValueSize) ;
+extern OSStatus
+ATSUGetAllLineControls(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  ATSUAttributeInfo oAttributeInfoArray[],
+  ItemCount iTagValuePairArraySize,
+  ItemCount * oTagValuePairCount) ;
+extern OSStatus
+ATSUClearLineControls(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  ItemCount iTagCount,
+  const ATSUAttributeTag iTag[]) ;
+extern OSStatus
+ATSUSetRunStyle(
+  ATSUTextLayout iTextLayout,
+  ATSUStyle iStyle,
+  UniCharArrayOffset iRunStart,
+  UniCharCount iRunLength) ;
+extern OSStatus
+ATSUGetRunStyle(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOffset,
+  ATSUStyle * oStyle,
+  UniCharArrayOffset * oRunStart,
+  UniCharCount * oRunLength) ;
+extern OSStatus
+ATSUGetContinuousAttributes(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOffset,
+  UniCharCount iLength,
+  ATSUStyle oStyle) ;
+extern OSStatus
+ATSUDrawText(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineOffset,
+  UniCharCount iLineLength,
+  ATSUTextMeasurement iLocationX,
+  ATSUTextMeasurement iLocationY) ;
+extern OSStatus
+ATSUMeasureText(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  UniCharCount iLineLength,
+  ATSUTextMeasurement * oTextBefore,
+  ATSUTextMeasurement * oTextAfter,
+  ATSUTextMeasurement * oAscent,
+  ATSUTextMeasurement * oDescent) ;
+extern OSStatus
+ATSUGetUnjustifiedBounds(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  UniCharCount iLineLength,
+  ATSUTextMeasurement * oTextBefore,
+  ATSUTextMeasurement * oTextAfter,
+  ATSUTextMeasurement * oAscent,
+  ATSUTextMeasurement * oDescent) ;
+extern OSStatus
+ATSUMeasureTextImage(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineOffset,
+  UniCharCount iLineLength,
+  ATSUTextMeasurement iLocationX,
+  ATSUTextMeasurement iLocationY,
+  Rect * oTextImageRect) ;
+extern OSStatus
+ATSUHighlightText(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iTextBasePointX,
+  ATSUTextMeasurement iTextBasePointY,
+  UniCharArrayOffset iHighlightStart,
+  UniCharCount iHighlightLength) ;
+extern OSStatus
+ATSUUnhighlightText(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iTextBasePointX,
+  ATSUTextMeasurement iTextBasePointY,
+  UniCharArrayOffset iHighlightStart,
+  UniCharCount iHighlightLength) ;
+extern OSStatus
+ATSUGetTextHighlight(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iTextBasePointX,
+  ATSUTextMeasurement iTextBasePointY,
+  UniCharArrayOffset iHighlightStart,
+  UniCharCount iHighlightLength,
+  RgnHandle oHighlightRegion) ;
+extern OSStatus
+ATSUHighlightInactiveText(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iTextBasePointX,
+  ATSUTextMeasurement iTextBasePointY,
+  UniCharArrayOffset iHighlightStart,
+  UniCharCount iHighlightLength) ;
+extern OSStatus
+ATSUPositionToOffset(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iLocationX,
+  ATSUTextMeasurement iLocationY,
+  UniCharArrayOffset * ioPrimaryOffset,
+  Boolean * oIsLeading,
+  UniCharArrayOffset * oSecondaryOffset) ;
+extern OSStatus
+ATSUOffsetToPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOffset,
+  Boolean iIsLeading,
+  ATSUCaret * oMainCaret,
+  ATSUCaret * oSecondCaret,
+  Boolean * oCaretIsSplit) ;
+extern OSStatus
+ATSUPositionToCursorOffset(
+  ATSUTextLayout iTextLayout,
+  ATSUTextMeasurement iLocationX,
+  ATSUTextMeasurement iLocationY,
+  ATSUCursorMovementType iMovementType,
+  UniCharArrayOffset * ioPrimaryOffset,
+  Boolean * oIsLeading,
+  UniCharArrayOffset * oSecondaryOffset) ;
+extern OSStatus
+ATSUOffsetToCursorPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOffset,
+  Boolean iIsLeading,
+  ATSUCursorMovementType iMovementType,
+  ATSUCaret * oMainCaret,
+  ATSUCaret * oSecondCaret,
+  Boolean * oCaretIsSplit) ;
+extern OSStatus
+ATSUNextCursorPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOldOffset,
+  ATSUCursorMovementType iMovementType,
+  UniCharArrayOffset * oNewOffset) ;
+extern OSStatus
+ATSUPreviousCursorPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOldOffset,
+  ATSUCursorMovementType iMovementType,
+  UniCharArrayOffset * oNewOffset) ;
+extern OSStatus
+ATSURightwardCursorPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOldOffset,
+  ATSUCursorMovementType iMovementType,
+  UniCharArrayOffset * oNewOffset) ;
+extern OSStatus
+ATSULeftwardCursorPosition(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iOldOffset,
+  ATSUCursorMovementType iMovementType,
+  UniCharArrayOffset * oNewOffset) ;
+extern OSStatus
+ATSUBatchBreakLines(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iRangeStart,
+  UniCharCount iRangeLength,
+  ATSUTextMeasurement iLineWidth,
+  ItemCount * oBreakCount) ;
+extern OSStatus
+ATSUBreakLine(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  ATSUTextMeasurement iLineWidth,
+  Boolean iUseAsSoftLineBreak,
+  UniCharArrayOffset * oLineBreak) ;
+extern OSStatus
+ATSUSetSoftLineBreak(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineBreak) ;
+extern OSStatus
+ATSUGetSoftLineBreaks(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iRangeStart,
+  UniCharCount iRangeLength,
+  ItemCount iMaximumBreaks,
+  UniCharArrayOffset oBreaks[],
+  ItemCount * oBreakCount) ;
+extern OSStatus
+ATSUClearSoftLineBreaks(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iRangeStart,
+  UniCharCount iRangeLength) ;
+extern OSStatus
+ATSUSetTabArray(
+  ATSUTextLayout iTextLayout,
+  const ATSUTab iTabs[],
+  ItemCount iTabCount) ;
+extern OSStatus
+ATSUGetTabArray(
+  ATSUTextLayout iTextLayout,
+  ItemCount iMaxTabCount,
+  ATSUTab oTabs[],
+  ItemCount * oTabCount) ;
+extern OSStatus
+ATSUSetFontFallbacks(
+  ItemCount iFontFallbacksCount,
+  const ATSUFontID iFontIDs[],
+  ATSUFontFallbackMethod iFontFallbackMethod) ;
+extern OSStatus
+ATSUGetFontFallbacks(
+  ItemCount iMaxFontFallbacksCount,
+  ATSUFontID oFontIDs[],
+  ATSUFontFallbackMethod * oFontFallbackMethod,
+  ItemCount * oActualFallbacksCount) ;
+extern OSStatus
+ATSUMatchFontsToText(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iTextStart,
+  UniCharCount iTextLength,
+  ATSUFontID * oFontID,
+  UniCharArrayOffset * oChangedOffset,
+  UniCharCount * oChangedLength) ;
+extern OSStatus
+ATSUSetTransientFontMatching(
+  ATSUTextLayout iTextLayout,
+  Boolean iTransientFontMatching) ;
+extern OSStatus
+ATSUGetTransientFontMatching(
+  ATSUTextLayout iTextLayout,
+  Boolean * oTransientFontMatching) ;
+extern OSStatus
+ATSUFontCount(ItemCount * oFontCount) ;
+extern OSStatus
+ATSUGetFontIDs(
+  ATSUFontID oFontIDs[],
+  ItemCount iArraySize,
+  ItemCount * oFontCount) ;
+extern OSStatus
+ATSUFONDtoFontID(
+  short iFONDNumber,
+  Style iFONDStyle,
+  ATSUFontID * oFontID) ;
+extern OSStatus
+ATSUFontIDtoFOND(
+  ATSUFontID iFontID,
+  short * oFONDNumber,
+  Style * oFONDStyle) ;
+extern OSStatus
+ATSUCountFontNames(
+  ATSUFontID iFontID,
+  ItemCount * oFontNameCount) ;
+extern OSStatus
+ATSUGetIndFontName(
+  ATSUFontID iFontID,
+  ItemCount iFontNameIndex,
+  ByteCount iMaximumNameLength,
+  Ptr oName,
+  ByteCount * oActualNameLength,
+  FontNameCode * oFontNameCode,
+  FontPlatformCode * oFontNamePlatform,
+  FontScriptCode * oFontNameScript,
+  FontLanguageCode * oFontNameLanguage) ;
+extern OSStatus
+ATSUFindFontName(
+  ATSUFontID iFontID,
+  FontNameCode iFontNameCode,
+  FontPlatformCode iFontNamePlatform,
+  FontScriptCode iFontNameScript,
+  FontLanguageCode iFontNameLanguage,
+  ByteCount iMaximumNameLength,
+  Ptr oName,
+  ByteCount * oActualNameLength,
+  ItemCount * oFontNameIndex) ;
+extern OSStatus
+ATSUFindFontFromName(
+  Ptr iName,
+  ByteCount iNameLength,
+  FontNameCode iFontNameCode,
+  FontPlatformCode iFontNamePlatform,
+  FontScriptCode iFontNameScript,
+  FontLanguageCode iFontNameLanguage,
+  ATSUFontID * oFontID) ;
+extern OSStatus
+ATSUCountFontFeatureTypes(
+  ATSUFontID iFontID,
+  ItemCount * oTypeCount) ;
+extern OSStatus
+ATSUCountFontFeatureSelectors(
+  ATSUFontID iFontID,
+  ATSUFontFeatureType iType,
+  ItemCount * oSelectorCount) ;
+extern OSStatus
+ATSUGetFontFeatureTypes(
+  ATSUFontID iFontID,
+  ItemCount iMaximumTypes,
+  ATSUFontFeatureType oTypes[],
+  ItemCount * oActualTypeCount) ;
+extern OSStatus
+ATSUGetFontFeatureSelectors(
+  ATSUFontID iFontID,
+  ATSUFontFeatureType iType,
+  ItemCount iMaximumSelectors,
+  ATSUFontFeatureSelector oSelectors[],
+  Boolean oSelectorIsOnByDefault[],
+  ItemCount * oActualSelectorCount,
+  Boolean * oIsMutuallyExclusive) ;
+extern OSStatus
+ATSUGetFontFeatureNameCode(
+  ATSUFontID iFontID,
+  ATSUFontFeatureType iType,
+  ATSUFontFeatureSelector iSelector,
+  FontNameCode * oNameCode) ;
+extern OSStatus
+ATSUCountFontTracking(
+  ATSUFontID iFontID,
+  ATSUVerticalCharacterType iCharacterOrientation,
+  ItemCount * oTrackingCount) ;
+extern OSStatus
+ATSUGetIndFontTracking(
+  ATSUFontID iFontID,
+  ATSUVerticalCharacterType iCharacterOrientation,
+  ItemCount iTrackIndex,
+  Fixed * oFontTrackingValue,
+  FontNameCode * oNameCode) ;
+extern OSStatus
+ATSUCountFontVariations(
+  ATSUFontID iFontID,
+  ItemCount * oVariationCount) ;
+extern OSStatus
+ATSUGetIndFontVariation(
+  ATSUFontID iFontID,
+  ItemCount iVariationIndex,
+  ATSUFontVariationAxis * oATSUFontVariationAxis,
+  ATSUFontVariationValue * oMinimumValue,
+  ATSUFontVariationValue * oMaximumValue,
+  ATSUFontVariationValue * oDefaultValue) ;
+extern OSStatus
+ATSUGetFontVariationNameCode(
+  ATSUFontID iFontID,
+  ATSUFontVariationAxis iAxis,
+  FontNameCode * oNameCode) ;
+extern OSStatus
+ATSUCountFontInstances(
+  ATSUFontID iFontID,
+  ItemCount * oInstances) ;
+extern OSStatus
+ATSUGetFontInstance(
+  ATSUFontID iFontID,
+  ItemCount iFontInstanceIndex,
+  ItemCount iMaximumVariations,
+  ATSUFontVariationAxis oAxes[],
+  ATSUFontVariationValue oValues[],
+  ItemCount * oActualVariationCount) ;
+extern OSStatus
+ATSUGetFontInstanceNameCode(
+  ATSUFontID iFontID,
+  ItemCount iInstanceIndex,
+  FontNameCode * oNameCode) ;
+extern OSStatus
+ATSUGetGlyphInfo(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineStart,
+  UniCharCount iLineLength,
+  ByteCount * ioBufferSize,
+  ATSUGlyphInfoArray * oGlyphInfoPtr) ;
+extern OSStatus
+ATSUDrawGlyphInfo(
+  ATSUGlyphInfoArray * iGlyphInfoArray,
+  Float32Point iLocation) ;
+extern OSStatus
+ATSUGlyphGetIdealMetrics(
+  ATSUStyle iATSUStyle,
+  ItemCount iNumOfGlyphs,
+  GlyphID iGlyphIDs[],
+  ByteOffset iInputOffset,
+  ATSGlyphIdealMetrics oIdealMetrics[]) ;
+extern OSStatus
+ATSUGetNativeCurveType(
+  ATSUStyle iATSUStyle,
+  ATSCurveType * oCurveType) ;
+extern OSStatus
+ATSUGlyphGetScreenMetrics(
+  ATSUStyle iATSUStyle,
+  ItemCount iNumOfGlyphs,
+  GlyphID iGlyphIDs[],
+  ByteOffset iInputOffset,
+  Boolean iForcingAntiAlias,
+  Boolean iAntiAliasSwitch,
+  ATSGlyphScreenMetrics oScreenMetrics[]) ;
+
+
+
+
+
+typedef OSStatus ( * ATSQuadraticLineProcPtr)(const Float32Point *pt1, const Float32Point *pt2, void *callBackDataPtr);
+typedef OSStatus ( * ATSQuadraticCurveProcPtr)(const Float32Point *pt1, const Float32Point *controlPt, const Float32Point *pt2, void *callBackDataPtr);
+typedef OSStatus ( * ATSQuadraticNewPathProcPtr)(void * callBackDataPtr);
+typedef OSStatus ( * ATSQuadraticClosePathProcPtr)(void * callBackDataPtr);
+typedef ATSQuadraticLineProcPtr ATSQuadraticLineUPP;
+typedef ATSQuadraticCurveProcPtr ATSQuadraticCurveUPP;
+typedef ATSQuadraticNewPathProcPtr ATSQuadraticNewPathUPP;
+typedef ATSQuadraticClosePathProcPtr ATSQuadraticClosePathUPP;
+extern ATSQuadraticLineUPP
+NewATSQuadraticLineUPP(ATSQuadraticLineProcPtr userRoutine) ;
+extern ATSQuadraticCurveUPP
+NewATSQuadraticCurveUPP(ATSQuadraticCurveProcPtr userRoutine) ;
+extern ATSQuadraticNewPathUPP
+NewATSQuadraticNewPathUPP(ATSQuadraticNewPathProcPtr userRoutine) ;
+extern ATSQuadraticClosePathUPP
+NewATSQuadraticClosePathUPP(ATSQuadraticClosePathProcPtr userRoutine) ;
+extern void
+DisposeATSQuadraticLineUPP(ATSQuadraticLineUPP userUPP) ;
+extern void
+DisposeATSQuadraticCurveUPP(ATSQuadraticCurveUPP userUPP) ;
+extern void
+DisposeATSQuadraticNewPathUPP(ATSQuadraticNewPathUPP userUPP) ;
+extern void
+DisposeATSQuadraticClosePathUPP(ATSQuadraticClosePathUPP userUPP) ;
+extern OSStatus
+InvokeATSQuadraticLineUPP(
+  const Float32Point * pt1,
+  const Float32Point * pt2,
+  void * callBackDataPtr,
+  ATSQuadraticLineUPP userUPP) ;
+extern OSStatus
+InvokeATSQuadraticCurveUPP(
+  const Float32Point * pt1,
+  const Float32Point * controlPt,
+  const Float32Point * pt2,
+  void * callBackDataPtr,
+  ATSQuadraticCurveUPP userUPP) ;
+extern OSStatus
+InvokeATSQuadraticNewPathUPP(
+  void * callBackDataPtr,
+  ATSQuadraticNewPathUPP userUPP) ;
+extern OSStatus
+InvokeATSQuadraticClosePathUPP(
+  void * callBackDataPtr,
+  ATSQuadraticClosePathUPP userUPP) ;
+extern OSStatus
+ATSUGlyphGetQuadraticPaths(
+  ATSUStyle iATSUStyle,
+  GlyphID iGlyphID,
+  ATSQuadraticNewPathUPP iNewPathProc,
+  ATSQuadraticLineUPP iLineProc,
+  ATSQuadraticCurveUPP iCurveProc,
+  ATSQuadraticClosePathUPP iClosePathProc,
+  void * iCallbackDataPtr,
+  OSStatus * oCallbackResult) ;
+
+
+
+typedef OSStatus ( * ATSCubicMoveToProcPtr)(const Float32Point *pt, void *callBackDataPtr);
+typedef OSStatus ( * ATSCubicLineToProcPtr)(const Float32Point *pt, void *callBackDataPtr);
+typedef OSStatus ( * ATSCubicCurveToProcPtr)(const Float32Point *pt1, const Float32Point *pt2, const Float32Point *pt3, void *callBackDataPtr);
+typedef OSStatus ( * ATSCubicClosePathProcPtr)(void * callBackDataPtr);
+typedef ATSCubicMoveToProcPtr ATSCubicMoveToUPP;
+typedef ATSCubicLineToProcPtr ATSCubicLineToUPP;
+typedef ATSCubicCurveToProcPtr ATSCubicCurveToUPP;
+typedef ATSCubicClosePathProcPtr ATSCubicClosePathUPP;
+extern ATSCubicMoveToUPP
+NewATSCubicMoveToUPP(ATSCubicMoveToProcPtr userRoutine) ;
+extern ATSCubicLineToUPP
+NewATSCubicLineToUPP(ATSCubicLineToProcPtr userRoutine) ;
+extern ATSCubicCurveToUPP
+NewATSCubicCurveToUPP(ATSCubicCurveToProcPtr userRoutine) ;
+extern ATSCubicClosePathUPP
+NewATSCubicClosePathUPP(ATSCubicClosePathProcPtr userRoutine) ;
+extern void
+DisposeATSCubicMoveToUPP(ATSCubicMoveToUPP userUPP) ;
+extern void
+DisposeATSCubicLineToUPP(ATSCubicLineToUPP userUPP) ;
+extern void
+DisposeATSCubicCurveToUPP(ATSCubicCurveToUPP userUPP) ;
+extern void
+DisposeATSCubicClosePathUPP(ATSCubicClosePathUPP userUPP) ;
+extern OSStatus
+InvokeATSCubicMoveToUPP(
+  const Float32Point * pt,
+  void * callBackDataPtr,
+  ATSCubicMoveToUPP userUPP) ;
+extern OSStatus
+InvokeATSCubicLineToUPP(
+  const Float32Point * pt,
+  void * callBackDataPtr,
+  ATSCubicLineToUPP userUPP) ;
+extern OSStatus
+InvokeATSCubicCurveToUPP(
+  const Float32Point * pt1,
+  const Float32Point * pt2,
+  const Float32Point * pt3,
+  void * callBackDataPtr,
+  ATSCubicCurveToUPP userUPP) ;
+extern OSStatus
+InvokeATSCubicClosePathUPP(
+  void * callBackDataPtr,
+  ATSCubicClosePathUPP userUPP) ;
+extern OSStatus
+ATSUGlyphGetCubicPaths(
+  ATSUStyle iATSUStyle,
+  GlyphID iGlyphID,
+  ATSCubicMoveToUPP iMoveToProc,
+  ATSCubicLineToUPP iLineToProc,
+  ATSCubicCurveToUPP iCurveToProc,
+  ATSCubicClosePathUPP iClosePathProc,
+  void * iCallbackDataPtr,
+  OSStatus * oCallbackResult) ;
+extern OSStatus
+ATSUGlyphGetCurvePaths(
+  ATSUStyle iATSUStyle,
+  GlyphID iGlyphID,
+  ByteCount * ioBufferSize,
+  ATSUCurvePaths * oPaths) ;
+extern OSStatus
+ATSUSetHighlightingMethod(
+  ATSUTextLayout iTextLayout,
+  ATSUHighlightMethod iMethod,
+  const ATSUUnhighlightData * iUnhighlightData) ;
+
+
+
+
+
+
+}
+
+
+
+
+enum {
+  mBaseOffset = 1,
+  mRowBytes = 2,
+  mBounds = 3,
+  mVersion = 4,
+  mHRes = 5,
+  mVRes = 6,
+  mPixelType = 7,
+  mPixelSize = 8,
+  mCmpCount = 9,
+  mCmpSize = 10,
+  mPlaneBytes = 11,
+  mVertRefRate = 14,
+  mVidParams = 1,
+  mTable = 2,
+  mPageCnt = 3,
+  mDevType = 4,
+  oneBitMode = 128,
+  twoBitMode = 129,
+  fourBitMode = 130,
+  eightBitMode = 131
+};
+
+enum {
+  sixteenBitMode = 132,
+  thirtyTwoBitMode = 133,
+  firstVidMode = 128,
+  secondVidMode = 129,
+  thirdVidMode = 130,
+  fourthVidMode = 131,
+  fifthVidMode = 132,
+  sixthVidMode = 133,
+  spGammaDir = 64,
+  spVidNamesDir = 65
+};
+
+
+
+
+enum {
+  kDeclROMtables = 'decl',
+  kDetailedTimingFormat = 'arba'
+};
+
+
+enum {
+  kDDCBlockSize = 128
+};
+
+
+enum {
+  kDDCBlockTypeEDID = 0
+};
+
+
+enum {
+  kDDCForceReadBit = 0,
+  kDDCForceReadMask = (1 << kDDCForceReadBit)
+};
+enum {
+  timingInvalid = 0,
+  timingInvalid_SM_T24 = 8,
+  timingApple_FixedRateLCD = 42,
+  timingApple_512x384_60hz = 130,
+  timingApple_560x384_60hz = 135,
+  timingApple_640x480_67hz = 140,
+  timingApple_640x400_67hz = 145,
+  timingVESA_640x480_60hz = 150,
+  timingVESA_640x480_72hz = 152,
+  timingVESA_640x480_75hz = 154,
+  timingVESA_640x480_85hz = 158,
+  timingGTF_640x480_120hz = 159,
+  timingApple_640x870_75hz = 160,
+  timingApple_640x818_75hz = 165,
+  timingApple_832x624_75hz = 170,
+  timingVESA_800x600_56hz = 180,
+  timingVESA_800x600_60hz = 182,
+  timingVESA_800x600_72hz = 184,
+  timingVESA_800x600_75hz = 186,
+  timingVESA_800x600_85hz = 188,
+  timingVESA_1024x768_60hz = 190,
+  timingVESA_1024x768_70hz = 200,
+  timingVESA_1024x768_75hz = 204,
+  timingVESA_1024x768_85hz = 208,
+  timingApple_1024x768_75hz = 210,
+  timingApple_1152x870_75hz = 220,
+  timingAppleNTSC_ST = 230,
+  timingAppleNTSC_FF = 232,
+  timingAppleNTSC_STconv = 234,
+  timingAppleNTSC_FFconv = 236,
+  timingApplePAL_ST = 238,
+  timingApplePAL_FF = 240,
+  timingApplePAL_STconv = 242,
+  timingApplePAL_FFconv = 244,
+  timingVESA_1280x960_75hz = 250,
+  timingVESA_1280x960_60hz = 252,
+  timingVESA_1280x960_85hz = 254,
+  timingVESA_1280x1024_60hz = 260,
+  timingVESA_1280x1024_75hz = 262,
+  timingVESA_1280x1024_85hz = 268,
+  timingVESA_1600x1200_60hz = 280,
+  timingVESA_1600x1200_65hz = 282,
+  timingVESA_1600x1200_70hz = 284,
+  timingVESA_1600x1200_75hz = 286,
+  timingVESA_1600x1200_80hz = 288,
+  timingVESA_1600x1200_85hz = 289,
+  timingVESA_1792x1344_60hz = 296,
+  timingVESA_1792x1344_75hz = 298,
+  timingVESA_1856x1392_60hz = 300,
+  timingVESA_1856x1392_75hz = 302,
+  timingVESA_1920x1440_60hz = 304,
+  timingVESA_1920x1440_75hz = 306,
+  timingSMPTE240M_60hz = 400,
+  timingFilmRate_48hz = 410,
+  timingSony_1600x1024_76hz = 500,
+  timingSony_1920x1080_60hz = 510,
+  timingSony_1920x1080_72hz = 520,
+  timingSony_1920x1200_76hz = 540,
+  timingApple_0x0_0hz_Offline = 550
+};
+
+
+
+enum {
+  timingApple12 = timingApple_512x384_60hz,
+  timingApple12x = timingApple_560x384_60hz,
+  timingApple13 = timingApple_640x480_67hz,
+  timingApple13x = timingApple_640x400_67hz,
+  timingAppleVGA = timingVESA_640x480_60hz,
+  timingApple15 = timingApple_640x870_75hz,
+  timingApple15x = timingApple_640x818_75hz,
+  timingApple16 = timingApple_832x624_75hz,
+  timingAppleSVGA = timingVESA_800x600_56hz,
+  timingApple1Ka = timingVESA_1024x768_60hz,
+  timingApple1Kb = timingVESA_1024x768_70hz,
+  timingApple19 = timingApple_1024x768_75hz,
+  timingApple21 = timingApple_1152x870_75hz,
+  timingSony_1900x1200_74hz = 530,
+  timingSony_1900x1200_76hz = timingSony_1920x1200_76hz
+};
+
+
+enum {
+  kAllModesValid = 0,
+  kAllModesSafe = 1,
+  kReportsTagging = 2,
+  kHasDirectConnection = 3,
+  kIsMonoDev = 4,
+  kUncertainConnection = 5,
+  kTaggingInfoNonStandard = 6,
+  kReportsDDCConnection = 7,
+  kHasDDCConnection = 8,
+  kConnectionInactive = 9,
+  kDependentConnection = 10,
+  kBuiltInConnection = 11,
+  kOverrideConnection = 12,
+  kFastCheckForDDC = 13,
+  kReportsHotPlugging = 14
+};
+
+
+
+enum {
+  kUnknownConnect = 1,
+  kPanelConnect = 2,
+  kPanelTFTConnect = 2,
+  kFixedModeCRTConnect = 3,
+  kMultiModeCRT1Connect = 4,
+  kMultiModeCRT2Connect = 5,
+  kMultiModeCRT3Connect = 6,
+  kMultiModeCRT4Connect = 7,
+  kModelessConnect = 8,
+  kFullPageConnect = 9,
+  kVGAConnect = 10,
+  kNTSCConnect = 11,
+  kPALConnect = 12,
+  kHRConnect = 13,
+  kPanelFSTNConnect = 14,
+  kMonoTwoPageConnect = 15,
+  kColorTwoPageConnect = 16,
+  kColor16Connect = 17,
+  kColor19Connect = 18,
+  kGenericCRT = 19,
+  kGenericLCD = 20,
+  kDDCConnect = 21,
+  kNoConnect = 22
+};
+
+
+enum {
+  kModeValid = 0,
+  kModeSafe = 1,
+  kModeDefault = 2,
+  kModeShowNow = 3,
+  kModeNotResize = 4,
+  kModeRequiresPan = 5,
+  kModeInterlaced = 6,
+  kModeShowNever = 7,
+  kModeSimulscan = 8,
+  kModeNotPreset = 9,
+  kModeBuiltIn = 10,
+  kModeStretched = 11
+};
+
+
+enum {
+  kDepthDependent = 0
+};
+
+
+enum {
+  kResolutionHasMultipleDepthSizes = 0
+};
+
+
+enum {
+
+  kAVPowerOff = 0,
+  kAVPowerStandby = 1,
+  kAVPowerSuspend = 2,
+  kAVPowerOn = 3,
+  kHardwareSleep = 128,
+  kHardwareWake = 129,
+  kHardwareWakeFromSuspend = 130,
+  kHardwareWakeToDoze = 131,
+  kHardwareWakeToDozeFromSuspend = 132
+};
+
+enum {
+
+  kPowerStateNeedsRefresh = 0,
+  kPowerStateSleepAwareBit = 1,
+  kPowerStateSleepForbiddenBit = 2,
+  kPowerStateSleepCanPowerOffBit = 3,
+  kPowerStateSleepNoDPMSBit = 4,
+  kPowerStateSleepWaketoDozeBit = 5,
+  kPowerStateNeedsRefreshMask = (1L << kPowerStateNeedsRefresh),
+  kPowerStateSleepAwareMask = (1L << kPowerStateSleepAwareBit),
+  kPowerStateSleepForbiddenMask = (1L << kPowerStateSleepForbiddenBit),
+  kPowerStateSleepCanPowerOffMask = (1L << kPowerStateSleepCanPowerOffBit),
+  kPowerStateSleepNoDPMSMask = (1L << kPowerStateSleepNoDPMSBit),
+  kPowerStateSleepWaketoDozeMask = (1L << kPowerStateSleepWaketoDozeBit)
+};
+
+
+enum {
+
+  cscReset = 0,
+  cscKillIO = 1,
+  cscSetMode = 2,
+  cscSetEntries = 3,
+  cscSetGamma = 4,
+  cscGrayPage = 5,
+  cscGrayScreen = 5,
+  cscSetGray = 6,
+  cscSetInterrupt = 7,
+  cscDirectSetEntries = 8,
+  cscSetDefaultMode = 9,
+  cscSwitchMode = 10,
+  cscSetSync = 11,
+  cscSavePreferredConfiguration = 16,
+  cscSetHardwareCursor = 22,
+  cscDrawHardwareCursor = 23,
+  cscSetConvolution = 24,
+  cscSetPowerState = 25,
+  cscPrivateControlCall = 26,
+  cscSetMultiConnect = 28,
+  cscSetClutBehavior = 29,
+  cscSetDetailedTiming = 31,
+  cscDoCommunication = 33,
+  cscProbeConnection = 34,
+  cscUnusedCall = 127
+};
+
+enum {
+
+  cscGetMode = 2,
+  cscGetEntries = 3,
+  cscGetPageCnt = 4,
+  cscGetPages = 4,
+  cscGetPageBase = 5,
+  cscGetBaseAddr = 5,
+  cscGetGray = 6,
+  cscGetInterrupt = 7,
+  cscGetGamma = 8,
+  cscGetDefaultMode = 9,
+  cscGetCurMode = 10,
+  cscGetSync = 11,
+  cscGetConnection = 12,
+  cscGetModeTiming = 13,
+  cscGetModeBaseAddress = 14,
+  cscGetScanProc = 15,
+  cscGetPreferredConfiguration = 16,
+  cscGetNextResolution = 17,
+  cscGetVideoParameters = 18,
+  cscGetGammaInfoList = 20,
+  cscRetrieveGammaTable = 21,
+  cscSupportsHardwareCursor = 22,
+  cscGetHardwareCursorDrawState = 23,
+  cscGetConvolution = 24,
+  cscGetPowerState = 25,
+  cscPrivateStatusCall = 26,
+  cscGetDDCBlock = 27,
+  cscGetMultiConnect = 28,
+  cscGetClutBehavior = 29,
+  cscGetTimingRanges = 30,
+  cscGetDetailedTiming = 31,
+  cscGetCommunicationInfo = 32
+};
+
+
+enum {
+  kDisableHorizontalSyncBit = 0,
+  kDisableVerticalSyncBit = 1,
+  kDisableCompositeSyncBit = 2,
+  kEnableSyncOnBlue = 3,
+  kEnableSyncOnGreen = 4,
+  kEnableSyncOnRed = 5,
+  kNoSeparateSyncControlBit = 6,
+  kTriStateSyncBit = 7,
+  kHorizontalSyncMask = 0x01,
+  kVerticalSyncMask = 0x02,
+  kCompositeSyncMask = 0x04,
+  kDPMSSyncMask = 0x07,
+  kTriStateSyncMask = 0x80,
+  kSyncOnBlueMask = 0x08,
+  kSyncOnGreenMask = 0x10,
+  kSyncOnRedMask = 0x20,
+  kSyncOnMask = 0x38
+};
+
+enum {
+
+  kDPMSSyncOn = 0,
+  kDPMSSyncStandby = 1,
+  kDPMSSyncSuspend = 2,
+  kDPMSSyncOff = 7
+};
+
+
+enum {
+  kConvolved = 0,
+  kLiveVideoPassThru = 1,
+  kConvolvedMask = 0x01,
+  kLiveVideoPassThruMask = 0x02
+};
+
+
+struct VPBlock {
+  long vpBaseOffset;
+  short vpRowBytes;
+  Rect vpBounds;
+  short vpVersion;
+  short vpPackType;
+  long vpPackSize;
+  long vpHRes;
+  long vpVRes;
+  short vpPixelType;
+  short vpPixelSize;
+  short vpCmpCount;
+  short vpCmpSize;
+  long vpPlaneBytes;
+};
+typedef struct VPBlock VPBlock;
+typedef VPBlock * VPBlockPtr;
+struct VDEntryRecord {
+  Ptr csTable;
+};
+typedef struct VDEntryRecord VDEntryRecord;
+typedef VDEntryRecord * VDEntRecPtr;
+
+struct VDGrayRecord {
+  Boolean csMode;
+  SInt8 filler;
+};
+typedef struct VDGrayRecord VDGrayRecord;
+typedef VDGrayRecord * VDGrayPtr;
+
+struct VDFlagRecord {
+  SInt8 csMode;
+  SInt8 filler;
+};
+typedef struct VDFlagRecord VDFlagRecord;
+typedef VDFlagRecord * VDFlagRecPtr;
+
+struct VDSetEntryRecord {
+  ColorSpec * csTable;
+  short csStart;
+  short csCount;
+};
+typedef struct VDSetEntryRecord VDSetEntryRecord;
+typedef VDSetEntryRecord * VDSetEntryPtr;
+
+struct VDGammaRecord {
+  Ptr csGTable;
+};
+typedef struct VDGammaRecord VDGammaRecord;
+typedef VDGammaRecord * VDGamRecPtr;
+struct VDBaseAddressInfoRec {
+  long csDevData;
+  long csDevBase;
+  short csModeReserved;
+  long csModeBase;
+};
+typedef struct VDBaseAddressInfoRec VDBaseAddressInfoRec;
+typedef VDBaseAddressInfoRec * VDBaseAddressInfoPtr;
+struct VDSwitchInfoRec {
+  unsigned short csMode;
+  unsigned long csData;
+  unsigned short csPage;
+  Ptr csBaseAddr;
+  unsigned long csReserved;
+};
+typedef struct VDSwitchInfoRec VDSwitchInfoRec;
+typedef VDSwitchInfoRec * VDSwitchInfoPtr;
+struct VDTimingInfoRec {
+  unsigned long csTimingMode;
+  unsigned long csTimingReserved;
+  unsigned long csTimingFormat;
+  unsigned long csTimingData;
+  unsigned long csTimingFlags;
+};
+typedef struct VDTimingInfoRec VDTimingInfoRec;
+typedef VDTimingInfoRec * VDTimingInfoPtr;
+struct VDDisplayConnectInfoRec {
+  unsigned short csDisplayType;
+  unsigned char csConnectTaggedType;
+  unsigned char csConnectTaggedData;
+  unsigned long csConnectFlags;
+  unsigned long csDisplayComponent;
+  unsigned long csConnectReserved;
+};
+typedef struct VDDisplayConnectInfoRec VDDisplayConnectInfoRec;
+typedef VDDisplayConnectInfoRec * VDDisplayConnectInfoPtr;
+struct VDMultiConnectInfoRec {
+  unsigned long csDisplayCountOrNumber;
+  VDDisplayConnectInfoRec csConnectInfo;
+};
+typedef struct VDMultiConnectInfoRec VDMultiConnectInfoRec;
+typedef VDMultiConnectInfoRec * VDMultiConnectInfoPtr;
+typedef unsigned char RawSenseCode;
+enum {
+  kRSCZero = 0,
+  kRSCOne = 1,
+  kRSCTwo = 2,
+  kRSCThree = 3,
+  kRSCFour = 4,
+  kRSCFive = 5,
+  kRSCSix = 6,
+  kRSCSeven = 7
+};
+typedef unsigned char ExtendedSenseCode;
+enum {
+  kESCZero21Inch = 0x00,
+  kESCOnePortraitMono = 0x14,
+  kESCTwo12Inch = 0x21,
+  kESCThree21InchRadius = 0x31,
+  kESCThree21InchMonoRadius = 0x34,
+  kESCThree21InchMono = 0x35,
+  kESCFourNTSC = 0x0A,
+  kESCFivePortrait = 0x1E,
+  kESCSixMSB1 = 0x03,
+  kESCSixMSB2 = 0x0B,
+  kESCSixMSB3 = 0x23,
+  kESCSixStandard = 0x2B,
+  kESCSevenPAL = 0x00,
+  kESCSevenNTSC = 0x14,
+  kESCSevenVGA = 0x17,
+  kESCSeven16Inch = 0x2D,
+  kESCSevenPALAlternate = 0x30,
+  kESCSeven19Inch = 0x3A,
+  kESCSevenDDC = 0x3E,
+  kESCSevenNoDisplay = 0x3F
+};
+typedef unsigned short DepthMode;
+enum {
+  kDepthMode1 = 128,
+  kDepthMode2 = 129,
+  kDepthMode3 = 130,
+  kDepthMode4 = 131,
+  kDepthMode5 = 132,
+  kDepthMode6 = 133
+};
+
+enum {
+  kFirstDepthMode = 128,
+  kSecondDepthMode = 129,
+  kThirdDepthMode = 130,
+  kFourthDepthMode = 131,
+  kFifthDepthMode = 132,
+  kSixthDepthMode = 133
+};
+
+
+struct VDPageInfo {
+  short csMode;
+  long csData;
+  short csPage;
+  Ptr csBaseAddr;
+};
+typedef struct VDPageInfo VDPageInfo;
+typedef VDPageInfo * VDPgInfoPtr;
+struct VDSizeInfo {
+  short csHSize;
+  short csHPos;
+  short csVSize;
+  short csVPos;
+};
+typedef struct VDSizeInfo VDSizeInfo;
+typedef VDSizeInfo * VDSzInfoPtr;
+struct VDSettings {
+  short csParamCnt;
+  short csBrightMax;
+  short csBrightDef;
+  short csBrightVal;
+  short csCntrstMax;
+  short csCntrstDef;
+  short csCntrstVal;
+  short csTintMax;
+  short csTintDef;
+  short csTintVal;
+  short csHueMax;
+  short csHueDef;
+  short csHueVal;
+  short csHorizDef;
+  short csHorizVal;
+  short csHorizMax;
+  short csVertDef;
+  short csVertVal;
+  short csVertMax;
+};
+typedef struct VDSettings VDSettings;
+typedef VDSettings * VDSettingsPtr;
+struct VDDefMode {
+  UInt8 csID;
+  SInt8 filler;
+};
+typedef struct VDDefMode VDDefMode;
+typedef VDDefMode * VDDefModePtr;
+struct VDSyncInfoRec {
+  UInt8 csMode;
+  UInt8 csFlags;
+};
+typedef struct VDSyncInfoRec VDSyncInfoRec;
+typedef VDSyncInfoRec * VDSyncInfoPtr;
+typedef UInt32 AVIDType;
+typedef AVIDType DisplayIDType;
+typedef UInt32 DisplayModeID;
+typedef UInt32 VideoDeviceType;
+typedef UInt32 GammaTableID;
+
+
+
+
+
+enum {
+  kDisplayModeIDCurrent = 0x00,
+  kDisplayModeIDInvalid = (long)0xFFFFFFFF,
+  kDisplayModeIDFindFirstResolution = (long)0xFFFFFFFE,
+  kDisplayModeIDNoMoreResolutions = (long)0xFFFFFFFD,
+  kDisplayModeIDFindFirstProgrammable = (long)0xFFFFFFFC,
+  kDisplayModeIDBootProgrammable = (long)0xFFFFFFFB,
+  kDisplayModeIDReservedBase = (long)0x80000000
+};
+
+
+enum {
+  kGammaTableIDFindFirst = (long)0xFFFFFFFE,
+  kGammaTableIDNoMoreTables = (long)0xFFFFFFFD,
+  kGammaTableIDSpecific = 0x00
+};
+
+
+enum {
+  kGetConnectionCount = (long)0xFFFFFFFF,
+  kActivateConnection = (0 << kConnectionInactive),
+  kDeactivateConnection = (1 << kConnectionInactive)
+};
+
+
+enum {
+  kVideoDefaultBus = 0
+};
+
+
+
+enum {
+  kVideoBusTypeInvalid = 0,
+  kVideoBusTypeI2C = 1
+};
+
+
+
+enum {
+  kVideoNoTransactionType = 0,
+  kVideoSimpleI2CType = 1,
+  kVideoDDCciReplyType = 2
+};
+
+
+enum {
+  kVideoReplyMicroSecDelayMask = (1 << 0)
+};
+
+
+
+struct VDResolutionInfoRec {
+  DisplayModeID csPreviousDisplayModeID;
+  DisplayModeID csDisplayModeID;
+  unsigned long csHorizontalPixels;
+  unsigned long csVerticalLines;
+  Fixed csRefreshRate;
+  DepthMode csMaxDepthMode;
+  unsigned long csResolutionFlags;
+  unsigned long csReserved;
+};
+typedef struct VDResolutionInfoRec VDResolutionInfoRec;
+typedef VDResolutionInfoRec * VDResolutionInfoPtr;
+struct VDVideoParametersInfoRec {
+  DisplayModeID csDisplayModeID;
+  DepthMode csDepthMode;
+  VPBlockPtr csVPBlockPtr;
+  unsigned long csPageCount;
+  VideoDeviceType csDeviceType;
+  UInt32 csDepthFlags;
+};
+typedef struct VDVideoParametersInfoRec VDVideoParametersInfoRec;
+typedef VDVideoParametersInfoRec * VDVideoParametersInfoPtr;
+struct VDGammaInfoRec {
+  GammaTableID csLastGammaID;
+  GammaTableID csNextGammaID;
+  Ptr csGammaPtr;
+  unsigned long csReserved;
+};
+typedef struct VDGammaInfoRec VDGammaInfoRec;
+typedef VDGammaInfoRec * VDGammaInfoPtr;
+struct VDGetGammaListRec {
+  GammaTableID csPreviousGammaTableID;
+  GammaTableID csGammaTableID;
+  unsigned long csGammaTableSize;
+  char * csGammaTableName;
+};
+typedef struct VDGetGammaListRec VDGetGammaListRec;
+typedef VDGetGammaListRec * VDGetGammaListPtr;
+struct VDRetrieveGammaRec {
+  GammaTableID csGammaTableID;
+  GammaTbl * csGammaTablePtr;
+};
+typedef struct VDRetrieveGammaRec VDRetrieveGammaRec;
+typedef VDRetrieveGammaRec * VDRetrieveGammaPtr;
+struct VDSetHardwareCursorRec {
+  void * csCursorRef;
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+};
+typedef struct VDSetHardwareCursorRec VDSetHardwareCursorRec;
+typedef VDSetHardwareCursorRec * VDSetHardwareCursorPtr;
+struct VDDrawHardwareCursorRec {
+  SInt32 csCursorX;
+  SInt32 csCursorY;
+  UInt32 csCursorVisible;
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+};
+typedef struct VDDrawHardwareCursorRec VDDrawHardwareCursorRec;
+typedef VDDrawHardwareCursorRec * VDDrawHardwareCursorPtr;
+struct VDSupportsHardwareCursorRec {
+  UInt32 csSupportsHardwareCursor;
+
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+};
+typedef struct VDSupportsHardwareCursorRec VDSupportsHardwareCursorRec;
+typedef VDSupportsHardwareCursorRec * VDSupportsHardwareCursorPtr;
+struct VDHardwareCursorDrawStateRec {
+  SInt32 csCursorX;
+  SInt32 csCursorY;
+  UInt32 csCursorVisible;
+  UInt32 csCursorSet;
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+};
+typedef struct VDHardwareCursorDrawStateRec VDHardwareCursorDrawStateRec;
+typedef VDHardwareCursorDrawStateRec * VDHardwareCursorDrawStatePtr;
+struct VDConvolutionInfoRec {
+  DisplayModeID csDisplayModeID;
+  DepthMode csDepthMode;
+  unsigned long csPage;
+  UInt32 csFlags;
+  UInt32 csReserved;
+};
+typedef struct VDConvolutionInfoRec VDConvolutionInfoRec;
+typedef VDConvolutionInfoRec * VDConvolutionInfoPtr;
+struct VDPowerStateRec {
+  unsigned long powerState;
+  unsigned long powerFlags;
+
+  unsigned long powerReserved1;
+  unsigned long powerReserved2;
+};
+typedef struct VDPowerStateRec VDPowerStateRec;
+typedef VDPowerStateRec * VDPowerStatePtr;
+struct VDPrivateSelectorDataRec {
+  LogicalAddress privateParameters;
+  ByteCount privateParametersSize;
+  LogicalAddress privateResults;
+  ByteCount privateResultsSize;
+};
+typedef struct VDPrivateSelectorDataRec VDPrivateSelectorDataRec;
+
+struct VDPrivateSelectorRec {
+  UInt32 reserved;
+  VDPrivateSelectorDataRec data[1];
+};
+typedef struct VDPrivateSelectorRec VDPrivateSelectorRec;
+struct VDDDCBlockRec {
+  UInt32 ddcBlockNumber;
+  ResType ddcBlockType;
+  UInt32 ddcFlags;
+  UInt32 ddcReserved;
+  Byte ddcBlockData[128];
+};
+typedef struct VDDDCBlockRec VDDDCBlockRec;
+typedef VDDDCBlockRec * VDDDCBlockPtr;
+
+enum {
+
+  kSyncInterlaceMask = (1 << 7),
+  kSyncAnalogCompositeMask = 0,
+  kSyncAnalogCompositeSerrateMask = (1 << 2),
+  kSyncAnalogCompositeRGBSyncMask = (1 << 1),
+  kSyncAnalogBipolarMask = (1 << 3),
+  kSyncAnalogBipolarSerrateMask = (1 << 2),
+  kSyncAnalogBipolarSRGBSyncMask = (1 << 1),
+  kSyncDigitalCompositeMask = (1 << 4),
+  kSyncDigitalCompositeSerrateMask = (1 << 2),
+  kSyncDigitalCompositeMatchHSyncMask = (1 << 2),
+  kSyncDigitalSeperateMask = (1 << 4) + (1 << 3),
+  kSyncDigitalVSyncPositiveMask = (1 << 2),
+  kSyncDigitalHSyncPositiveMask = (1 << 1)
+};
+
+
+
+struct VDDisplayTimingRangeRec {
+  UInt32 csRangeSize;
+  UInt32 csRangeType;
+  UInt32 csRangeVersion;
+  UInt32 csRangeReserved;
+
+  UInt32 csRangeBlockIndex;
+  UInt32 csRangeGroup;
+  UInt32 csRangeBlockCount;
+  UInt32 csRangeFlags;
+
+  UInt64 csMinPixelClock;
+  UInt64 csMaxPixelClock;
+
+  UInt32 csMaxPixelError;
+  UInt32 csTimingRangeSyncFlags;
+  UInt32 csTimingRangeSignalLevels;
+  UInt32 csReserved0;
+
+  UInt32 csMinFrameRate;
+  UInt32 csMaxFrameRate;
+  UInt32 csMinLineRate;
+  UInt32 csMaxLineRate;
+
+
+  UInt32 csMaxHorizontalTotal;
+  UInt32 csMaxVerticalTotal;
+  UInt32 csMaxTotalReserved1;
+  UInt32 csMaxTotalReserved2;
+  UInt8 csCharSizeHorizontalActive;
+  UInt8 csCharSizeHorizontalBlanking;
+  UInt8 csCharSizeHorizontalSyncOffset;
+  UInt8 csCharSizeHorizontalSyncPulse;
+
+  UInt8 csCharSizeVerticalActive;
+  UInt8 csCharSizeVerticalBlanking;
+  UInt8 csCharSizeVerticalSyncOffset;
+  UInt8 csCharSizeVerticalSyncPulse;
+
+  UInt8 csCharSizeHorizontalBorderLeft;
+  UInt8 csCharSizeHorizontalBorderRight;
+  UInt8 csCharSizeVerticalBorderTop;
+  UInt8 csCharSizeVerticalBorderBottom;
+
+  UInt8 csCharSizeHorizontalTotal;
+  UInt8 csCharSizeVerticalTotal;
+  UInt16 csCharSizeReserved1;
+
+
+  UInt32 csMinHorizontalActiveClocks;
+  UInt32 csMaxHorizontalActiveClocks;
+  UInt32 csMinHorizontalBlankingClocks;
+  UInt32 csMaxHorizontalBlankingClocks;
+
+  UInt32 csMinHorizontalSyncOffsetClocks;
+  UInt32 csMaxHorizontalSyncOffsetClocks;
+  UInt32 csMinHorizontalPulseWidthClocks;
+  UInt32 csMaxHorizontalPulseWidthClocks;
+
+  UInt32 csMinVerticalActiveClocks;
+  UInt32 csMaxVerticalActiveClocks;
+  UInt32 csMinVerticalBlankingClocks;
+  UInt32 csMaxVerticalBlankingClocks;
+
+  UInt32 csMinVerticalSyncOffsetClocks;
+  UInt32 csMaxVerticalSyncOffsetClocks;
+  UInt32 csMinVerticalPulseWidthClocks;
+  UInt32 csMaxVerticalPulseWidthClocks;
+
+
+  UInt32 csMinHorizontalBorderLeft;
+  UInt32 csMaxHorizontalBorderLeft;
+  UInt32 csMinHorizontalBorderRight;
+  UInt32 csMaxHorizontalBorderRight;
+
+  UInt32 csMinVerticalBorderTop;
+  UInt32 csMaxVerticalBorderTop;
+  UInt32 csMinVerticalBorderBottom;
+  UInt32 csMaxVerticalBorderBottom;
+
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+  UInt32 csReserved3;
+  UInt32 csReserved4;
+
+  UInt32 csReserved5;
+  UInt32 csReserved6;
+  UInt32 csReserved7;
+  UInt32 csReserved8;
+};
+typedef struct VDDisplayTimingRangeRec VDDisplayTimingRangeRec;
+typedef VDDisplayTimingRangeRec * VDDisplayTimingRangePtr;
+
+enum {
+
+  kDMSModeReady = 0,
+  kDMSModeNotReady = 1,
+  kDMSModeFree = 2
+};
+
+
+
+enum {
+  kTimingChangeRestrictedErr = -10930,
+  kVideoI2CReplyPendingErr = -10931,
+  kVideoI2CTransactionErr = -10932,
+  kVideoI2CBusyErr = -10933,
+  kVideoI2CTransactionTypeErr = -10934,
+  kVideoBufferSizeErr = -10935
+};
+
+
+enum {
+
+  kRangeSupportsSignal_0700_0300_Bit = 0,
+  kRangeSupportsSignal_0714_0286_Bit = 1,
+  kRangeSupportsSignal_1000_0400_Bit = 2,
+  kRangeSupportsSignal_0700_0000_Bit = 3,
+  kRangeSupportsSignal_0700_0300_Mask = (1 << kRangeSupportsSignal_0700_0300_Bit),
+  kRangeSupportsSignal_0714_0286_Mask = (1 << kRangeSupportsSignal_0714_0286_Bit),
+  kRangeSupportsSignal_1000_0400_Mask = (1 << kRangeSupportsSignal_1000_0400_Bit),
+  kRangeSupportsSignal_0700_0000_Mask = (1 << kRangeSupportsSignal_0700_0000_Bit)
+};
+
+
+enum {
+
+  kDigitalSignalBit = 0,
+  kAnalogSetupExpectedBit = 1,
+  kDigitalSignalMask = (1 << kDigitalSignalBit),
+  kAnalogSetupExpectedMask = (1 << kAnalogSetupExpectedBit)
+};
+
+
+enum {
+
+  kAnalogSignalLevel_0700_0300 = 0,
+  kAnalogSignalLevel_0714_0286 = 1,
+  kAnalogSignalLevel_1000_0400 = 2,
+  kAnalogSignalLevel_0700_0000 = 3
+};
+
+
+enum {
+
+  kRangeSupportsSeperateSyncsBit = 0,
+  kRangeSupportsSyncOnGreenBit = 1,
+  kRangeSupportsCompositeSyncBit = 2,
+  kRangeSupportsVSyncSerrationBit = 3,
+  kRangeSupportsSeperateSyncsMask = (1 << kRangeSupportsSeperateSyncsBit),
+  kRangeSupportsSyncOnGreenMask = (1 << kRangeSupportsSyncOnGreenBit),
+  kRangeSupportsCompositeSyncMask = (1 << kRangeSupportsCompositeSyncBit),
+  kRangeSupportsVSyncSerrationMask = (1 << kRangeSupportsVSyncSerrationBit)
+};
+
+
+
+enum {
+
+  kSyncPositivePolarityBit = 0,
+  kSyncPositivePolarityMask = (1 << kSyncPositivePolarityBit)
+};
+
+
+
+
+
+struct VDDetailedTimingRec {
+  UInt32 csTimingSize;
+  UInt32 csTimingType;
+  UInt32 csTimingVersion;
+  UInt32 csTimingReserved;
+
+  DisplayModeID csDisplayModeID;
+  UInt32 csDisplayModeSeed;
+  UInt32 csDisplayModeState;
+  UInt32 csDisplayModeAlias;
+
+  UInt32 csSignalConfig;
+  UInt32 csSignalLevels;
+
+  UInt64 csPixelClock;
+
+  UInt64 csMinPixelClock;
+  UInt64 csMaxPixelClock;
+
+
+  UInt32 csHorizontalActive;
+  UInt32 csHorizontalBlanking;
+  UInt32 csHorizontalSyncOffset;
+  UInt32 csHorizontalSyncPulseWidth;
+
+  UInt32 csVerticalActive;
+  UInt32 csVerticalBlanking;
+  UInt32 csVerticalSyncOffset;
+  UInt32 csVerticalSyncPulseWidth;
+
+  UInt32 csHorizontalBorderLeft;
+  UInt32 csHorizontalBorderRight;
+  UInt32 csVerticalBorderTop;
+  UInt32 csVerticalBorderBottom;
+
+  UInt32 csHorizontalSyncConfig;
+  UInt32 csHorizontalSyncLevel;
+  UInt32 csVerticalSyncConfig;
+  UInt32 csVerticalSyncLevel;
+
+  UInt32 csReserved1;
+  UInt32 csReserved2;
+  UInt32 csReserved3;
+  UInt32 csReserved4;
+
+  UInt32 csReserved5;
+  UInt32 csReserved6;
+  UInt32 csReserved7;
+  UInt32 csReserved8;
+};
+typedef struct VDDetailedTimingRec VDDetailedTimingRec;
+typedef VDDetailedTimingRec * VDDetailedTimingPtr;
+typedef UInt32 VDClutBehavior;
+typedef VDClutBehavior * VDClutBehaviorPtr;
+enum {
+  kSetClutAtSetEntries = 0,
+  kSetClutAtVBL = 1
+};
+
+
+struct VDCommunicationRec {
+  SInt32 csBusID;
+  UInt32 csCommFlags;
+  UInt32 csMinReplyDelay;
+  UInt32 csReserved2;
+
+  UInt32 csSendAddress;
+  UInt32 csSendType;
+  LogicalAddress csSendBuffer;
+  ByteCount csSendSize;
+
+  UInt32 csReplyAddress;
+  UInt32 csReplyType;
+  LogicalAddress csReplyBuffer;
+  ByteCount csReplySize;
+
+  UInt32 csReserved3;
+  UInt32 csReserved4;
+  UInt32 csReserved5;
+  UInt32 csReserved6;
+};
+typedef struct VDCommunicationRec VDCommunicationRec;
+typedef VDCommunicationRec * VDCommunicationPtr;
+struct VDCommunicationInfoRec {
+  SInt32 csBusID;
+  UInt32 csBusType;
+  SInt32 csMinBus;
+  SInt32 csMaxBus;
+
+  UInt32 csSupportedTypes;
+  UInt32 csSupportedCommFlags;
+  UInt32 csReserved2;
+  UInt32 csReserved3;
+
+  UInt32 csReserved4;
+  UInt32 csReserved5;
+  UInt32 csReserved6;
+  UInt32 csReserved7;
+};
+typedef struct VDCommunicationInfoRec VDCommunicationInfoRec;
+typedef VDCommunicationInfoRec * VDCommunicationInfoPtr;
+
+
+
+
+extern "C" {
+
+
+
+typedef void * DMProcessInfoPtr;
+typedef void * DMModalFilterUPP;
+enum {
+
+  kAESystemConfigNotice = 'cnfg',
+  kAEDisplayNotice = 'dspl',
+  kAEDisplaySummary = 'dsum',
+  keyDMConfigVersion = 'dmcv',
+  keyDMConfigFlags = 'dmcf',
+  keyDMConfigReserved = 'dmcr',
+  keyDisplayID = 'dmid',
+  keyDisplayComponent = 'dmdc',
+  keyDisplayDevice = 'dmdd',
+  keyDisplayFlags = 'dmdf',
+  keyDisplayMode = 'dmdm',
+  keyDisplayModeReserved = 'dmmr',
+  keyDisplayReserved = 'dmdr',
+  keyDisplayMirroredId = 'dmmi',
+  keyDeviceFlags = 'dddf',
+  keyDeviceDepthMode = 'dddm',
+  keyDeviceRect = 'dddr',
+  keyPixMapRect = 'dpdr',
+  keyPixMapHResolution = 'dphr',
+  keyPixMapVResolution = 'dpvr',
+  keyPixMapPixelType = 'dppt',
+  keyPixMapPixelSize = 'dpps',
+  keyPixMapCmpCount = 'dpcc',
+  keyPixMapCmpSize = 'dpcs',
+  keyPixMapAlignment = 'dppa',
+  keyPixMapResReserved = 'dprr',
+  keyPixMapReserved = 'dppr',
+  keyPixMapColorTableSeed = 'dpct',
+  keySummaryMenubar = 'dsmb',
+  keySummaryChanges = 'dsch',
+  keyDisplayOldConfig = 'dold',
+  keyDisplayNewConfig = 'dnew'
+};
+
+enum {
+  dmOnlyActiveDisplays = true,
+  dmAllDisplays = false
+};
+
+
+enum {
+
+  kDependentNotifyClassShowCursor = 'shcr',
+  kDependentNotifyClassDriverOverride = 'ndrv',
+  kDependentNotifyClassDisplayMgrOverride = 'dmgr',
+  kDependentNotifyClassProfileChanged = 'prof'
+};
+
+
+enum {
+
+  kNoSwitchConfirmBit = 0,
+  kDepthNotAvailableBit = 1,
+  kShowModeBit = 3,
+  kModeNotResizeBit = 4,
+  kNeverShowModeBit = 5
+};
+
+
+
+
+enum {
+  kBeginEndConfigureBit = 0,
+  kMovedDisplayBit = 1,
+  kSetMainDisplayBit = 2,
+  kSetDisplayModeBit = 3,
+  kAddDisplayBit = 4,
+  kRemoveDisplayBit = 5,
+  kNewDisplayBit = 6,
+  kDisposeDisplayBit = 7,
+  kEnabledDisplayBit = 8,
+  kDisabledDisplayBit = 9,
+  kMirrorDisplayBit = 10,
+  kUnMirrorDisplayBit = 11
+};
+
+
+enum {
+
+  kDMNotifyRequestConnectionProbe = 0,
+  kDMNotifyInstalled = 1,
+  kDMNotifyEvent = 2,
+  kDMNotifyRemoved = 3,
+  kDMNotifyPrep = 4,
+  kDMNotifyExtendEvent = 5,
+  kDMNotifyDependents = 6,
+  kDMNotifySuspendConfigure = 7,
+  kDMNotifyResumeConfigure = 8,
+  kDMNotifyRequestDisplayProbe = 9,
+  kDMNotifyDisplayWillSleep = 10,
+  kDMNotifyDisplayDidWake = 11,
+
+  kExtendedNotificationProc = (1L << 16)
+};
+
+
+
+enum {
+  kFullNotify = 0,
+  kFullDependencyNotify = 1
+};
+
+
+enum {
+  kDummyDeviceID = 0x00FF,
+  kInvalidDisplayID = 0x0000,
+  kFirstDisplayID = 0x0100
+};
+
+enum {
+
+  kAllowDuplicatesBit = 0
+};
+
+enum {
+
+  kSuppressNumberBit = 0,
+  kSuppressNumberMask = 1,
+  kForceNumberBit = 1,
+  kForceNumberMask = 2,
+  kSuppressNameBit = 2,
+  kSuppressNameMask = 4
+};
+
+
+enum {
+  kDMSupressNumbersMask = (1 << 0),
+  kDMForceNumbersMask = (1 << 1),
+  kDMSupressNameMask = (1 << 2)
+};
+
+
+
+
+enum {
+  kNoFidelity = 0,
+  kMinimumFidelity = 1,
+  kDefaultFidelity = 500,
+  kDefaultManufacturerFidelity = 1000
+};
+
+enum {
+  kAnyPanelType = 0,
+  kAnyEngineType = 0,
+  kAnyDeviceType = 0,
+  kAnyPortType = 0
+};
+
+
+enum {
+
+  kPLIncludeOfflineDevicesBit = 0
+};
+
+
+
+enum {
+  kForceConfirmBit = 0,
+  kForceConfirmMask = (1 << kForceConfirmBit)
+};
+
+
+
+enum {
+  kDisplayModeListNotPreferredBit = 0,
+  kDisplayModeListNotPreferredMask = (1 << kDisplayModeListNotPreferredBit)
+};
+
+
+
+enum {
+  kComponentListNotPreferredBit = 0,
+  kComponentListNotPreferredMask = (1 << kComponentListNotPreferredBit)
+};
+
+enum {
+  kDisplayTimingInfoVersionZero = 1,
+  kDisplayTimingInfoReservedCountVersionZero = 16,
+  kDisplayModeEntryVersionZero = 0,
+  kDisplayModeEntryVersionOne = 1
+};
+
+
+enum {
+  kMakeAndModelReservedCount = 4
+};
+
+
+
+enum {
+  kDisplayGestaltDisplayCommunicationAttr = 'comm',
+  kDisplayGestaltForbidI2CMask = (1 << 0),
+  kDisplayGestaltUseI2CPowerMask = (1 << 1),
+  kDisplayGestaltCalibratorAttr = 'cali',
+  kDisplayGestaltBrightnessAffectsGammaMask = (1 << 0),
+  kDisplayGestaltViewAngleAffectsGammaMask = (1 << 1)
+};
+
+
+typedef UInt32 DMFidelityType;
+
+
+
+
+
+
+typedef void * DMListType;
+typedef unsigned long DMListIndexType;
+typedef VDPowerStateRec AVPowerStateRec;
+typedef VDPowerStateRec * AVPowerStatePtr;
+struct DMDisplayTimingInfoRec {
+  UInt32 timingInfoVersion;
+  UInt32 timingInfoAttributes;
+  SInt32 timingInfoRelativeQuality;
+  SInt32 timingInfoRelativeDefault;
+
+  UInt32 timingInfoReserved[16];
+};
+typedef struct DMDisplayTimingInfoRec DMDisplayTimingInfoRec;
+typedef DMDisplayTimingInfoRec * DMDisplayTimingInfoPtr;
+
+struct DMComponentListEntryRec {
+  DisplayIDType itemID;
+  Component itemComponent;
+  ComponentDescription itemDescription;
+
+  ResType itemClass;
+  DMFidelityType itemFidelity;
+  ResType itemSubClass;
+  Point itemSort;
+
+  unsigned long itemFlags;
+  ResType itemReserved;
+  unsigned long itemFuture1;
+  unsigned long itemFuture2;
+  unsigned long itemFuture3;
+  unsigned long itemFuture4;
+};
+typedef struct DMComponentListEntryRec DMComponentListEntryRec;
+typedef DMComponentListEntryRec * DMComponentListEntryPtr;
+
+struct AVLocationRec {
+  unsigned long locationConstant;
+};
+typedef struct AVLocationRec AVLocationRec;
+typedef AVLocationRec * AVLocationPtr;
+struct DMDepthInfoRec {
+  VDSwitchInfoPtr depthSwitchInfo;
+  VPBlockPtr depthVPBlock;
+  UInt32 depthFlags;
+  UInt32 depthReserved1;
+  UInt32 depthReserved2;
+};
+typedef struct DMDepthInfoRec DMDepthInfoRec;
+typedef DMDepthInfoRec * DMDepthInfoPtr;
+struct DMDepthInfoBlockRec {
+  unsigned long depthBlockCount;
+  DMDepthInfoPtr depthVPBlock;
+  unsigned long depthBlockFlags;
+  unsigned long depthBlockReserved1;
+  unsigned long depthBlockReserved2;
+};
+typedef struct DMDepthInfoBlockRec DMDepthInfoBlockRec;
+typedef DMDepthInfoBlockRec * DMDepthInfoBlockPtr;
+struct DMDisplayModeListEntryRec {
+  UInt32 displayModeFlags;
+  VDSwitchInfoPtr displayModeSwitchInfo;
+  VDResolutionInfoPtr displayModeResolutionInfo;
+  VDTimingInfoPtr displayModeTimingInfo;
+  DMDepthInfoBlockPtr displayModeDepthBlockInfo;
+  UInt32 displayModeVersion;
+  StringPtr displayModeName;
+  DMDisplayTimingInfoPtr displayModeDisplayInfo;
+};
+typedef struct DMDisplayModeListEntryRec DMDisplayModeListEntryRec;
+typedef DMDisplayModeListEntryRec * DMDisplayModeListEntryPtr;
+
+struct DependentNotifyRec {
+  ResType notifyType;
+  ResType notifyClass;
+  DisplayIDType notifyPortID;
+  ComponentInstance notifyComponent;
+
+  unsigned long notifyVersion;
+  unsigned long notifyFlags;
+  unsigned long notifyReserved;
+  unsigned long notifyFuture;
+};
+typedef struct DependentNotifyRec DependentNotifyRec;
+typedef DependentNotifyRec * DependentNotifyPtr;
+
+struct DMMakeAndModelRec {
+  ResType manufacturer;
+  UInt32 model;
+  UInt32 serialNumber;
+  UInt32 manufactureDate;
+
+  UInt32 makeReserved[4];
+};
+typedef struct DMMakeAndModelRec DMMakeAndModelRec;
+typedef DMMakeAndModelRec * DMMakeAndModelPtr;
+
+enum {
+  kIncludeOnlineActiveDisplaysMask = (1 << 0),
+  kIncludeOnlineDisabledDisplaysMask = (1 << 1),
+  kIncludeOfflineDisplaysMask = (1 << 2),
+  kIncludeOfflineDummyDisplaysMask = (1 << 3),
+  kIncludeHardwareMirroredDisplaysMask = (1 << 4)
+};
+
+
+enum {
+
+  kDMModeListIncludeAllModesMask = (1 << 0),
+  kDMModeListIncludeOfflineModesMask = (1 << 1),
+  kDMModeListExcludeDriverModesMask = (1 << 2),
+  kDMModeListExcludeDisplayModesMask = (1 << 3),
+  kDMModeListExcludeCustomModesMask = (1 << 4),
+  kDMModeListPreferStretchedModesMask = (1 << 5),
+  kDMModeListPreferSafeModesMask = (1 << 6)
+};
+
+
+
+struct DisplayListEntryRec {
+  GDHandle displayListEntryGDevice;
+  DisplayIDType displayListEntryDisplayID;
+  UInt32 displayListEntryIncludeFlags;
+  UInt32 displayListEntryReserved1;
+
+  UInt32 displayListEntryReserved2;
+  UInt32 displayListEntryReserved3;
+  UInt32 displayListEntryReserved4;
+  UInt32 displayListEntryReserved5;
+};
+typedef struct DisplayListEntryRec DisplayListEntryRec;
+typedef DisplayListEntryRec * DisplayListEntryPtr;
+struct DMProfileListEntryRec {
+  CMProfileRef profileRef;
+  Ptr profileReserved1;
+  Ptr profileReserved2;
+  Ptr profileReserved3;
+};
+typedef struct DMProfileListEntryRec DMProfileListEntryRec;
+typedef DMProfileListEntryRec * DMProfileListEntryPtr;
+typedef void ( * DMNotificationProcPtr)(AppleEvent * theEvent);
+typedef void ( * DMExtendedNotificationProcPtr)(void *userData, short theMessage, void *notifyData);
+typedef void ( * DMComponentListIteratorProcPtr)(void *userData, DMListIndexType itemIndex, DMComponentListEntryPtr componentInfo);
+typedef void ( * DMDisplayModeListIteratorProcPtr)(void *userData, DMListIndexType itemIndex, DMDisplayModeListEntryPtr displaymodeInfo);
+typedef void ( * DMProfileListIteratorProcPtr)(void *userData, DMListIndexType itemIndex, DMProfileListEntryPtr profileInfo);
+typedef void ( * DMDisplayListIteratorProcPtr)(void *userData, DMListIndexType itemIndex, DisplayListEntryPtr displaymodeInfo);
+typedef DMNotificationProcPtr DMNotificationUPP;
+typedef DMExtendedNotificationProcPtr DMExtendedNotificationUPP;
+typedef DMComponentListIteratorProcPtr DMComponentListIteratorUPP;
+typedef DMDisplayModeListIteratorProcPtr DMDisplayModeListIteratorUPP;
+typedef DMProfileListIteratorProcPtr DMProfileListIteratorUPP;
+typedef DMDisplayListIteratorProcPtr DMDisplayListIteratorUPP;
+extern DMNotificationUPP
+NewDMNotificationUPP(DMNotificationProcPtr userRoutine) ;
+extern DMExtendedNotificationUPP
+NewDMExtendedNotificationUPP(DMExtendedNotificationProcPtr userRoutine) ;
+extern DMComponentListIteratorUPP
+NewDMComponentListIteratorUPP(DMComponentListIteratorProcPtr userRoutine) ;
+extern DMDisplayModeListIteratorUPP
+NewDMDisplayModeListIteratorUPP(DMDisplayModeListIteratorProcPtr userRoutine) ;
+extern DMProfileListIteratorUPP
+NewDMProfileListIteratorUPP(DMProfileListIteratorProcPtr userRoutine) ;
+extern DMDisplayListIteratorUPP
+NewDMDisplayListIteratorUPP(DMDisplayListIteratorProcPtr userRoutine) ;
+extern void
+DisposeDMNotificationUPP(DMNotificationUPP userUPP) ;
+extern void
+DisposeDMExtendedNotificationUPP(DMExtendedNotificationUPP userUPP) ;
+extern void
+DisposeDMComponentListIteratorUPP(DMComponentListIteratorUPP userUPP) ;
+extern void
+DisposeDMDisplayModeListIteratorUPP(DMDisplayModeListIteratorUPP userUPP) ;
+extern void
+DisposeDMProfileListIteratorUPP(DMProfileListIteratorUPP userUPP) ;
+extern void
+DisposeDMDisplayListIteratorUPP(DMDisplayListIteratorUPP userUPP) ;
+extern void
+InvokeDMNotificationUPP(
+  AppleEvent * theEvent,
+  DMNotificationUPP userUPP) ;
+extern void
+InvokeDMExtendedNotificationUPP(
+  void * userData,
+  short theMessage,
+  void * notifyData,
+  DMExtendedNotificationUPP userUPP) ;
+extern void
+InvokeDMComponentListIteratorUPP(
+  void * userData,
+  DMListIndexType itemIndex,
+  DMComponentListEntryPtr componentInfo,
+  DMComponentListIteratorUPP userUPP) ;
+extern void
+InvokeDMDisplayModeListIteratorUPP(
+  void * userData,
+  DMListIndexType itemIndex,
+  DMDisplayModeListEntryPtr displaymodeInfo,
+  DMDisplayModeListIteratorUPP userUPP) ;
+extern void
+InvokeDMProfileListIteratorUPP(
+  void * userData,
+  DMListIndexType itemIndex,
+  DMProfileListEntryPtr profileInfo,
+  DMProfileListIteratorUPP userUPP) ;
+extern void
+InvokeDMDisplayListIteratorUPP(
+  void * userData,
+  DMListIndexType itemIndex,
+  DisplayListEntryPtr displaymodeInfo,
+  DMDisplayListIteratorUPP userUPP) ;
+extern GDHandle
+DMGetFirstScreenDevice(Boolean activeOnly) ;
+extern GDHandle
+DMGetNextScreenDevice(
+  GDHandle theDevice,
+  Boolean activeOnly) ;
+extern void
+DMDrawDesktopRect(Rect * globalRect) ;
+extern void
+DMDrawDesktopRegion(RgnHandle globalRgn) ;
+extern OSErr
+DMBeginConfigureDisplays(Handle * displayState) ;
+extern OSErr
+DMEndConfigureDisplays(Handle displayState) ;
+extern OSErr
+DMAddDisplay(
+  GDHandle newDevice,
+  short driver,
+  unsigned long mode,
+  unsigned long reserved,
+  unsigned long displayID,
+  Component displayComponent,
+  Handle displayState) ;
+extern OSErr
+DMMoveDisplay(
+  GDHandle moveDevice,
+  short x,
+  short y,
+  Handle displayState) ;
+extern OSErr
+DMDisableDisplay(
+  GDHandle disableDevice,
+  Handle displayState) ;
+extern OSErr
+DMEnableDisplay(
+  GDHandle enableDevice,
+  Handle displayState) ;
+extern OSErr
+DMRemoveDisplay(
+  GDHandle removeDevice,
+  Handle displayState) ;
+extern OSErr
+DMSetMainDisplay(
+  GDHandle newMainDevice,
+  Handle displayState) ;
+extern OSErr
+DMSetDisplayMode(
+  GDHandle theDevice,
+  unsigned long mode,
+  unsigned long * depthMode,
+  unsigned long reserved,
+  Handle displayState) ;
+extern OSErr
+DMCheckDisplayMode(
+  GDHandle theDevice,
+  unsigned long mode,
+  unsigned long depthMode,
+  unsigned long * switchFlags,
+  unsigned long reserved,
+  Boolean * modeOk) ;
+extern OSErr
+DMGetDeskRegion(RgnHandle * desktopRegion) ;
+extern OSErr
+DMRegisterNotifyProc(
+  DMNotificationUPP notificationProc,
+  DMProcessInfoPtr whichPSN) ;
+extern OSErr
+DMRemoveNotifyProc(
+  DMNotificationUPP notificationProc,
+  DMProcessInfoPtr whichPSN) ;
+extern OSErr
+DMQDIsMirroringCapable(Boolean * qdIsMirroringCapable) ;
+extern OSErr
+DMCanMirrorNow(Boolean * canMirrorNow) ;
+extern OSErr
+DMIsMirroringOn(Boolean * isMirroringOn) ;
+extern OSErr
+DMMirrorDevices(
+  GDHandle gD1,
+  GDHandle gD2,
+  Handle displayState) ;
+extern OSErr
+DMUnmirrorDevice(
+  GDHandle gDevice,
+  Handle displayState) ;
+extern OSErr
+DMGetNextMirroredDevice(
+  GDHandle gDevice,
+  GDHandle * mirroredDevice) ;
+extern OSErr
+DMBlockMirroring(void) ;
+extern OSErr
+DMUnblockMirroring(void) ;
+extern OSErr
+DMGetDisplayIDByGDevice(
+  GDHandle displayDevice,
+  DisplayIDType * displayID,
+  Boolean failToMain) ;
+extern OSErr
+DMGetGDeviceByDisplayID(
+  DisplayIDType displayID,
+  GDHandle * displayDevice,
+  Boolean failToMain) ;
+extern OSErr
+DMSetDisplayComponent(
+  GDHandle theDevice,
+  Component displayComponent) ;
+extern OSErr
+DMGetDisplayComponent(
+  GDHandle theDevice,
+  Component * displayComponent) ;
+extern OSErr
+DMNewDisplay(
+  GDHandle * newDevice,
+  short driverRefNum,
+  unsigned long mode,
+  unsigned long reserved,
+  DisplayIDType displayID,
+  Component displayComponent,
+  Handle displayState) ;
+extern OSErr
+DMDisposeDisplay(
+  GDHandle disposeDevice,
+  Handle displayState) ;
+extern OSErr
+DMResolveDisplayComponents(void) ;
+extern OSErr
+DMRegisterExtendedNotifyProc(
+  DMExtendedNotificationUPP notifyProc,
+  void * notifyUserData,
+  unsigned short nofifyOnFlags,
+  DMProcessInfoPtr whichPSN) ;
+extern OSErr
+DMRemoveExtendedNotifyProc(
+  DMExtendedNotificationUPP notifyProc,
+  void * notifyUserData,
+  DMProcessInfoPtr whichPSN,
+  unsigned short removeFlags) ;
+extern OSErr
+DMNewAVPanelList(
+  DisplayIDType displayID,
+  ResType panelType,
+  DMFidelityType minimumFidelity,
+  unsigned long panelListFlags,
+  unsigned long reserved,
+  DMListIndexType * thePanelCount,
+  DMListType * thePanelList) ;
+extern OSErr
+DMNewAVEngineList(
+  DisplayIDType displayID,
+  ResType engineType,
+  DMFidelityType minimumFidelity,
+  unsigned long engineListFlags,
+  unsigned long reserved,
+  DMListIndexType * engineCount,
+  DMListType * engineList) ;
+extern OSErr
+DMNewAVDeviceList(
+  ResType deviceType,
+  unsigned long deviceListFlags,
+  unsigned long reserved,
+  DMListIndexType * deviceCount,
+  DMListType * deviceList) ;
+extern OSErr
+DMNewAVPortListByPortType(
+  ResType subType,
+  unsigned long portListFlags,
+  unsigned long reserved,
+  DMListIndexType * devicePortCount,
+  DMListType * theDevicePortList) ;
+extern OSErr
+DMGetIndexedComponentFromList(
+  DMListType panelList,
+  DMListIndexType itemIndex,
+  unsigned long reserved,
+  DMComponentListIteratorUPP listIterator,
+  void * userData) ;
+extern OSErr
+DMDisposeList(DMListType panelList) ;
+extern OSErr
+DMGetNameByAVID(
+  AVIDType theID,
+  unsigned long nameFlags,
+  Str255 name) ;
+extern OSErr
+DMNewAVIDByPortComponent(
+  Component thePortComponent,
+  ResType portKind,
+  unsigned long reserved,
+  AVIDType * newID) ;
+extern OSErr
+DMGetPortComponentByAVID(
+  DisplayIDType thePortID,
+  Component * thePortComponent,
+  ComponentDescription * theDesciption,
+  ResType * thePortKind) ;
+extern OSErr
+DMSendDependentNotification(
+  ResType notifyType,
+  ResType notifyClass,
+  AVIDType displayID,
+  ComponentInstance notifyComponent) ;
+extern OSErr
+DMDisposeAVComponent(Component theAVComponent) ;
+extern OSErr
+DMSaveScreenPrefs(
+  unsigned long reserved1,
+  unsigned long saveFlags,
+  unsigned long reserved2) ;
+extern OSErr
+DMNewAVIDByDeviceComponent(
+  Component theDeviceComponent,
+  ResType portKind,
+  unsigned long reserved,
+  DisplayIDType * newID) ;
+extern OSErr
+DMNewAVPortListByDeviceAVID(
+  AVIDType theID,
+  DMFidelityType minimumFidelity,
+  unsigned long portListFlags,
+  unsigned long reserved,
+  DMListIndexType * devicePortCount,
+  DMListType * theDevicePortList) ;
+extern OSErr
+DMGetDeviceComponentByAVID(
+  AVIDType theDeviceID,
+  Component * theDeviceComponent,
+  ComponentDescription * theDesciption,
+  ResType * theDeviceKind) ;
+extern OSErr
+DMNewDisplayModeList(
+  DisplayIDType displayID,
+  unsigned long modeListFlags,
+  unsigned long reserved,
+  DMListIndexType * thePanelCount,
+  DMListType * thePanelList) ;
+extern OSErr
+DMGetIndexedDisplayModeFromList(
+  DMListType panelList,
+  DMListIndexType itemIndex,
+  unsigned long reserved,
+  DMDisplayModeListIteratorUPP listIterator,
+  void * userData) ;
+extern OSErr
+DMGetGraphicInfoByAVID(
+  AVIDType theID,
+  PicHandle * theAVPcit,
+  Handle * theAVIconSuite,
+  AVLocationRec * theAVLocation) ;
+extern OSErr
+DMGetAVPowerState(
+  AVIDType theID,
+  AVPowerStatePtr getPowerState,
+  unsigned long reserved1) ;
+extern OSErr
+DMSetAVPowerState(
+  AVIDType theID,
+  AVPowerStatePtr setPowerState,
+  unsigned long powerFlags,
+  Handle displayState) ;
+extern OSErr
+DMGetDeviceAVIDByPortAVID(
+  AVIDType portAVID,
+  AVIDType * deviceAVID) ;
+extern OSErr
+DMGetEnableByAVID(
+  AVIDType theAVID,
+  Boolean * isAVIDEnabledNow,
+  Boolean * canChangeEnableNow) ;
+extern OSErr
+DMSetEnableByAVID(
+  AVIDType theAVID,
+  Boolean doEnable,
+  Handle displayState) ;
+extern OSErr
+DMGetDisplayMode(
+  GDHandle theDevice,
+  VDSwitchInfoPtr switchInfo) ;
+extern OSErr
+DMConfirmConfiguration(
+  DMModalFilterUPP filterProc,
+  UInt32 confirmFlags,
+  UInt32 reserved,
+  Handle displayState) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+typedef UInt32 FNSMatchOptions;
+enum {
+  kFNSMatchNames = 0x00000001,
+  kFNSMatchTechnology = 0x00000002,
+  kFNSMatchGlyphs = 0x00000004,
+  kFNSMatchEncodings = 0x00000008,
+  kFNSMatchQDMetrics = 0x00000010,
+  kFNSMatchATSUMetrics = 0x00000020,
+  kFNSMatchKerning = 0x00000040,
+  kFNSMatchWSLayout = 0x00000080,
+  kFNSMatchAATLayout = 0x00000100,
+  kFNSMatchPrintEncoding = 0x00000200,
+  kFNSMissingDataNoMatch = (unsigned long)0x80000000,
+  kFNSMatchAll = (unsigned long)0xFFFFFFFF,
+  kFNSMatchDefaults = 0
+};
+extern FNSMatchOptions
+FNSMatchDefaultsGet(void) ;
+
+
+
+
+typedef UInt32 FNSObjectVersion;
+enum {
+  kFNSVersionDontCare = 0,
+  kFNSCurSysInfoVersion = 1
+};
+
+
+typedef UInt32 FNSFeatureFlags;
+
+
+
+
+struct FNSSysInfo {
+  FNSObjectVersion iSysInfoVersion;
+  FNSFeatureFlags oFeatures;
+  FNSObjectVersion oCurRefVersion;
+  FNSObjectVersion oMinRefVersion;
+  FNSObjectVersion oCurProfileVersion;
+  FNSObjectVersion oMinProfileVersion;
+  UInt16 oFontSyncVersion;
+};
+typedef struct FNSSysInfo FNSSysInfo;
+extern void
+FNSSysInfoGet(FNSSysInfo * ioInfo) ;
+
+
+
+
+typedef struct OpaqueFNSFontReference* FNSFontReference;
+extern OSStatus
+FNSReferenceGetVersion(
+  FNSFontReference iReference,
+  FNSObjectVersion * oVersion) ;
+extern OSStatus
+FNSReferenceDispose(FNSFontReference iReference) ;
+extern OSStatus
+FNSReferenceMatch(
+  FNSFontReference iReference1,
+  FNSFontReference iReference2,
+  FNSMatchOptions iOptions,
+  FNSMatchOptions * oFailedMatchOptions) ;
+extern OSStatus
+FNSReferenceFlattenedSize(
+  FNSFontReference iReference,
+  ByteCount * oFlattenedSize) ;
+extern OSStatus
+FNSReferenceFlatten(
+  FNSFontReference iReference,
+  void * oFlatReference,
+  ByteCount * oFlattenedSize) ;
+extern OSStatus
+FNSReferenceUnflatten(
+  const void * iFlatReference,
+  ByteCount iFlattenedSize,
+  FNSFontReference * oReference) ;
+
+
+
+
+enum {
+  kFNSCreatorDefault = 0,
+  kFNSProfileFileType = 'fnsp'
+};
+
+typedef struct OpaqueFNSFontProfile* FNSFontProfile;
+extern OSStatus
+FNSProfileCreate(
+  const FSSpec * iFile,
+  FourCharCode iCreator,
+  ItemCount iEstNumRefs,
+  FNSObjectVersion iDesiredVersion,
+  FNSFontProfile * oProfile) ;
+extern OSStatus
+FNSProfileOpen(
+  const FSSpec * iFile,
+  Boolean iOpenForWrite,
+  FNSFontProfile * oProfile) ;
+extern OSStatus
+FNSProfileCreateWithFSRef(
+  const FSRef * iParentDirectory,
+  UniCharCount iNameLength,
+  const UniChar * iName,
+  FourCharCode iCreator,
+  ItemCount iEstNumRefs,
+  FNSObjectVersion iDesiredVersion,
+  FNSFontProfile * oProfile) ;
+extern OSStatus
+FNSProfileOpenWithFSRef(
+  const FSRef * iFile,
+  Boolean iOpenForWrite,
+  FNSFontProfile * oProfile) ;
+extern OSStatus
+FNSProfileGetVersion(
+  FNSFontProfile iProfile,
+  FNSObjectVersion * oVersion) ;
+extern OSStatus
+FNSProfileCompact(FNSFontProfile iProfile) ;
+extern OSStatus
+FNSProfileClose(FNSFontProfile iProfile) ;
+extern OSStatus
+FNSProfileAddReference(
+  FNSFontProfile iProfile,
+  FNSFontReference iReference) ;
+extern OSStatus
+FNSProfileRemoveReference(
+  FNSFontProfile iProfile,
+  FNSFontReference iReference) ;
+extern OSStatus
+FNSProfileRemoveIndReference(
+  FNSFontProfile iProfile,
+  UInt32 iIndex) ;
+extern OSStatus
+FNSProfileClear(FNSFontProfile iProfile) ;
+extern OSStatus
+FNSProfileCountReferences(
+  FNSFontProfile iProfile,
+  ItemCount * oCount) ;
+extern OSStatus
+FNSProfileGetIndReference(
+  FNSFontProfile iProfile,
+  UInt32 iWhichReference,
+  FNSFontReference * oReference) ;
+extern OSStatus
+FNSProfileMatchReference(
+  FNSFontProfile iProfile,
+  FNSFontReference iReference,
+  FNSMatchOptions iMatchOptions,
+  ItemCount iOutputSize,
+  UInt32 oIndices[],
+  ItemCount * oNumMatches) ;
+extern OSStatus
+FNSReferenceCreate(
+  FMFont iFont,
+  FNSObjectVersion iDesiredVersion,
+  FNSFontReference * oReference) ;
+extern OSStatus
+FNSReferenceMatchFonts(
+  FNSFontReference iReference,
+  FNSMatchOptions iMatchOptions,
+  ItemCount iOutputSize,
+  FMFont oFonts[],
+  ItemCount * oNumMatches) ;
+extern OSStatus
+FNSReferenceCreateFromFamily(
+  FMFontFamily iFamily,
+  FMFontStyle iStyle,
+  FNSObjectVersion iDesiredVersion,
+  FNSFontReference * oReference,
+  FMFontStyle * oActualStyle) ;
+extern OSStatus
+FNSReferenceMatchFamilies(
+  FNSFontReference iReference,
+  FNSMatchOptions iMatchOptions,
+  ItemCount iOutputSize,
+  FMFontFamilyInstance oFonts[],
+  ItemCount * oNumMatches) ;
+extern OSStatus
+FNSReferenceGetFamilyInfo(
+  FNSFontReference iReference,
+  Str255 oFamilyName,
+  ScriptCode * oFamilyNameScript,
+  FMFontStyle * oActualStyle) ;
+extern OSStatus
+FNSReferenceCountNames(
+  FNSFontReference iReference,
+  ItemCount * oNameCount) ;
+extern OSStatus
+FNSReferenceGetIndName(
+  FNSFontReference iReference,
+  ItemCount iFontNameIndex,
+  ByteCount iMaximumNameLength,
+  Ptr oName,
+  ByteCount * oActualNameLength,
+  FontNameCode * oFontNameCode,
+  FontPlatformCode * oFontNamePlatform,
+  FontScriptCode * oFontNameScript,
+  FontLanguageCode * oFontNameLanguage) ;
+extern OSStatus
+FNSReferenceFindName(
+  FNSFontReference iReference,
+  FontNameCode iFontNameCode,
+  FontPlatformCode iFontNamePlatform,
+  FontScriptCode iFontNameScript,
+  FontLanguageCode iFontNameLanguage,
+  ByteCount iMaximumNameLength,
+  Ptr oName,
+  ByteCount * oActualNameLength,
+  ItemCount * oFontNameIndex) ;
+extern Boolean
+FNSEnabled(void) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef UInt32 ATSUFlattenedDataStreamFormat;
+enum {
+  kATSUDataStreamUnicodeStyledText = 'ustl'
+};
+
+
+
+
+
+
+
+typedef UInt32 ATSUFlattenStyleRunOptions;
+enum {
+  kATSUFlattenOptionNoOptionsMask = 0x00000000
+};
+
+
+
+
+
+
+typedef UInt32 ATSUUnFlattenStyleRunOptions;
+enum {
+  kATSUUnFlattenOptionNoOptionsMask = 0x00000000
+};
+struct ATSUStyleRunInfo {
+  UniCharCount runLength;
+  ItemCount styleObjectIndex;
+};
+typedef struct ATSUStyleRunInfo ATSUStyleRunInfo;
+enum {
+  kATSFlatDataUstlVersion0 = 0,
+  kATSFlatDataUstlVersion1 = 1,
+  kATSFlatDataUstlVersion2 = 2,
+  kATSFlatDataUstlCurrentVersion = kATSFlatDataUstlVersion2
+};
+struct ATSFlatDataMainHeaderBlock {
+
+
+
+
+  UInt32 version;
+
+
+
+  ByteCount sizeOfDataBlock;
+
+
+
+  ByteCount offsetToTextLayouts;
+
+
+
+  ByteCount offsetToStyleRuns;
+
+
+
+  ByteCount offsetToStyleList;
+};
+typedef struct ATSFlatDataMainHeaderBlock ATSFlatDataMainHeaderBlock;
+struct ATSFlatDataTextLayoutDataHeader {
+
+
+
+  ByteCount sizeOfLayoutData;
+
+
+  ByteCount textLayoutLength;
+
+
+
+
+  ByteCount offsetToLayoutControls;
+
+
+
+
+  ByteCount offsetToLineInfo;
+
+
+
+
+
+
+
+};
+typedef struct ATSFlatDataTextLayoutDataHeader ATSFlatDataTextLayoutDataHeader;
+
+
+
+
+
+struct ATSFlatDataLayoutControlsDataHeader {
+
+
+
+  ItemCount numberOfLayoutControls;
+  ATSUAttributeInfo controlArray[1];
+};
+typedef struct ATSFlatDataLayoutControlsDataHeader ATSFlatDataLayoutControlsDataHeader;
+struct ATSFlatDataLineInfoData {
+
+
+  UniCharCount lineLength;
+
+
+
+  ItemCount numberOfLineControls;
+
+
+
+
+};
+typedef struct ATSFlatDataLineInfoData ATSFlatDataLineInfoData;
+
+
+
+
+
+struct ATSFlatDataLineInfoHeader {
+
+
+
+
+
+  ItemCount numberOfLines;
+
+
+
+
+  ATSFlatDataLineInfoData lineInfoArray[1];
+};
+typedef struct ATSFlatDataLineInfoHeader ATSFlatDataLineInfoHeader;
+struct ATSFlatDataStyleRunDataHeader {
+
+
+  ItemCount numberOfStyleRuns;
+
+
+
+
+  ATSUStyleRunInfo styleRunArray[1];
+};
+typedef struct ATSFlatDataStyleRunDataHeader ATSFlatDataStyleRunDataHeader;
+struct ATSFlatDataStyleListStyleDataHeader {
+
+
+
+
+  ByteCount sizeOfStyleInfo;
+
+
+
+
+  ItemCount numberOfSetAttributes;
+
+
+
+  ItemCount numberOfSetFeatures;
+
+
+
+  ItemCount numberOfSetVariations;
+};
+typedef struct ATSFlatDataStyleListStyleDataHeader ATSFlatDataStyleListStyleDataHeader;
+
+
+
+
+
+struct ATSFlatDataStyleListHeader {
+
+
+  ItemCount numberOfStyles;
+
+
+
+
+
+
+  ATSFlatDataStyleListStyleDataHeader styleDataArray[1];
+
+};
+typedef struct ATSFlatDataStyleListHeader ATSFlatDataStyleListHeader;
+
+
+
+
+
+struct ATSFlatDataStyleListFeatureData {
+
+
+  ATSUFontFeatureType theFeatureType;
+
+
+  ATSUFontFeatureSelector theFeatureSelector;
+};
+typedef struct ATSFlatDataStyleListFeatureData ATSFlatDataStyleListFeatureData;
+
+
+
+
+
+
+struct ATSFlatDataStyleListVariationData {
+
+
+  ATSUFontVariationAxis theVariationAxis;
+
+
+  ATSUFontVariationValue theVariationValue;
+};
+typedef struct ATSFlatDataStyleListVariationData ATSFlatDataStyleListVariationData;
+typedef UInt32 ATSFlatDataFontSpeciferType;
+enum {
+
+
+  kATSFlattenedFontSpecifierRawNameData = 'namd'
+};
+
+
+
+
+
+
+struct ATSFlatDataFontNameDataHeader {
+
+
+  ATSFlatDataFontSpeciferType nameSpecifierType;
+
+
+
+
+
+  ByteCount nameSpecifierSize;
+
+
+
+
+
+
+
+};
+typedef struct ATSFlatDataFontNameDataHeader ATSFlatDataFontNameDataHeader;
+
+
+
+
+
+
+
+struct ATSFlatDataFontSpecRawNameData {
+
+
+  FontNameCode fontNameType;
+
+
+
+
+
+  FontPlatformCode fontNamePlatform;
+
+
+
+
+
+  FontScriptCode fontNameScript;
+
+
+
+
+  FontLanguageCode fontNameLanguage;
+
+
+
+  ByteCount fontNameLength;
+
+
+
+
+};
+typedef struct ATSFlatDataFontSpecRawNameData ATSFlatDataFontSpecRawNameData;
+struct ATSFlatDataFontSpecRawNameDataHeader {
+
+
+
+  ItemCount numberOfFlattenedNames;
+
+
+
+
+
+  ATSFlatDataFontSpecRawNameData nameDataArray[1];
+
+};
+typedef struct ATSFlatDataFontSpecRawNameDataHeader ATSFlatDataFontSpecRawNameDataHeader;
+extern OSStatus
+ATSUFlattenStyleRunsToStream(
+  ATSUFlattenedDataStreamFormat iStreamFormat,
+  ATSUFlattenStyleRunOptions iFlattenOptions,
+  ItemCount iNumberOfRunInfo,
+  const ATSUStyleRunInfo iRunInfoArray[],
+  ItemCount iNumberOfStyleObjects,
+  const ATSUStyle iStyleArray[],
+  ByteCount iStreamBufferSize,
+  void * oStreamBuffer,
+  ByteCount * oActualStreamBufferSize) ;
+extern OSStatus
+ATSUUnflattenStyleRunsFromStream(
+  ATSUFlattenedDataStreamFormat iStreamFormat,
+  ATSUUnFlattenStyleRunOptions iUnflattenOptions,
+  ByteCount iStreamBufferSize,
+  const void * iStreamBuffer,
+  ItemCount iNumberOfRunInfo,
+  ItemCount iNumberOfStyleObjects,
+  ATSUStyleRunInfo oRunInfoArray[],
+  ATSUStyle oStyleArray[],
+  ItemCount * oActualNumberOfRunInfo,
+  ItemCount * oActualNumberOfStyleObjects) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+typedef UInt32 ATSUDirectDataSelector;
+enum {
+  kATSUDirectDataAdvanceDeltaFixedArray = 0L,
+  kATSUDirectDataBaselineDeltaFixedArray = 1L,
+  kATSUDirectDataDeviceDeltaSInt16Array = 2L,
+  kATSUDirectDataStyleIndexUInt16Array = 3L,
+  kATSUDirectDataStyleSettingATSUStyleSettingRefArray = 4L,
+  kATSUDirectDataLayoutRecordATSLayoutRecordVersion1 = 100L,
+  kATSUDirectDataLayoutRecordATSLayoutRecordCurrent = kATSUDirectDataLayoutRecordATSLayoutRecordVersion1
+};
+typedef struct ATSStyleSetting* ATSUStyleSettingRef;
+extern OSStatus
+ATSUDirectGetLayoutDataArrayPtrFromLineRef(
+  ATSULineRef iLineRef,
+  ATSUDirectDataSelector iDataSelector,
+  Boolean iCreate,
+  void * oLayoutDataArrayPtr[],
+  ItemCount * oLayoutDataCount) ;
+extern OSStatus
+ATSUDirectGetLayoutDataArrayPtrFromTextLayout(
+  ATSUTextLayout iTextLayout,
+  UniCharArrayOffset iLineOffset,
+  ATSUDirectDataSelector iDataSelector,
+  void * oLayoutDataArrayPtr[],
+  ItemCount * oLayoutDataCount) ;
+extern OSStatus
+ATSUDirectReleaseLayoutDataArrayPtr(
+  ATSULineRef iLineRef,
+  ATSUDirectDataSelector iDataSelector,
+  void * iLayoutDataArrayPtr[]) ;
+extern OSStatus
+ATSUDirectAddStyleSettingRef(
+  ATSULineRef iLineRef,
+  ATSUStyleSettingRef iStyleSettingRef,
+  UInt16 * oStyleIndex) ;
+
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+enum {
+  kGenericDocumentIconResource = -4000,
+  kGenericStationeryIconResource = -3985,
+  kGenericEditionFileIconResource = -3989,
+  kGenericApplicationIconResource = -3996,
+  kGenericDeskAccessoryIconResource = -3991,
+  kGenericFolderIconResource = -3999,
+  kPrivateFolderIconResource = -3994,
+  kFloppyIconResource = -3998,
+  kTrashIconResource = -3993,
+  kGenericRAMDiskIconResource = -3988,
+  kGenericCDROMIconResource = -3987
+};
+
+
+
+enum {
+  kDesktopIconResource = -3992,
+  kOpenFolderIconResource = -3997,
+  kGenericHardDiskIconResource = -3995,
+  kGenericFileServerIconResource = -3972,
+  kGenericSuitcaseIconResource = -3970,
+  kGenericMoverObjectIconResource = -3969
+};
+
+
+
+enum {
+  kGenericPreferencesIconResource = -3971,
+  kGenericQueryDocumentIconResource = -16506,
+  kGenericExtensionIconResource = -16415,
+  kSystemFolderIconResource = -3983,
+  kHelpIconResource = -20271,
+  kAppleMenuFolderIconResource = -3982
+};
+
+
+enum {
+  genericDocumentIconResource = kGenericDocumentIconResource,
+  genericStationeryIconResource = kGenericStationeryIconResource,
+  genericEditionFileIconResource = kGenericEditionFileIconResource,
+  genericApplicationIconResource = kGenericApplicationIconResource,
+  genericDeskAccessoryIconResource = kGenericDeskAccessoryIconResource,
+  genericFolderIconResource = kGenericFolderIconResource,
+  privateFolderIconResource = kPrivateFolderIconResource,
+  floppyIconResource = kFloppyIconResource,
+  trashIconResource = kTrashIconResource,
+  genericRAMDiskIconResource = kGenericRAMDiskIconResource,
+  genericCDROMIconResource = kGenericCDROMIconResource,
+  desktopIconResource = kDesktopIconResource,
+  openFolderIconResource = kOpenFolderIconResource,
+  genericHardDiskIconResource = kGenericHardDiskIconResource,
+  genericFileServerIconResource = kGenericFileServerIconResource,
+  genericSuitcaseIconResource = kGenericSuitcaseIconResource,
+  genericMoverObjectIconResource = kGenericMoverObjectIconResource,
+  genericPreferencesIconResource = kGenericPreferencesIconResource,
+  genericQueryDocumentIconResource = kGenericQueryDocumentIconResource,
+  genericExtensionIconResource = kGenericExtensionIconResource,
+  systemFolderIconResource = kSystemFolderIconResource,
+  appleMenuFolderIconResource = kAppleMenuFolderIconResource
+};
+
+
+enum {
+  kStartupFolderIconResource = -3981,
+  kOwnedFolderIconResource = -3980,
+  kDropFolderIconResource = -3979,
+  kSharedFolderIconResource = -3978,
+  kMountedFolderIconResource = -3977,
+  kControlPanelFolderIconResource = -3976,
+  kPrintMonitorFolderIconResource = -3975,
+  kPreferencesFolderIconResource = -3974,
+  kExtensionsFolderIconResource = -3973,
+  kFontsFolderIconResource = -3968,
+  kFullTrashIconResource = -3984
+};
+
+
+enum {
+  startupFolderIconResource = kStartupFolderIconResource,
+  ownedFolderIconResource = kOwnedFolderIconResource,
+  dropFolderIconResource = kDropFolderIconResource,
+  sharedFolderIconResource = kSharedFolderIconResource,
+  mountedFolderIconResource = kMountedFolderIconResource,
+  controlPanelFolderIconResource = kControlPanelFolderIconResource,
+  printMonitorFolderIconResource = kPrintMonitorFolderIconResource,
+  preferencesFolderIconResource = kPreferencesFolderIconResource,
+  extensionsFolderIconResource = kExtensionsFolderIconResource,
+  fontsFolderIconResource = kFontsFolderIconResource,
+  fullTrashIconResource = kFullTrashIconResource
+};
+
+
+enum {
+  kAlignNone = 0x00,
+  kAlignVerticalCenter = 0x01,
+  kAlignTop = 0x02,
+  kAlignBottom = 0x03,
+  kAlignHorizontalCenter = 0x04,
+  kAlignAbsoluteCenter = kAlignVerticalCenter | kAlignHorizontalCenter,
+  kAlignCenterTop = kAlignTop | kAlignHorizontalCenter,
+  kAlignCenterBottom = kAlignBottom | kAlignHorizontalCenter,
+  kAlignLeft = 0x08,
+  kAlignCenterLeft = kAlignVerticalCenter | kAlignLeft,
+  kAlignTopLeft = kAlignTop | kAlignLeft,
+  kAlignBottomLeft = kAlignBottom | kAlignLeft,
+  kAlignRight = 0x0C,
+  kAlignCenterRight = kAlignVerticalCenter | kAlignRight,
+  kAlignTopRight = kAlignTop | kAlignRight,
+  kAlignBottomRight = kAlignBottom | kAlignRight
+};
+
+
+enum {
+  atNone = kAlignNone,
+  atVerticalCenter = kAlignVerticalCenter,
+  atTop = kAlignTop,
+  atBottom = kAlignBottom,
+  atHorizontalCenter = kAlignHorizontalCenter,
+  atAbsoluteCenter = kAlignAbsoluteCenter,
+  atCenterTop = kAlignCenterTop,
+  atCenterBottom = kAlignCenterBottom,
+  atLeft = kAlignLeft,
+  atCenterLeft = kAlignCenterLeft,
+  atTopLeft = kAlignTopLeft,
+  atBottomLeft = kAlignBottomLeft,
+  atRight = kAlignRight,
+  atCenterRight = kAlignCenterRight,
+  atTopRight = kAlignTopRight,
+  atBottomRight = kAlignBottomRight
+};
+
+typedef SInt16 IconAlignmentType;
+
+enum {
+  kTransformNone = 0x00,
+  kTransformDisabled = 0x01,
+  kTransformOffline = 0x02,
+  kTransformOpen = 0x03,
+  kTransformLabel1 = 0x0100,
+  kTransformLabel2 = 0x0200,
+  kTransformLabel3 = 0x0300,
+  kTransformLabel4 = 0x0400,
+  kTransformLabel5 = 0x0500,
+  kTransformLabel6 = 0x0600,
+  kTransformLabel7 = 0x0700,
+  kTransformSelected = 0x4000,
+  kTransformSelectedDisabled = kTransformSelected | kTransformDisabled,
+  kTransformSelectedOffline = kTransformSelected | kTransformOffline,
+  kTransformSelectedOpen = kTransformSelected | kTransformOpen
+};
+
+
+enum {
+  ttNone = kTransformNone,
+  ttDisabled = kTransformDisabled,
+  ttOffline = kTransformOffline,
+  ttOpen = kTransformOpen,
+  ttLabel1 = kTransformLabel1,
+  ttLabel2 = kTransformLabel2,
+  ttLabel3 = kTransformLabel3,
+  ttLabel4 = kTransformLabel4,
+  ttLabel5 = kTransformLabel5,
+  ttLabel6 = kTransformLabel6,
+  ttLabel7 = kTransformLabel7,
+  ttSelected = kTransformSelected,
+  ttSelectedDisabled = kTransformSelectedDisabled,
+  ttSelectedOffline = kTransformSelectedOffline,
+  ttSelectedOpen = kTransformSelectedOpen
+};
+
+typedef SInt16 IconTransformType;
+
+enum {
+  kSelectorLarge1Bit = 0x00000001,
+  kSelectorLarge4Bit = 0x00000002,
+  kSelectorLarge8Bit = 0x00000004,
+  kSelectorLarge32Bit = 0x00000008,
+  kSelectorLarge8BitMask = 0x00000010,
+  kSelectorSmall1Bit = 0x00000100,
+  kSelectorSmall4Bit = 0x00000200,
+  kSelectorSmall8Bit = 0x00000400,
+  kSelectorSmall32Bit = 0x00000800,
+  kSelectorSmall8BitMask = 0x00001000,
+  kSelectorMini1Bit = 0x00010000,
+  kSelectorMini4Bit = 0x00020000,
+  kSelectorMini8Bit = 0x00040000,
+  kSelectorHuge1Bit = 0x01000000,
+  kSelectorHuge4Bit = 0x02000000,
+  kSelectorHuge8Bit = 0x04000000,
+  kSelectorHuge32Bit = 0x08000000,
+  kSelectorHuge8BitMask = 0x10000000,
+  kSelectorAllLargeData = 0x000000FF,
+  kSelectorAllSmallData = 0x0000FF00,
+  kSelectorAllMiniData = 0x00FF0000,
+  kSelectorAllHugeData = (long)0xFF000000,
+  kSelectorAll1BitData = kSelectorLarge1Bit | kSelectorSmall1Bit | kSelectorMini1Bit | kSelectorHuge1Bit,
+  kSelectorAll4BitData = kSelectorLarge4Bit | kSelectorSmall4Bit | kSelectorMini4Bit | kSelectorHuge4Bit,
+  kSelectorAll8BitData = kSelectorLarge8Bit | kSelectorSmall8Bit | kSelectorMini8Bit | kSelectorHuge8Bit,
+  kSelectorAll32BitData = kSelectorLarge32Bit | kSelectorSmall32Bit | kSelectorHuge32Bit,
+  kSelectorAllAvailableData = (long)0xFFFFFFFF
+};
+
+
+
+enum {
+  svLarge1Bit = kSelectorLarge1Bit,
+  svLarge4Bit = kSelectorLarge4Bit,
+  svLarge8Bit = kSelectorLarge8Bit,
+  svSmall1Bit = kSelectorSmall1Bit,
+  svSmall4Bit = kSelectorSmall4Bit,
+  svSmall8Bit = kSelectorSmall8Bit,
+  svMini1Bit = kSelectorMini1Bit,
+  svMini4Bit = kSelectorMini4Bit,
+  svMini8Bit = kSelectorMini8Bit,
+  svAllLargeData = kSelectorAllLargeData,
+  svAllSmallData = kSelectorAllSmallData,
+  svAllMiniData = kSelectorAllMiniData,
+  svAll1BitData = kSelectorAll1BitData,
+  svAll4BitData = kSelectorAll4BitData,
+  svAll8BitData = kSelectorAll8BitData,
+  svAllAvailableData = kSelectorAllAvailableData
+};
+
+typedef UInt32 IconSelectorValue;
+typedef OSErr ( * IconActionProcPtr)(ResType theType, Handle *theIcon, void *yourDataPtr);
+typedef Handle ( * IconGetterProcPtr)(ResType theType, void *yourDataPtr);
+typedef IconActionProcPtr IconActionUPP;
+typedef IconGetterProcPtr IconGetterUPP;
+extern IconActionUPP
+NewIconActionUPP(IconActionProcPtr userRoutine) ;
+extern IconGetterUPP
+NewIconGetterUPP(IconGetterProcPtr userRoutine) ;
+extern void
+DisposeIconActionUPP(IconActionUPP userUPP) ;
+extern void
+DisposeIconGetterUPP(IconGetterUPP userUPP) ;
+extern OSErr
+InvokeIconActionUPP(
+  ResType theType,
+  Handle * theIcon,
+  void * yourDataPtr,
+  IconActionUPP userUPP) ;
+extern Handle
+InvokeIconGetterUPP(
+  ResType theType,
+  void * yourDataPtr,
+  IconGetterUPP userUPP) ;
+
+typedef IconGetterProcPtr IconGetter;
+typedef IconActionProcPtr IconAction;
+
+struct CIcon {
+  PixMap iconPMap;
+  BitMap iconMask;
+  BitMap iconBMap;
+  Handle iconData;
+  SInt16 iconMaskData[1];
+};
+typedef struct CIcon CIcon;
+typedef CIcon * CIconPtr;
+typedef CIconPtr * CIconHandle;
+extern CIconHandle
+GetCIcon(SInt16 iconID) ;
+extern void
+PlotCIcon(
+  const Rect * theRect,
+  CIconHandle theIcon) ;
+extern void
+DisposeCIcon(CIconHandle theIcon) ;
+extern Handle
+GetIcon(SInt16 iconID) ;
+extern void
+PlotIcon(
+  const Rect * theRect,
+  Handle theIcon) ;
+typedef Handle IconSuiteRef;
+typedef Handle IconCacheRef;
+
+typedef struct OpaqueIconRef* IconRef;
+extern OSErr
+PlotIconID(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  SInt16 theResID) ;
+extern OSErr
+NewIconSuite(IconSuiteRef * theIconSuite) ;
+extern OSErr
+AddIconToSuite(
+  Handle theIconData,
+  IconSuiteRef theSuite,
+  ResType theType) ;
+extern OSErr
+GetIconFromSuite(
+  Handle * theIconData,
+  IconSuiteRef theSuite,
+  ResType theType) ;
+extern OSErr
+ForEachIconDo(
+  IconSuiteRef theSuite,
+  IconSelectorValue selector,
+  IconActionUPP action,
+  void * yourDataPtr) ;
+extern OSErr
+GetIconSuite(
+  IconSuiteRef * theIconSuite,
+  SInt16 theResID,
+  IconSelectorValue selector) ;
+extern OSErr
+DisposeIconSuite(
+  IconSuiteRef theIconSuite,
+  Boolean disposeData) ;
+extern OSErr
+PlotIconSuite(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  IconSuiteRef theIconSuite) ;
+extern OSErr
+MakeIconCache(
+  IconCacheRef * theCache,
+  IconGetterUPP makeIcon,
+  void * yourDataPtr) ;
+extern OSErr
+LoadIconCache(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  IconCacheRef theIconCache) ;
+extern OSErr
+PlotIconMethod(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  IconGetterUPP theMethod,
+  void * yourDataPtr) ;
+extern OSErr
+GetLabel(
+  SInt16 labelNumber,
+  RGBColor * labelColor,
+  Str255 labelString) ;
+extern Boolean
+PtInIconID(
+  Point testPt,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  SInt16 iconID) ;
+extern Boolean
+PtInIconSuite(
+  Point testPt,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconSuiteRef theIconSuite) ;
+extern Boolean
+PtInIconMethod(
+  Point testPt,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconGetterUPP theMethod,
+  void * yourDataPtr) ;
+extern Boolean
+RectInIconID(
+  const Rect * testRect,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  SInt16 iconID) ;
+extern Boolean
+RectInIconSuite(
+  const Rect * testRect,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconSuiteRef theIconSuite) ;
+extern Boolean
+RectInIconMethod(
+  const Rect * testRect,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconGetterUPP theMethod,
+  void * yourDataPtr) ;
+extern OSErr
+IconIDToRgn(
+  RgnHandle theRgn,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  SInt16 iconID) ;
+extern OSErr
+IconSuiteToRgn(
+  RgnHandle theRgn,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconSuiteRef theIconSuite) ;
+extern OSErr
+IconMethodToRgn(
+  RgnHandle theRgn,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconGetterUPP theMethod,
+  void * yourDataPtr) ;
+extern OSErr
+SetSuiteLabel(
+  IconSuiteRef theSuite,
+  SInt16 theLabel) ;
+extern SInt16
+GetSuiteLabel(IconSuiteRef theSuite) ;
+extern OSErr
+GetIconCacheData(
+  IconCacheRef theCache,
+  void ** theData) ;
+extern OSErr
+SetIconCacheData(
+  IconCacheRef theCache,
+  void * theData) ;
+extern OSErr
+GetIconCacheProc(
+  IconCacheRef theCache,
+  IconGetterUPP * theProc) ;
+extern OSErr
+SetIconCacheProc(
+  IconCacheRef theCache,
+  IconGetterUPP theProc) ;
+extern OSErr
+PlotIconHandle(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  Handle theIcon) ;
+extern OSErr
+PlotSICNHandle(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  Handle theSICN) ;
+extern OSErr
+PlotCIconHandle(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  CIconHandle theCIcon) ;
+enum {
+  kSystemIconsCreator = 'macs'
+};
+enum {
+  kClipboardIcon = 'CLIP',
+  kClippingUnknownTypeIcon = 'clpu',
+  kClippingPictureTypeIcon = 'clpp',
+  kClippingTextTypeIcon = 'clpt',
+  kClippingSoundTypeIcon = 'clps',
+  kDesktopIcon = 'desk',
+  kFinderIcon = 'FNDR',
+  kFontSuitcaseIcon = 'FFIL',
+  kFullTrashIcon = 'ftrh',
+  kGenericApplicationIcon = 'APPL',
+  kGenericCDROMIcon = 'cddr',
+  kGenericControlPanelIcon = 'APPC',
+  kGenericControlStripModuleIcon = 'sdev',
+  kGenericComponentIcon = 'thng',
+  kGenericDeskAccessoryIcon = 'APPD',
+  kGenericDocumentIcon = 'docu',
+  kGenericEditionFileIcon = 'edtf',
+  kGenericExtensionIcon = 'INIT',
+  kGenericFileServerIcon = 'srvr',
+  kGenericFontIcon = 'ffil',
+  kGenericFontScalerIcon = 'sclr',
+  kGenericFloppyIcon = 'flpy',
+  kGenericHardDiskIcon = 'hdsk',
+  kGenericIDiskIcon = 'idsk',
+  kGenericRemovableMediaIcon = 'rmov',
+  kGenericMoverObjectIcon = 'movr',
+  kGenericPCCardIcon = 'pcmc',
+  kGenericPreferencesIcon = 'pref',
+  kGenericQueryDocumentIcon = 'qery',
+  kGenericRAMDiskIcon = 'ramd',
+  kGenericSharedLibaryIcon = 'shlb',
+  kGenericStationeryIcon = 'sdoc',
+  kGenericSuitcaseIcon = 'suit',
+  kGenericURLIcon = 'gurl',
+  kGenericWORMIcon = 'worm',
+  kInternationalResourcesIcon = 'ifil',
+  kKeyboardLayoutIcon = 'kfil',
+  kSoundFileIcon = 'sfil',
+  kSystemSuitcaseIcon = 'zsys',
+  kTrashIcon = 'trsh',
+  kTrueTypeFontIcon = 'tfil',
+  kTrueTypeFlatFontIcon = 'sfnt',
+  kTrueTypeMultiFlatFontIcon = 'ttcf',
+  kUserIDiskIcon = 'udsk',
+  kUnknownFSObjectIcon = 'unfs',
+  kInternationResourcesIcon = kInternationalResourcesIcon
+};
+
+
+enum {
+  kInternetLocationHTTPIcon = 'ilht',
+  kInternetLocationFTPIcon = 'ilft',
+  kInternetLocationAppleShareIcon = 'ilaf',
+  kInternetLocationAppleTalkZoneIcon = 'ilat',
+  kInternetLocationFileIcon = 'ilfi',
+  kInternetLocationMailIcon = 'ilma',
+  kInternetLocationNewsIcon = 'ilnw',
+  kInternetLocationNSLNeighborhoodIcon = 'ilns',
+  kInternetLocationGenericIcon = 'ilge'
+};
+
+
+enum {
+  kGenericFolderIcon = 'fldr',
+  kDropFolderIcon = 'dbox',
+  kMountedFolderIcon = 'mntd',
+  kOpenFolderIcon = 'ofld',
+  kOwnedFolderIcon = 'ownd',
+  kPrivateFolderIcon = 'prvf',
+  kSharedFolderIcon = 'shfl'
+};
+
+
+enum {
+  kSharingPrivsNotApplicableIcon = 'shna',
+  kSharingPrivsReadOnlyIcon = 'shro',
+  kSharingPrivsReadWriteIcon = 'shrw',
+  kSharingPrivsUnknownIcon = 'shuk',
+  kSharingPrivsWritableIcon = 'writ'
+};
+
+
+
+enum {
+  kUserFolderIcon = 'ufld',
+  kWorkgroupFolderIcon = 'wfld',
+  kGuestUserIcon = 'gusr',
+  kUserIcon = 'user',
+  kOwnerIcon = 'susr',
+  kGroupIcon = 'grup'
+};
+
+
+enum {
+  kAppearanceFolderIcon = 'appr',
+  kAppleExtrasFolderIcon = 'aexÄ',
+  kAppleMenuFolderIcon = 'amnu',
+  kApplicationsFolderIcon = 'apps',
+  kApplicationSupportFolderIcon = 'asup',
+  kAssistantsFolderIcon = 'astÄ',
+  kColorSyncFolderIcon = 'prof',
+  kContextualMenuItemsFolderIcon = 'cmnu',
+  kControlPanelDisabledFolderIcon = 'ctrD',
+  kControlPanelFolderIcon = 'ctrl',
+  kControlStripModulesFolderIcon = 'sdvÄ',
+  kDocumentsFolderIcon = 'docs',
+  kExtensionsDisabledFolderIcon = 'extD',
+  kExtensionsFolderIcon = 'extn',
+  kFavoritesFolderIcon = 'favs',
+  kFontsFolderIcon = 'font',
+  kHelpFolderIcon = 'Ählp',
+  kInternetFolderIcon = 'intÄ',
+  kInternetPlugInFolderIcon = 'Änet',
+  kInternetSearchSitesFolderIcon = 'issf',
+  kLocalesFolderIcon = 'Äloc',
+  kMacOSReadMeFolderIcon = 'morÄ',
+  kPublicFolderIcon = 'pubf',
+  kPreferencesFolderIcon = 'prfÄ',
+  kPrinterDescriptionFolderIcon = 'ppdf',
+  kPrinterDriverFolderIcon = 'Äprd',
+  kPrintMonitorFolderIcon = 'prnt',
+  kRecentApplicationsFolderIcon = 'rapp',
+  kRecentDocumentsFolderIcon = 'rdoc',
+  kRecentServersFolderIcon = 'rsrv',
+  kScriptingAdditionsFolderIcon = 'Äscr',
+  kSharedLibrariesFolderIcon = 'Älib',
+  kScriptsFolderIcon = 'scrÄ',
+  kShutdownItemsDisabledFolderIcon = 'shdD',
+  kShutdownItemsFolderIcon = 'shdf',
+  kSpeakableItemsFolder = 'spki',
+  kStartupItemsDisabledFolderIcon = 'strD',
+  kStartupItemsFolderIcon = 'strt',
+  kSystemExtensionDisabledFolderIcon = 'macD',
+  kSystemFolderIcon = 'macs',
+  kTextEncodingsFolderIcon = 'Ätex',
+  kUsersFolderIcon = 'usrÄ',
+  kUtilitiesFolderIcon = 'utiÄ',
+  kVoicesFolderIcon = 'fvoc'
+};
+
+
+enum {
+  kAppleScriptBadgeIcon = 'scrp',
+  kLockedBadgeIcon = 'lbdg',
+  kMountedBadgeIcon = 'mbdg',
+  kSharedBadgeIcon = 'sbdg',
+  kAliasBadgeIcon = 'abdg',
+  kAlertCautionBadgeIcon = 'cbdg'
+};
+
+
+enum {
+  kAlertNoteIcon = 'note',
+  kAlertCautionIcon = 'caut',
+  kAlertStopIcon = 'stop'
+};
+
+
+enum {
+  kAppleTalkIcon = 'atlk',
+  kAppleTalkZoneIcon = 'atzn',
+  kAFPServerIcon = 'afps',
+  kFTPServerIcon = 'ftps',
+  kHTTPServerIcon = 'htps',
+  kGenericNetworkIcon = 'gnet',
+  kIPFileServerIcon = 'isrv'
+};
+
+
+enum {
+  kToolbarCustomizeIcon = 'tcus',
+  kToolbarDeleteIcon = 'tdel',
+  kToolbarFavoritesIcon = 'tfav',
+  kToolbarHomeIcon = 'thom'
+};
+
+
+enum {
+  kAppleLogoIcon = 'capl',
+  kAppleMenuIcon = 'sapl',
+  kBackwardArrowIcon = 'baro',
+  kFavoriteItemsIcon = 'favr',
+  kForwardArrowIcon = 'faro',
+  kGridIcon = 'grid',
+  kHelpIcon = 'help',
+  kKeepArrangedIcon = 'arng',
+  kLockedIcon = 'lock',
+  kNoFilesIcon = 'nfil',
+  kNoFolderIcon = 'nfld',
+  kNoWriteIcon = 'nwrt',
+  kProtectedApplicationFolderIcon = 'papp',
+  kProtectedSystemFolderIcon = 'psys',
+  kRecentItemsIcon = 'rcnt',
+  kShortcutIcon = 'shrt',
+  kSortAscendingIcon = 'asnd',
+  kSortDescendingIcon = 'dsnd',
+  kUnlockedIcon = 'ulck',
+  kConnectToIcon = 'cnct',
+  kGenericWindowIcon = 'gwin',
+  kQuestionMarkIcon = 'ques',
+  kDeleteAliasIcon = 'dali',
+  kEjectMediaIcon = 'ejec',
+  kBurningIcon = 'burn',
+  kRightContainerArrowIcon = 'rcar'
+};
+
+
+
+
+typedef UInt32 IconServicesUsageFlags;
+enum {
+  kIconServicesNormalUsageFlag = 0
+};
+
+
+
+
+
+
+
+enum {
+  kIconServicesCatalogInfoMask = (kFSCatInfoNodeID | kFSCatInfoParentDirID | kFSCatInfoVolume | kFSCatInfoNodeFlags | kFSCatInfoFinderInfo | kFSCatInfoFinderXInfo | kFSCatInfoUserAccess)
+};
+typedef UInt32 PlotIconRefFlags;
+enum {
+
+
+
+
+  kPlotIconRefNormalFlags = 0L,
+
+
+
+
+  kPlotIconRefNoImage = (1 << 1),
+
+
+
+
+  kPlotIconRefNoMask = (1 << 2)
+};
+extern OSErr
+IconRefToIconFamily(
+  IconRef theIconRef,
+  IconSelectorValue whichIcons,
+  IconFamilyHandle * iconFamily) ;
+extern OSErr
+IconFamilyToIconSuite(
+  IconFamilyHandle iconFamily,
+  IconSelectorValue whichIcons,
+  IconSuiteRef * iconSuite) ;
+extern OSErr
+IconSuiteToIconFamily(
+  IconSuiteRef iconSuite,
+  IconSelectorValue whichIcons,
+  IconFamilyHandle * iconFamily) ;
+extern OSErr
+SetIconFamilyData(
+  IconFamilyHandle iconFamily,
+  OSType iconType,
+  Handle h) ;
+extern OSErr
+GetIconFamilyData(
+  IconFamilyHandle iconFamily,
+  OSType iconType,
+  Handle h) ;
+extern OSErr
+GetIconRefOwners(
+  IconRef theIconRef,
+  UInt16 * owners) ;
+extern OSErr
+AcquireIconRef(IconRef theIconRef) ;
+extern OSErr
+ReleaseIconRef(IconRef theIconRef) ;
+extern OSErr
+GetIconRefFromFile(
+  const FSSpec * theFile,
+  IconRef * theIconRef,
+  SInt16 * theLabel) ;
+extern OSErr
+GetIconRef(
+  SInt16 vRefNum,
+  OSType creator,
+  OSType iconType,
+  IconRef * theIconRef) ;
+extern OSErr
+GetIconRefFromFolder(
+  SInt16 vRefNum,
+  SInt32 parentFolderID,
+  SInt32 folderID,
+  SInt8 attributes,
+  SInt8 accessPrivileges,
+  IconRef * theIconRef) ;
+extern OSStatus
+GetIconRefFromFileInfo(
+  const FSRef * inRef,
+  UniCharCount inFileNameLength,
+  const UniChar * inFileName,
+  FSCatalogInfoBitmap inWhichInfo,
+  const FSCatalogInfo * inCatalogInfo,
+  IconServicesUsageFlags inUsageFlags,
+  IconRef * outIconRef,
+  SInt16 * outLabel) ;
+extern OSErr
+RegisterIconRefFromIconFamily(
+  OSType creator,
+  OSType iconType,
+  IconFamilyHandle iconFamily,
+  IconRef * theIconRef) ;
+extern OSErr
+RegisterIconRefFromResource(
+  OSType creator,
+  OSType iconType,
+  const FSSpec * resourceFile,
+  SInt16 resourceID,
+  IconRef * theIconRef) ;
+extern OSStatus
+RegisterIconRefFromFSRef(
+  OSType creator,
+  OSType iconType,
+  const FSRef * iconFile,
+  IconRef * theIconRef) ;
+extern OSErr
+UnregisterIconRef(
+  OSType creator,
+  OSType iconType) ;
+extern OSErr
+UpdateIconRef(IconRef theIconRef) ;
+extern OSErr
+OverrideIconRefFromResource(
+  IconRef theIconRef,
+  const FSSpec * resourceFile,
+  SInt16 resourceID) ;
+extern OSErr
+OverrideIconRef(
+  IconRef oldIconRef,
+  IconRef newIconRef) ;
+extern OSErr
+RemoveIconRefOverride(IconRef theIconRef) ;
+extern OSErr
+CompositeIconRef(
+  IconRef backgroundIconRef,
+  IconRef foregroundIconRef,
+  IconRef * compositeIconRef) ;
+extern OSErr
+IsIconRefComposite(
+  IconRef compositeIconRef,
+  IconRef * backgroundIconRef,
+  IconRef * foregroundIconRef) ;
+extern Boolean
+IsValidIconRef(IconRef theIconRef) ;
+extern OSErr
+PlotIconRef(
+  const Rect * theRect,
+  IconAlignmentType align,
+  IconTransformType transform,
+  IconServicesUsageFlags theIconServicesUsageFlags,
+  IconRef theIconRef) ;
+extern OSStatus
+PlotIconRefInContext(
+  CGContextRef inContext,
+  const CGRect * inRect,
+  IconAlignmentType inAlign,
+  IconTransformType inTransform,
+  const RGBColor * inLabelColor,
+  PlotIconRefFlags inFlags,
+  IconRef inIconRef) ;
+extern Boolean
+PtInIconRef(
+  const Point * testPt,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconServicesUsageFlags theIconServicesUsageFlags,
+  IconRef theIconRef) ;
+extern Boolean
+RectInIconRef(
+  const Rect * testRect,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconServicesUsageFlags iconServicesUsageFlags,
+  IconRef theIconRef) ;
+extern OSErr
+IconRefToRgn(
+  RgnHandle theRgn,
+  const Rect * iconRect,
+  IconAlignmentType align,
+  IconServicesUsageFlags iconServicesUsageFlags,
+  IconRef theIconRef) ;
+extern OSErr
+GetIconSizesFromIconRef(
+  IconSelectorValue iconSelectorInput,
+  IconSelectorValue * iconSelectorOutputPtr,
+  IconServicesUsageFlags iconServicesUsageFlags,
+  IconRef theIconRef) ;
+extern OSErr
+FlushIconRefs(
+  OSType creator,
+  OSType iconType) ;
+extern OSErr
+FlushIconRefsByVolume(SInt16 vRefNum) ;
+extern OSErr
+SetCustomIconsEnabled(
+  SInt16 vRefNum,
+  Boolean enableCustomIcons) ;
+extern OSErr
+GetCustomIconsEnabled(
+  SInt16 vRefNum,
+  Boolean * customIconsEnabled) ;
+extern Boolean
+IsIconRefMaskEmpty(IconRef iconRef) ;
+extern IconRef
+GetIconRefVariant(
+  IconRef inIconRef,
+  OSType inVariant,
+  IconTransformType * outTransform) ;
+extern OSErr
+RegisterIconRefFromIconFile(
+  OSType creator,
+  OSType iconType,
+  const FSSpec * iconFile,
+  IconRef * theIconRef) ;
+extern OSErr
+ReadIconFile(
+  const FSSpec * iconFile,
+  IconFamilyHandle * iconFamily) ;
+extern OSStatus
+ReadIconFromFSRef(
+  const FSRef * ref,
+  IconFamilyHandle * iconFamily) ;
+extern OSErr
+WriteIconFile(
+  IconFamilyHandle iconFamily,
+  const FSSpec * iconFile) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+enum {
+  icPrefNotFoundErr = -666,
+  icPermErr = -667,
+  icPrefDataErr = -668,
+  icInternalErr = -669,
+  icTruncatedErr = -670,
+  icNoMoreWritersErr = -671,
+  icNothingToOverrideErr = -672,
+  icNoURLErr = -673,
+  icConfigNotFoundErr = -674,
+  icConfigInappropriateErr = -675,
+  icProfileNotFoundErr = -676,
+  icTooManyProfilesErr = -677
+};
+
+
+
+
+
+enum {
+  kICComponentInterfaceVersion0 = 0x00000000,
+  kICComponentInterfaceVersion1 = 0x00010000,
+  kICComponentInterfaceVersion2 = 0x00020000,
+  kICComponentInterfaceVersion3 = 0x00030000,
+  kICComponentInterfaceVersion4 = 0x00040000,
+  kICComponentInterfaceVersion = kICComponentInterfaceVersion4
+};
+
+
+
+
+
+typedef struct OpaqueICInstance* ICInstance;
+
+
+
+
+struct ICDirSpec {
+  short vRefNum;
+  long dirID;
+};
+typedef struct ICDirSpec ICDirSpec;
+typedef ICDirSpec ICDirSpecArray[4];
+typedef ICDirSpecArray * ICDirSpecArrayPtr;
+
+
+
+
+typedef UInt32 ICAttr;
+
+enum {
+  kICAttrLockedBit = 0,
+  kICAttrVolatileBit = 1
+};
+
+enum {
+  kICAttrNoChange = (unsigned long)0xFFFFFFFF,
+  kICAttrLockedMask = 0x00000001,
+  kICAttrVolatileMask = 0x00000002
+};
+
+
+
+
+
+typedef UInt8 ICPerm;
+
+enum {
+  icNoPerm = 0,
+  icReadOnlyPerm = 1,
+  icReadWritePerm = 2
+};
+typedef long ICProfileID;
+typedef ICProfileID * ICProfileIDPtr;
+
+enum {
+  kICNilProfileID = 0
+};
+
+
+
+
+
+enum {
+  kICNoUserInteractionBit = 0
+};
+
+enum {
+  kICNoUserInteractionMask = 0x00000001
+};
+
+enum {
+  kICFileType = 'ICAp',
+  kICCreator = 'ICAp'
+};
+
+
+
+
+
+enum {
+  kInternetEventClass = 'GURL',
+  kAEGetURL = 'GURL',
+  kAEFetchURL = 'FURL',
+  keyAEAttaching = 'Atch'
+};
+
+
+
+enum {
+  kICEditPreferenceEventClass = 'ICAp',
+  kICEditPreferenceEvent = 'ICAp',
+  keyICEditPreferenceDestination = 'dest'
+};
+
+
+
+
+
+enum {
+  kICComponentVersion = 0,
+  kICNumVersion = 1
+};
+
+
+
+
+struct ICFontRecord {
+  short size;
+  Style face;
+  char pad;
+  Str255 font;
+};
+typedef struct ICFontRecord ICFontRecord;
+typedef ICFontRecord * ICFontRecordPtr;
+typedef ICFontRecordPtr * ICFontRecordHandle;
+
+
+
+
+struct ICCharTable {
+  unsigned char netToMac[256];
+  unsigned char macToNet[256];
+};
+typedef struct ICCharTable ICCharTable;
+typedef ICCharTable * ICCharTablePtr;
+typedef ICCharTablePtr * ICCharTableHandle;
+
+
+
+
+struct ICAppSpec {
+  OSType fCreator;
+  Str63 name;
+};
+typedef struct ICAppSpec ICAppSpec;
+typedef ICAppSpec * ICAppSpecPtr;
+typedef ICAppSpecPtr * ICAppSpecHandle;
+struct ICAppSpecList {
+  short numberOfItems;
+  ICAppSpec appSpecs[1];
+};
+typedef struct ICAppSpecList ICAppSpecList;
+typedef ICAppSpecList * ICAppSpecListPtr;
+typedef ICAppSpecListPtr * ICAppSpecListHandle;
+
+
+
+
+
+
+struct ICFileSpec {
+  Str31 volName;
+  long volCreationDate;
+  FSSpec fss;
+  AliasRecord alias;
+
+
+};
+typedef struct ICFileSpec ICFileSpec;
+typedef ICFileSpec * ICFileSpecPtr;
+typedef ICFileSpecPtr * ICFileSpecHandle;
+enum {
+  kICFileSpecHeaderSize = sizeof(ICFileSpec) - sizeof(AliasRecord)
+};
+
+
+
+
+typedef long ICMapEntryFlags;
+typedef short ICFixedLength;
+
+
+struct ICMapEntry {
+  short totalLength;
+  ICFixedLength fixedLength;
+  short version;
+  OSType fileType;
+  OSType fileCreator;
+  OSType postCreator;
+  ICMapEntryFlags flags;
+
+  Str255 extension;
+  Str255 creatorAppName;
+  Str255 postAppName;
+  Str255 MIMEType;
+  Str255 entryName;
+};
+typedef struct ICMapEntry ICMapEntry;
+typedef ICMapEntry * ICMapEntryPtr;
+typedef ICMapEntryPtr * ICMapEntryHandle;
+enum {
+  kICMapFixedLength = 22
+};
+
+enum {
+  kICMapBinaryBit = 0,
+  kICMapResourceForkBit = 1,
+  kICMapDataForkBit = 2,
+  kICMapPostBit = 3,
+  kICMapNotIncomingBit = 4,
+  kICMapNotOutgoingBit = 5
+};
+
+enum {
+  kICMapBinaryMask = 0x00000001,
+  kICMapResourceForkMask = 0x00000002,
+  kICMapDataForkMask = 0x00000004,
+  kICMapPostMask = 0x00000008,
+  kICMapNotIncomingMask = 0x00000010,
+  kICMapNotOutgoingMask = 0x00000020
+};
+
+
+
+
+typedef short ICServiceEntryFlags;
+struct ICServiceEntry {
+  Str255 name;
+  short port;
+  ICServiceEntryFlags flags;
+};
+typedef struct ICServiceEntry ICServiceEntry;
+typedef ICServiceEntry * ICServiceEntryPtr;
+typedef ICServiceEntryPtr * ICServiceEntryHandle;
+
+enum {
+  kICServicesTCPBit = 0,
+  kICServicesUDPBit = 1
+};
+
+enum {
+  kICServicesTCPMask = 0x00000001,
+  kICServicesUDPMask = 0x00000002
+};
+
+struct ICServices {
+  short count;
+  ICServiceEntry services[1];
+};
+typedef struct ICServices ICServices;
+typedef ICServices * ICServicesPtr;
+typedef ICServicesPtr * ICServicesHandle;
+extern OSStatus
+ICStart(
+  ICInstance * inst,
+  OSType signature) ;
+extern OSStatus
+ICStop(ICInstance inst) ;
+extern OSStatus
+ICGetVersion(
+  ICInstance inst,
+  long whichVersion,
+  UInt32 * version) ;
+extern OSStatus
+ICGetConfigName(
+  ICInstance inst,
+  Boolean longname,
+  Str255 name) ;
+extern OSStatus
+ICGetSeed(
+  ICInstance inst,
+  long * seed) ;
+extern OSStatus
+ICGetPerm(
+  ICInstance inst,
+  ICPerm * perm) ;
+extern OSStatus
+ICBegin(
+  ICInstance inst,
+  ICPerm perm) ;
+extern OSStatus
+ICGetPref(
+  ICInstance inst,
+  ConstStr255Param key,
+  ICAttr * attr,
+  void * buf,
+  long * size) ;
+extern OSStatus
+ICSetPref(
+  ICInstance inst,
+  ConstStr255Param key,
+  ICAttr attr,
+  const void * buf,
+  long size) ;
+extern OSStatus
+ICFindPrefHandle(
+  ICInstance inst,
+  ConstStr255Param key,
+  ICAttr * attr,
+  Handle prefh) ;
+extern OSStatus
+ICGetPrefHandle(
+  ICInstance inst,
+  ConstStr255Param key,
+  ICAttr * attr,
+  Handle * prefh) ;
+extern OSStatus
+ICSetPrefHandle(
+  ICInstance inst,
+  ConstStr255Param key,
+  ICAttr attr,
+  Handle prefh) ;
+extern OSStatus
+ICCountPref(
+  ICInstance inst,
+  long * count) ;
+extern OSStatus
+ICGetIndPref(
+  ICInstance inst,
+  long index,
+  Str255 key) ;
+extern OSStatus
+ICDeletePref(
+  ICInstance inst,
+  ConstStr255Param key) ;
+extern OSStatus
+ICEnd(ICInstance inst) ;
+extern OSStatus
+ICGetDefaultPref(
+  ICInstance inst,
+  ConstStr255Param key,
+  Handle prefH) ;
+extern OSStatus
+ICEditPreferences(
+  ICInstance inst,
+  ConstStr255Param key) ;
+extern OSStatus
+ICLaunchURL(
+  ICInstance inst,
+  ConstStr255Param hint,
+  const void * data,
+  long len,
+  long * selStart,
+  long * selEnd) ;
+extern OSStatus
+ICParseURL(
+  ICInstance inst,
+  ConstStr255Param hint,
+  const void * data,
+  long len,
+  long * selStart,
+  long * selEnd,
+  Handle url) ;
+extern OSStatus
+ICCreateGURLEvent(
+  ICInstance inst,
+  OSType helperCreator,
+  Handle urlH,
+  AppleEvent * theEvent) ;
+extern OSStatus
+ICSendGURLEvent(
+  ICInstance inst,
+  AppleEvent * theEvent) ;
+extern OSStatus
+ICMapFilename(
+  ICInstance inst,
+  ConstStr255Param filename,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICMapTypeCreator(
+  ICInstance inst,
+  OSType fType,
+  OSType fCreator,
+  ConstStr255Param filename,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICMapEntriesFilename(
+  ICInstance inst,
+  Handle entries,
+  ConstStr255Param filename,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICMapEntriesTypeCreator(
+  ICInstance inst,
+  Handle entries,
+  OSType fType,
+  OSType fCreator,
+  ConstStr255Param filename,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICCountMapEntries(
+  ICInstance inst,
+  Handle entries,
+  long * count) ;
+extern OSStatus
+ICGetIndMapEntry(
+  ICInstance inst,
+  Handle entries,
+  long index,
+  long * pos,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICGetMapEntry(
+  ICInstance inst,
+  Handle entries,
+  long pos,
+  ICMapEntry * entry) ;
+extern OSStatus
+ICSetMapEntry(
+  ICInstance inst,
+  Handle entries,
+  long pos,
+  const ICMapEntry * entry) ;
+extern OSStatus
+ICDeleteMapEntry(
+  ICInstance inst,
+  Handle entries,
+  long pos) ;
+extern OSStatus
+ICAddMapEntry(
+  ICInstance inst,
+  Handle entries,
+  const ICMapEntry * entry) ;
+extern OSStatus
+ICGetCurrentProfile(
+  ICInstance inst,
+  ICProfileID * currentID) ;
+extern OSStatus
+ICSetCurrentProfile(
+  ICInstance inst,
+  ICProfileID newID) ;
+extern OSStatus
+ICCountProfiles(
+  ICInstance inst,
+  long * count) ;
+extern OSStatus
+ICGetIndProfile(
+  ICInstance inst,
+  long index,
+  ICProfileID * thisID) ;
+extern OSStatus
+ICGetProfileName(
+  ICInstance inst,
+  ICProfileID thisID,
+  Str255 name) ;
+extern OSStatus
+ICSetProfileName(
+  ICInstance inst,
+  ICProfileID thisID,
+  ConstStr255Param name) ;
+extern OSStatus
+ICAddProfile(
+  ICInstance inst,
+  ICProfileID prototypeID,
+  ICProfileID * newID) ;
+extern OSStatus
+ICDeleteProfile(
+  ICInstance inst,
+  ICProfileID thisID) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+struct ProcessSerialNumber {
+  unsigned long highLongOfPSN;
+  unsigned long lowLongOfPSN;
+};
+typedef struct ProcessSerialNumber ProcessSerialNumber;
+typedef ProcessSerialNumber * ProcessSerialNumberPtr;
+enum {
+
+  kNoProcess = 0,
+  kSystemProcess = 1,
+  kCurrentProcess = 2
+};
+
+
+
+typedef unsigned short LaunchFlags;
+enum {
+  launchContinue = 0x4000,
+  launchNoFileFlags = 0x0800,
+  launchUseMinimum = 0x0400,
+  launchDontSwitch = 0x0200,
+  launchAllow24Bit = 0x0100,
+  launchInhibitDaemon = 0x0080
+};
+
+
+
+struct AppParameters {
+  struct {
+    UInt16 what;
+    UInt32 message;
+    UInt32 when;
+    Point where;
+    UInt16 modifiers;
+  } theMsgEvent;
+  unsigned long eventRefCon;
+  unsigned long messageLength;
+};
+typedef struct AppParameters AppParameters;
+typedef AppParameters * AppParametersPtr;
+
+struct LaunchParamBlockRec {
+  unsigned long reserved1;
+  unsigned short reserved2;
+  unsigned short launchBlockID;
+  unsigned long launchEPBLength;
+  unsigned short launchFileFlags;
+  LaunchFlags launchControlFlags;
+  FSSpecPtr launchAppSpec;
+  ProcessSerialNumber launchProcessSN;
+  unsigned long launchPreferredSize;
+  unsigned long launchMinimumSize;
+  unsigned long launchAvailableSize;
+  AppParametersPtr launchAppParameters;
+};
+typedef struct LaunchParamBlockRec LaunchParamBlockRec;
+typedef LaunchParamBlockRec * LaunchPBPtr;
+
+
+enum {
+  extendedBlock = 0x4C43,
+  extendedBlockLen = sizeof(LaunchParamBlockRec) - 12
+};
+
+enum {
+
+  modeReserved = 0x01000000,
+  modeControlPanel = 0x00080000,
+  modeLaunchDontSwitch = 0x00040000,
+  modeDeskAccessory = 0x00020000,
+  modeMultiLaunch = 0x00010000,
+  modeNeedSuspendResume = 0x00004000,
+  modeCanBackground = 0x00001000,
+  modeDoesActivateOnFGSwitch = 0x00000800,
+  modeOnlyBackground = 0x00000400,
+  modeGetFrontClicks = 0x00000200,
+  modeGetAppDiedMsg = 0x00000100,
+  mode32BitCompatible = 0x00000080,
+  modeHighLevelEventAware = 0x00000040,
+  modeLocalAndRemoteHLEvents = 0x00000020,
+  modeStationeryAware = 0x00000010,
+  modeUseTextEditServices = 0x00000008,
+  modeDisplayManagerAware = 0x00000004
+};
+struct ProcessInfoRec {
+  unsigned long processInfoLength;
+  StringPtr processName;
+  ProcessSerialNumber processNumber;
+  unsigned long processType;
+  OSType processSignature;
+  unsigned long processMode;
+  Ptr processLocation;
+  unsigned long processSize;
+  unsigned long processFreeMem;
+  ProcessSerialNumber processLauncher;
+  unsigned long processLaunchDate;
+  unsigned long processActiveTime;
+  FSSpecPtr processAppSpec;
+};
+typedef struct ProcessInfoRec ProcessInfoRec;
+typedef ProcessInfoRec * ProcessInfoRecPtr;
+struct ProcessInfoExtendedRec {
+  unsigned long processInfoLength;
+  StringPtr processName;
+  ProcessSerialNumber processNumber;
+  unsigned long processType;
+  OSType processSignature;
+  unsigned long processMode;
+  Ptr processLocation;
+  unsigned long processSize;
+  unsigned long processFreeMem;
+  ProcessSerialNumber processLauncher;
+  unsigned long processLaunchDate;
+  unsigned long processActiveTime;
+  FSSpecPtr processAppSpec;
+  unsigned long processTempMemTotal;
+  unsigned long processPurgeableTempMemTotal;
+};
+typedef struct ProcessInfoExtendedRec ProcessInfoExtendedRec;
+typedef ProcessInfoExtendedRec * ProcessInfoExtendedRecPtr;
+
+struct SizeResourceRec {
+  unsigned short flags;
+  unsigned long preferredHeapSize;
+  unsigned long minimumHeapSize;
+};
+typedef struct SizeResourceRec SizeResourceRec;
+typedef SizeResourceRec * SizeResourceRecPtr;
+typedef SizeResourceRecPtr * SizeResourceRecHandle;
+
+
+
+
+
+enum {
+
+
+
+
+
+  kProcessDictionaryIncludeAllInformationMask = (long)0xFFFFFFFF
+};
+enum {
+  kQuitBeforeNormalTimeMask = 1,
+  kQuitAtNormalTimeMask = 2,
+  kQuitBeforeFBAsQuitMask = 4,
+  kQuitBeforeShellQuitsMask = 8,
+  kQuitBeforeTerminatorAppQuitsMask = 16,
+  kQuitNeverMask = 32,
+  kQuitOptionsMask = 0x7F,
+  kQuitNotQuitDuringInstallMask = 0x0100,
+  kQuitNotQuitDuringLogoutMask = 0x0200
+};
+extern OSErr
+LaunchApplication(LaunchPBPtr LaunchParams) ;
+extern OSErr
+GetCurrentProcess(ProcessSerialNumber * PSN) ;
+extern OSErr
+GetFrontProcess(ProcessSerialNumber * PSN) ;
+extern OSErr
+GetNextProcess(ProcessSerialNumber * PSN) ;
+extern OSErr
+GetProcessInformation(
+  const ProcessSerialNumber * PSN,
+  ProcessInfoRec * info) ;
+extern CFDictionaryRef
+ProcessInformationCopyDictionary(
+  const ProcessSerialNumber * PSN,
+  UInt32 infoToReturn) ;
+extern OSErr
+SetFrontProcess(const ProcessSerialNumber * PSN) ;
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kSetFrontProcessFrontWindowOnly = (1 << 0)
+};
+extern OSStatus
+SetFrontProcessWithOptions(
+  const ProcessSerialNumber * inProcess,
+  OptionBits inOptions) ;
+extern OSErr
+WakeUpProcess(const ProcessSerialNumber * PSN) ;
+extern OSErr
+SameProcess(
+  const ProcessSerialNumber * PSN1,
+  const ProcessSerialNumber * PSN2,
+  Boolean * result) ;
+extern void
+ExitToShell(void) ;
+extern OSStatus
+GetProcessBundleLocation(
+  const ProcessSerialNumber * psn,
+  FSRef * location) ;
+extern OSStatus
+CopyProcessName(
+  const ProcessSerialNumber * psn,
+  CFStringRef * name) ;
+extern OSStatus
+GetProcessPID(
+  const ProcessSerialNumber * psn,
+  pid_t * pid) ;
+extern OSStatus
+GetProcessForPID(
+  pid_t pid,
+  ProcessSerialNumber * psn) ;
+extern Boolean
+IsProcessVisible(const ProcessSerialNumber * psn) ;
+extern OSErr
+ShowHideProcess(
+  const ProcessSerialNumber * psn,
+  Boolean visible) ;
+
+
+
+
+enum {
+  initDev = 0,
+  hitDev = 1,
+  closeDev = 2,
+  nulDev = 3,
+  updateDev = 4,
+  activDev = 5,
+  deactivDev = 6,
+  keyEvtDev = 7,
+  macDev = 8,
+  undoDev = 9,
+  cutDev = 10,
+  copyDev = 11,
+  pasteDev = 12,
+  clearDev = 13,
+  cursorDev = 14
+};
+
+
+enum {
+  cdevGenErr = -1,
+  cdevMemErr = 0,
+  cdevResErr = 1,
+  cdevUnset = 3
+};
+
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+enum {
+    kAXErrorSuccess = 0,
+    kAXErrorFailure = -25200,
+    kAXErrorIllegalArgument = -25201,
+    kAXErrorInvalidUIElement = -25202,
+    kAXErrorInvalidUIElementObserver = -25203,
+    kAXErrorCannotComplete = -25204,
+    kAXErrorAttributeUnsupported = -25205,
+    kAXErrorActionUnsupported = -25206,
+    kAXErrorNotificationUnsupported = -25207,
+    kAXErrorNotImplemented = -25208,
+    kAXErrorNotificationAlreadyRegistered = -25209,
+    kAXErrorNotificationNotRegistered = -25210,
+    kAXErrorAPIDisabled = -25211,
+    kAXErrorNoValue = -25212
+};
+typedef SInt32 AXError;
+
+
+
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+extern "C" {
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+extern Boolean AXAPIEnabled ();
+
+typedef struct __AXUIElement *AXUIElementRef;
+
+extern CFTypeID AXUIElementGetTypeID (void);
+
+extern AXError AXUIElementCopyAttributeNames (AXUIElementRef element, CFArrayRef *names);
+extern AXError AXUIElementCopyAttributeValue (AXUIElementRef element, CFStringRef attribute, CFTypeRef *value);
+extern AXError AXUIElementGetAttributeValueCount (AXUIElementRef element, CFStringRef attribute, CFIndex *count);
+extern AXError AXUIElementCopyAttributeValues (AXUIElementRef element, CFStringRef attribute, CFIndex index, CFIndex maxValues, CFArrayRef *values);
+extern AXError AXUIElementIsAttributeSettable (AXUIElementRef element, CFStringRef attribute, Boolean *settable);
+extern AXError AXUIElementSetAttributeValue (AXUIElementRef element, CFStringRef attribute, CFTypeRef value);
+
+extern AXError AXUIElementCopyActionNames (AXUIElementRef element, CFArrayRef *names);
+extern AXError AXUIElementCopyActionDescription (AXUIElementRef element, CFStringRef action, CFStringRef *description);
+extern AXError AXUIElementPerformAction (AXUIElementRef element, CFStringRef action);
+
+extern AXError AXUIElementCopyElementAtPosition (AXUIElementRef application, float x,float y, AXUIElementRef *element);
+
+extern AXUIElementRef AXUIElementCreateApplication (pid_t pid);
+extern AXUIElementRef AXUIElementCreateSystemWide (void);
+
+extern AXError AXUIElementGetPid (AXUIElementRef element, pid_t *pid);
+
+
+
+extern AXError AXUIElementPostKeyboardEvent (AXUIElementRef application, CGCharCode keyChar, CGKeyCode virtualKey, Boolean keyDown);
+
+
+
+typedef struct __AXObserver *AXObserverRef;
+
+typedef void (*AXObserverCallback)(AXObserverRef observer, AXUIElementRef element, CFStringRef notification, void *refcon);
+
+CFTypeID AXObserverGetTypeID (void);
+
+extern AXError AXObserverCreate (pid_t application, AXObserverCallback callback, AXObserverRef *outObserver);
+
+extern AXError AXObserverAddNotification (AXObserverRef observer, AXUIElementRef element, CFStringRef notification, void *refcon);
+extern AXError AXObserverRemoveNotification (AXObserverRef observer, AXUIElementRef element, CFStringRef notification);
+
+extern CFRunLoopSourceRef AXObserverGetRunLoopSource (AXObserverRef observer);
+
+
+}
+extern "C" {
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+typedef enum {
+
+    kAXValueCGPointType = 1,
+    kAXValueCGSizeType = 2,
+    kAXValueCGRectType = 3,
+
+
+    kAXValueCFRangeType = 4,
+
+
+    kAXValueIllegalType = 0
+
+} AXValueType;
+
+
+extern CFTypeRef AXValueCreate (AXValueType theType, const void *valuePtr);
+extern AXValueType AXValueGetType(CFTypeRef value);
+
+extern Boolean AXValueGetValue(CFTypeRef value, AXValueType theType, void *valuePtr);
+
+
+
+}
+extern "C" {
+
+
+enum {
+
+  kFBCenglishHighWord = (long)0x80000000,
+  kFBCdutchHighWord = 0x40000000,
+  kFBCgermanHighWord = 0x20000000,
+  kFBCswedishHighWord = 0x10000000,
+  kFBCdanishHighWord = 0x08000000,
+  kFBCspanishHighWord = 0x04000000,
+  kFBCportugueseHighWord = 0x02000000,
+  kFBCitalianHighWord = 0x01000000,
+  kFBCfrenchHighWord = 0x00800000,
+  kFBCromanHighWord = 0x00400000,
+
+  kFBCicelandicHighWord = 0x00200000,
+  kFBChebrewHighWord = 0x00100000,
+  kFBCarabicHighWord = 0x00080000,
+  kFBCcenteuroHighWord = 0x00040000,
+  kFBCcroatianHighWord = 0x00020000,
+  kFBCturkishHighWord = 0x00010000,
+  kFBCromanianHighWord = 0x00008000,
+  kFBCgreekHighWord = 0x00004000,
+  kFBCcyrillicHighWord = 0x00002000,
+  kFBCdevanagariHighWord = 0x00001000,
+  kFBCgujuratiHighWord = 0x00000800,
+  kFBCgurmukhiHighWord = 0x00000400,
+  kFBCjapaneseHighWord = 0x00000200,
+  kFBCkoreanHighWord = 0x00000100,
+  kFBCdefaultLanguagesHighWord = (long)0xFF800000
+};
+
+
+enum {
+  kFBCnotAllFoldersSearchable = -30533
+};
+enum {
+
+  kFBCphIndexing = 0,
+  kFBCphFlushing = 1,
+  kFBCphMerging = 2,
+  kFBCphMakingIndexAccessor = 3,
+  kFBCphCompacting = 4,
+  kFBCphIndexWaiting = 5,
+  kFBCphSearching = 6,
+  kFBCphMakingAccessAccessor = 7,
+  kFBCphAccessWaiting = 8,
+  kFBCphSummarizing = 9,
+  kFBCphIdle = 10,
+  kFBCphCanceling = 11
+};
+
+enum {
+  kFBCsummarizationFailed = -30533
+};
+typedef struct OpaqueFBCSearchSession* FBCSearchSession;
+
+typedef struct OpaqueFBCSummaryRef* FBCSummaryRef;
+
+typedef char * FBCWordItem;
+
+typedef FBCWordItem * FBCWordList;
+typedef Boolean ( * FBCCallbackProcPtr)(UInt16 phase, float percentDone, void *data);
+typedef FBCCallbackProcPtr FBCCallbackUPP;
+extern FBCCallbackUPP
+NewFBCCallbackUPP(FBCCallbackProcPtr userRoutine) ;
+extern void
+DisposeFBCCallbackUPP(FBCCallbackUPP userUPP) ;
+extern Boolean
+InvokeFBCCallbackUPP(
+  UInt16 phase,
+  float percentDone,
+  void * data,
+  FBCCallbackUPP userUPP) ;
+extern void
+FBCSetSessionCallback(
+  FBCSearchSession searchSession,
+  FBCCallbackUPP fn,
+  void * data) ;
+extern void
+FBCSetCallback(
+  FBCCallbackUPP fn,
+  void * data) ;
+typedef Boolean ( * FBCHitTestProcPtr)(const FSRef *theFile, void *data);
+typedef FBCHitTestProcPtr FBCHitTestUPP;
+extern FBCHitTestUPP
+NewFBCHitTestUPP(FBCHitTestProcPtr userRoutine) ;
+extern void
+DisposeFBCHitTestUPP(FBCHitTestUPP userUPP) ;
+extern Boolean
+InvokeFBCHitTestUPP(
+  const FSRef * theFile,
+  void * data,
+  FBCHitTestUPP userUPP) ;
+extern void
+FBCSetSessionHitTest(
+  FBCSearchSession theSession,
+  FBCHitTestUPP fn,
+  void * data) ;
+extern void
+FBCSetHeapReservation(UInt32 bytes) ;
+extern Boolean
+FBCVolumeIsIndexed(SInt16 theVRefNum) ;
+extern Boolean
+FBCVolumeIsRemote(SInt16 theVRefNum) ;
+extern OSErr
+FBCVolumeIndexTimeStamp(
+  SInt16 theVRefNum,
+  UInt32 * timeStamp) ;
+extern OSErr
+FBCVolumeIndexPhysicalSize(
+  SInt16 theVRefNum,
+  UInt32 * size) ;
+extern OSErr
+FBCCreateSearchSession(FBCSearchSession * searchSession) ;
+extern OSErr
+FBCCloneSearchSession(
+  FBCSearchSession original,
+  FBCSearchSession * clone) ;
+extern OSErr
+FBCAddAllVolumesToSession(
+  FBCSearchSession theSession,
+  Boolean includeRemote) ;
+extern OSErr
+FBCSetSessionVolumes(
+  FBCSearchSession theSession,
+  const SInt16 vRefNums[],
+  UInt16 numVolumes) ;
+extern OSErr
+FBCAddVolumeToSession(
+  FBCSearchSession theSession,
+  SInt16 vRefNum) ;
+extern OSErr
+FBCRemoveVolumeFromSession(
+  FBCSearchSession theSession,
+  SInt16 vRefNum) ;
+extern OSErr
+FBCGetSessionVolumeCount(
+  FBCSearchSession theSession,
+  UInt16 * count) ;
+extern OSErr
+FBCGetSessionVolumes(
+  FBCSearchSession theSession,
+  SInt16 vRefNums[],
+  UInt16 * numVolumes) ;
+extern OSErr
+FBCDoQuerySearch(
+  FBCSearchSession theSession,
+  char * queryText,
+  const FSSpec targetDirs[],
+  UInt32 numTargets,
+  UInt32 maxHits,
+  UInt32 maxHitWords) ;
+extern OSErr
+FBCDoCFStringSearch(
+  FBCSearchSession theSession,
+  CFStringRef queryString,
+  const FSSpec targetDirs[],
+  UInt32 numTargets,
+  UInt32 maxHits,
+  UInt32 maxHitWords) ;
+extern OSErr
+FBCDoExampleSearch(
+  FBCSearchSession theSession,
+  const UInt32 * exampleHitNums,
+  UInt32 numExamples,
+  const FSSpec targetDirs[],
+  UInt32 numTargets,
+  UInt32 maxHits,
+  UInt32 maxHitWords) ;
+extern OSErr
+FBCBlindExampleSearch(
+  const FSSpec examples[],
+  UInt32 numExamples,
+  const FSSpec targetDirs[],
+  UInt32 numTargets,
+  UInt32 maxHits,
+  UInt32 maxHitWords,
+  Boolean allIndexes,
+  Boolean includeRemote,
+  FBCSearchSession * theSession) ;
+extern OSErr
+FBCBlindExampleSearchWithCallback(
+  const FSSpec examples[],
+  UInt32 numExamples,
+  const FSSpec targetDirs[],
+  UInt32 numTargets,
+  UInt32 maxHits,
+  UInt32 maxHitWords,
+  Boolean allIndexes,
+  Boolean includeRemote,
+  FBCSearchSession * theSession,
+  FBCCallbackUPP callback,
+  void * callbackData,
+  FBCHitTestUPP userHitTest,
+  void * userHitTestData) ;
+extern OSErr
+FBCGetHitCount(
+  FBCSearchSession theSession,
+  UInt32 * count) ;
+extern OSErr
+FBCGetHitDocument(
+  FBCSearchSession theSession,
+  UInt32 hitNumber,
+  FSSpec * theDocument) ;
+extern OSErr
+FBCGetHitDocumentRef(
+  FBCSearchSession theSession,
+  UInt32 hitNumber,
+  FSRef * theDocument) ;
+extern OSErr
+FBCGetHitScore(
+  FBCSearchSession theSession,
+  UInt32 hitNumber,
+  float * score) ;
+extern OSErr
+FBCSummarize(
+  const void * inBuf,
+  UInt32 inLength,
+  void * outBuf,
+  UInt32 * outLength,
+  UInt32 * numSentences) ;
+extern OSStatus
+FBCSummarizeCFString(
+  CFStringRef inString,
+  CFStringRef * outString,
+  UInt32 * numSentences) ;
+extern OSStatus
+FBCGetSummaryOfCFString(
+  CFStringRef inString,
+  FBCSummaryRef * summary) ;
+extern OSStatus
+FBCGetSummarySentenceCount(
+  FBCSummaryRef summary,
+  UInt32 * numSentences) ;
+extern OSStatus
+FBCGetSummarySentences(
+  FBCSummaryRef summary,
+  CFStringRef * outString,
+  UInt32 * numSentences,
+  Boolean paragraphs) ;
+extern OSStatus
+FBCDisposeSummary(FBCSummaryRef summary) ;
+extern OSErr
+FBCReleaseSessionHits(FBCSearchSession theSession) ;
+extern OSErr
+FBCDestroySearchSession(FBCSearchSession theSession) ;
+extern OSErr
+FBCIndexItems(
+  FSSpecArrayPtr theItems,
+  UInt32 itemCount) ;
+extern OSErr
+FBCIndexItemsInLanguages(
+  FSSpecArrayPtr theItems,
+  UInt32 itemCount,
+  UInt32 languageHighBits,
+  UInt32 languageLowBits) ;
+extern OSErr
+FBCFindIndexFileFolderForFolder(
+  const FSRef * inFolder,
+  FSRef * outFolder) ;
+extern OSErr
+FBCDeleteIndexFileForFolder(const FSRef * folder) ;
+extern OSErr
+FBCGetMatchedWords(
+  FBCSearchSession theSession,
+  UInt32 hitNumber,
+  UInt32 * wordCount,
+  FBCWordList * list) ;
+extern OSErr
+FBCGetTopicWords(
+  FBCSearchSession theSession,
+  UInt32 hitNumber,
+  UInt32 * wordCount,
+  FBCWordList * list) ;
+extern OSErr
+FBCDestroyWordList(
+  FBCWordList theList,
+  UInt32 wordCount) ;
+
+
+
+enum {
+
+  englishHighWord = kFBCenglishHighWord,
+  dutchHighWord = kFBCdutchHighWord,
+  germanHighWord = kFBCgermanHighWord,
+  swedishHighWord = kFBCswedishHighWord,
+  danishHighWord = kFBCdanishHighWord,
+  spanishHighWord = kFBCspanishHighWord,
+  portugueseHighWord = kFBCportugueseHighWord,
+  italianHighWord = kFBCitalianHighWord,
+  frenchHighWord = kFBCfrenchHighWord,
+  romanHighWord = kFBCromanHighWord,
+
+  icelandicHighWord = kFBCicelandicHighWord,
+  hebrewHighWord = kFBChebrewHighWord,
+  arabicHighWord = kFBCarabicHighWord,
+  centeuroHighWord = kFBCcenteuroHighWord,
+  croatianHighWord = kFBCcroatianHighWord,
+  turkishHighWord = kFBCturkishHighWord,
+  romanianHighWord = kFBCromanianHighWord,
+  greekHighWord = kFBCgreekHighWord,
+  cyrillicHighWord = kFBCcyrillicHighWord,
+  devanagariHighWord = kFBCdevanagariHighWord,
+  gujuratiHighWord = kFBCgujuratiHighWord,
+  gurmukhiHighWord = kFBCgurmukhiHighWord,
+  japaneseHighWord = kFBCjapaneseHighWord,
+  koreanHighWord = kFBCkoreanHighWord,
+  kDefaultLanguagesHighWord = kFBCdefaultLanguagesHighWord
+};
+
+
+
+
+}
+
+
+
+
+
+typedef const void * PMObject;
+typedef struct OpaquePMDialog* PMDialog;
+typedef struct OpaquePMPrintSettings* PMPrintSettings;
+typedef struct OpaquePMPageFormat* PMPageFormat;
+typedef struct OpaquePMPrintContext* PMPrintContext;
+typedef struct OpaquePMPrintSession* PMPrintSession;
+typedef struct OpaquePMPrinter* PMPrinter;
+typedef struct OpaquePMServer* PMServer;
+enum {
+  kPMCancel = 0x0080
+};
+typedef UInt16 PMDestinationType;
+enum {
+  kPMDestinationInvalid = 0,
+  kPMDestinationPrinter = 1,
+  kPMDestinationFile = 2,
+  kPMDestinationFax = 3,
+  kPMDestinationPreview = 4
+};
+
+
+typedef UInt32 PMTag;
+enum {
+
+  kPMCurrentValue = 'curr',
+  kPMDefaultValue = 'dflt',
+  kPMMinimumValue = 'minv',
+  kPMMaximumValue = 'maxv',
+
+  kPMSourceProfile = 'srcp',
+
+  kPMMinRange = 'mnrg',
+  kPMMaxRange = 'mxrg',
+  kPMMinSquareResolution = 'mins',
+  kPMMaxSquareResolution = 'maxs',
+  kPMDefaultResolution = 'dftr'
+};
+
+
+typedef UInt16 PMOrientation;
+enum {
+  kPMPortrait = 1,
+  kPMLandscape = 2,
+  kPMReversePortrait = 3,
+  kPMReverseLandscape = 4
+};
+
+
+typedef UInt16 PMPrinterState;
+enum {
+  kPMPrinterIdle = 3,
+  kPMPrinterProcessing = 4,
+  kPMPrinterStopped = 5
+};
+
+enum {
+  kSizeOfTPrint = 120
+};
+
+typedef UInt16 PMColorMode;
+enum {
+  kPMBlackAndWhite = 1,
+  kPMGray = 2,
+  kPMColor = 3,
+  kPMColorModeDuotone = 4,
+  kPMColorModeSpecialColor = 5
+};
+
+
+
+typedef UInt32 PMColorSyncIntent;
+enum {
+  kPMColorIntentUndefined = 0x0000,
+  kPMColorIntentAutomatic = 0x0001,
+  kPMColorIntentPhoto = 0x0002,
+  kPMColorIntentBusiness = 0x0004,
+  kPMColorIntentRelColor = 0x0008,
+  kPMColorIntentAbsColor = 0x0010,
+  kPMColorIntentUnused = 0xFFE0
+};
+
+
+typedef UInt32 PMQualityMode;
+enum {
+  kPMQualityLowest = 0x0000,
+  kPMQualityInkSaver = 0x0001,
+  kPMQualityDraft = 0x0004,
+  kPMQualityNormal = 0x0008,
+  kPMQualityPhoto = 0x000B,
+  kPMQualityBest = 0x000D,
+  kPMQualityHighest = 0x000F
+};
+
+
+
+typedef UInt32 PMPaperType;
+enum {
+  kPMPaperTypeUnknown = 0x0000,
+  kPMPaperTypePlain = 0x0001,
+  kPMPaperTypeCoated = 0x0002,
+  kPMPaperTypePremium = 0x0003,
+  kPMPaperTypeGlossy = 0x0004,
+  kPMPaperTypeTransparency = 0x0005,
+  kPMPaperTypeTShirt = 0x0006
+};
+
+
+typedef UInt16 PMScalingAlignment;
+enum {
+  kPMScalingPinTopLeft = 1,
+  kPMScalingPinTopRight = 2,
+  kPMScalingPinBottomLeft = 3,
+  kPMScalingPinBottomRight = 4,
+  kPMScalingCenterOnPaper = 5,
+  kPMScalingCenterOnImgArea = 6
+};
+
+
+typedef UInt16 PMDuplexBinding;
+enum {
+  kPMDuplexBindingLeftRight = 1,
+  kPMDuplexBindingTopDown = 2
+};
+
+
+typedef UInt16 PMLayoutDirection;
+enum {
+
+  kPMLayoutLeftRightTopBottom = 1,
+  kPMLayoutLeftRightBottomTop = 2,
+  kPMLayoutRightLeftTopBottom = 3,
+  kPMLayoutRightLeftBottomTop = 4,
+  kPMLayoutTopBottomLeftRight = 5,
+  kPMLayoutTopBottomRightLeft = 6,
+  kPMLayoutBottomTopLeftRight = 7,
+  kPMLayoutBottomTopRightLeft = 8
+};
+
+
+typedef UInt16 PMBorderType;
+enum {
+  kPMBorderSingleHairline = 1,
+  kPMBorderDoubleHairline = 2,
+  kPMBorderSingleThickline = 3,
+  kPMBorderDoubleThickline = 4
+};
+
+
+enum {
+  kPSPageInjectAllPages = -1,
+  kPSInjectionMaxDictSize = 5
+};
+
+
+typedef UInt16 PSInjectionPlacement;
+enum {
+  kPSInjectionBeforeSubsection = 1,
+  kPSInjectionAfterSubsection = 2,
+  kPSInjectionReplaceSubsection = 3
+};
+
+
+typedef SInt32 PSInjectionSection;
+enum {
+
+  kInjectionSectJob = 1,
+  kInjectionSectCoverPage = 2
+};
+
+
+typedef SInt32 PSInjectionSubsection;
+enum {
+  kInjectionSubPSAdobe = 1,
+  kInjectionSubPSAdobeEPS = 2,
+  kInjectionSubBoundingBox = 3,
+  kInjectionSubEndComments = 4,
+  kInjectionSubOrientation = 5,
+  kInjectionSubPages = 6,
+  kInjectionSubPageOrder = 7,
+  kInjectionSubBeginProlog = 8,
+  kInjectionSubEndProlog = 9,
+  kInjectionSubBeginSetup = 10,
+  kInjectionSubEndSetup = 11,
+  kInjectionSubBeginDefaults = 12,
+  kInjectionSubEndDefaults = 13,
+  kInjectionSubDocFonts = 14,
+  kInjectionSubDocNeededFonts = 15,
+  kInjectionSubDocSuppliedFonts = 16,
+  kInjectionSubDocNeededRes = 17,
+  kInjectionSubDocSuppliedRes = 18,
+  kInjectionSubDocCustomColors = 19,
+  kInjectionSubDocProcessColors = 20,
+  kInjectionSubPlateColor = 21,
+  kInjectionSubPageTrailer = 22,
+  kInjectionSubTrailer = 23,
+  kInjectionSubEOF = 24,
+  kInjectionSubBeginFont = 25,
+  kInjectionSubEndFont = 26,
+  kInjectionSubBeginResource = 27,
+  kInjectionSubEndResource = 28,
+  kInjectionSubPage = 29,
+  kInjectionSubBeginPageSetup = 30,
+  kInjectionSubEndPageSetup = 31
+};
+enum {
+  kPMNoError = noErr,
+  kPMGeneralError = -30870,
+  kPMOutOfScope = -30871,
+  kPMInvalidParameter = paramErr,
+  kPMNoDefaultPrinter = -30872,
+  kPMNotImplemented = -30873,
+  kPMNoSuchEntry = -30874,
+  kPMInvalidPrintSettings = -30875,
+  kPMInvalidPageFormat = -30876,
+  kPMValueOutOfRange = -30877,
+  kPMLockIgnored = -30878
+};
+
+enum {
+  kPMInvalidPrintSession = -30879,
+  kPMInvalidPrinter = -30880,
+  kPMObjectInUse = -30881
+};
+
+
+enum {
+  kPMPrintAllPages = -1
+};
+
+enum {
+  kPMUnlocked = false,
+  kPMLocked = true
+};
+
+struct PMRect {
+  double top;
+  double left;
+  double bottom;
+  double right;
+};
+typedef struct PMRect PMRect;
+struct PMResolution {
+  double hRes;
+  double vRes;
+};
+typedef struct PMResolution PMResolution;
+struct PMLanguageInfo {
+  Str32 level;
+  Str32 version;
+  Str32 release;
+};
+typedef struct PMLanguageInfo PMLanguageInfo;
+
+extern "C" {
+
+
+
+
+
+
+
+typedef void ( * PMIdleProcPtr)(void);
+typedef PMIdleProcPtr PMIdleUPP;
+extern PMIdleUPP
+NewPMIdleUPP(PMIdleProcPtr userRoutine) ;
+extern void
+DisposePMIdleUPP(PMIdleUPP userUPP) ;
+extern void
+InvokePMIdleUPP(PMIdleUPP userUPP) ;
+extern OSStatus
+PMRetain(PMObject object) ;
+extern OSStatus
+PMRelease(PMObject object) ;
+extern OSStatus
+PMCreateSession(PMPrintSession * printSession) ;
+extern OSStatus
+PMCreatePageFormat(PMPageFormat * pageFormat) ;
+extern OSStatus
+PMSessionDefaultPageFormat(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat) ;
+extern OSStatus
+PMSessionValidatePageFormat(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  Boolean * result) ;
+extern OSStatus
+PMCreatePrintSettings(PMPrintSettings * printSettings) ;
+extern OSStatus
+PMSessionDefaultPrintSettings(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings) ;
+extern OSStatus
+PMSessionValidatePrintSettings(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  Boolean * result) ;
+extern OSStatus
+PMSessionGeneral(
+  PMPrintSession printSession,
+  Ptr pData) ;
+extern OSStatus
+PMSessionConvertOldPrintRecord(
+  PMPrintSession printSession,
+  Handle printRecordHandle,
+  PMPrintSettings * printSettings,
+  PMPageFormat * pageFormat) ;
+extern OSStatus
+PMSessionMakeOldPrintRecord(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat pageFormat,
+  Handle * printRecordHandle) ;
+extern OSStatus
+PMPrinterGetDescriptionURL(
+  PMPrinter printer,
+  CFStringRef descriptionType,
+  CFURLRef * fileURL) ;
+extern OSStatus
+PMSessionGetCurrentPrinter(
+  PMPrintSession printSession,
+  PMPrinter * currentPrinter) ;
+extern OSStatus
+PMPrinterGetLanguageInfo(
+  PMPrinter printer,
+  PMLanguageInfo * info) ;
+extern OSStatus
+PMPrinterGetDriverCreator(
+  PMPrinter printer,
+  OSType * creator) ;
+extern OSStatus
+PMPrinterGetDriverReleaseInfo(
+  PMPrinter printer,
+  VersRec * release) ;
+extern OSStatus
+PMPrinterGetPrinterResolutionCount(
+  PMPrinter printer,
+  UInt32 * count) ;
+extern OSStatus
+PMPrinterGetPrinterResolution(
+  PMPrinter printer,
+  PMTag tag,
+  PMResolution * res) ;
+extern OSStatus
+PMPrinterGetIndexedPrinterResolution(
+  PMPrinter printer,
+  UInt32 index,
+  PMResolution * res) ;
+extern Boolean
+PMPrinterIsPostScriptCapable(PMPrinter printer) ;
+extern OSStatus
+PMPrinterGetMakeAndModelName(
+  PMPrinter printer,
+  CFStringRef * makeAndModel) ;
+extern OSStatus
+PMSessionEnableColorSync(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionDisableColorSync(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionPostScriptBegin(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionPostScriptEnd(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionPostScriptHandle(
+  PMPrintSession printSession,
+  Handle psHandle) ;
+extern OSStatus
+PMSessionPostScriptData(
+  PMPrintSession printSession,
+  Ptr psPtr,
+  Size len) ;
+extern OSStatus
+PMSessionPostScriptFile(
+  PMPrintSession printSession,
+  FSSpec * psFile) ;
+extern OSStatus
+PMSessionSetPSInjectionData(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  CFArrayRef injectionDictArray) ;
+extern OSStatus
+PMSessionError(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionSetError(
+  PMPrintSession printSession,
+  OSStatus printError) ;
+extern OSStatus
+PMSessionGetDocumentFormatGeneration(
+  PMPrintSession printSession,
+  CFArrayRef * docFormats) ;
+extern OSStatus
+PMSessionSetDocumentFormatGeneration(
+  PMPrintSession printSession,
+  CFStringRef docFormat,
+  CFArrayRef graphicsContextTypes,
+  CFTypeRef options) ;
+extern OSStatus
+PMSessionGetDocumentFormatSupported(
+  PMPrintSession printSession,
+  CFArrayRef * docFormats,
+  UInt32 limit) ;
+extern OSStatus
+PMSessionIsDocumentFormatSupported(
+  PMPrintSession printSession,
+  CFStringRef docFormat,
+  Boolean * supported) ;
+extern OSStatus
+PMSessionGetGraphicsContext(
+  PMPrintSession printSession,
+  CFStringRef graphicsContextType,
+  void ** graphicsContext) ;
+extern OSStatus
+PMSessionSetIdleProc(
+  PMPrintSession printSession,
+  PMIdleUPP idleProc) ;
+extern OSStatus
+PMSessionSetDataInSession(
+  PMPrintSession printSession,
+  CFStringRef key,
+  CFTypeRef data) ;
+extern OSStatus
+PMSessionGetDataFromSession(
+  PMPrintSession printSession,
+  CFStringRef key,
+  CFTypeRef * data) ;
+extern OSStatus
+PMSessionCreatePrinterList(
+  PMPrintSession printSession,
+  CFArrayRef * printerList,
+  CFIndex * currentIndex,
+  PMPrinter * currentPrinter) ;
+extern OSStatus
+PMSessionSetCurrentPrinter(
+  PMPrintSession session,
+  CFStringRef printerName) ;
+extern OSStatus
+PMSessionSetDestination(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMDestinationType destType,
+  CFStringRef destFormat,
+  CFURLRef destLocation) ;
+extern OSStatus
+PMSessionGetDestinationType(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMDestinationType * destTypeP) ;
+extern OSStatus
+PMSessionCopyDestinationFormat(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  CFStringRef * destFormatP) ;
+extern OSStatus
+PMSessionCopyDestinationLocation(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  CFURLRef * destLocationP) ;
+extern OSStatus
+PMSessionCopyOutputFormatList(
+  PMPrintSession printSession,
+  PMDestinationType destType,
+  CFArrayRef * documentFormatP) ;
+extern OSStatus
+PMSessionCreatePageFormatList(
+  PMPrintSession printSession,
+  PMPrinter printer,
+  CFArrayRef * pageFormatList) ;
+extern OSStatus
+PMSessionBeginDocumentNoDialog(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat pageFormat) ;
+extern OSStatus
+PMSessionEndDocumentNoDialog(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionBeginPageNoDialog(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  const PMRect * pageFrame) ;
+extern OSStatus
+PMSessionEndPageNoDialog(PMPrintSession printSession) ;
+extern OSStatus
+PMCopyPageFormat(
+  PMPageFormat formatSrc,
+  PMPageFormat formatDest) ;
+extern OSStatus
+PMFlattenPageFormat(
+  PMPageFormat pageFormat,
+  Handle * flatFormat) ;
+extern OSStatus
+PMUnflattenPageFormat(
+  Handle flatFormat,
+  PMPageFormat * pageFormat) ;
+extern OSStatus
+PMGetPageFormatExtendedData(
+  PMPageFormat pageFormat,
+  OSType dataID,
+  UInt32 * size,
+  void * extendedData) ;
+extern OSStatus
+PMSetPageFormatExtendedData(
+  PMPageFormat pageFormat,
+  OSType dataID,
+  UInt32 size,
+  void * extendedData) ;
+extern OSStatus
+PMGetScale(
+  PMPageFormat pageFormat,
+  double * scale) ;
+extern OSStatus
+PMSetScale(
+  PMPageFormat pageFormat,
+  double scale) ;
+extern OSStatus
+PMGetResolution(
+  PMPageFormat pageFormat,
+  PMResolution * res) ;
+extern OSStatus
+PMSetResolution(
+  PMPageFormat pageFormat,
+  const PMResolution * res) ;
+extern OSStatus
+PMGetPhysicalPaperSize(
+  PMPageFormat pageFormat,
+  PMRect * paperSize) ;
+extern OSStatus
+PMSetPhysicalPaperSize(
+  PMPageFormat pageFormat,
+  const PMRect * paperSize) ;
+extern OSStatus
+PMGetPhysicalPageSize(
+  PMPageFormat pageFormat,
+  PMRect * pageSize) ;
+extern OSStatus
+PMGetAdjustedPaperRect(
+  PMPageFormat pageFormat,
+  PMRect * paperRect) ;
+extern OSStatus
+PMGetAdjustedPageRect(
+  PMPageFormat pageFormat,
+  PMRect * pageRect) ;
+extern OSStatus
+PMGetUnadjustedPaperRect(
+  PMPageFormat pageFormat,
+  PMRect * paperRect) ;
+extern OSStatus
+PMSetUnadjustedPaperRect(
+  PMPageFormat pageFormat,
+  const PMRect * paperRect) ;
+extern OSStatus
+PMGetUnadjustedPageRect(
+  PMPageFormat pageFormat,
+  PMRect * pageRect) ;
+extern OSStatus
+PMSetAdjustedPageRect(
+  PMPageFormat pageFormat,
+  const PMRect * pageRect) ;
+extern OSStatus
+PMGetOrientation(
+  PMPageFormat pageFormat,
+  PMOrientation * orientation) ;
+extern OSStatus
+PMSetOrientation(
+  PMPageFormat pageFormat,
+  PMOrientation orientation,
+  Boolean lock) ;
+extern OSStatus
+PMCopyPrintSettings(
+  PMPrintSettings settingSrc,
+  PMPrintSettings settingDest) ;
+extern OSStatus
+PMFlattenPrintSettings(
+  PMPrintSettings printSettings,
+  Handle * flatSettings) ;
+extern OSStatus
+PMUnflattenPrintSettings(
+  Handle flatSettings,
+  PMPrintSettings * printSettings) ;
+extern OSStatus
+PMGetPrintSettingsExtendedData(
+  PMPrintSettings printSettings,
+  OSType dataID,
+  UInt32 * size,
+  void * extendedData) ;
+extern OSStatus
+PMSetPrintSettingsExtendedData(
+  PMPrintSettings printSettings,
+  OSType dataID,
+  UInt32 size,
+  void * extendedData) ;
+extern OSStatus
+PMGetDestination(
+  PMPrintSettings printSettings,
+  PMDestinationType * destType,
+  CFURLRef * fileURL) ;
+extern OSStatus
+PMGetJobName(
+  PMPrintSettings printSettings,
+  StringPtr name) ;
+extern OSStatus
+PMSetJobName(
+  PMPrintSettings printSettings,
+  StringPtr name) ;
+extern OSStatus
+PMGetCopies(
+  PMPrintSettings printSettings,
+  UInt32 * copies) ;
+extern OSStatus
+PMSetCopies(
+  PMPrintSettings printSettings,
+  UInt32 copies,
+  Boolean lock) ;
+extern OSStatus
+PMGetFirstPage(
+  PMPrintSettings printSettings,
+  UInt32 * first) ;
+extern OSStatus
+PMSetFirstPage(
+  PMPrintSettings printSettings,
+  UInt32 first,
+  Boolean lock) ;
+extern OSStatus
+PMGetLastPage(
+  PMPrintSettings printSettings,
+  UInt32 * last) ;
+extern OSStatus
+PMSetLastPage(
+  PMPrintSettings printSettings,
+  UInt32 last,
+  Boolean lock) ;
+extern OSStatus
+PMGetPageRange(
+  PMPrintSettings printSettings,
+  UInt32 * minPage,
+  UInt32 * maxPage) ;
+extern OSStatus
+PMSetPageRange(
+  PMPrintSettings printSettings,
+  UInt32 minPage,
+  UInt32 maxPage) ;
+extern OSStatus
+PMSetProfile(
+  PMPrintSettings printSettings,
+  PMTag tag,
+  const CMProfileLocation * profile) ;
+extern OSStatus
+PMGetColorMode(
+  PMPrintSettings printSettings,
+  PMColorMode * colorMode) ;
+extern OSStatus
+PMSetColorMode(
+  PMPrintSettings printSettings,
+  PMColorMode colorMode) ;
+extern OSStatus
+PMGetJobNameCFString(
+  PMPrintSettings printSettings,
+  CFStringRef * name) ;
+extern OSStatus
+PMSetJobNameCFString(
+  PMPrintSettings printSettings,
+  CFStringRef name) ;
+extern OSStatus
+PMSetCollate(
+  PMPrintSettings printSettings,
+  Boolean collate) ;
+extern OSStatus
+PMGetCollate(
+  PMPrintSettings printSettings,
+  Boolean * collate) ;
+extern OSStatus
+PMServerCreatePrinterList(
+  PMServer server,
+  CFArrayRef * printerList) ;
+extern CFStringRef
+PMPrinterGetName(PMPrinter printer) ;
+extern CFStringRef
+PMPrinterGetID(PMPrinter printer) ;
+extern Boolean
+PMPrinterIsDefault(PMPrinter printer) ;
+extern CFStringRef
+PMPrinterGetLocation(PMPrinter printer) ;
+extern OSStatus
+PMPrinterGetState(
+  PMPrinter printer,
+  PMPrinterState * state) ;
+extern OSStatus
+PMPrinterGetDeviceURI(
+  PMPrinter printer,
+  CFURLRef * deviceURI) ;
+extern Boolean
+PMPrinterIsFavorite(PMPrinter printer) ;
+extern CGImageRef
+PMCGImageCreateWithEPSDataProvider(
+  CGDataProviderRef epsDataProvider,
+  CGImageRef epsPreview) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  kDictionaryFileType = 'dict',
+  kDCMDictionaryHeaderSignature = 'dict',
+  kDCMDictionaryHeaderVersion = 2
+};
+
+enum {
+  kDCMAnyFieldTag = typeWildCard,
+  kDCMAnyFieldType = typeWildCard
+};
+
+
+
+
+enum {
+  keyDCMFieldTag = 'ftag',
+  keyDCMFieldType = 'ftyp',
+  keyDCMMaxRecordSize = 'mrsz',
+  keyDCMFieldAttributes = 'fatr',
+  keyDCMFieldDefaultData = 'fdef',
+  keyDCMFieldName = 'fnam',
+  keyDCMFieldFindMethods = 'ffnd'
+};
+
+
+
+
+enum {
+  typeDCMFieldAttributes = 'fatr',
+  typeDCMFindMethod = 'fmth'
+};
+
+
+
+
+
+enum {
+  kDCMIndexedFieldMask = 0x00000001,
+  kDCMRequiredFieldMask = 0x00000002,
+  kDCMIdentifyFieldMask = 0x00000004,
+  kDCMFixedSizeFieldMask = 0x00000008,
+  kDCMHiddenFieldMask = (long)0x80000000
+};
+
+typedef OptionBits DCMFieldAttributes;
+
+
+
+enum {
+  pDCMAccessMethod = 'amtd',
+  pDCMPermission = 'perm',
+  pDCMListing = 'list',
+  pDCMMaintenance = 'mtnc',
+  pDCMLocale = 'locl',
+  pDCMClass = pClass,
+  pDCMCopyright = 'info'
+};
+
+
+
+
+enum {
+  kDCMReadOnlyDictionary = 0,
+  kDCMReadWriteDictionary = 1
+};
+
+
+
+
+enum {
+  kDCMAllowListing = 0,
+  kDCMProhibitListing = 1
+};
+
+
+
+
+enum {
+  kDCMUserDictionaryClass = 0,
+  kDCMSpecificDictionaryClass = 1,
+  kDCMBasicDictionaryClass = 2
+};
+
+
+
+
+enum {
+  kDCMFindMethodExactMatch = kAEEquals,
+  kDCMFindMethodBeginningMatch = kAEBeginsWith,
+  kDCMFindMethodContainsMatch = kAEContains,
+  kDCMFindMethodEndingMatch = kAEEndsWith,
+  kDCMFindMethodForwardTrie = 'ftri',
+  kDCMFindMethodBackwardTrie = 'btri'
+};
+
+typedef OSType DCMFindMethod;
+
+
+
+enum {
+  kDCMCanUseFileDictionaryMask = 0x00000001,
+  kDCMCanUseMemoryDictionaryMask = 0x00000002,
+  kDCMCanStreamDictionaryMask = 0x00000004,
+  kDCMCanHaveMultipleIndexMask = 0x00000008,
+  kDCMCanModifyDictionaryMask = 0x00000010,
+  kDCMCanCreateDictionaryMask = 0x00000020,
+  kDCMCanAddDictionaryFieldMask = 0x00000040,
+  kDCMCanUseTransactionMask = 0x00000080
+};
+
+typedef OptionBits DCMAccessMethodFeature;
+typedef UInt32 DCMUniqueID;
+typedef struct OpaqueDCMObjectID* DCMObjectID;
+typedef DCMObjectID DCMAccessMethodID;
+typedef DCMObjectID DCMDictionaryID;
+
+typedef struct OpaqueDCMObjectRef* DCMObjectRef;
+typedef DCMObjectRef DCMDictionaryRef;
+typedef DCMObjectRef DCMDictionaryStreamRef;
+
+typedef struct OpaqueDCMObjectIterator* DCMObjectIterator;
+typedef DCMObjectIterator DCMAccessMethodIterator;
+typedef DCMObjectIterator DCMDictionaryIterator;
+typedef struct OpaqueDCMFoundRecordIterator* DCMFoundRecordIterator;
+
+
+
+typedef DescType DCMFieldTag;
+typedef DescType DCMFieldType;
+
+
+
+struct DCMDictionaryHeader {
+  FourCharCode headerSignature;
+  UInt32 headerVersion;
+  ByteCount headerSize;
+  Str63 accessMethod;
+};
+typedef struct DCMDictionaryHeader DCMDictionaryHeader;
+
+
+
+typedef Boolean ( * DCMProgressFilterProcPtr)(Boolean determinateProcess, UInt16 percentageComplete, UInt32 callbackUD);
+typedef DCMProgressFilterProcPtr DCMProgressFilterUPP;
+extern UInt32
+DCMLibraryVersion(void) ;
+extern OSStatus
+DCMNewDictionary(
+  DCMAccessMethodID accessMethodID,
+  const FSSpec * newDictionaryFile,
+  ScriptCode scriptTag,
+  const AEDesc * listOfFieldInfoRecords,
+  Boolean invisible,
+  ItemCount recordCapacity,
+  DCMDictionaryID * newDictionary) ;
+extern OSStatus
+DCMDeriveNewDictionary(
+  DCMDictionaryID srcDictionary,
+  const FSSpec * newDictionaryFile,
+  ScriptCode scriptTag,
+  Boolean invisible,
+  ItemCount recordCapacity,
+  DCMDictionaryID * newDictionary) ;
+extern OSStatus
+DCMDeleteDictionary(DCMDictionaryID dictionaryID) ;
+extern OSStatus
+DCMRegisterDictionaryFile(
+  const FSSpec * dictionaryFile,
+  DCMDictionaryID * dictionaryID) ;
+extern OSStatus
+DCMUnregisterDictionary(DCMDictionaryID dictionaryID) ;
+extern OSStatus
+DCMOpenDictionary(
+  DCMDictionaryID dictionaryID,
+  ByteCount protectKeySize,
+  ConstLogicalAddress protectKey,
+  DCMDictionaryRef * dictionaryRef) ;
+extern OSStatus
+DCMCloseDictionary(DCMDictionaryRef dictionaryRef) ;
+extern OSStatus
+DCMGetDictionaryWriteAccess(
+  DCMDictionaryRef dictionaryRef,
+  Duration timeOutDuration) ;
+extern OSStatus
+DCMReleaseDictionaryWriteAccess(
+  DCMDictionaryRef dictionaryRef,
+  Boolean commitTransaction) ;
+extern OSStatus
+DCMFindRecords(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMFindMethod findMethod,
+  ItemCount preFetchedDataNum,
+  DCMFieldTag preFetchedData[],
+  ItemCount skipCount,
+  ItemCount maxRecordCount,
+  DCMFoundRecordIterator * recordIterator) ;
+extern ItemCount
+DCMCountRecordIterator(DCMFoundRecordIterator recordIterator) ;
+extern OSStatus
+DCMIterateFoundRecord(
+  DCMFoundRecordIterator recordIterator,
+  ByteCount maxKeySize,
+  ByteCount * actualKeySize,
+  LogicalAddress keyData,
+  DCMUniqueID * uniqueID,
+  AEDesc * dataList) ;
+extern OSStatus
+DCMDisposeRecordIterator(DCMFoundRecordIterator recordIterator) ;
+extern OSStatus
+DCMCountRecord(
+  DCMDictionaryID dictionaryID,
+  ItemCount * count) ;
+extern OSStatus
+DCMGetRecordSequenceNumber(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID,
+  ItemCount * sequenceNum) ;
+extern OSStatus
+DCMGetNthRecord(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ItemCount serialNum,
+  ByteCount maxKeySize,
+  ByteCount * keySize,
+  LogicalAddress keyData,
+  DCMUniqueID * uniqueID) ;
+extern OSStatus
+DCMGetNextRecord(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID,
+  ByteCount maxKeySize,
+  ByteCount * nextKeySize,
+  LogicalAddress nextKeyData,
+  DCMUniqueID * nextUniqueID) ;
+extern OSStatus
+DCMGetPrevRecord(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID,
+  ByteCount maxKeySize,
+  ByteCount * prevKeySize,
+  LogicalAddress prevKeyData,
+  DCMUniqueID * prevUniqueID) ;
+extern OSStatus
+DCMGetFieldData(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID,
+  ItemCount numOfData,
+  const DCMFieldTag dataTag[],
+  AEDesc * dataList) ;
+extern OSStatus
+DCMSetFieldData(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID,
+  const AEDesc * dataList) ;
+extern OSStatus
+DCMAddRecord(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  Boolean checkOnly,
+  const AEDesc * dataList,
+  DCMUniqueID * newUniqueID) ;
+extern OSStatus
+DCMDeleteRecord(
+  DCMDictionaryRef dictionaryRef,
+  DCMFieldTag keyFieldTag,
+  ByteCount keySize,
+  ConstLogicalAddress keyData,
+  DCMUniqueID uniqueID) ;
+extern OSStatus
+DCMReorganizeDictionary(
+  DCMDictionaryID dictionaryID,
+  ItemCount extraCapacity,
+  DCMProgressFilterUPP progressProc,
+  UInt32 userData) ;
+extern OSStatus
+DCMCompactDictionary(
+  DCMDictionaryID dictionaryID,
+  DCMProgressFilterUPP progressProc,
+  UInt32 userData) ;
+extern OSStatus
+DCMGetFileFromDictionaryID(
+  DCMDictionaryID dictionaryID,
+  FSSpec * fileRef) ;
+extern OSStatus
+DCMGetDictionaryIDFromFile(
+  const FSSpec * fileRef,
+  DCMDictionaryID * dictionaryID) ;
+extern DCMDictionaryID
+DCMGetDictionaryIDFromRef(DCMDictionaryRef dictionaryRef) ;
+extern OSStatus
+DCMGetDictionaryFieldInfo(
+  DCMDictionaryID dictionaryID,
+  DCMFieldTag fieldTag,
+  AEDesc * fieldInfoRecord) ;
+extern OSStatus
+DCMGetDictionaryProperty(
+  DCMDictionaryID dictionaryID,
+  DCMFieldTag propertyTag,
+  ByteCount maxPropertySize,
+  ByteCount * actualSize,
+  LogicalAddress propertyValue) ;
+extern OSStatus
+DCMSetDictionaryProperty(
+  DCMDictionaryID dictionaryID,
+  DCMFieldTag propertyTag,
+  ByteCount propertySize,
+  ConstLogicalAddress propertyValue) ;
+extern OSStatus
+DCMGetDictionaryPropertyList(
+  DCMDictionaryID dictionaryID,
+  ItemCount maxPropertyNum,
+  ItemCount * numProperties,
+  DCMFieldTag propertyTag[]) ;
+extern OSStatus
+DCMCreateDictionaryIterator(DCMDictionaryIterator * dictionaryIterator) ;
+extern OSStatus
+DCMCreateAccessMethodIterator(DCMAccessMethodIterator * accessMethodIterator) ;
+extern ItemCount
+DCMCountObjectIterator(DCMObjectIterator iterator) ;
+extern OSStatus
+DCMIterateObject(
+  DCMObjectIterator iterator,
+  DCMObjectID * objectID) ;
+extern OSStatus
+DCMResetObjectIterator(DCMObjectIterator iterator) ;
+extern OSStatus
+DCMDisposeObjectIterator(DCMObjectIterator iterator) ;
+extern OSStatus
+DCMGetAccessMethodIDFromName(
+  ConstStr63Param accessMethodName,
+  DCMAccessMethodID * accessMethodID) ;
+extern OSStatus
+DCMCreateFieldInfoRecord(
+  DescType fieldTag,
+  DescType fieldType,
+  ByteCount maxRecordSize,
+  DCMFieldAttributes fieldAttributes,
+  AEDesc * fieldDefaultData,
+  ItemCount numberOfFindMethods,
+  DCMFindMethod findMethods[],
+  AEDesc * fieldInfoRecord) ;
+extern OSStatus
+DCMGetFieldTagAndType(
+  const AEDesc * fieldInfoRecord,
+  DCMFieldTag * fieldTag,
+  DCMFieldType * fieldType) ;
+extern OSStatus
+DCMGetFieldMaxRecordSize(
+  const AEDesc * fieldInfoRecord,
+  ByteCount * maxRecordSize) ;
+extern OSStatus
+DCMGetFieldAttributes(
+  const AEDesc * fieldInfoRecord,
+  DCMFieldAttributes * attributes) ;
+extern OSStatus
+DCMGetFieldDefaultData(
+  const AEDesc * fieldInfoRecord,
+  DescType desiredType,
+  AEDesc * fieldDefaultData) ;
+extern OSStatus
+DCMGetFieldFindMethods(
+  const AEDesc * fieldInfoRecord,
+  ItemCount findMethodsArrayMaxSize,
+  DCMFindMethod findMethods[],
+  ItemCount * actualNumberOfFindMethods) ;
+    inline Boolean DCMDictionaryManagerAvailable() { return true; }
+enum {
+  kMaxYomiLengthInAppleJapaneseDictionary = 40,
+  kMaxKanjiLengthInAppleJapaneseDictionary = 64
+};
+
+
+
+
+enum {
+  kDCMJapaneseYomiTag = 'yomi',
+  kDCMJapaneseHyokiTag = 'hyok',
+  kDCMJapaneseHinshiTag = 'hins',
+  kDCMJapaneseWeightTag = 'hind',
+  kDCMJapanesePhoneticTag = 'hton',
+  kDCMJapaneseAccentTag = 'acnt',
+  kDCMJapaneseOnKunReadingTag = 'OnKn',
+  kDCMJapaneseFukugouInfoTag = 'fuku'
+};
+
+enum {
+  kDCMJapaneseYomiType = typeUnicodeText,
+  kDCMJapaneseHyokiType = typeUnicodeText,
+  kDCMJapaneseHinshiType = 'hins',
+  kDCMJapaneseWeightType = typeShortInteger,
+  kDCMJapanesePhoneticType = typeUnicodeText,
+  kDCMJapaneseAccentType = 'byte',
+  kDCMJapaneseOnKunReadingType = typeUnicodeText,
+  kDCMJapaneseFukugouInfoType = 'fuku'
+};
+
+enum {
+
+  kInsert = 0,
+  kReplace = 1,
+  kInsertOrReplace = 2
+};
+
+
+
+typedef short DictionaryDataInsertMode;
+enum {
+
+  kIsCaseSensitive = 0x10,
+  kIsNotDiacriticalSensitive = 0x20
+};
+
+enum {
+
+  kNoun = -1,
+  kVerb = -2,
+  kAdjective = -3,
+  kAdverb = -4
+};
+
+
+typedef SInt8 DictionaryEntryAttribute;
+
+struct DictionaryInformation {
+  FSSpec dictionaryFSSpec;
+  SInt32 numberOfRecords;
+  SInt32 currentGarbageSize;
+  ScriptCode script;
+  SInt16 maximumKeyLength;
+  SInt8 keyAttributes;
+};
+typedef struct DictionaryInformation DictionaryInformation;
+struct DictionaryAttributeTable {
+  UInt8 datSize;
+  DictionaryEntryAttribute datTable[1];
+};
+typedef struct DictionaryAttributeTable DictionaryAttributeTable;
+typedef DictionaryAttributeTable * DictionaryAttributeTablePtr;
+
+
+}
+extern "C" {
+
+
+
+typedef struct OpaqueLAEnvironmentRef* LAEnvironmentRef;
+typedef struct OpaqueLAContextRef* LAContextRef;
+typedef AEKeyword LAPropertyKey;
+typedef DescType LAPropertyType;
+
+
+
+struct LAMorphemeRec {
+  ByteCount sourceTextLength;
+  LogicalAddress sourceTextPtr;
+  ByteCount morphemeTextLength;
+  LogicalAddress morphemeTextPtr;
+  UInt32 partOfSpeech;
+};
+typedef struct LAMorphemeRec LAMorphemeRec;
+struct LAMorphemesArray {
+  ItemCount morphemesCount;
+  ByteCount processedTextLength;
+  ByteCount morphemesTextLength;
+  LAMorphemeRec morphemes[1];
+};
+typedef struct LAMorphemesArray LAMorphemesArray;
+typedef LAMorphemesArray * LAMorphemesArrayPtr;
+enum {
+  kLAMorphemesArrayVersion = 0
+};
+
+
+
+
+typedef AERecord LAMorphemeBundle;
+typedef AERecord LAMorphemePath;
+typedef AERecord LAMorpheme;
+typedef AERecord LAHomograph;
+enum {
+  keyAELAMorphemeBundle = 'lmfb',
+  keyAELAMorphemePath = 'lmfp',
+  keyAELAMorpheme = 'lmfn',
+  keyAELAHomograph = 'lmfh'
+};
+
+enum {
+  typeLAMorphemeBundle = typeAERecord,
+  typeLAMorphemePath = typeAERecord,
+  typeLAMorpheme = typeAEList,
+  typeLAHomograph = typeAEList
+};
+
+
+
+
+enum {
+  keyAEMorphemePartOfSpeechCode = 'lamc',
+  keyAEMorphemeTextRange = 'lamt'
+};
+
+enum {
+  typeAEMorphemePartOfSpeechCode = 'lamc',
+  typeAEMorphemeTextRange = 'lamt'
+};
+
+typedef UInt32 MorphemePartOfSpeech;
+struct MorphemeTextRange {
+  UInt32 sourceOffset;
+  UInt32 length;
+};
+typedef struct MorphemeTextRange MorphemeTextRange;
+
+
+
+enum {
+  kLAEndOfSourceTextMask = 0x00000001
+};
+
+
+
+
+enum {
+  kLADefaultEdge = 0,
+  kLAFreeEdge = 1,
+  kLAIncompleteEdge = 2
+};
+
+
+
+
+enum {
+  kLAAllMorphemes = 0
+};
+extern UInt32
+LALibraryVersion(void) ;
+extern OSStatus
+LATextToMorphemes(
+  LAContextRef context,
+  TextEncoding preferedEncoding,
+  ByteCount textLength,
+  ConstLogicalAddress sourceText,
+  ByteCount bufferSize,
+  OptionBits convertFlags,
+  UInt32 structureVersion,
+  ByteCount * acceptedLength,
+  LAMorphemesArrayPtr resultBuffer) ;
+extern OSStatus
+LAOpenAnalysisContext(
+  LAEnvironmentRef environ,
+  LAContextRef * context) ;
+extern OSStatus
+LACloseAnalysisContext(LAContextRef context) ;
+extern OSStatus
+LAGetEnvironmentList(
+  UInt32 maxCount,
+  UInt32 * actualCount,
+  LAEnvironmentRef environmentList[]) ;
+extern OSStatus
+LAGetEnvironmentName(
+  LAEnvironmentRef environment,
+  Str63 environmentName) ;
+extern OSStatus
+LAGetEnvironmentRef(
+  ConstStr63Param targetEnvironmentName,
+  LAEnvironmentRef * environment) ;
+extern OSStatus
+LACreateCustomEnvironment(
+  LAEnvironmentRef baseEnvironment,
+  ConstStr63Param newEnvironmentName,
+  Boolean persistent,
+  LAEnvironmentRef * newEnvironment) ;
+extern OSStatus
+LADeleteCustomEnvironment(LAEnvironmentRef environment) ;
+extern OSStatus
+LAOpenDictionary(
+  LAEnvironmentRef environ,
+  const FSSpec * dictionary) ;
+extern OSStatus
+LACloseDictionary(
+  LAEnvironmentRef environ,
+  const FSSpec * dictionary) ;
+extern OSStatus
+LAListAvailableDictionaries(
+  LAEnvironmentRef environ,
+  ItemCount maxCount,
+  ItemCount * actualCount,
+  FSSpec dictionaryList[],
+  Boolean opened[]) ;
+extern OSStatus
+LAAddNewWord(
+  LAEnvironmentRef environ,
+  const FSSpec * dictionary,
+  const AEDesc * dataList) ;
+extern OSStatus
+LAMorphemeAnalysis(
+  LAContextRef context,
+  ConstUniCharArrayPtr text,
+  UniCharCount textLength,
+  LAMorphemePath * leadingPath,
+  LAMorphemePath * trailingPath,
+  ItemCount pathCount,
+  LAMorphemeBundle * result) ;
+extern OSStatus
+LAContinuousMorphemeAnalysis(
+  LAContextRef context,
+  ConstUniCharArrayPtr text,
+  UniCharCount textLength,
+  Boolean incrementalText,
+  LAMorphemePath * leadingPath,
+  LAMorphemePath * trailingPath,
+  Boolean * modified) ;
+extern OSStatus
+LAGetMorphemes(
+  LAContextRef context,
+  LAMorphemePath * result) ;
+extern OSStatus
+LAShiftMorphemes(
+  LAContextRef context,
+  ItemCount morphemeCount,
+  LAMorphemePath * path,
+  UniCharCount * shiftedLength) ;
+extern OSStatus
+LAResetAnalysis(LAContextRef context) ;
+    inline Boolean LALanguageAnalysisAvailable() { return true; }
+enum {
+  kAppleJapaneseDictionarySignature = 'jlan'
+};
+
+
+
+
+enum {
+  kMaxInputLengthOfAppleJapaneseEngine = 200
+};
+
+
+
+
+
+typedef MorphemePartOfSpeech JapanesePartOfSpeech;
+typedef UInt16 HomographWeight;
+typedef UInt8 HomographAccent;
+
+
+
+enum {
+  keyAEHomographDicInfo = 'lahd',
+  keyAEHomographWeight = 'lahw',
+  keyAEHomographAccent = 'laha'
+};
+
+enum {
+  typeAEHomographDicInfo = 'lahd',
+  typeAEHomographWeight = typeShortInteger,
+  typeAEHomographAccent = 'laha'
+};
+
+
+
+
+struct HomographDicInfoRec {
+  DCMDictionaryID dictionaryID;
+  DCMUniqueID uniqueID;
+};
+typedef struct HomographDicInfoRec HomographDicInfoRec;
+enum {
+  kLASpeechRoughClassMask = 0x0000F000,
+  kLASpeechMediumClassMask = 0x0000FF00,
+  kLASpeechStrictClassMask = 0x0000FFF0,
+  kLASpeechKatsuyouMask = 0x0000000F
+};
+
+
+
+
+
+enum {
+  kLASpeechMeishi = 0x00000000,
+  kLASpeechFutsuuMeishi = 0x00000000,
+  kLASpeechJinmei = 0x00000100,
+  kLASpeechJinmeiSei = 0x00000110,
+  kLASpeechJinmeiMei = 0x00000120,
+  kLASpeechChimei = 0x00000200,
+  kLASpeechSetsubiChimei = 0x00000210,
+  kLASpeechSoshikimei = 0x00000300,
+  kLASpeechKoyuuMeishi = 0x00000400,
+  kLASpeechSahenMeishi = 0x00000500,
+  kLASpeechKeidouMeishi = 0x00000600,
+  kLASpeechRentaishi = 0x00001000,
+  kLASpeechFukushi = 0x00002000,
+  kLASpeechSetsuzokushi = 0x00003000,
+  kLASpeechKandoushi = 0x00004000,
+  kLASpeechDoushi = 0x00005000,
+  kLASpeechGodanDoushi = 0x00005000,
+  kLASpeechKagyouGodan = 0x00005000,
+  kLASpeechSagyouGodan = 0x00005010,
+  kLASpeechTagyouGodan = 0x00005020,
+  kLASpeechNagyouGodan = 0x00005030,
+  kLASpeechMagyouGodan = 0x00005040,
+  kLASpeechRagyouGodan = 0x00005050,
+  kLASpeechWagyouGodan = 0x00005060,
+  kLASpeechGagyouGodan = 0x00005070,
+  kLASpeechBagyouGodan = 0x00005080,
+  kLASpeechIchidanDoushi = 0x00005100,
+  kLASpeechKahenDoushi = 0x00005200,
+  kLASpeechSahenDoushi = 0x00005300,
+  kLASpeechZahenDoushi = 0x00005400,
+  kLASpeechKeiyoushi = 0x00006000,
+  kLASpeechKeiyoudoushi = 0x00007000,
+  kLASpeechSettougo = 0x00008000,
+  kLASpeechSuujiSettougo = 0x00008100,
+  kLASpeechSetsubigo = 0x00009000,
+  kLASpeechJinmeiSetsubigo = 0x00009100,
+  kLASpeechChimeiSetsubigo = 0x00009200,
+  kLASpeechSoshikimeiSetsubigo = 0x00009300,
+  kLASpeechSuujiSetsubigo = 0x00009400,
+  kLASpeechMuhinshi = 0x0000A000,
+  kLASpeechTankanji = 0x0000A000,
+  kLASpeechKigou = 0x0000A100,
+  kLASpeechKuten = 0x0000A110,
+  kLASpeechTouten = 0x0000A120,
+  kLASpeechSuushi = 0x0000A200,
+  kLASpeechDokuritsugo = 0x0000A300,
+  kLASpeechSeiku = 0x0000A400,
+  kLASpeechJodoushi = 0x0000B000,
+  kLASpeechJoshi = 0x0000C000
+};
+
+
+
+
+
+enum {
+  kLASpeechKatsuyouGokan = 0x00000001,
+  kLASpeechKatsuyouMizen = 0x00000002,
+  kLASpeechKatsuyouRenyou = 0x00000003,
+  kLASpeechKatsuyouSyuushi = 0x00000004,
+  kLASpeechKatsuyouRentai = 0x00000005,
+  kLASpeechKatsuyouKatei = 0x00000006,
+  kLASpeechKatsuyouMeirei = 0x00000007
+};
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  kTextToSpeechSynthType = 'ttsc',
+  kTextToSpeechVoiceType = 'ttvd',
+  kTextToSpeechVoiceFileType = 'ttvf',
+  kTextToSpeechVoiceBundleType = 'ttvb'
+};
+
+enum {
+  kNoEndingProsody = 1,
+  kNoSpeechInterrupt = 2,
+  kPreflightThenPause = 4
+};
+
+enum {
+  kImmediate = 0,
+  kEndOfWord = 1,
+  kEndOfSentence = 2
+};
+
+
+
+
+
+enum {
+  soStatus = 'stat',
+  soErrors = 'erro',
+  soInputMode = 'inpt',
+  soCharacterMode = 'char',
+  soNumberMode = 'nmbr',
+  soRate = 'rate',
+  soPitchBase = 'pbas',
+  soPitchMod = 'pmod',
+  soVolume = 'volm',
+  soSynthType = 'vers',
+  soRecentSync = 'sync',
+  soPhonemeSymbols = 'phsy',
+  soCurrentVoice = 'cvox',
+  soCommandDelimiter = 'dlim',
+  soReset = 'rset',
+  soCurrentA5 = 'myA5',
+  soRefCon = 'refc',
+  soTextDoneCallBack = 'tdcb',
+  soSpeechDoneCallBack = 'sdcb',
+  soSyncCallBack = 'sycb',
+  soErrorCallBack = 'ercb',
+  soPhonemeCallBack = 'phcb',
+  soWordCallBack = 'wdcb',
+  soSynthExtension = 'xtnd',
+  soSoundOutput = 'sndo'
+};
+
+
+
+
+
+enum {
+  modeText = 'TEXT',
+  modePhonemes = 'PHON',
+  modeNormal = 'NORM',
+  modeLiteral = 'LTRL'
+};
+
+
+enum {
+  soVoiceDescription = 'info',
+  soVoiceFile = 'fref'
+};
+
+
+
+
+
+
+struct SpeechChannelRecord {
+  long data[1];
+};
+typedef struct SpeechChannelRecord SpeechChannelRecord;
+typedef SpeechChannelRecord * SpeechChannel;
+
+struct VoiceSpec {
+  OSType creator;
+  OSType id;
+};
+typedef struct VoiceSpec VoiceSpec;
+typedef VoiceSpec * VoiceSpecPtr;
+
+enum {
+  kNeuter = 0,
+  kMale = 1,
+  kFemale = 2
+};
+
+
+
+
+struct VoiceDescription {
+  long length;
+  VoiceSpec voice;
+  long version;
+  Str63 name;
+  Str255 comment;
+  short gender;
+  short age;
+  short script;
+  short language;
+  short region;
+  long reserved[4];
+};
+typedef struct VoiceDescription VoiceDescription;
+
+
+struct VoiceFileInfo {
+  FSSpec fileSpec;
+  short resID;
+};
+typedef struct VoiceFileInfo VoiceFileInfo;
+struct SpeechStatusInfo {
+  Boolean outputBusy;
+  Boolean outputPaused;
+  long inputBytesLeft;
+  short phonemeCode;
+};
+typedef struct SpeechStatusInfo SpeechStatusInfo;
+
+
+struct SpeechErrorInfo {
+  short count;
+  OSErr oldest;
+  long oldPos;
+  OSErr newest;
+  long newPos;
+};
+typedef struct SpeechErrorInfo SpeechErrorInfo;
+
+
+struct SpeechVersionInfo {
+  OSType synthType;
+  OSType synthSubType;
+  OSType synthManufacturer;
+  long synthFlags;
+  NumVersion synthVersion;
+};
+typedef struct SpeechVersionInfo SpeechVersionInfo;
+
+
+struct PhonemeInfo {
+  short opcode;
+  Str15 phStr;
+  Str31 exampleStr;
+  short hiliteStart;
+  short hiliteEnd;
+};
+typedef struct PhonemeInfo PhonemeInfo;
+
+struct PhonemeDescriptor {
+  short phonemeCount;
+  PhonemeInfo thePhonemes[1];
+};
+typedef struct PhonemeDescriptor PhonemeDescriptor;
+struct SpeechXtndData {
+  OSType synthCreator;
+  Byte synthData[2];
+};
+typedef struct SpeechXtndData SpeechXtndData;
+
+struct DelimiterInfo {
+  Byte startDelimiter[2];
+  Byte endDelimiter[2];
+};
+typedef struct DelimiterInfo DelimiterInfo;
+
+typedef void ( * SpeechTextDoneProcPtr)(SpeechChannel chan, long refCon, const void **nextBuf, unsigned long *byteLen, long *controlFlags);
+typedef void ( * SpeechDoneProcPtr)(SpeechChannel chan, long refCon);
+typedef void ( * SpeechSyncProcPtr)(SpeechChannel chan, long refCon, OSType syncMessage);
+typedef void ( * SpeechErrorProcPtr)(SpeechChannel chan, long refCon, OSErr theError, long bytePos);
+typedef void ( * SpeechPhonemeProcPtr)(SpeechChannel chan, long refCon, short phonemeOpcode);
+typedef void ( * SpeechWordProcPtr)(SpeechChannel chan, long refCon, unsigned long wordPos, unsigned short wordLen);
+typedef SpeechTextDoneProcPtr SpeechTextDoneUPP;
+typedef SpeechDoneProcPtr SpeechDoneUPP;
+typedef SpeechSyncProcPtr SpeechSyncUPP;
+typedef SpeechErrorProcPtr SpeechErrorUPP;
+typedef SpeechPhonemeProcPtr SpeechPhonemeUPP;
+typedef SpeechWordProcPtr SpeechWordUPP;
+extern SpeechTextDoneUPP
+NewSpeechTextDoneUPP(SpeechTextDoneProcPtr userRoutine) ;
+extern SpeechDoneUPP
+NewSpeechDoneUPP(SpeechDoneProcPtr userRoutine) ;
+extern SpeechSyncUPP
+NewSpeechSyncUPP(SpeechSyncProcPtr userRoutine) ;
+extern SpeechErrorUPP
+NewSpeechErrorUPP(SpeechErrorProcPtr userRoutine) ;
+extern SpeechPhonemeUPP
+NewSpeechPhonemeUPP(SpeechPhonemeProcPtr userRoutine) ;
+extern SpeechWordUPP
+NewSpeechWordUPP(SpeechWordProcPtr userRoutine) ;
+extern void
+DisposeSpeechTextDoneUPP(SpeechTextDoneUPP userUPP) ;
+extern void
+DisposeSpeechDoneUPP(SpeechDoneUPP userUPP) ;
+extern void
+DisposeSpeechSyncUPP(SpeechSyncUPP userUPP) ;
+extern void
+DisposeSpeechErrorUPP(SpeechErrorUPP userUPP) ;
+extern void
+DisposeSpeechPhonemeUPP(SpeechPhonemeUPP userUPP) ;
+extern void
+DisposeSpeechWordUPP(SpeechWordUPP userUPP) ;
+extern void
+InvokeSpeechTextDoneUPP(
+  SpeechChannel chan,
+  long refCon,
+  const void ** nextBuf,
+  unsigned long * byteLen,
+  long * controlFlags,
+  SpeechTextDoneUPP userUPP) ;
+extern void
+InvokeSpeechDoneUPP(
+  SpeechChannel chan,
+  long refCon,
+  SpeechDoneUPP userUPP) ;
+extern void
+InvokeSpeechSyncUPP(
+  SpeechChannel chan,
+  long refCon,
+  OSType syncMessage,
+  SpeechSyncUPP userUPP) ;
+extern void
+InvokeSpeechErrorUPP(
+  SpeechChannel chan,
+  long refCon,
+  OSErr theError,
+  long bytePos,
+  SpeechErrorUPP userUPP) ;
+extern void
+InvokeSpeechPhonemeUPP(
+  SpeechChannel chan,
+  long refCon,
+  short phonemeOpcode,
+  SpeechPhonemeUPP userUPP) ;
+extern void
+InvokeSpeechWordUPP(
+  SpeechChannel chan,
+  long refCon,
+  unsigned long wordPos,
+  unsigned short wordLen,
+  SpeechWordUPP userUPP) ;
+extern NumVersion
+SpeechManagerVersion(void) ;
+extern OSErr
+MakeVoiceSpec(
+  OSType creator,
+  OSType id,
+  VoiceSpec * voice) ;
+extern OSErr
+CountVoices(short * numVoices) ;
+extern OSErr
+GetIndVoice(
+  short index,
+  VoiceSpec * voice) ;
+extern OSErr
+GetVoiceDescription(
+  const VoiceSpec * voice,
+  VoiceDescription * info,
+  long infoLength) ;
+extern OSErr
+GetVoiceInfo(
+  const VoiceSpec * voice,
+  OSType selector,
+  void * voiceInfo) ;
+extern OSErr
+NewSpeechChannel(
+  VoiceSpec * voice,
+  SpeechChannel * chan) ;
+extern OSErr
+DisposeSpeechChannel(SpeechChannel chan) ;
+extern OSErr
+SpeakString(ConstStr255Param textToBeSpoken) ;
+extern OSErr
+SpeakText(
+  SpeechChannel chan,
+  const void * textBuf,
+  unsigned long textBytes) ;
+extern OSErr
+SpeakBuffer(
+  SpeechChannel chan,
+  const void * textBuf,
+  unsigned long textBytes,
+  long controlFlags) ;
+extern OSErr
+StopSpeech(SpeechChannel chan) ;
+extern OSErr
+StopSpeechAt(
+  SpeechChannel chan,
+  long whereToStop) ;
+extern OSErr
+PauseSpeechAt(
+  SpeechChannel chan,
+  long whereToPause) ;
+extern OSErr
+ContinueSpeech(SpeechChannel chan) ;
+extern short
+SpeechBusy(void) ;
+extern short
+SpeechBusySystemWide(void) ;
+extern OSErr
+SetSpeechRate(
+  SpeechChannel chan,
+  Fixed rate) ;
+extern OSErr
+GetSpeechRate(
+  SpeechChannel chan,
+  Fixed * rate) ;
+extern OSErr
+SetSpeechPitch(
+  SpeechChannel chan,
+  Fixed pitch) ;
+extern OSErr
+GetSpeechPitch(
+  SpeechChannel chan,
+  Fixed * pitch) ;
+extern OSErr
+SetSpeechInfo(
+  SpeechChannel chan,
+  OSType selector,
+  const void * speechInfo) ;
+extern OSErr
+GetSpeechInfo(
+  SpeechChannel chan,
+  OSType selector,
+  void * speechInfo) ;
+extern OSErr
+TextToPhonemes(
+  SpeechChannel chan,
+  const void * textBuf,
+  unsigned long textBytes,
+  Handle phonemeBuf,
+  long * phonemeBytes) ;
+extern OSErr
+UseDictionary(
+  SpeechChannel chan,
+  Handle dictionary) ;
+
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+enum {
+  kLSUnknownErr = -10810,
+  kLSNotAnApplicationErr = -10811,
+  kLSNotInitializedErr = -10812,
+  kLSDataUnavailableErr = -10813,
+  kLSApplicationNotFoundErr = -10814,
+  kLSUnknownTypeErr = -10815,
+  kLSDataTooOldErr = -10816,
+  kLSDataErr = -10817,
+  kLSLaunchInProgressErr = -10818,
+  kLSNotRegisteredErr = -10819,
+  kLSAppDoesNotClaimTypeErr = -10820,
+  kLSAppDoesNotSupportSchemeWarning = -10821,
+  kLSServerCommunicationErr = -10822,
+  kLSCannotSetInfoErr = -10823
+};
+
+typedef OptionBits LSInitializeFlags;
+enum {
+  kLSInitializeDefaults = 0x00000001
+};
+
+enum {
+  kLSMinCatInfoBitmap = (kFSCatInfoNodeFlags | kFSCatInfoParentDirID | kFSCatInfoFinderInfo | kFSCatInfoFinderXInfo)
+};
+
+enum {
+  kLSInvalidExtensionIndex = (unsigned long)0xFFFFFFFF
+};
+
+typedef OptionBits LSRequestedInfo;
+enum {
+  kLSRequestExtension = 0x00000001,
+  kLSRequestTypeCreator = 0x00000002,
+  kLSRequestBasicFlagsOnly = 0x00000004,
+  kLSRequestAppTypeFlags = 0x00000008,
+  kLSRequestAllFlags = 0x00000010,
+  kLSRequestIconAndKind = 0x00000020,
+  kLSRequestExtensionFlagsOnly = 0x00000040,
+  kLSRequestAllInfo = (unsigned long)0xFFFFFFFF
+};
+
+typedef OptionBits LSItemInfoFlags;
+enum {
+  kLSItemInfoIsPlainFile = 0x00000001,
+  kLSItemInfoIsPackage = 0x00000002,
+  kLSItemInfoIsApplication = 0x00000004,
+  kLSItemInfoIsContainer = 0x00000008,
+  kLSItemInfoIsAliasFile = 0x00000010,
+  kLSItemInfoIsSymlink = 0x00000020,
+  kLSItemInfoIsInvisible = 0x00000040,
+  kLSItemInfoIsNativeApp = 0x00000080,
+  kLSItemInfoIsClassicApp = 0x00000100,
+  kLSItemInfoAppPrefersNative = 0x00000200,
+  kLSItemInfoAppPrefersClassic = 0x00000400,
+  kLSItemInfoAppIsScriptable = 0x00000800,
+  kLSItemInfoIsVolume = 0x00001000,
+  kLSItemInfoExtensionIsHidden = 0x00100000
+};
+
+typedef OptionBits LSRolesMask;
+enum {
+  kLSRolesNone = 0x00000001,
+  kLSRolesViewer = 0x00000002,
+  kLSRolesEditor = 0x00000004,
+  kLSRolesAll = (unsigned long)0xFFFFFFFF
+};
+
+typedef UInt32 LSKindID;
+enum {
+  kLSUnknownKindID = 0
+};
+
+enum {
+  kLSUnknownType = 0,
+  kLSUnknownCreator = 0
+};
+
+struct LSItemInfoRecord {
+  LSItemInfoFlags flags;
+  OSType filetype;
+  OSType creator;
+  CFStringRef extension;
+  CFStringRef iconFileName;
+  LSKindID kindID;
+};
+typedef struct LSItemInfoRecord LSItemInfoRecord;
+
+typedef OptionBits LSAcceptanceFlags;
+enum {
+  kLSAcceptDefault = 0x00000001,
+  kLSAcceptAllowLoginUI = 0x00000002
+};
+
+typedef OptionBits LSLaunchFlags;
+enum {
+  kLSLaunchDefaults = 0x00000001,
+  kLSLaunchAndPrint = 0x00000002,
+  kLSLaunchReserved2 = 0x00000004,
+  kLSLaunchReserved3 = 0x00000008,
+  kLSLaunchReserved4 = 0x00000010,
+  kLSLaunchReserved5 = 0x00000020,
+  kLSLaunchReserved6 = 0x00000040,
+  kLSLaunchInhibitBGOnly = 0x00000080,
+  kLSLaunchDontAddToRecents = 0x00000100,
+  kLSLaunchDontSwitch = 0x00000200,
+  kLSLaunchNoParams = 0x00000800,
+  kLSLaunchAsync = 0x00010000,
+  kLSLaunchStartClassic = 0x00020000,
+  kLSLaunchInClassic = 0x00040000,
+  kLSLaunchNewInstance = 0x00080000,
+  kLSLaunchAndHide = 0x00100000,
+  kLSLaunchAndHideOthers = 0x00200000
+};
+
+struct LSLaunchFSRefSpec {
+  const FSRef * appRef;
+  UInt32 numDocs;
+  const FSRef * itemRefs;
+  const AEDesc * passThruParams;
+  LSLaunchFlags launchFlags;
+  void * asyncRefCon;
+};
+typedef struct LSLaunchFSRefSpec LSLaunchFSRefSpec;
+struct LSLaunchURLSpec {
+  CFURLRef appURL;
+  CFArrayRef itemURLs;
+  const AEDesc * passThruParams;
+  LSLaunchFlags launchFlags;
+  void * asyncRefCon;
+};
+typedef struct LSLaunchURLSpec LSLaunchURLSpec;
+extern OSStatus
+LSInit(LSInitializeFlags inFlags) ;
+extern OSStatus
+LSTerm(void) ;
+extern OSStatus
+LSCopyItemInfoForRef(
+  const FSRef * inItemRef,
+  LSRequestedInfo inWhichInfo,
+  LSItemInfoRecord * outItemInfo) ;
+extern OSStatus
+LSCopyItemInfoForURL(
+  CFURLRef inURL,
+  LSRequestedInfo inWhichInfo,
+  LSItemInfoRecord * outItemInfo) ;
+extern OSStatus
+LSGetExtensionInfo(
+  UniCharCount inNameLen,
+  const UniChar inNameBuffer[],
+  UniCharCount * outExtStartIndex) ;
+extern OSStatus
+LSCopyDisplayNameForRef(
+  const FSRef * inRef,
+  CFStringRef * outDisplayName) ;
+extern OSStatus
+LSCopyDisplayNameForURL(
+  CFURLRef inURL,
+  CFStringRef * outDisplayName) ;
+extern OSStatus
+LSSetExtensionHiddenForRef(
+  const FSRef * inRef,
+  Boolean inHide) ;
+extern OSStatus
+LSSetExtensionHiddenForURL(
+  CFURLRef inURL,
+  Boolean inHide) ;
+extern OSStatus
+LSCopyKindStringForRef(
+  const FSRef * inFSRef,
+  CFStringRef * outKindString) ;
+extern OSStatus
+LSCopyKindStringForURL(
+  CFURLRef inURL,
+  CFStringRef * outKindString) ;
+extern OSStatus
+LSCopyKindStringForTypeInfo(
+  OSType inType,
+  OSType inCreator,
+  CFStringRef inExtension,
+  CFStringRef * outKindString) ;
+extern OSStatus
+LSCopyKindStringForMIMEType(
+  CFStringRef inMIMEType,
+  CFStringRef * outKindString) ;
+extern OSStatus
+LSGetApplicationForItem(
+  const FSRef * inItemRef,
+  LSRolesMask inRoleMask,
+  FSRef * outAppRef,
+  CFURLRef * outAppURL) ;
+extern OSStatus
+LSGetApplicationForInfo(
+  OSType inType,
+  OSType inCreator,
+  CFStringRef inExtension,
+  LSRolesMask inRoleMask,
+  FSRef * outAppRef,
+  CFURLRef * outAppURL) ;
+extern OSStatus
+LSCopyApplicationForMIMEType(
+  CFStringRef inMIMEType,
+  LSRolesMask inRoleMask,
+  CFURLRef * outAppURL) ;
+extern OSStatus
+LSGetApplicationForURL(
+  CFURLRef inURL,
+  LSRolesMask inRoleMask,
+  FSRef * outAppRef,
+  CFURLRef * outAppURL) ;
+extern OSStatus
+LSFindApplicationForInfo(
+  OSType inCreator,
+  CFStringRef inBundleID,
+  CFStringRef inName,
+  FSRef * outAppRef,
+  CFURLRef * outAppURL) ;
+extern OSStatus
+LSCanRefAcceptItem(
+  const FSRef * inItemFSRef,
+  const FSRef * inTargetRef,
+  LSRolesMask inRoleMask,
+  LSAcceptanceFlags inFlags,
+  Boolean * outAcceptsItem) ;
+extern OSStatus
+LSCanURLAcceptURL(
+  CFURLRef inItemURL,
+  CFURLRef inTargetURL,
+  LSRolesMask inRoleMask,
+  LSAcceptanceFlags inFlags,
+  Boolean * outAcceptsItem) ;
+extern OSStatus
+LSOpenFSRef(
+  const FSRef * inRef,
+  FSRef * outLaunchedRef) ;
+extern OSStatus
+LSOpenCFURLRef(
+  CFURLRef inURL,
+  CFURLRef * outLaunchedURL) ;
+extern OSStatus
+LSOpenFromRefSpec(
+  const LSLaunchFSRefSpec * inLaunchSpec,
+  FSRef * outLaunchedRef) ;
+extern OSStatus
+LSOpenFromURLSpec(
+  const LSLaunchURLSpec * inLaunchSpec,
+  CFURLRef * outLaunchedURL) ;
+
+
+
+
+
+
+}
+
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+typedef struct OpaqueEventRef* EventRef;
+enum {
+
+
+
+
+
+  eventAlreadyPostedErr = -9860,
+
+
+
+
+
+  eventTargetBusyErr = -9861,
+
+
+
+
+  eventClassInvalidErr = -9862,
+
+
+
+
+  eventClassIncorrectErr = -9864,
+
+
+
+
+
+
+  eventHandlerAlreadyInstalledErr = -9866,
+
+
+
+
+  eventInternalErr = -9868,
+
+
+
+
+  eventKindIncorrectErr = -9869,
+
+
+
+
+  eventParameterNotFoundErr = -9870,
+  eventNotHandledErr = -9874,
+
+
+
+
+
+  eventLoopTimedOutErr = -9875,
+
+
+
+
+
+  eventLoopQuitErr = -9876,
+
+
+
+
+
+  eventNotInQueueErr = -9877,
+  eventHotKeyExistsErr = -9878,
+  eventHotKeyInvalidErr = -9879
+};
+typedef SInt16 EventPriority;
+enum {
+
+
+
+
+
+  kEventPriorityLow = 0,
+
+
+
+
+  kEventPriorityStandard = 1,
+
+
+
+
+  kEventPriorityHigh = 2
+};
+
+enum {
+  kEventLeaveInQueue = false,
+  kEventRemoveFromQueue = true
+};
+
+
+
+
+
+
+typedef double EventTime;
+typedef EventTime EventTimeout;
+typedef EventTime EventTimerInterval;
+    inline EventTime TicksToEventTime( UInt32 t ) { return ( (t) / 60.0 ); }
+    inline UInt32 EventTimeToTicks( EventTime t ) { return (UInt32)( ((t) * 60) + 0.5 ); }
+struct EventTypeSpec {
+  UInt32 eventClass;
+  UInt32 eventKind;
+};
+typedef struct EventTypeSpec EventTypeSpec;
+
+
+
+typedef OSType EventParamName;
+typedef OSType EventParamType;
+typedef struct OpaqueEventLoopRef* EventLoopRef;
+extern EventLoopRef
+GetCurrentEventLoop(void) ;
+extern EventLoopRef
+GetMainEventLoop(void) ;
+extern OSStatus
+RunCurrentEventLoop(EventTimeout inTimeout) ;
+extern OSStatus
+QuitEventLoop(EventLoopRef inEventLoop) ;
+extern CFTypeRef
+GetCFRunLoopFromEventLoop(EventLoopRef inEventLoop) ;
+extern OSStatus
+ReceiveNextEvent(
+  UInt32 inNumTypes,
+  const EventTypeSpec * inList,
+  EventTimeout inTimeout,
+  Boolean inPullEvent,
+  EventRef * outEvent) ;
+
+
+
+
+
+typedef UInt32 EventAttributes;
+enum {
+  kEventAttributeNone = 0,
+  kEventAttributeUserEvent = (1 << 0)
+};
+extern OSStatus
+CreateEvent(
+  CFAllocatorRef inAllocator,
+  UInt32 inClassID,
+  UInt32 kind,
+  EventTime when,
+  EventAttributes flags,
+  EventRef * outEvent) ;
+extern EventRef
+CopyEvent(EventRef inOther) ;
+extern EventRef
+RetainEvent(EventRef inEvent) ;
+extern UInt32
+GetEventRetainCount(EventRef inEvent) ;
+extern void
+ReleaseEvent(EventRef inEvent) ;
+extern OSStatus
+SetEventParameter(
+  EventRef inEvent,
+  EventParamName inName,
+  EventParamType inType,
+  UInt32 inSize,
+  const void * inDataPtr) ;
+extern OSStatus
+GetEventParameter(
+  EventRef inEvent,
+  EventParamName inName,
+  EventParamType inDesiredType,
+  EventParamType * outActualType,
+  UInt32 inBufferSize,
+  UInt32 * outActualSize,
+  void * outData) ;
+extern UInt32
+GetEventClass(EventRef inEvent) ;
+extern UInt32
+GetEventKind(EventRef inEvent) ;
+extern EventTime
+GetEventTime(EventRef inEvent) ;
+extern OSStatus
+SetEventTime(
+  EventRef inEvent,
+  EventTime inTime) ;
+
+
+
+
+
+
+typedef struct OpaqueEventQueueRef* EventQueueRef;
+extern EventQueueRef
+GetCurrentEventQueue(void) ;
+extern EventQueueRef
+GetMainEventQueue(void) ;
+typedef Boolean ( * EventComparatorProcPtr)(EventRef inEvent, void *inCompareData);
+typedef EventComparatorProcPtr EventComparatorUPP;
+extern EventComparatorUPP
+NewEventComparatorUPP(EventComparatorProcPtr userRoutine) ;
+extern void
+DisposeEventComparatorUPP(EventComparatorUPP userUPP) ;
+extern Boolean
+InvokeEventComparatorUPP(
+  EventRef inEvent,
+  void * inCompareData,
+  EventComparatorUPP userUPP) ;
+extern OSStatus
+PostEventToQueue(
+  EventQueueRef inQueue,
+  EventRef inEvent,
+  EventPriority inPriority) ;
+extern OSStatus
+FlushEventsMatchingListFromQueue(
+  EventQueueRef inQueue,
+  UInt32 inNumTypes,
+  const EventTypeSpec * inList) ;
+extern OSStatus
+FlushSpecificEventsFromQueue(
+  EventQueueRef inQueue,
+  EventComparatorUPP inComparator,
+  void * inCompareData) ;
+extern OSStatus
+FlushEventQueue(EventQueueRef inQueue) ;
+extern EventRef
+FindSpecificEventInQueue(
+  EventQueueRef inQueue,
+  EventComparatorUPP inComparator,
+  void * inCompareData) ;
+extern UInt32
+GetNumEventsInQueue(EventQueueRef inQueue) ;
+extern OSStatus
+RemoveEventFromQueue(
+  EventQueueRef inQueue,
+  EventRef inEvent) ;
+extern Boolean
+IsEventInQueue(
+  EventQueueRef inQueue,
+  EventRef inEvent) ;
+extern EventRef
+GetCurrentEvent(void) ;
+extern UInt32
+GetCurrentEventButtonState(void) ;
+extern UInt32
+GetCurrentEventKeyModifiers(void) ;
+extern UInt32
+GetCurrentButtonState(void) ;
+extern EventTime
+GetCurrentEventTime(void) ;
+typedef struct __EventLoopTimer* EventLoopTimerRef;
+typedef void ( * EventLoopTimerProcPtr)(EventLoopTimerRef inTimer, void *inUserData);
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kEventLoopIdleTimerStarted = 1,
+
+
+
+
+
+
+
+  kEventLoopIdleTimerIdling = 2,
+
+
+
+
+
+  kEventLoopIdleTimerStopped = 3
+};
+
+typedef UInt16 EventLoopIdleTimerMessage;
+typedef void ( * EventLoopIdleTimerProcPtr)(EventLoopTimerRef inTimer, EventLoopIdleTimerMessage inState, void *inUserData);
+typedef EventLoopTimerProcPtr EventLoopTimerUPP;
+typedef EventLoopIdleTimerProcPtr EventLoopIdleTimerUPP;
+extern EventLoopTimerUPP
+NewEventLoopTimerUPP(EventLoopTimerProcPtr userRoutine) ;
+extern EventLoopIdleTimerUPP
+NewEventLoopIdleTimerUPP(EventLoopIdleTimerProcPtr userRoutine) ;
+extern void
+DisposeEventLoopTimerUPP(EventLoopTimerUPP userUPP) ;
+extern void
+DisposeEventLoopIdleTimerUPP(EventLoopIdleTimerUPP userUPP) ;
+extern void
+InvokeEventLoopTimerUPP(
+  EventLoopTimerRef inTimer,
+  void * inUserData,
+  EventLoopTimerUPP userUPP) ;
+extern void
+InvokeEventLoopIdleTimerUPP(
+  EventLoopTimerRef inTimer,
+  EventLoopIdleTimerMessage inState,
+  void * inUserData,
+  EventLoopIdleTimerUPP userUPP) ;
+extern OSStatus
+InstallEventLoopTimer(
+  EventLoopRef inEventLoop,
+  EventTimerInterval inFireDelay,
+  EventTimerInterval inInterval,
+  EventLoopTimerUPP inTimerProc,
+  void * inTimerData,
+  EventLoopTimerRef * outTimer) ;
+extern OSStatus
+InstallEventLoopIdleTimer(
+  EventLoopRef inEventLoop,
+  EventTimerInterval inDelay,
+  EventTimerInterval inInterval,
+  EventLoopIdleTimerUPP inTimerProc,
+  void * inTimerData,
+  EventLoopTimerRef * outTimer) ;
+extern OSStatus
+InstallIdleTimer(
+  EventLoopRef inEventLoop,
+  EventTimerInterval inDelay,
+  EventTimerInterval inInterval,
+  EventLoopTimerUPP inTimerProc,
+  void * inTimerData,
+  EventLoopTimerRef * outTimer) ;
+extern OSStatus
+RemoveEventLoopTimer(EventLoopTimerRef inTimer) ;
+extern OSStatus
+SetEventLoopTimerNextFireTime(
+  EventLoopTimerRef inTimer,
+  EventTimerInterval inNextFire) ;
+typedef struct OpaqueEventHandlerRef* EventHandlerRef;
+typedef struct OpaqueEventHandlerCallRef* EventHandlerCallRef;
+typedef OSStatus ( * EventHandlerProcPtr)(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void *inUserData);
+typedef EventHandlerProcPtr EventHandlerUPP;
+extern EventHandlerUPP
+NewEventHandlerUPP(EventHandlerProcPtr userRoutine) ;
+extern void
+DisposeEventHandlerUPP(EventHandlerUPP userUPP) ;
+extern OSStatus
+InvokeEventHandlerUPP(
+  EventHandlerCallRef inHandlerCallRef,
+  EventRef inEvent,
+  void * inUserData,
+  EventHandlerUPP userUPP) ;
+
+typedef struct OpaqueEventTargetRef* EventTargetRef;
+extern OSStatus
+InstallEventHandler(
+  EventTargetRef inTarget,
+  EventHandlerUPP inHandler,
+  UInt32 inNumTypes,
+  const EventTypeSpec * inList,
+  void * inUserData,
+  EventHandlerRef * outRef) ;
+extern OSStatus
+InstallStandardEventHandler(EventTargetRef inTarget) ;
+extern OSStatus
+RemoveEventHandler(EventHandlerRef inHandlerRef) ;
+extern OSStatus
+AddEventTypesToHandler(
+  EventHandlerRef inHandlerRef,
+  UInt32 inNumTypes,
+  const EventTypeSpec * inList) ;
+extern OSStatus
+RemoveEventTypesFromHandler(
+  EventHandlerRef inHandlerRef,
+  UInt32 inNumTypes,
+  const EventTypeSpec * inList) ;
+extern OSStatus
+CallNextEventHandler(
+  EventHandlerCallRef inCallRef,
+  EventRef inEvent) ;
+enum {
+
+
+
+
+
+
+
+  kEventTargetDontPropagate = (1 << 0),
+  kEventTargetSendToAllHandlers = (1 << 1)
+};
+extern OSStatus
+SendEventToEventTarget(
+  EventRef inEvent,
+  EventTargetRef inTarget) ;
+extern OSStatus
+SendEventToEventTargetWithOptions(
+  EventRef inEvent,
+  EventTargetRef inTarget,
+  OptionBits inOptions) ;
+
+
+
+
+
+
+}
+extern "C" {
+typedef struct OpaqueHIObjectClassRef* HIObjectClassRef;
+typedef struct OpaqueHIObjectRef* HIObjectRef;
+
+
+
+
+
+enum {
+
+
+
+
+  hiObjectClassExistsErr = -22080,
+
+
+
+
+
+  hiObjectClassHasInstancesErr = -22081,
+  hiObjectClassHasSubclassesErr = -22082,
+
+
+
+
+
+
+  hiObjectClassIsAbstractErr = -22083
+};
+enum {
+
+
+
+
+  kEventClassHIObject = 'hiob',
+  kEventHIObjectConstruct = 1,
+  kEventHIObjectInitialize = 2,
+
+
+
+
+
+
+
+  kEventHIObjectDestruct = 3,
+
+
+
+
+
+
+  kEventHIObjectIsEqual = 4,
+
+
+
+
+
+
+  kEventHIObjectPrintDebugInfo = 5
+};
+
+enum {
+  kEventParamHIObjectInstance = 'hioi',
+  typeHIObjectRef = 'hiob'
+};
+extern OSStatus
+HIObjectRegisterSubclass(
+  CFStringRef inClassID,
+  CFStringRef inBaseClassID,
+  OptionBits inOptions,
+  EventHandlerUPP inConstructProc,
+  UInt32 inNumEvents,
+  const EventTypeSpec * inEventList,
+  void * inConstructData,
+  HIObjectClassRef * outClassRef) ;
+extern OSStatus
+HIObjectUnregisterClass(HIObjectClassRef inClassRef) ;
+extern OSStatus
+HIObjectCreate(
+  CFStringRef inClassID,
+  EventRef inConstructData,
+  HIObjectRef * outObject) ;
+extern EventTargetRef
+HIObjectGetEventTarget(HIObjectRef inObject) ;
+extern void
+HIObjectPrintDebugInfo(HIObjectRef inObject) ;
+extern CFStringRef
+HIObjectCopyClassID(HIObjectRef inObject) ;
+extern Boolean
+HIObjectIsOfClass(
+  HIObjectRef inObject,
+  CFStringRef inObjectClassID) ;
+extern void *
+HIObjectDynamicCast(
+  HIObjectRef inObject,
+  CFStringRef inClassID) ;
+extern OSStatus
+HIObjectCreateFromBundle(
+  CFBundleRef inBundle,
+  HIObjectRef * outObject) ;
+extern Boolean
+HIObjectIsAccessibilityIgnored(HIObjectRef inObject) ;
+extern OSStatus
+HIObjectSetAccessibilityIgnored(
+  HIObjectRef inObject,
+  Boolean inIgnored) ;
+extern HIObjectRef
+_HIObjectRetain(HIObjectRef inObject) ;
+extern void
+_HIObjectRelease(HIObjectRef inObject) ;
+extern UInt32
+_HIObjectGetRetainCount(HIObjectRef inObject) ;
+extern Boolean
+_HIObjectIsEqual(
+  HIObjectRef inObject,
+  HIObjectRef inOtherObject) ;
+extern const CFArrayCallBacks kHIObjectCFArrayCallbacks;
+extern const CFDictionaryKeyCallBacks kHIObjectCFDictKeyCallbacks;
+extern const CFDictionaryValueCallBacks kHIObjectCFDictValueCallbacks;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef UInt16 EventKind;
+typedef UInt16 EventMask;
+enum {
+  nullEvent = 0,
+  mouseDown = 1,
+  mouseUp = 2,
+  keyDown = 3,
+  keyUp = 4,
+  autoKey = 5,
+  updateEvt = 6,
+  diskEvt = 7,
+  activateEvt = 8,
+  osEvt = 15,
+  kHighLevelEvent = 23
+};
+
+enum {
+  mDownMask = 1 << mouseDown,
+  mUpMask = 1 << mouseUp,
+  keyDownMask = 1 << keyDown,
+  keyUpMask = 1 << keyUp,
+  autoKeyMask = 1 << autoKey,
+  updateMask = 1 << updateEvt,
+  diskMask = 1 << diskEvt,
+  activMask = 1 << activateEvt,
+  highLevelEventMask = 0x0400,
+  osMask = 1 << osEvt,
+  everyEvent = 0xFFFF
+};
+
+enum {
+  charCodeMask = 0x000000FF,
+  keyCodeMask = 0x0000FF00,
+  adbAddrMask = 0x00FF0000,
+  osEvtMessageMask = (unsigned long)0xFF000000
+};
+
+enum {
+
+  mouseMovedMessage = 0x00FA,
+  suspendResumeMessage = 0x0001
+};
+
+enum {
+  resumeFlag = 1
+};
+typedef UInt16 EventModifiers;
+enum {
+
+  activeFlagBit = 0,
+  btnStateBit = 7,
+  cmdKeyBit = 8,
+  shiftKeyBit = 9,
+  alphaLockBit = 10,
+  optionKeyBit = 11,
+  controlKeyBit = 12,
+  rightShiftKeyBit = 13,
+  rightOptionKeyBit = 14,
+  rightControlKeyBit = 15
+};
+
+enum {
+  activeFlag = 1 << activeFlagBit,
+  btnState = 1 << btnStateBit,
+  cmdKey = 1 << cmdKeyBit,
+  shiftKey = 1 << shiftKeyBit,
+  alphaLock = 1 << alphaLockBit,
+  optionKey = 1 << optionKeyBit,
+  controlKey = 1 << controlKeyBit,
+  rightShiftKey = 1 << rightShiftKeyBit,
+  rightOptionKey = 1 << rightOptionKeyBit,
+  rightControlKey = 1 << rightControlKeyBit
+};
+
+
+enum {
+  kNullCharCode = 0,
+  kHomeCharCode = 1,
+  kEnterCharCode = 3,
+  kEndCharCode = 4,
+  kHelpCharCode = 5,
+  kBellCharCode = 7,
+  kBackspaceCharCode = 8,
+  kTabCharCode = 9,
+  kLineFeedCharCode = 10,
+  kVerticalTabCharCode = 11,
+  kPageUpCharCode = 11,
+  kFormFeedCharCode = 12,
+  kPageDownCharCode = 12,
+  kReturnCharCode = 13,
+  kFunctionKeyCharCode = 16,
+  kCommandCharCode = 17,
+  kCheckCharCode = 18,
+  kDiamondCharCode = 19,
+  kAppleLogoCharCode = 20,
+  kEscapeCharCode = 27,
+  kClearCharCode = 27,
+  kLeftArrowCharCode = 28,
+  kRightArrowCharCode = 29,
+  kUpArrowCharCode = 30,
+  kDownArrowCharCode = 31,
+  kSpaceCharCode = 32,
+  kDeleteCharCode = 127,
+  kBulletCharCode = 165,
+  kNonBreakingSpaceCharCode = 202
+};
+
+
+enum {
+  kShiftUnicode = 0x21E7,
+  kControlUnicode = 0x2303,
+  kOptionUnicode = 0x2325,
+  kCommandUnicode = 0x2318,
+  kPencilUnicode = 0x270E,
+  kCheckUnicode = 0x2713,
+  kDiamondUnicode = 0x25C6,
+  kBulletUnicode = 0x2022,
+  kAppleLogoUnicode = 0xF8FF
+};
+
+struct EventRecord {
+  EventKind what;
+  UInt32 message;
+  UInt32 when;
+  Point where;
+  EventModifiers modifiers;
+};
+typedef struct EventRecord EventRecord;
+typedef void ( * FKEYProcPtr)(void);
+typedef FKEYProcPtr FKEYUPP;
+extern void
+GetMouse(Point * mouseLoc) ;
+extern Boolean
+Button(void) ;
+extern Boolean
+StillDown(void) ;
+extern Boolean
+WaitMouseUp(void) ;
+extern UInt32
+KeyTranslate(
+  const void * transData,
+  UInt16 keycode,
+  UInt32 * state) ;
+extern UInt32
+GetCaretTime(void) ;
+typedef BigEndianLong KeyMap[4];
+
+
+typedef UInt8 KeyMapByteArray[16];
+extern void
+GetKeys(KeyMap theKeys) ;
+
+
+
+enum {
+  networkEvt = 10,
+  driverEvt = 11,
+  app1Evt = 12,
+  app2Evt = 13,
+  app3Evt = 14,
+  app4Evt = 15,
+  networkMask = 0x0400,
+  driverMask = 0x0800,
+  app1Mask = 0x1000,
+  app2Mask = 0x2000,
+  app3Mask = 0x4000,
+  app4Mask = 0x8000
+};
+
+struct EvQEl {
+  QElemPtr qLink;
+  SInt16 qType;
+  EventKind evtQWhat;
+  UInt32 evtQMessage;
+  UInt32 evtQWhen;
+  Point evtQWhere;
+  EventModifiers evtQModifiers;
+};
+typedef struct EvQEl EvQEl;
+typedef EvQEl * EvQElPtr;
+typedef void ( * GetNextEventFilterProcPtr)(EventRecord *theEvent, Boolean *result);
+typedef GetNextEventFilterProcPtr GetNextEventFilterUPP;
+typedef GetNextEventFilterUPP GNEFilterUPP;
+extern UInt32
+GetDblTime(void) ;
+extern void
+SetEventMask(EventMask value) ;
+extern Boolean
+GetNextEvent(
+  EventMask eventMask,
+  EventRecord * theEvent) ;
+extern Boolean
+WaitNextEvent(
+  EventMask eventMask,
+  EventRecord * theEvent,
+  UInt32 sleep,
+  RgnHandle mouseRgn) ;
+extern Boolean
+EventAvail(
+  EventMask eventMask,
+  EventRecord * theEvent) ;
+extern OSErr
+PostEvent(
+  EventKind eventNum,
+  UInt32 eventMsg) ;
+extern void
+FlushEvents(
+  EventMask whichMask,
+  EventMask stopMask) ;
+extern void
+GetGlobalMouse(Point * globalMouse) ;
+extern UInt32
+GetCurrentKeyModifiers(void) ;
+extern Boolean
+CheckEventQueueForUserCancel(void) ;
+extern void
+KeyScript(short code) ;
+extern Boolean
+IsCmdChar(
+  const EventRecord * event,
+  short test) ;
+extern SInt16
+LMGetKeyThresh(void) ;
+extern void
+LMSetKeyThresh(SInt16 value) ;
+extern SInt16
+LMGetKeyRepThresh(void) ;
+extern void
+LMSetKeyRepThresh(SInt16 value) ;
+extern UInt8
+LMGetKbdLast(void) ;
+extern void
+LMSetKbdLast(UInt8 value) ;
+extern UInt8
+LMGetKbdType(void) ;
+extern void
+LMSetKbdType(UInt8 value) ;
+
+
+
+
+
+}
+extern "C" {
+
+
+enum {
+  noMark = 0
+};
+enum {
+
+  kMenuDrawMsg = 0,
+  kMenuSizeMsg = 2,
+  kMenuPopUpMsg = 3,
+  kMenuCalcItemMsg = 5,
+  kMenuThemeSavvyMsg = 7,
+  mDrawMsg = 0,
+  mSizeMsg = 2,
+  mPopUpMsg = 3,
+  mCalcItemMsg = 5
+};
+enum {
+  kThemeSavvyMenuResponse = 0x7473
+};
+
+
+enum {
+  kMenuInitMsg = 8,
+  kMenuDisposeMsg = 9,
+  kMenuFindItemMsg = 10,
+  kMenuHiliteItemMsg = 11,
+  kMenuDrawItemsMsg = 12
+};
+
+enum {
+  textMenuProc = 0,
+  hMenuCmd = 27,
+  hierMenu = -1,
+  kInsertHierarchicalMenu = -1,
+  mctAllItems = -98,
+  mctLastIDIndic = -99
+};
+
+
+enum {
+  kMenuStdMenuProc = 63,
+  kMenuStdMenuBarProc = 63
+};
+
+
+enum {
+  kMenuNoModifiers = 0,
+  kMenuShiftModifier = (1 << 0),
+  kMenuOptionModifier = (1 << 1),
+  kMenuControlModifier = (1 << 2),
+  kMenuNoCommandModifier = (1 << 3)
+};
+
+
+enum {
+  kMenuNoIcon = 0,
+  kMenuIconType = 1,
+  kMenuShrinkIconType = 2,
+  kMenuSmallIconType = 3,
+  kMenuColorIconType = 4,
+  kMenuIconSuiteType = 5,
+  kMenuIconRefType = 6,
+  kMenuCGImageRefType = 7,
+  kMenuSystemIconSelectorType = 8,
+  kMenuIconResourceType = 9
+};
+
+
+enum {
+  kMenuNullGlyph = 0x00,
+  kMenuTabRightGlyph = 0x02,
+  kMenuTabLeftGlyph = 0x03,
+  kMenuEnterGlyph = 0x04,
+  kMenuShiftGlyph = 0x05,
+  kMenuControlGlyph = 0x06,
+  kMenuOptionGlyph = 0x07,
+  kMenuSpaceGlyph = 0x09,
+  kMenuDeleteRightGlyph = 0x0A,
+  kMenuReturnGlyph = 0x0B,
+  kMenuReturnR2LGlyph = 0x0C,
+  kMenuNonmarkingReturnGlyph = 0x0D,
+  kMenuPencilGlyph = 0x0F,
+  kMenuDownwardArrowDashedGlyph = 0x10,
+  kMenuCommandGlyph = 0x11,
+  kMenuCheckmarkGlyph = 0x12,
+  kMenuDiamondGlyph = 0x13,
+  kMenuAppleLogoFilledGlyph = 0x14,
+  kMenuParagraphKoreanGlyph = 0x15,
+  kMenuDeleteLeftGlyph = 0x17,
+  kMenuLeftArrowDashedGlyph = 0x18,
+  kMenuUpArrowDashedGlyph = 0x19,
+  kMenuRightArrowDashedGlyph = 0x1A,
+  kMenuEscapeGlyph = 0x1B,
+  kMenuClearGlyph = 0x1C,
+  kMenuLeftDoubleQuotesJapaneseGlyph = 0x1D,
+  kMenuRightDoubleQuotesJapaneseGlyph = 0x1E,
+  kMenuTrademarkJapaneseGlyph = 0x1F,
+  kMenuBlankGlyph = 0x61,
+  kMenuPageUpGlyph = 0x62,
+  kMenuCapsLockGlyph = 0x63,
+  kMenuLeftArrowGlyph = 0x64,
+  kMenuRightArrowGlyph = 0x65,
+  kMenuNorthwestArrowGlyph = 0x66,
+  kMenuHelpGlyph = 0x67,
+  kMenuUpArrowGlyph = 0x68,
+  kMenuSoutheastArrowGlyph = 0x69,
+  kMenuDownArrowGlyph = 0x6A,
+  kMenuPageDownGlyph = 0x6B,
+  kMenuAppleLogoOutlineGlyph = 0x6C,
+  kMenuContextualMenuGlyph = 0x6D,
+  kMenuPowerGlyph = 0x6E,
+  kMenuF1Glyph = 0x6F,
+  kMenuF2Glyph = 0x70,
+  kMenuF3Glyph = 0x71,
+  kMenuF4Glyph = 0x72,
+  kMenuF5Glyph = 0x73,
+  kMenuF6Glyph = 0x74,
+  kMenuF7Glyph = 0x75,
+  kMenuF8Glyph = 0x76,
+  kMenuF9Glyph = 0x77,
+  kMenuF10Glyph = 0x78,
+  kMenuF11Glyph = 0x79,
+  kMenuF12Glyph = 0x7A,
+  kMenuF13Glyph = 0x87,
+  kMenuF14Glyph = 0x88,
+  kMenuF15Glyph = 0x89,
+  kMenuControlISOGlyph = 0x8A,
+  kMenuEjectGlyph = 0x8C
+};
+typedef UInt32 MenuAttributes;
+enum {
+
+
+
+
+
+  kMenuAttrExcludesMarkColumn = (1 << 0),
+
+
+
+
+
+  kMenuAttrAutoDisable = (1 << 2),
+
+
+
+
+
+
+
+  kMenuAttrUsePencilGlyph = (1 << 3),
+  kMenuAttrHidden = (1 << 4)
+};
+typedef UInt32 MenuItemAttributes;
+enum {
+
+
+
+
+  kMenuItemAttrDisabled = (1 << 0),
+
+
+
+
+  kMenuItemAttrIconDisabled = (1 << 1),
+
+
+
+
+  kMenuItemAttrSubmenuParentChoosable = (1 << 2),
+
+
+
+
+  kMenuItemAttrDynamic = (1 << 3),
+
+
+
+
+
+  kMenuItemAttrNotPreviousAlternate = (1 << 4),
+
+
+
+
+
+
+  kMenuItemAttrHidden = (1 << 5),
+
+
+
+
+  kMenuItemAttrSeparator = (1 << 6),
+
+
+
+
+
+  kMenuItemAttrSectionHeader = (1 << 7),
+
+
+
+
+
+  kMenuItemAttrIgnoreMeta = (1 << 8),
+
+
+
+
+
+  kMenuItemAttrAutoRepeat = (1 << 9),
+
+
+
+
+
+
+  kMenuItemAttrUseVirtualKey = (1 << 10),
+
+
+
+
+
+
+
+  kMenuItemAttrCustomDraw = (1 << 11),
+  kMenuItemAttrIncludeInCmdKeyMatching = (1 << 12)
+};
+typedef UInt32 MenuTrackingMode;
+enum {
+
+
+
+
+  kMenuTrackingModeMouse = 1,
+
+
+
+
+  kMenuTrackingModeKeyboard = 2
+};
+typedef UInt32 MenuEventOptions;
+enum {
+
+
+
+
+  kMenuEventIncludeDisabledItems = 0x0001,
+
+
+
+
+  kMenuEventQueryOnly = 0x0002,
+
+
+
+
+  kMenuEventDontCheckSubmenus = 0x0004
+};
+
+
+
+
+typedef SInt16 MenuID;
+typedef UInt16 MenuItemIndex;
+typedef UInt32 MenuCommand;
+typedef struct OpaqueMenuRef* MenuRef;
+
+typedef MenuRef MenuHandle;
+typedef Handle MenuBarHandle;
+struct MenuBarHeader {
+
+
+
+
+
+  UInt16 lastMenu;
+
+
+
+
+
+  SInt16 lastRight;
+
+
+
+
+
+  SInt16 mbResID;
+};
+typedef struct MenuBarHeader MenuBarHeader;
+struct HMenuBarHeader {
+
+
+
+
+
+  UInt16 lastHMenu;
+
+
+
+
+
+  PixMapHandle menuTitleBits;
+};
+typedef struct HMenuBarHeader HMenuBarHeader;
+struct MenuBarMenu {
+
+
+
+
+  MenuRef menu;
+
+
+
+
+
+  SInt16 menuLeft;
+};
+typedef struct MenuBarMenu MenuBarMenu;
+struct HMenuBarMenu {
+
+
+
+
+  MenuRef menu;
+
+
+
+
+  SInt16 reserved;
+};
+typedef struct HMenuBarMenu HMenuBarMenu;
+struct MCEntry {
+  MenuID mctID;
+  short mctItem;
+  RGBColor mctRGB1;
+  RGBColor mctRGB2;
+  RGBColor mctRGB3;
+  RGBColor mctRGB4;
+  short mctReserved;
+};
+typedef struct MCEntry MCEntry;
+typedef MCEntry * MCEntryPtr;
+typedef MCEntry MCTable[1];
+typedef MCEntry * MCTablePtr;
+typedef MCTablePtr * MCTableHandle;
+struct MenuCRsrc {
+  short numEntries;
+  MCTable mcEntryRecs;
+};
+typedef struct MenuCRsrc MenuCRsrc;
+typedef MenuCRsrc * MenuCRsrcPtr;
+typedef MenuCRsrcPtr * MenuCRsrcHandle;
+struct MenuTrackingData {
+  MenuRef menu;
+  MenuItemIndex itemSelected;
+  MenuItemIndex itemUnderMouse;
+  Rect itemRect;
+  SInt32 virtualMenuTop;
+  SInt32 virtualMenuBottom;
+};
+typedef struct MenuTrackingData MenuTrackingData;
+typedef MenuTrackingData * MenuTrackingDataPtr;
+struct MDEFHiliteItemData {
+
+
+
+
+
+  MenuItemIndex previousItem;
+
+
+
+
+
+  MenuItemIndex newItem;
+
+
+
+
+
+  void * context;
+};
+typedef struct MDEFHiliteItemData MDEFHiliteItemData;
+typedef MDEFHiliteItemData * MDEFHiliteItemDataPtr;
+typedef MDEFHiliteItemData HiliteMenuItemData;
+typedef MDEFHiliteItemDataPtr HiliteMenuItemDataPtr;
+struct MDEFDrawData {
+
+
+
+
+
+
+  MenuTrackingData trackingData;
+
+
+
+
+
+  void * context;
+};
+typedef struct MDEFDrawData MDEFDrawData;
+typedef MDEFDrawData * MDEFDrawDataPtr;
+struct MDEFFindItemData {
+
+
+
+
+
+
+  MenuTrackingData trackingData;
+
+
+
+
+
+
+  void * context;
+};
+typedef struct MDEFFindItemData MDEFFindItemData;
+typedef MDEFFindItemData * MDEFFindItemDataPtr;
+struct MDEFDrawItemsData {
+
+
+
+
+  MenuItemIndex firstItem;
+
+
+
+
+  MenuItemIndex lastItem;
+
+
+
+
+
+
+  MenuTrackingData * trackingData;
+
+
+
+
+
+  void * context;
+};
+typedef struct MDEFDrawItemsData MDEFDrawItemsData;
+typedef MDEFDrawItemsData * MDEFDrawItemsDataPtr;
+enum {
+  kMenuItemDataText = (1 << 0),
+
+
+
+
+
+  kMenuItemDataMark = (1 << 1),
+
+
+
+
+
+  kMenuItemDataCmdKey = (1 << 2),
+
+
+
+
+
+  kMenuItemDataCmdKeyGlyph = (1 << 3),
+
+
+
+
+
+  kMenuItemDataCmdKeyModifiers = (1 << 4),
+
+
+
+
+
+  kMenuItemDataStyle = (1 << 5),
+
+
+
+
+
+
+  kMenuItemDataEnabled = (1 << 6),
+
+
+
+
+
+  kMenuItemDataIconEnabled = (1 << 7),
+
+
+
+
+
+  kMenuItemDataIconID = (1 << 8),
+  kMenuItemDataIconHandle = (1 << 9),
+
+
+
+
+
+  kMenuItemDataCommandID = (1 << 10),
+
+
+
+
+
+  kMenuItemDataTextEncoding = (1 << 11),
+  kMenuItemDataSubmenuID = (1 << 12),
+  kMenuItemDataSubmenuHandle = (1 << 13),
+  kMenuItemDataFontID = (1 << 14),
+  kMenuItemDataRefcon = (1 << 15),
+  kMenuItemDataAttributes = (1 << 16),
+  kMenuItemDataCFString = (1 << 17),
+  kMenuItemDataProperties = (1 << 18),
+
+
+
+
+
+  kMenuItemDataIndent = (1 << 19),
+
+
+
+
+
+
+
+  kMenuItemDataCmdVirtualKey = (1 << 20),
+  kMenuItemDataAllDataVersionOne = 0x000FFFFF,
+  kMenuItemDataAllDataVersionTwo = kMenuItemDataAllDataVersionOne | kMenuItemDataCmdVirtualKey
+};
+
+enum {
+  kMenuItemDataAllData = kMenuItemDataAllDataVersionTwo
+};
+
+typedef UInt64 MenuItemDataFlags;
+struct MenuItemDataRec {
+  MenuItemDataFlags whichData;
+  StringPtr text;
+  UniChar mark;
+  UniChar cmdKey;
+  UInt32 cmdKeyGlyph;
+  UInt32 cmdKeyModifiers;
+  Style style;
+  Boolean enabled;
+  Boolean iconEnabled;
+  UInt8 filler1;
+  SInt32 iconID;
+  UInt32 iconType;
+  Handle iconHandle;
+  MenuCommand cmdID;
+  TextEncoding encoding;
+  MenuID submenuID;
+  MenuRef submenuHandle;
+  SInt32 fontID;
+  UInt32 refcon;
+  OptionBits attr;
+  CFStringRef cfText;
+  Collection properties;
+  UInt32 indent;
+  UInt16 cmdVirtualKey;
+};
+typedef struct MenuItemDataRec MenuItemDataRec;
+typedef MenuItemDataRec * MenuItemDataPtr;
+typedef UInt32 MenuItemID;
+
+
+
+
+
+
+typedef void ( * MenuDefProcPtr)(short message, MenuRef theMenu, Rect *menuRect, Point hitPt, short *whichItem);
+typedef MenuDefProcPtr MenuDefUPP;
+extern MenuDefUPP
+NewMenuDefUPP(MenuDefProcPtr userRoutine) ;
+extern void
+DisposeMenuDefUPP(MenuDefUPP userUPP) ;
+extern void
+InvokeMenuDefUPP(
+  short message,
+  MenuRef theMenu,
+  Rect * menuRect,
+  Point hitPt,
+  short * whichItem,
+  MenuDefUPP userUPP) ;
+
+typedef long ( * MenuBarDefProcPtr)(short selector, short message, short parameter1, long parameter2);
+typedef void ( * MenuHookProcPtr)(void);
+typedef short ( * MBarHookProcPtr)(Rect * menuRect);
+typedef MenuBarDefProcPtr MenuBarDefUPP;
+typedef MenuHookProcPtr MenuHookUPP;
+typedef MBarHookProcPtr MBarHookUPP;
+enum {
+  kMenuDefProcPtr = 0
+};
+
+typedef UInt32 MenuDefType;
+enum {
+  kMenuDefObjectClass = 1
+};
+
+typedef struct OpaqueMenuLayoutRef* MenuLayoutRef;
+struct MenuDefSpec {
+  MenuDefType defType;
+  union {
+    MenuDefUPP defProc;
+  } u;
+};
+typedef struct MenuDefSpec MenuDefSpec;
+typedef MenuDefSpec * MenuDefSpecPtr;
+extern MenuRef
+NewMenu(
+  MenuID menuID,
+  ConstStr255Param menuTitle) ;
+extern MenuRef
+GetMenu(short resourceID) ;
+extern void
+DisposeMenu(MenuRef theMenu) ;
+extern void
+CalcMenuSize(MenuRef theMenu) ;
+extern UInt16
+CountMenuItems(MenuRef theMenu) ;
+extern OSStatus
+GetMenuFont(
+  MenuRef menu,
+  SInt16 * outFontID,
+  UInt16 * outFontSize) ;
+extern OSStatus
+SetMenuFont(
+  MenuRef menu,
+  SInt16 inFontID,
+  UInt16 inFontSize) ;
+extern Boolean
+GetMenuExcludesMarkColumn(MenuRef menu) ;
+extern OSStatus
+SetMenuExcludesMarkColumn(
+  MenuRef menu,
+  Boolean excludesMark) ;
+extern OSStatus
+RegisterMenuDefinition(
+  SInt16 inResID,
+  MenuDefSpecPtr inDefSpec) ;
+extern OSStatus
+CreateNewMenu(
+  MenuID inMenuID,
+  MenuAttributes inMenuAttributes,
+  MenuRef * outMenuRef) ;
+extern OSStatus
+CreateCustomMenu(
+  const MenuDefSpec * inDefSpec,
+  MenuID inMenuID,
+  MenuAttributes inMenuAttributes,
+  MenuRef * outMenuRef) ;
+extern Boolean
+IsValidMenu(MenuRef inMenu) ;
+extern ItemCount
+GetMenuRetainCount(MenuRef inMenu) ;
+extern OSStatus
+RetainMenu(MenuRef inMenu) ;
+extern OSStatus
+ReleaseMenu(MenuRef inMenu) ;
+extern OSStatus
+DuplicateMenu(
+  MenuRef inSourceMenu,
+  MenuRef * outMenu) ;
+extern OSStatus
+CopyMenuTitleAsCFString(
+  MenuRef inMenu,
+  CFStringRef * outString) ;
+extern OSStatus
+SetMenuTitleWithCFString(
+  MenuRef inMenu,
+  CFStringRef inString) ;
+extern OSStatus
+SetMenuTitleIcon(
+  MenuRef inMenu,
+  UInt32 inType,
+  void * inIcon) ;
+extern OSStatus
+GetMenuTitleIcon(
+  MenuRef inMenu,
+  UInt32 * outType,
+  void ** outIcon) ;
+extern OSStatus
+InvalidateMenuSize(MenuRef inMenu) ;
+extern Boolean
+IsMenuSizeInvalid(MenuRef inMenu) ;
+extern OSStatus
+EraseMenuBackground(
+  MenuRef inMenu,
+  const Rect * inEraseRect,
+  CGContextRef inContext) ;
+extern OSStatus
+ScrollMenuImage(
+  MenuRef inMenu,
+  const Rect * inScrollRect,
+  int inHScroll,
+  int inVScroll,
+  CGContextRef inContext) ;
+extern void
+AppendMenu(
+  MenuRef menu,
+  ConstStr255Param data) ;
+extern void
+InsertResMenu(
+  MenuRef theMenu,
+  ResType theType,
+  short afterItem) ;
+extern void
+AppendResMenu(
+  MenuRef theMenu,
+  ResType theType) ;
+extern void
+InsertMenuItem(
+  MenuRef theMenu,
+  ConstStr255Param itemString,
+  short afterItem) ;
+extern void
+DeleteMenuItem(
+  MenuRef theMenu,
+  short item) ;
+extern void
+InsertFontResMenu(
+  MenuRef theMenu,
+  short afterItem,
+  short scriptFilter) ;
+extern void
+InsertIntlResMenu(
+  MenuRef theMenu,
+  ResType theType,
+  short afterItem,
+  short scriptFilter) ;
+extern OSStatus
+AppendMenuItemText(
+  MenuRef menu,
+  ConstStr255Param inString) ;
+extern OSStatus
+InsertMenuItemText(
+  MenuRef menu,
+  ConstStr255Param inString,
+  MenuItemIndex afterItem) ;
+extern OSStatus
+CopyMenuItems(
+  MenuRef inSourceMenu,
+  MenuItemIndex inFirstItem,
+  ItemCount inNumItems,
+  MenuRef inDestMenu,
+  MenuItemIndex inInsertAfter) ;
+extern OSStatus
+DeleteMenuItems(
+  MenuRef inMenu,
+  MenuItemIndex inFirstItem,
+  ItemCount inNumItems) ;
+extern OSStatus
+AppendMenuItemTextWithCFString(
+  MenuRef inMenu,
+  CFStringRef inString,
+  MenuItemAttributes inAttributes,
+  MenuCommand inCommandID,
+  MenuItemIndex * outNewItem) ;
+extern OSStatus
+InsertMenuItemTextWithCFString(
+  MenuRef inMenu,
+  CFStringRef inString,
+  MenuItemIndex inAfterItem,
+  MenuItemAttributes inAttributes,
+  MenuCommand inCommandID) ;
+extern long
+MenuKey(CharParameter ch) ;
+extern long
+MenuSelect(Point startPt) ;
+extern long
+PopUpMenuSelect(
+  MenuRef menu,
+  short top,
+  short left,
+  short popUpItem) ;
+extern long
+MenuChoice(void) ;
+extern UInt32
+MenuEvent(const EventRecord * inEvent) ;
+extern Boolean
+IsMenuKeyEvent(
+  MenuRef inStartMenu,
+  EventRef inEvent,
+  MenuEventOptions inOptions,
+  MenuRef * outMenu,
+  MenuItemIndex * outMenuItem) ;
+extern OSStatus
+InvalidateMenuEnabling(MenuRef inMenu) ;
+extern short
+GetMBarHeight(void) ;
+extern void
+DrawMenuBar(void) ;
+extern void
+InvalMenuBar(void) ;
+extern Boolean
+IsMenuBarInvalid(MenuRef rootMenu) ;
+extern void
+HiliteMenu(MenuID menuID) ;
+extern MenuBarHandle
+GetNewMBar(short menuBarID) ;
+extern MenuBarHandle
+GetMenuBar(void) ;
+extern void
+SetMenuBar(MenuBarHandle mbar) ;
+extern OSStatus
+DuplicateMenuBar(
+  MenuBarHandle inMbar,
+  MenuBarHandle * outMbar) ;
+extern OSStatus
+DisposeMenuBar(MenuBarHandle inMbar) ;
+extern MenuRef
+GetMenuHandle(MenuID menuID) ;
+extern void
+InsertMenu(
+  MenuRef theMenu,
+  MenuID beforeID) ;
+extern void
+DeleteMenu(MenuID menuID) ;
+extern void
+ClearMenuBar(void) ;
+extern void
+SetMenuFlashCount(short count) ;
+extern void
+FlashMenuBar(MenuID menuID) ;
+extern Boolean
+IsMenuBarVisible(void) ;
+extern void
+ShowMenuBar(void) ;
+extern void
+HideMenuBar(void) ;
+extern MenuRef
+AcquireRootMenu(void) ;
+extern OSStatus
+SetRootMenu(MenuRef inMenu) ;
+extern void
+CheckMenuItem(
+  MenuRef theMenu,
+  short item,
+  Boolean checked) ;
+extern void
+SetMenuItemText(
+  MenuRef theMenu,
+  short item,
+  ConstStr255Param itemString) ;
+extern void
+GetMenuItemText(
+  MenuRef theMenu,
+  short item,
+  Str255 itemString) ;
+extern void
+SetItemMark(
+  MenuRef theMenu,
+  short item,
+  CharParameter markChar) ;
+extern void
+GetItemMark(
+  MenuRef theMenu,
+  short item,
+  CharParameter * markChar) ;
+extern void
+SetItemCmd(
+  MenuRef theMenu,
+  short item,
+  CharParameter cmdChar) ;
+extern void
+GetItemCmd(
+  MenuRef theMenu,
+  short item,
+  CharParameter * cmdChar) ;
+extern void
+SetItemIcon(
+  MenuRef theMenu,
+  short item,
+  short iconIndex) ;
+extern void
+GetItemIcon(
+  MenuRef theMenu,
+  short item,
+  short * iconIndex) ;
+extern void
+SetItemStyle(
+  MenuRef theMenu,
+  short item,
+  StyleParameter chStyle) ;
+extern void
+GetItemStyle(
+  MenuRef theMenu,
+  short item,
+  Style * chStyle) ;
+extern OSErr
+SetMenuItemCommandID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  MenuCommand inCommandID) ;
+extern OSErr
+GetMenuItemCommandID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  MenuCommand * outCommandID) ;
+extern OSErr
+SetMenuItemModifiers(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt8 inModifiers) ;
+extern OSErr
+GetMenuItemModifiers(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt8 * outModifiers) ;
+extern OSErr
+SetMenuItemIconHandle(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt8 inIconType,
+  Handle inIconHandle) ;
+extern OSErr
+GetMenuItemIconHandle(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt8 * outIconType,
+  Handle * outIconHandle) ;
+extern OSErr
+SetMenuItemTextEncoding(
+  MenuRef inMenu,
+  SInt16 inItem,
+  TextEncoding inScriptID) ;
+extern OSErr
+GetMenuItemTextEncoding(
+  MenuRef inMenu,
+  SInt16 inItem,
+  TextEncoding * outScriptID) ;
+extern OSErr
+SetMenuItemHierarchicalID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  MenuID inHierID) ;
+extern OSErr
+GetMenuItemHierarchicalID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  MenuID * outHierID) ;
+extern OSErr
+SetMenuItemFontID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  SInt16 inFontID) ;
+extern OSErr
+GetMenuItemFontID(
+  MenuRef inMenu,
+  SInt16 inItem,
+  SInt16 * outFontID) ;
+extern OSErr
+SetMenuItemRefCon(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt32 inRefCon) ;
+extern OSErr
+GetMenuItemRefCon(
+  MenuRef inMenu,
+  SInt16 inItem,
+  UInt32 * outRefCon) ;
+extern OSErr
+SetMenuItemKeyGlyph(
+  MenuRef inMenu,
+  SInt16 inItem,
+  SInt16 inGlyph) ;
+extern OSErr
+GetMenuItemKeyGlyph(
+  MenuRef inMenu,
+  SInt16 inItem,
+  SInt16 * outGlyph) ;
+extern void
+EnableMenuItem(
+  MenuRef theMenu,
+  MenuItemIndex item) ;
+extern void
+DisableMenuItem(
+  MenuRef theMenu,
+  MenuItemIndex item) ;
+extern Boolean
+IsMenuItemEnabled(
+  MenuRef menu,
+  MenuItemIndex item) ;
+extern void
+EnableMenuItemIcon(
+  MenuRef theMenu,
+  MenuItemIndex item) ;
+extern void
+DisableMenuItemIcon(
+  MenuRef theMenu,
+  MenuItemIndex item) ;
+extern Boolean
+IsMenuItemIconEnabled(
+  MenuRef menu,
+  MenuItemIndex item) ;
+extern OSStatus
+SetMenuItemHierarchicalMenu(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  MenuRef inHierMenu) ;
+extern OSStatus
+GetMenuItemHierarchicalMenu(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  MenuRef * outHierMenu) ;
+extern OSStatus
+CopyMenuItemTextAsCFString(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  CFStringRef * outString) ;
+extern OSStatus
+SetMenuItemTextWithCFString(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  CFStringRef inString) ;
+extern OSStatus
+GetMenuItemIndent(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  UInt32 * outIndent) ;
+extern OSStatus
+SetMenuItemIndent(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  UInt32 inIndent) ;
+extern OSStatus
+GetMenuItemCommandKey(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  Boolean inGetVirtualKey,
+  UInt16 * outKey) ;
+extern OSStatus
+SetMenuItemCommandKey(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  Boolean inSetVirtualKey,
+  UInt16 inKey) ;
+extern void
+DeleteMCEntries(
+  MenuID menuID,
+  short menuItem) ;
+extern MCTableHandle
+GetMCInfo(void) ;
+extern void
+SetMCInfo(MCTableHandle menuCTbl) ;
+extern void
+DisposeMCInfo(MCTableHandle menuCTbl) ;
+extern MCEntryPtr
+GetMCEntry(
+  MenuID menuID,
+  short menuItem) ;
+extern void
+SetMCEntries(
+  short numEntries,
+  MCTablePtr menuCEntries) ;
+enum {
+  kMenuPropertyPersistent = 0x00000001
+};
+extern OSStatus
+GetMenuItemProperty(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 bufferSize,
+  UInt32 * actualSize,
+  void * propertyBuffer) ;
+extern OSStatus
+GetMenuItemPropertySize(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 * size) ;
+extern OSStatus
+SetMenuItemProperty(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 propertySize,
+  const void * propertyData) ;
+extern OSStatus
+RemoveMenuItemProperty(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag) ;
+extern OSStatus
+GetMenuItemPropertyAttributes(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 * attributes) ;
+extern OSStatus
+ChangeMenuItemPropertyAttributes(
+  MenuRef menu,
+  MenuItemIndex item,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 attributesToSet,
+  UInt32 attributesToClear) ;
+extern OSStatus
+GetMenuAttributes(
+  MenuRef menu,
+  MenuAttributes * outAttributes) ;
+extern OSStatus
+ChangeMenuAttributes(
+  MenuRef menu,
+  MenuAttributes setTheseAttributes,
+  MenuAttributes clearTheseAttributes) ;
+extern OSStatus
+GetMenuItemAttributes(
+  MenuRef menu,
+  MenuItemIndex item,
+  MenuItemAttributes * outAttributes) ;
+extern OSStatus
+ChangeMenuItemAttributes(
+  MenuRef menu,
+  MenuItemIndex item,
+  MenuItemAttributes setTheseAttributes,
+  MenuItemAttributes clearTheseAttributes) ;
+extern void
+DisableAllMenuItems(MenuRef theMenu) ;
+extern void
+EnableAllMenuItems(MenuRef theMenu) ;
+extern Boolean
+MenuHasEnabledItems(MenuRef theMenu) ;
+extern OSStatus
+GetMenuTrackingData(
+  MenuRef theMenu,
+  MenuTrackingData * outData) ;
+extern OSStatus
+GetMenuType(
+  MenuRef theMenu,
+  UInt16 * outType) ;
+extern ItemCount
+CountMenuItemsWithCommandID(
+  MenuRef inMenu,
+  MenuCommand inCommandID) ;
+extern OSStatus
+GetIndMenuItemWithCommandID(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  UInt32 inItemIndex,
+  MenuRef * outMenu,
+  MenuItemIndex * outIndex) ;
+extern void
+EnableMenuCommand(
+  MenuRef inMenu,
+  MenuCommand inCommandID) ;
+extern void
+DisableMenuCommand(
+  MenuRef inMenu,
+  MenuCommand inCommandID) ;
+extern Boolean
+IsMenuCommandEnabled(
+  MenuRef inMenu,
+  MenuCommand inCommandID) ;
+extern OSStatus
+SetMenuCommandMark(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  UniChar inMark) ;
+extern OSStatus
+GetMenuCommandMark(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  UniChar * outMark) ;
+extern OSStatus
+GetMenuCommandProperty(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  OSType inPropertyCreator,
+  OSType inPropertyTag,
+  ByteCount inBufferSize,
+  ByteCount * outActualSize,
+  void * inPropertyBuffer) ;
+extern OSStatus
+GetMenuCommandPropertySize(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  OSType inPropertyCreator,
+  OSType inPropertyTag,
+  ByteCount * outSize) ;
+extern OSStatus
+SetMenuCommandProperty(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  OSType inPropertyCreator,
+  OSType inPropertyTag,
+  ByteCount inPropertySize,
+  const void * inPropertyData) ;
+extern OSStatus
+RemoveMenuCommandProperty(
+  MenuRef inMenu,
+  MenuCommand inCommandID,
+  OSType inPropertyCreator,
+  OSType inPropertyTag) ;
+extern OSStatus
+CopyMenuItemData(
+  MenuRef inMenu,
+  MenuItemID inItem,
+  Boolean inIsCommandID,
+  MenuItemDataPtr ioData) ;
+extern OSStatus
+SetMenuItemData(
+  MenuRef inMenu,
+  MenuItemID inItem,
+  Boolean inIsCommandID,
+  const MenuItemDataRec * inData) ;
+extern Boolean
+IsMenuItemInvalid(
+  MenuRef inMenu,
+  MenuItemIndex inItem) ;
+extern OSStatus
+InvalidateMenuItems(
+  MenuRef inMenu,
+  MenuItemIndex inFirstItem,
+  ItemCount inNumItems) ;
+extern OSStatus
+UpdateInvalidMenuItems(MenuRef inMenu) ;
+enum {
+  kHierarchicalFontMenuOption = 0x00000001
+};
+extern OSStatus
+CreateStandardFontMenu(
+  MenuRef menu,
+  MenuItemIndex afterItem,
+  MenuID firstHierMenuID,
+  OptionBits options,
+  ItemCount * outHierMenuCount) ;
+extern OSStatus
+UpdateStandardFontMenu(
+  MenuRef menu,
+  ItemCount * outHierMenuCount) ;
+extern OSStatus
+GetFontFamilyFromMenuSelection(
+  MenuRef menu,
+  MenuItemIndex item,
+  FMFontFamily * outFontFamily,
+  FMFontStyle * outStyle) ;
+enum {
+  gestaltContextualMenuAttr = 'cmnu',
+  gestaltContextualMenuUnusedBit = 0,
+  gestaltContextualMenuTrapAvailable = 1,
+  gestaltContextualMenuHasAttributeAndModifierKeys = 2,
+  gestaltContextualMenuHasUnicodeSupport = 3
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kCMHelpItemNoHelp = 0,
+
+
+
+
+
+
+  kCMHelpItemAppleGuide = 1,
+  kCMHelpItemOtherHelp = 2,
+  kCMHelpItemRemoveHelp = 3
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+  kCMNothingSelected = 0,
+
+
+
+
+
+
+
+  kCMMenuItemSelected = 1,
+
+
+
+
+
+
+
+  kCMShowHelpSelected = 3
+};
+enum {
+  keyContextualMenuName = 'pnam',
+
+
+
+
+
+  keyContextualMenuCommandID = 'cmcd',
+
+
+
+
+
+
+  keyContextualMenuSubmenu = 'cmsb',
+
+
+
+
+
+
+  keyContextualMenuAttributes = 'cmat',
+  keyContextualMenuModifiers = 'cmmd'
+};
+extern OSStatus
+InitContextualMenus(void) ;
+extern Boolean
+IsShowContextualMenuClick(const EventRecord * inEvent) ;
+extern Boolean
+IsShowContextualMenuEvent(EventRef inEvent) ;
+extern OSStatus
+ContextualMenuSelect(
+  MenuRef inMenu,
+  Point inGlobalLocation,
+  Boolean inReserved,
+  UInt32 inHelpType,
+  ConstStr255Param inHelpItemString,
+  const AEDesc * inSelection,
+  UInt32 * outUserSelectionType,
+  SInt16 * outMenuID,
+  MenuItemIndex * outMenuItem) ;
+extern Boolean
+ProcessIsContextualMenuClient(ProcessSerialNumber * inPSN) ;
+struct ContextualMenuInterfaceStruct
+{
+    void *_reserved; SInt32 (*QueryInterface)(void *thisPointer, CFUUIDBytes iid, void ** ppv); UInt32 (*AddRef)(void *thisPointer); UInt32 (*Release)(void *thisPointer);
+    OSStatus ( *ExamineContext )(
+          void* thisInstance,
+          const AEDesc* inContext,
+         AEDescList* outCommandPairs );
+ OSStatus ( *HandleSelection )(
+         void* thisInstance,
+          AEDesc* inContext,
+         SInt32 inCommandID );
+ void ( *PostMenuCleanup )(
+         void* thisInstance );
+};
+typedef struct ContextualMenuInterfaceStruct ContextualMenuInterfaceStruct;
+
+
+
+
+
+
+
+extern OSStatus
+CMPluginExamineContext(
+  void * thisInstance,
+  const AEDesc * inContext,
+  AEDescList * outCommandPairs);
+extern OSStatus
+CMPluginHandleSelection(
+  void * thisInstance,
+  AEDesc * inContext,
+  SInt32 inCommandID);
+extern void
+CMPluginPostMenuCleanup(void * thisInstance);
+extern SInt16
+LMGetTheMenu(void) ;
+extern MenuID
+GetMenuID(MenuRef menu) ;
+extern SInt16
+GetMenuWidth(MenuRef menu) ;
+extern SInt16
+GetMenuHeight(MenuRef menu) ;
+extern StringPtr
+GetMenuTitle(
+  MenuRef menu,
+  Str255 title) ;
+extern OSStatus
+GetMenuDefinition(
+  MenuRef menu,
+  MenuDefSpecPtr outDefSpec) ;
+extern void
+SetMenuID(
+  MenuRef menu,
+  MenuID menuID) ;
+extern void
+SetMenuWidth(
+  MenuRef menu,
+  SInt16 width) ;
+extern void
+SetMenuHeight(
+  MenuRef menu,
+  SInt16 height) ;
+extern OSStatus
+SetMenuTitle(
+  MenuRef menu,
+  ConstStr255Param title) ;
+extern OSStatus
+SetMenuDefinition(
+  MenuRef menu,
+  const MenuDefSpec * defSpec) ;
+
+
+}
+extern "C" {
+
+
+typedef HIObjectRef HIToolbarRef;
+typedef HIObjectRef HIToolbarItemRef;
+enum {
+
+
+
+
+
+
+  kHIToolbarDisplayModeDefault = 0,
+
+
+
+
+
+  kHIToolbarDisplayModeIconAndLabel = 1,
+
+
+
+
+  kHIToolbarDisplayModeIconOnly = 2,
+
+
+
+
+  kHIToolbarDisplayModeLabelOnly = 3
+};
+
+typedef UInt32 HIToolbarDisplayMode;
+
+
+
+
+
+enum {
+
+
+
+
+
+  kHIToolbarDisplaySizeDefault = 0,
+
+
+
+
+  kHIToolbarDisplaySizeNormal = 1,
+
+
+
+
+  kHIToolbarDisplaySizeSmall = 2
+};
+
+typedef UInt32 HIToolbarDisplaySize;
+
+
+
+
+
+enum {
+
+
+
+
+  kHIToolbarNoAttributes = 0,
+  kHIToolbarAutoSavesConfig = (1 << 0),
+
+
+
+
+
+
+  kHIToolbarIsConfigurable = (1 << 1),
+  kHIToolbarValidAttrs = kHIToolbarAutoSavesConfig | kHIToolbarIsConfigurable
+};
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+
+  kHICommandCustomizeToolbar = 'tcfg',
+
+
+
+
+
+
+  kHICommandShowToolbar = 'tbsh',
+
+
+
+
+
+
+  kHICommandHideToolbar = 'tbhd'
+};
+enum {
+
+
+
+
+
+
+  kEventToolbarGetDefaultIdentifiers = 1,
+
+
+
+
+
+
+
+  kEventToolbarGetAllowedIdentifiers = 2,
+
+
+
+
+
+  kEventToolbarCreateItemWithIdentifier = 3,
+
+
+
+
+
+
+
+  kEventToolbarCreateItemFromDrag = 4
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kEventToolbarItemImageChanged = 1,
+
+
+
+
+
+
+  kEventToolbarItemLabelChanged = 2,
+
+
+
+
+
+
+  kEventToolbarItemHelpTextChanged = 3,
+
+
+
+
+
+
+  kEventToolbarItemCommandIDChanged = 4,
+  kEventToolbarItemGetPersistentData = 5,
+
+
+
+
+
+
+
+  kEventToolbarItemCreateCustomView = 6,
+
+
+
+
+
+
+  kEventToolbarItemEnabledStateChanged = 7,
+
+
+
+
+
+
+
+  kEventToolbarItemPerformAction = 8
+};
+
+
+
+
+
+
+enum {
+  kHIToolbarItemNoAttributes = 0,
+  kHIToolbarItemAllowDuplicates = (1 << 0),
+  kHIToolbarItemCantBeRemoved = (1 << 1),
+  kHIToolbarItemAnchoredLeft = (1 << 2),
+  kHIToolbarItemIsSeparator = (1 << 3),
+
+
+
+
+
+
+  kHIToolbarItemSendCmdToUserFocus = (1 << 4),
+  kHIToolbarItemValidAttrs = kHIToolbarItemAllowDuplicates | kHIToolbarItemIsSeparator | kHIToolbarItemCantBeRemoved | kHIToolbarItemAnchoredLeft | kHIToolbarItemSendCmdToUserFocus,
+  kHIToolbarItemMutableAttrs = kHIToolbarItemCantBeRemoved | kHIToolbarItemAnchoredLeft
+};
+extern OSStatus
+HIToolbarCreate(
+  CFStringRef inIdentifier,
+  OptionBits inAttributes,
+  HIToolbarRef * outToolbar) ;
+extern OSStatus
+HIToolbarGetAttributes(
+  HIToolbarRef inToolbar,
+  OptionBits * outAttributes) ;
+extern OSStatus
+HIToolbarChangeAttributes(
+  HIToolbarRef inToolbar,
+  OptionBits inAttrsToSet,
+  OptionBits inAttrsToClear) ;
+extern OSStatus
+HIToolbarGetDisplayMode(
+  HIToolbarRef inToolbar,
+  HIToolbarDisplayMode * outDisplayMode) ;
+extern OSStatus
+HIToolbarSetDisplayMode(
+  HIToolbarRef inToolbar,
+  HIToolbarDisplayMode inDisplayMode) ;
+extern OSStatus
+HIToolbarGetDisplaySize(
+  HIToolbarRef inToolbar,
+  HIToolbarDisplaySize * outSize) ;
+extern OSStatus
+HIToolbarSetDisplaySize(
+  HIToolbarRef inToolbar,
+  HIToolbarDisplaySize inSize) ;
+extern OSStatus
+HIToolbarCopyIdentifier(
+  HIToolbarRef inToolbar,
+  CFStringRef * outIdentifier) ;
+extern OSStatus
+HIToolbarCopyItems(
+  HIToolbarRef inToolbar,
+  CFArrayRef * outItems) ;
+extern OSStatus
+HIToolbarCreateItemWithIdentifier(
+  HIToolbarRef inToolbar,
+  CFStringRef inIdentifier,
+  CFTypeRef inConfigData,
+  HIToolbarItemRef * outItem) ;
+extern OSStatus
+HIToolbarInsertItemAtIndex(
+  HIToolbarRef inToolbar,
+  HIToolbarItemRef inItem,
+  CFIndex inIndex) ;
+extern OSStatus
+HIToolbarAppendItem(
+  HIToolbarRef inToolbar,
+  HIToolbarItemRef inItem) ;
+extern OSStatus
+HIToolbarRemoveItemAtIndex(
+  HIToolbarRef inToolbar,
+  CFIndex inIndex) ;
+extern OSStatus
+HIToolbarSetDelegate(
+  HIToolbarRef inToolbar,
+  HIObjectRef inDelegate) ;
+extern HIObjectRef
+HIToolbarGetDelegate(HIToolbarRef inToolbar) ;
+extern OSStatus
+HIToolbarItemCreate(
+  CFStringRef inIdentifier,
+  OptionBits inOptions,
+  HIToolbarItemRef * outItem) ;
+extern OSStatus
+HIToolbarItemCopyIdentifier(
+  HIToolbarItemRef inItem,
+  CFStringRef * outIdentifier) ;
+extern OSStatus
+HIToolbarItemGetAttributes(
+  HIToolbarItemRef inItem,
+  OptionBits * outAttributes) ;
+extern OSStatus
+HIToolbarItemChangeAttributes(
+  HIToolbarItemRef inItem,
+  OptionBits inAttrsToSet,
+  OptionBits inAttrsToClear) ;
+extern OSStatus
+HIToolbarItemSetLabel(
+  HIToolbarItemRef inItem,
+  CFStringRef inLabel) ;
+extern OSStatus
+HIToolbarItemCopyLabel(
+  HIToolbarItemRef inItem,
+  CFStringRef * outLabel) ;
+extern OSStatus
+HIToolbarItemSetHelpText(
+  HIToolbarItemRef inItem,
+  CFStringRef inShortText,
+  CFStringRef inLongText) ;
+extern OSStatus
+HIToolbarItemCopyHelpText(
+  HIToolbarItemRef inItem,
+  CFStringRef * outShortText,
+  CFStringRef * outLongText) ;
+extern OSStatus
+HIToolbarItemSetCommandID(
+  HIToolbarItemRef inItem,
+  MenuCommand inCommandID) ;
+extern OSStatus
+HIToolbarItemGetCommandID(
+  HIToolbarItemRef inItem,
+  MenuCommand * outCommandID) ;
+extern OSStatus
+HIToolbarItemSetIconRef(
+  HIToolbarItemRef inItem,
+  IconRef inIcon) ;
+extern OSStatus
+HIToolbarItemSetImage(
+  HIToolbarItemRef inItem,
+  CGImageRef inImage) ;
+extern OSStatus
+HIToolbarItemCopyImage(
+  HIToolbarItemRef inItem,
+  CGImageRef * outImage) ;
+extern OSStatus
+HIToolbarItemSetMenu(
+  HIToolbarItemRef inItem,
+  MenuRef inMenu) ;
+extern OSStatus
+HIToolbarItemCopyMenu(
+  HIToolbarItemRef inItem,
+  MenuRef * outMenu) ;
+extern HIToolbarRef
+HIToolbarItemGetToolbar(HIToolbarItemRef inItem) ;
+extern Boolean
+HIToolbarItemIsEnabled(HIToolbarItemRef inItem) ;
+extern OSStatus
+HIToolbarItemSetEnabled(
+  HIToolbarItemRef inItem,
+  Boolean inEnabled) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef struct TERec TERec;
+typedef TERec * TEPtr;
+typedef TEPtr * TEHandle;
+typedef void ( * HighHookProcPtr)(const Rect *r, TEPtr pTE);
+typedef Boolean ( * EOLHookProcPtr)(char theChar, TEPtr pTE, TEHandle hTE);
+typedef void ( * CaretHookProcPtr)(const Rect *r, TEPtr pTE);
+typedef unsigned short ( * WidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
+typedef unsigned short ( * TextWidthHookProcPtr)(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
+typedef unsigned short ( * NWidthHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, short *lineStart, TEPtr pTE, TEHandle hTE);
+typedef void ( * DrawHookProcPtr)(unsigned short textOffset, unsigned short drawLen, void *textBufferPtr, TEPtr pTE, TEHandle hTE);
+typedef Boolean ( * HitTestHookProcPtr)(unsigned short styleRunLen, unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr, TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, Boolean *pixelInChar);
+typedef void ( * TEFindWordProcPtr)(unsigned short currentPos, short caller, TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd);
+typedef void ( * TERecalcProcPtr)(TEPtr pTE, unsigned short changeLength, unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar);
+typedef void ( * TEDoTextProcPtr)(TEPtr pTE, unsigned short firstChar, unsigned short lastChar, short selector, GrafPtr *currentGrafPort, short *charPosition);
+typedef Boolean ( * TEClickLoopProcPtr)(TEPtr pTE);
+typedef Boolean ( * WordBreakProcPtr)(Ptr text, short charPos);
+typedef HighHookProcPtr HighHookUPP;
+typedef EOLHookProcPtr EOLHookUPP;
+typedef CaretHookProcPtr CaretHookUPP;
+typedef WidthHookProcPtr WidthHookUPP;
+typedef TextWidthHookProcPtr TextWidthHookUPP;
+typedef NWidthHookProcPtr NWidthHookUPP;
+typedef DrawHookProcPtr DrawHookUPP;
+typedef HitTestHookProcPtr HitTestHookUPP;
+typedef TEFindWordProcPtr TEFindWordUPP;
+typedef TERecalcProcPtr TERecalcUPP;
+typedef TEDoTextProcPtr TEDoTextUPP;
+typedef TEClickLoopProcPtr TEClickLoopUPP;
+typedef WordBreakProcPtr WordBreakUPP;
+struct TERec {
+  Rect destRect;
+  Rect viewRect;
+  Rect selRect;
+  short lineHeight;
+  short fontAscent;
+  Point selPoint;
+  short selStart;
+  short selEnd;
+  short active;
+  WordBreakUPP wordBreak;
+  TEClickLoopUPP clickLoop;
+  long clickTime;
+  short clickLoc;
+  long caretTime;
+  short caretState;
+  short just;
+  short teLength;
+  Handle hText;
+  long hDispatchRec;
+  short clikStuff;
+  short crOnly;
+  short txFont;
+  StyleField txFace;
+  short txMode;
+  short txSize;
+  GrafPtr inPort;
+  HighHookUPP highHook;
+  CaretHookUPP caretHook;
+  short nLines;
+  short lineStarts[16001];
+};
+
+enum {
+
+  teJustLeft = 0,
+  teJustCenter = 1,
+  teJustRight = -1,
+  teForceLeft = -2,
+  teFlushDefault = 0,
+  teCenter = 1,
+  teFlushRight = -1,
+  teFlushLeft = -2
+};
+
+enum {
+
+  fontBit = 0,
+  faceBit = 1,
+  sizeBit = 2,
+  clrBit = 3,
+  addSizeBit = 4,
+  toggleBit = 5
+};
+
+enum {
+
+  doFont = 1,
+  doFace = 2,
+  doSize = 4,
+  doColor = 8,
+  doAll = 15,
+  addSize = 16,
+  doToggle = 32
+};
+
+enum {
+
+  EOLHook = 0,
+  DRAWHook = 4,
+  WIDTHHook = 8,
+  HITTESTHook = 12,
+  nWIDTHHook = 24,
+  TextWidthHook = 28
+};
+
+enum {
+
+  intEOLHook = 0,
+  intDrawHook = 1,
+  intWidthHook = 2,
+  intHitTestHook = 3,
+  intNWidthHook = 6,
+  intTextWidthHook = 7,
+  intInlineInputTSMTEPreUpdateHook = 8,
+  intInlineInputTSMTEPostUpdateHook = 9
+};
+
+enum {
+
+  teFAutoScroll = 0,
+  teFTextBuffering = 1,
+  teFOutlineHilite = 2,
+  teFInlineInput = 3,
+  teFUseWhiteBackground = 4,
+  teFUseInlineInput = 5,
+  teFInlineInputAutoScroll = 6
+};
+
+enum {
+
+
+
+
+
+
+  teFIdleWithEventLoopTimer = 7
+};
+
+enum {
+
+  teBitClear = 0,
+  teBitSet = 1,
+  teBitTest = -1
+};
+
+enum {
+
+  teWordSelect = 4,
+  teWordDrag = 8,
+  teFromFind = 12,
+  teFromRecal = 16
+};
+
+enum {
+
+  teFind = 0,
+  teHighlight = 1,
+  teDraw = -1,
+  teCaret = -2
+};
+
+
+typedef char Chars[32001];
+typedef char * CharsPtr;
+typedef CharsPtr * CharsHandle;
+struct StyleRun {
+  short startChar;
+  short styleIndex;
+};
+typedef struct StyleRun StyleRun;
+struct STElement {
+  short stCount;
+  short stHeight;
+  short stAscent;
+  short stFont;
+  StyleField stFace;
+  short stSize;
+  RGBColor stColor;
+};
+typedef struct STElement STElement;
+typedef STElement TEStyleTable[1777];
+typedef STElement * STPtr;
+typedef STPtr * STHandle;
+struct LHElement {
+  short lhHeight;
+  short lhAscent;
+};
+typedef struct LHElement LHElement;
+typedef LHElement LHTable[8001];
+typedef LHElement * LHPtr;
+typedef LHPtr * LHHandle;
+struct ScrpSTElement {
+  long scrpStartChar;
+  short scrpHeight;
+  short scrpAscent;
+  short scrpFont;
+  StyleField scrpFace;
+  short scrpSize;
+  RGBColor scrpColor;
+};
+typedef struct ScrpSTElement ScrpSTElement;
+
+typedef ScrpSTElement ScrpSTTable[1601];
+struct StScrpRec {
+  short scrpNStyles;
+  ScrpSTTable scrpStyleTab;
+};
+typedef struct StScrpRec StScrpRec;
+typedef StScrpRec * StScrpPtr;
+typedef StScrpPtr * StScrpHandle;
+struct NullStRec {
+  long teReserved;
+  StScrpHandle nullScrap;
+};
+typedef struct NullStRec NullStRec;
+typedef NullStRec * NullStPtr;
+typedef NullStPtr * NullStHandle;
+struct TEStyleRec {
+  short nRuns;
+  short nStyles;
+  STHandle styleTab;
+  LHHandle lhTab;
+  long teRefCon;
+  NullStHandle nullStyle;
+  StyleRun runs[8001];
+};
+typedef struct TEStyleRec TEStyleRec;
+typedef TEStyleRec * TEStylePtr;
+typedef TEStylePtr * TEStyleHandle;
+struct TextStyle {
+  short tsFont;
+  StyleField tsFace;
+  short tsSize;
+  RGBColor tsColor;
+};
+typedef struct TextStyle TextStyle;
+typedef TextStyle * TextStylePtr;
+typedef TextStylePtr * TextStyleHandle;
+typedef short TEIntHook;
+extern HighHookUPP
+NewHighHookUPP(HighHookProcPtr userRoutine) ;
+extern EOLHookUPP
+NewEOLHookUPP(EOLHookProcPtr userRoutine) ;
+extern CaretHookUPP
+NewCaretHookUPP(CaretHookProcPtr userRoutine) ;
+extern WidthHookUPP
+NewWidthHookUPP(WidthHookProcPtr userRoutine) ;
+extern TextWidthHookUPP
+NewTextWidthHookUPP(TextWidthHookProcPtr userRoutine) ;
+extern NWidthHookUPP
+NewNWidthHookUPP(NWidthHookProcPtr userRoutine) ;
+extern DrawHookUPP
+NewDrawHookUPP(DrawHookProcPtr userRoutine) ;
+extern HitTestHookUPP
+NewHitTestHookUPP(HitTestHookProcPtr userRoutine) ;
+extern TEFindWordUPP
+NewTEFindWordUPP(TEFindWordProcPtr userRoutine) ;
+extern TERecalcUPP
+NewTERecalcUPP(TERecalcProcPtr userRoutine) ;
+extern TEDoTextUPP
+NewTEDoTextUPP(TEDoTextProcPtr userRoutine) ;
+extern TEClickLoopUPP
+NewTEClickLoopUPP(TEClickLoopProcPtr userRoutine) ;
+extern void
+DisposeHighHookUPP(HighHookUPP userUPP) ;
+extern void
+DisposeEOLHookUPP(EOLHookUPP userUPP) ;
+extern void
+DisposeCaretHookUPP(CaretHookUPP userUPP) ;
+extern void
+DisposeWidthHookUPP(WidthHookUPP userUPP) ;
+extern void
+DisposeTextWidthHookUPP(TextWidthHookUPP userUPP) ;
+extern void
+DisposeNWidthHookUPP(NWidthHookUPP userUPP) ;
+extern void
+DisposeDrawHookUPP(DrawHookUPP userUPP) ;
+extern void
+DisposeHitTestHookUPP(HitTestHookUPP userUPP) ;
+extern void
+DisposeTEFindWordUPP(TEFindWordUPP userUPP) ;
+extern void
+DisposeTERecalcUPP(TERecalcUPP userUPP) ;
+extern void
+DisposeTEDoTextUPP(TEDoTextUPP userUPP) ;
+extern void
+DisposeTEClickLoopUPP(TEClickLoopUPP userUPP) ;
+extern void
+InvokeHighHookUPP(
+  const Rect * r,
+  TEPtr pTE,
+  HighHookUPP userUPP) ;
+extern Boolean
+InvokeEOLHookUPP(
+  char theChar,
+  TEPtr pTE,
+  TEHandle hTE,
+  EOLHookUPP userUPP) ;
+extern void
+InvokeCaretHookUPP(
+  const Rect * r,
+  TEPtr pTE,
+  CaretHookUPP userUPP) ;
+extern unsigned short
+InvokeWidthHookUPP(
+  unsigned short textLen,
+  unsigned short textOffset,
+  void * textBufferPtr,
+  TEPtr pTE,
+  TEHandle hTE,
+  WidthHookUPP userUPP) ;
+extern unsigned short
+InvokeTextWidthHookUPP(
+  unsigned short textLen,
+  unsigned short textOffset,
+  void * textBufferPtr,
+  TEPtr pTE,
+  TEHandle hTE,
+  TextWidthHookUPP userUPP) ;
+extern unsigned short
+InvokeNWidthHookUPP(
+  unsigned short styleRunLen,
+  unsigned short styleRunOffset,
+  short slop,
+  short direction,
+  void * textBufferPtr,
+  short * lineStart,
+  TEPtr pTE,
+  TEHandle hTE,
+  NWidthHookUPP userUPP) ;
+extern void
+InvokeDrawHookUPP(
+  unsigned short textOffset,
+  unsigned short drawLen,
+  void * textBufferPtr,
+  TEPtr pTE,
+  TEHandle hTE,
+  DrawHookUPP userUPP) ;
+extern Boolean
+InvokeHitTestHookUPP(
+  unsigned short styleRunLen,
+  unsigned short styleRunOffset,
+  unsigned short slop,
+  void * textBufferPtr,
+  TEPtr pTE,
+  TEHandle hTE,
+  unsigned short * pixelWidth,
+  unsigned short * charOffset,
+  Boolean * pixelInChar,
+  HitTestHookUPP userUPP) ;
+extern void
+InvokeTEFindWordUPP(
+  unsigned short currentPos,
+  short caller,
+  TEPtr pTE,
+  TEHandle hTE,
+  unsigned short * wordStart,
+  unsigned short * wordEnd,
+  TEFindWordUPP userUPP) ;
+extern void
+InvokeTERecalcUPP(
+  TEPtr pTE,
+  unsigned short changeLength,
+  unsigned short * lineStart,
+  unsigned short * firstChar,
+  unsigned short * lastChar,
+  TERecalcUPP userUPP) ;
+extern void
+InvokeTEDoTextUPP(
+  TEPtr pTE,
+  unsigned short firstChar,
+  unsigned short lastChar,
+  short selector,
+  GrafPtr * currentGrafPort,
+  short * charPosition,
+  TEDoTextUPP userUPP) ;
+extern Boolean
+InvokeTEClickLoopUPP(
+  TEPtr pTE,
+  TEClickLoopUPP userUPP) ;
+enum {
+
+  teFUseTextServices = 4
+};
+extern Handle
+TEScrapHandle(void) ;
+extern long
+TEGetScrapLength(void) ;
+extern TEHandle
+TENew(
+  const Rect * destRect,
+  const Rect * viewRect) ;
+extern void
+TEDispose(TEHandle hTE) ;
+extern void
+TESetText(
+  const void * text,
+  long length,
+  TEHandle hTE) ;
+extern CharsHandle
+TEGetText(TEHandle hTE) ;
+extern void
+TEIdle(TEHandle hTE) ;
+extern void
+TESetSelect(
+  long selStart,
+  long selEnd,
+  TEHandle hTE) ;
+extern void
+TEActivate(TEHandle hTE) ;
+extern void
+TEDeactivate(TEHandle hTE) ;
+extern void
+TEKey(
+  CharParameter key,
+  TEHandle hTE) ;
+extern void
+TECut(TEHandle hTE) ;
+extern void
+TECopy(TEHandle hTE) ;
+extern void
+TEPaste(TEHandle hTE) ;
+extern void
+TEDelete(TEHandle hTE) ;
+extern void
+TEInsert(
+  const void * text,
+  long length,
+  TEHandle hTE) ;
+extern void
+TESetAlignment(
+  short just,
+  TEHandle hTE) ;
+extern void
+TEUpdate(
+  const Rect * rUpdate,
+  TEHandle hTE) ;
+extern void
+TETextBox(
+  const void * text,
+  long length,
+  const Rect * box,
+  short just) ;
+extern void
+TEScroll(
+  short dh,
+  short dv,
+  TEHandle hTE) ;
+extern void
+TESelView(TEHandle hTE) ;
+extern void
+TEPinScroll(
+  short dh,
+  short dv,
+  TEHandle hTE) ;
+extern void
+TEAutoView(
+  Boolean fAuto,
+  TEHandle hTE) ;
+extern void
+TECalText(TEHandle hTE) ;
+extern short
+TEGetOffset(
+  Point pt,
+  TEHandle hTE) ;
+extern Point
+TEGetPoint(
+  short offset,
+  TEHandle hTE) ;
+extern void
+TEClick(
+  Point pt,
+  Boolean fExtend,
+  TEHandle h) ;
+extern TEHandle
+TEStyleNew(
+  const Rect * destRect,
+  const Rect * viewRect) ;
+extern void
+TESetStyleHandle(
+  TEStyleHandle theHandle,
+  TEHandle hTE) ;
+extern TEStyleHandle
+TEGetStyleHandle(TEHandle hTE) ;
+extern void
+TEGetStyle(
+  short offset,
+  TextStyle * theStyle,
+  short * lineHeight,
+  short * fontAscent,
+  TEHandle hTE) ;
+extern void
+TEStylePaste(TEHandle hTE) ;
+extern void
+TESetStyle(
+  short mode,
+  const TextStyle * newStyle,
+  Boolean fRedraw,
+  TEHandle hTE) ;
+extern void
+TEReplaceStyle(
+  short mode,
+  const TextStyle * oldStyle,
+  const TextStyle * newStyle,
+  Boolean fRedraw,
+  TEHandle hTE) ;
+extern StScrpHandle
+TEGetStyleScrapHandle(TEHandle hTE) ;
+extern void
+TEStyleInsert(
+  const void * text,
+  long length,
+  StScrpHandle hST,
+  TEHandle hTE) ;
+extern long
+TEGetHeight(
+  long endLine,
+  long startLine,
+  TEHandle hTE) ;
+extern Boolean
+TEContinuousStyle(
+  short * mode,
+  TextStyle * aStyle,
+  TEHandle hTE) ;
+extern void
+TEUseStyleScrap(
+  long rangeStart,
+  long rangeEnd,
+  StScrpHandle newStyles,
+  Boolean fRedraw,
+  TEHandle hTE) ;
+extern void
+TECustomHook(
+  TEIntHook which,
+  UniversalProcPtr * addr,
+  TEHandle hTE) ;
+extern long
+TENumStyles(
+  long rangeStart,
+  long rangeEnd,
+  TEHandle hTE) ;
+extern short
+TEFeatureFlag(
+  short feature,
+  short action,
+  TEHandle hTE) ;
+extern OSErr
+TEGetHiliteRgn(
+  RgnHandle region,
+  TEHandle hTE) ;
+extern void
+TESetScrapLength(long length) ;
+extern OSErr
+TEFromScrap(void) ;
+extern OSErr
+TEToScrap(void) ;
+extern void
+TESetClickLoop(
+  TEClickLoopUPP clikProc,
+  TEHandle hTE) ;
+extern TEDoTextUPP
+TEGetDoTextHook(void) ;
+extern void
+TESetDoTextHook(TEDoTextUPP value) ;
+extern TERecalcUPP
+TEGetRecalcHook(void) ;
+extern void
+TESetRecalcHook(TERecalcUPP value) ;
+extern TEFindWordUPP
+TEGetFindWordHook(void) ;
+extern void
+TESetFindWordHook(TEFindWordUPP value) ;
+extern Handle
+TEGetScrapHandle(void) ;
+extern void
+TESetScrapHandle(Handle value) ;
+extern UInt8
+LMGetWordRedraw(void) ;
+extern void
+LMSetWordRedraw(UInt8 value) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef CGPoint HIPoint;
+typedef CGSize HISize;
+typedef CGRect HIRect;
+
+
+
+
+
+
+typedef struct OpaqueDragRef* DragRef;
+typedef UInt32 DragItemRef;
+typedef OSType FlavorType;
+
+
+
+
+
+
+typedef UInt32 DragAttributes;
+enum {
+  kDragHasLeftSenderWindow = (1L << 0),
+  kDragInsideSenderApplication = (1L << 1),
+  kDragInsideSenderWindow = (1L << 2)
+};
+
+
+
+
+
+
+
+typedef UInt32 DragBehaviors;
+enum {
+  kDragBehaviorNone = 0,
+  kDragBehaviorZoomBackAnimation = (1L << 0)
+};
+
+
+
+
+
+
+
+typedef UInt32 DragImageFlags;
+enum {
+  kDragRegionAndImage = (1L << 4)
+};
+enum {
+  kDragStandardTranslucency = 0L,
+  kDragDarkTranslucency = 1L,
+  kDragDarkerTranslucency = 2L,
+  kDragOpaqueTranslucency = 3L
+};
+typedef SInt16 DragRegionMessage;
+enum {
+  kDragRegionBegin = 1,
+  kDragRegionDraw = 2,
+  kDragRegionHide = 3,
+  kDragRegionIdle = 4,
+  kDragRegionEnd = 5
+};
+typedef SInt16 ZoomAcceleration;
+enum {
+  kZoomNoAcceleration = 0,
+  kZoomAccelerate = 1,
+  kZoomDecelerate = 2
+};
+typedef UInt32 FlavorFlags;
+enum {
+  flavorSenderOnly = (1 << 0),
+  flavorSenderTranslated = (1 << 1),
+  flavorNotSaved = (1 << 2),
+  flavorSystemTranslated = (1 << 8),
+  flavorDataPromised = (1 << 9)
+};
+enum {
+  kDragFlavorTypeHFS = 'hfs ',
+  kDragFlavorTypePromiseHFS = 'phfs',
+  flavorTypeHFS = kDragFlavorTypeHFS,
+  flavorTypePromiseHFS = kDragFlavorTypePromiseHFS
+};
+
+enum {
+  kDragPromisedFlavorFindFile = 'rWm1',
+  kDragPromisedFlavor = 'fssP'
+};
+
+enum {
+  kDragPseudoCreatorVolumeOrDirectory = 'MACS',
+  kDragPseudoFileTypeVolume = 'disk',
+  kDragPseudoFileTypeDirectory = 'fold'
+};
+enum {
+  flavorTypeDirectory = 'diry'
+};
+enum {
+  kFlavorTypeClippingName = 'clnm',
+  kFlavorTypeClippingFilename = 'clfn',
+  kFlavorTypeUnicodeClippingName = 'ucln',
+  kFlavorTypeUnicodeClippingFilename = 'uclf',
+  kFlavorTypeDragToTrashOnly = 'fdtt',
+  kFlavorTypeFinderNoTrackingBehavior = 'fntb'
+};
+typedef SInt16 DragTrackingMessage;
+enum {
+  kDragTrackingEnterHandler = 1,
+  kDragTrackingEnterWindow = 2,
+  kDragTrackingInWindow = 3,
+  kDragTrackingLeaveWindow = 4,
+  kDragTrackingLeaveHandler = 5
+};
+enum {
+
+
+
+
+
+
+
+  kDragStandardDropLocationTrash = 'trsh',
+
+
+
+
+  kDragStandardDropLocationUnknown = 'unkn'
+};
+
+typedef OSType StandardDropLocation;
+enum {
+
+
+
+
+
+
+  kDragActionNothing = 0L,
+
+
+
+
+  kDragActionCopy = 1L,
+
+
+
+
+  kDragActionAlias = (1L << 1),
+
+
+
+
+
+  kDragActionGeneric = (1L << 2),
+
+
+
+
+
+  kDragActionPrivate = (1L << 3),
+
+
+
+
+  kDragActionMove = (1L << 4),
+
+
+
+
+  kDragActionDelete = (1L << 5),
+
+
+
+
+  kDragActionAll = (long)0xFFFFFFFF
+};
+
+typedef UInt32 DragActions;
+
+
+
+
+
+
+struct HFSFlavor {
+  OSType fileType;
+  OSType fileCreator;
+  UInt16 fdFlags;
+  FSSpec fileSpec;
+};
+typedef struct HFSFlavor HFSFlavor;
+struct PromiseHFSFlavor {
+  OSType fileType;
+  OSType fileCreator;
+  UInt16 fdFlags;
+  FlavorType promisedFlavor;
+};
+typedef struct PromiseHFSFlavor PromiseHFSFlavor;
+
+
+
+
+
+
+typedef OSErr ( * DragTrackingHandlerProcPtr)(DragTrackingMessage message, WindowRef theWindow, void *handlerRefCon, DragRef theDrag);
+typedef OSErr ( * DragReceiveHandlerProcPtr)(WindowRef theWindow, void *handlerRefCon, DragRef theDrag);
+typedef DragTrackingHandlerProcPtr DragTrackingHandlerUPP;
+typedef DragReceiveHandlerProcPtr DragReceiveHandlerUPP;
+extern DragTrackingHandlerUPP
+NewDragTrackingHandlerUPP(DragTrackingHandlerProcPtr userRoutine) ;
+extern DragReceiveHandlerUPP
+NewDragReceiveHandlerUPP(DragReceiveHandlerProcPtr userRoutine) ;
+extern void
+DisposeDragTrackingHandlerUPP(DragTrackingHandlerUPP userUPP) ;
+extern void
+DisposeDragReceiveHandlerUPP(DragReceiveHandlerUPP userUPP) ;
+extern OSErr
+InvokeDragTrackingHandlerUPP(
+  DragTrackingMessage message,
+  WindowRef theWindow,
+  void * handlerRefCon,
+  DragRef theDrag,
+  DragTrackingHandlerUPP userUPP) ;
+extern OSErr
+InvokeDragReceiveHandlerUPP(
+  WindowRef theWindow,
+  void * handlerRefCon,
+  DragRef theDrag,
+  DragReceiveHandlerUPP userUPP) ;
+
+
+
+
+
+
+
+typedef OSErr ( * DragSendDataProcPtr)(FlavorType theType, void *dragSendRefCon, DragItemRef theItemRef, DragRef theDrag);
+typedef OSErr ( * DragInputProcPtr)(Point *mouse, SInt16 *modifiers, void *dragInputRefCon, DragRef theDrag);
+typedef OSErr ( * DragDrawingProcPtr)(DragRegionMessage message, RgnHandle showRegion, Point showOrigin, RgnHandle hideRegion, Point hideOrigin, void *dragDrawingRefCon, DragRef theDrag);
+typedef DragSendDataProcPtr DragSendDataUPP;
+typedef DragInputProcPtr DragInputUPP;
+typedef DragDrawingProcPtr DragDrawingUPP;
+extern DragSendDataUPP
+NewDragSendDataUPP(DragSendDataProcPtr userRoutine) ;
+extern DragInputUPP
+NewDragInputUPP(DragInputProcPtr userRoutine) ;
+extern DragDrawingUPP
+NewDragDrawingUPP(DragDrawingProcPtr userRoutine) ;
+extern void
+DisposeDragSendDataUPP(DragSendDataUPP userUPP) ;
+extern void
+DisposeDragInputUPP(DragInputUPP userUPP) ;
+extern void
+DisposeDragDrawingUPP(DragDrawingUPP userUPP) ;
+extern OSErr
+InvokeDragSendDataUPP(
+  FlavorType theType,
+  void * dragSendRefCon,
+  DragItemRef theItemRef,
+  DragRef theDrag,
+  DragSendDataUPP userUPP) ;
+extern OSErr
+InvokeDragInputUPP(
+  Point * mouse,
+  SInt16 * modifiers,
+  void * dragInputRefCon,
+  DragRef theDrag,
+  DragInputUPP userUPP) ;
+extern OSErr
+InvokeDragDrawingUPP(
+  DragRegionMessage message,
+  RgnHandle showRegion,
+  Point showOrigin,
+  RgnHandle hideRegion,
+  Point hideOrigin,
+  void * dragDrawingRefCon,
+  DragRef theDrag,
+  DragDrawingUPP userUPP) ;
+extern OSErr
+InstallTrackingHandler(
+  DragTrackingHandlerUPP trackingHandler,
+  WindowRef theWindow,
+  void * handlerRefCon) ;
+extern OSErr
+InstallReceiveHandler(
+  DragReceiveHandlerUPP receiveHandler,
+  WindowRef theWindow,
+  void * handlerRefCon) ;
+extern OSErr
+RemoveTrackingHandler(
+  DragTrackingHandlerUPP trackingHandler,
+  WindowRef theWindow) ;
+extern OSErr
+RemoveReceiveHandler(
+  DragReceiveHandlerUPP receiveHandler,
+  WindowRef theWindow) ;
+extern OSErr
+NewDrag(DragRef * theDrag) ;
+extern OSErr
+DisposeDrag(DragRef theDrag) ;
+extern OSErr
+AddDragItemFlavor(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  FlavorType theType,
+  const void * dataPtr,
+  Size dataSize,
+  FlavorFlags theFlags) ;
+extern OSErr
+SetDragItemFlavorData(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  FlavorType theType,
+  const void * dataPtr,
+  Size dataSize,
+  UInt32 dataOffset) ;
+extern OSErr
+SetDragSendProc(
+  DragRef theDrag,
+  DragSendDataUPP sendProc,
+  void * dragSendRefCon) ;
+extern OSErr
+SetDragInputProc(
+  DragRef theDrag,
+  DragInputUPP inputProc,
+  void * dragInputRefCon) ;
+extern OSErr
+SetDragDrawingProc(
+  DragRef theDrag,
+  DragDrawingUPP drawingProc,
+  void * dragDrawingRefCon) ;
+extern OSErr
+SetDragImage(
+  DragRef theDrag,
+  PixMapHandle imagePixMap,
+  RgnHandle imageRgn,
+  Point imageOffsetPt,
+  DragImageFlags theImageFlags) ;
+extern OSStatus
+SetDragImageWithCGImage(
+  DragRef inDrag,
+  CGImageRef inCGImage,
+  const HIPoint * inImageOffsetPt,
+  DragImageFlags inImageFlags) ;
+extern OSErr
+ChangeDragBehaviors(
+  DragRef theDrag,
+  DragBehaviors inBehaviorsToSet,
+  DragBehaviors inBehaviorsToClear) ;
+extern OSErr
+TrackDrag(
+  DragRef theDrag,
+  const EventRecord * theEvent,
+  RgnHandle theRegion) ;
+extern OSErr
+CountDragItems(
+  DragRef theDrag,
+  UInt16 * numItems) ;
+extern OSErr
+GetDragItemReferenceNumber(
+  DragRef theDrag,
+  UInt16 index,
+  DragItemRef * theItemRef) ;
+extern OSErr
+CountDragItemFlavors(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  UInt16 * numFlavors) ;
+extern OSErr
+GetFlavorType(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  UInt16 index,
+  FlavorType * theType) ;
+extern OSErr
+GetFlavorFlags(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  FlavorType theType,
+  FlavorFlags * theFlags) ;
+extern OSErr
+GetFlavorDataSize(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  FlavorType theType,
+  Size * dataSize) ;
+extern OSErr
+GetFlavorData(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  FlavorType theType,
+  void * dataPtr,
+  Size * dataSize,
+  UInt32 dataOffset) ;
+extern OSErr
+GetDragItemBounds(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  Rect * itemBounds) ;
+extern OSErr
+SetDragItemBounds(
+  DragRef theDrag,
+  DragItemRef theItemRef,
+  const Rect * itemBounds) ;
+extern OSErr
+GetDropLocation(
+  DragRef theDrag,
+  AEDesc * dropLocation) ;
+extern OSErr
+SetDropLocation(
+  DragRef theDrag,
+  const AEDesc * dropLocation) ;
+extern OSStatus
+GetStandardDropLocation(
+  DragRef theDrag,
+  StandardDropLocation * outDropLocation) ;
+extern OSStatus
+SetStandardDropLocation(
+  DragRef theDrag,
+  StandardDropLocation dropLocation) ;
+extern OSErr
+GetDragAttributes(
+  DragRef theDrag,
+  DragAttributes * flags) ;
+extern OSErr
+GetDragMouse(
+  DragRef theDrag,
+  Point * mouse,
+  Point * globalPinnedMouse) ;
+extern OSErr
+SetDragMouse(
+  DragRef theDrag,
+  Point globalPinnedMouse) ;
+extern OSErr
+GetDragOrigin(
+  DragRef theDrag,
+  Point * globalInitialMouse) ;
+extern OSErr
+GetDragModifiers(
+  DragRef theDrag,
+  SInt16 * modifiers,
+  SInt16 * mouseDownModifiers,
+  SInt16 * mouseUpModifiers) ;
+extern OSStatus
+GetDragAllowableActions(
+  DragRef theDrag,
+  DragActions * outActions) ;
+extern OSStatus
+SetDragAllowableActions(
+  DragRef theDrag,
+  DragActions inActions,
+  Boolean isLocal) ;
+extern OSStatus
+GetDragDropAction(
+  DragRef theDrag,
+  DragActions * outAction) ;
+extern OSStatus
+SetDragDropAction(
+  DragRef theDrag,
+  DragActions inAction) ;
+extern OSErr
+ShowDragHilite(
+  DragRef theDrag,
+  RgnHandle hiliteFrame,
+  Boolean inside) ;
+extern OSErr
+HideDragHilite(DragRef theDrag) ;
+extern OSErr
+DragPreScroll(
+  DragRef theDrag,
+  SInt16 dH,
+  SInt16 dV) ;
+extern OSErr
+DragPostScroll(DragRef theDrag) ;
+extern OSErr
+UpdateDragHilite(
+  DragRef theDrag,
+  RgnHandle updateRgn) ;
+extern OSErr
+GetDragHiliteColor(
+  WindowRef window,
+  RGBColor * color) ;
+extern Boolean
+WaitMouseMoved(Point initialGlobalMouse) ;
+extern OSErr
+ZoomRects(
+  const Rect * fromRect,
+  const Rect * toRect,
+  SInt16 zoomSteps,
+  ZoomAcceleration acceleration) ;
+extern OSErr
+ZoomRegion(
+  RgnHandle region,
+  Point zoomDistance,
+  SInt16 zoomSteps,
+  ZoomAcceleration acceleration) ;
+typedef DragRef DragReference;
+typedef DragItemRef ItemReference;
+
+
+}
+extern "C" {
+
+
+
+
+
+
+enum {
+  kControlDefProcType = 'CDEF',
+  kControlTemplateResourceType = 'CNTL',
+  kControlColorTableResourceType = 'cctb',
+  kControlDefProcResourceType = 'CDEF'
+};
+
+
+
+
+struct ControlTemplate {
+  Rect controlRect;
+  SInt16 controlValue;
+  Boolean controlVisible;
+  UInt8 fill;
+  SInt16 controlMaximum;
+  SInt16 controlMinimum;
+  SInt16 controlDefProcID;
+  SInt32 controlReference;
+  Str255 controlTitle;
+};
+typedef struct ControlTemplate ControlTemplate;
+typedef ControlTemplate * ControlTemplatePtr;
+typedef ControlTemplatePtr * ControlTemplateHandle;
+typedef struct OpaqueControlRef* ControlRef;
+
+
+
+typedef ControlRef ControlHandle;
+typedef SInt16 ControlPartCode;
+
+
+
+typedef void ( * ControlActionProcPtr)(ControlRef theControl, ControlPartCode partCode);
+typedef ControlActionProcPtr ControlActionUPP;
+extern ControlActionUPP
+NewControlActionUPP(ControlActionProcPtr userRoutine) ;
+extern void
+DisposeControlActionUPP(ControlActionUPP userUPP) ;
+extern void
+InvokeControlActionUPP(
+  ControlRef theControl,
+  ControlPartCode partCode,
+  ControlActionUPP userUPP) ;
+
+
+
+
+enum {
+  cFrameColor = 0,
+  cBodyColor = 1,
+  cTextColor = 2,
+  cThumbColor = 3,
+  kNumberCtlCTabEntries = 4
+};
+
+struct CtlCTab {
+  SInt32 ccSeed;
+  SInt16 ccRider;
+  SInt16 ctSize;
+  ColorSpec ctTable[4];
+};
+typedef struct CtlCTab CtlCTab;
+typedef CtlCTab * CCTabPtr;
+typedef CCTabPtr * CCTabHandle;
+typedef SInt16 ControlVariant;
+enum {
+  kControlNoVariant = 0,
+  kControlUsesOwningWindowsFontVariant = 1 << 3
+};
+
+
+
+
+
+
+enum {
+  kControlNoPart = 0,
+  kControlIndicatorPart = 129,
+  kControlDisabledPart = 254,
+  kControlInactivePart = 255
+};
+
+
+
+
+enum {
+  kControlEntireControl = 0
+};
+enum {
+  kControlStructureMetaPart = -1,
+  kControlContentMetaPart = -2
+};
+
+
+enum {
+  kControlFocusNoPart = 0,
+  kControlFocusNextPart = -1,
+  kControlFocusPrevPart = -2
+};
+
+typedef SInt16 ControlFocusPart;
+enum {
+  kControlCollectionTagBounds = 'boun',
+  kControlCollectionTagValue = 'valu',
+  kControlCollectionTagMinimum = 'min ',
+  kControlCollectionTagMaximum = 'max ',
+  kControlCollectionTagViewSize = 'view',
+  kControlCollectionTagVisibility = 'visi',
+  kControlCollectionTagRefCon = 'refc',
+  kControlCollectionTagTitle = 'titl',
+  kControlCollectionTagUnicodeTitle = 'uttl',
+  kControlCollectionTagIDSignature = 'idsi',
+  kControlCollectionTagIDID = 'idid',
+  kControlCollectionTagCommand = 'cmd ',
+  kControlCollectionTagVarCode = 'varc'
+};
+
+
+enum {
+  kControlCollectionTagSubControls = 'subc'
+};
+
+
+
+
+enum {
+  kControlContentTextOnly = 0,
+  kControlNoContent = 0,
+  kControlContentIconSuiteRes = 1,
+  kControlContentCIconRes = 2,
+  kControlContentPictRes = 3,
+  kControlContentICONRes = 4,
+  kControlContentIconSuiteHandle = 129,
+  kControlContentCIconHandle = 130,
+  kControlContentPictHandle = 131,
+  kControlContentIconRef = 132,
+  kControlContentICON = 133
+};
+
+typedef SInt16 ControlContentType;
+struct ControlButtonContentInfo {
+  ControlContentType contentType;
+  union {
+    SInt16 resID;
+    CIconHandle cIconHandle;
+    Handle iconSuite;
+    IconRef iconRef;
+    PicHandle picture;
+    Handle ICONHandle;
+  } u;
+};
+typedef struct ControlButtonContentInfo ControlButtonContentInfo;
+typedef ControlButtonContentInfo * ControlButtonContentInfoPtr;
+typedef ControlButtonContentInfo ControlImageContentInfo;
+typedef ControlButtonContentInfo * ControlImageContentInfoPtr;
+
+
+
+enum {
+  kControlKeyScriptBehaviorAllowAnyScript = 'any ',
+  kControlKeyScriptBehaviorPrefersRoman = 'prmn',
+  kControlKeyScriptBehaviorRequiresRoman = 'rrmn'
+};
+
+typedef UInt32 ControlKeyScriptBehavior;
+enum {
+  kControlFontBigSystemFont = -1,
+  kControlFontSmallSystemFont = -2,
+  kControlFontSmallBoldSystemFont = -3,
+  kControlFontViewSystemFont = -4
+};
+
+
+
+
+enum {
+  kControlUseFontMask = 0x0001,
+  kControlUseFaceMask = 0x0002,
+  kControlUseSizeMask = 0x0004,
+  kControlUseForeColorMask = 0x0008,
+  kControlUseBackColorMask = 0x0010,
+  kControlUseModeMask = 0x0020,
+  kControlUseJustMask = 0x0040,
+  kControlUseAllMask = 0x00FF,
+  kControlAddFontSizeMask = 0x0100
+};
+
+
+
+
+enum {
+  kControlAddToMetaFontMask = 0x0200
+};
+
+
+
+
+
+enum {
+  kControlUseThemeFontIDMask = 0x0080
+};
+
+struct ControlFontStyleRec {
+  SInt16 flags;
+  SInt16 font;
+  SInt16 size;
+  SInt16 style;
+  SInt16 mode;
+  SInt16 just;
+  RGBColor foreColor;
+  RGBColor backColor;
+};
+typedef struct ControlFontStyleRec ControlFontStyleRec;
+typedef ControlFontStyleRec * ControlFontStylePtr;
+enum {
+  kDoNotActivateAndIgnoreClick = 0,
+  kDoNotActivateAndHandleClick = 1,
+  kActivateAndIgnoreClick = 2,
+  kActivateAndHandleClick = 3
+};
+
+typedef UInt32 ClickActivationResult;
+enum {
+  kControlFontStyleTag = 'font',
+  kControlKeyFilterTag = 'fltr',
+
+
+
+
+
+  kControlKindTag = 'kind',
+
+
+
+
+
+
+
+  kControlSizeTag = 'size'
+};
+
+
+
+
+enum {
+
+  kControlSupportsGhosting = 1 << 0,
+  kControlSupportsEmbedding = 1 << 1,
+  kControlSupportsFocus = 1 << 2,
+  kControlWantsIdle = 1 << 3,
+  kControlWantsActivate = 1 << 4,
+  kControlHandlesTracking = 1 << 5,
+  kControlSupportsDataAccess = 1 << 6,
+  kControlHasSpecialBackground = 1 << 7,
+  kControlGetsFocusOnClick = 1 << 8,
+  kControlSupportsCalcBestRect = 1 << 9,
+  kControlSupportsLiveFeedback = 1 << 10,
+  kControlHasRadioBehavior = 1 << 11,
+  kControlSupportsDragAndDrop = 1 << 12,
+  kControlAutoToggles = 1 << 14,
+  kControlSupportsGetRegion = 1 << 17,
+  kControlSupportsFlattening = 1 << 19,
+  kControlSupportsSetCursor = 1 << 20,
+  kControlSupportsContextualMenus = 1 << 21,
+  kControlSupportsClickActivation = 1 << 22,
+  kControlIdlesWithTimer = 1 << 23
+};
+
+
+
+
+enum {
+  drawCntl = 0,
+  testCntl = 1,
+  calcCRgns = 2,
+  initCntl = 3,
+  dispCntl = 4,
+  posCntl = 5,
+  thumbCntl = 6,
+  dragCntl = 7,
+  autoTrack = 8,
+  calcCntlRgn = 10,
+  calcThumbRgn = 11,
+  drawThumbOutline = 12,
+  kControlMsgDrawGhost = 13,
+  kControlMsgCalcBestRect = 14,
+  kControlMsgHandleTracking = 15,
+  kControlMsgFocus = 16,
+  kControlMsgKeyDown = 17,
+  kControlMsgIdle = 18,
+  kControlMsgGetFeatures = 19,
+  kControlMsgSetData = 20,
+  kControlMsgGetData = 21,
+  kControlMsgActivate = 22,
+  kControlMsgSetUpBackground = 23,
+  kControlMsgCalcValueFromPos = 26,
+  kControlMsgTestNewMsgSupport = 27,
+  kControlMsgSubValueChanged = 25,
+  kControlMsgSubControlAdded = 28,
+  kControlMsgSubControlRemoved = 29,
+  kControlMsgApplyTextColor = 30,
+  kControlMsgGetRegion = 31,
+  kControlMsgFlatten = 32,
+  kControlMsgSetCursor = 33,
+  kControlMsgDragEnter = 38,
+  kControlMsgDragLeave = 39,
+  kControlMsgDragWithin = 40,
+  kControlMsgDragReceive = 41,
+  kControlMsgDisplayDebugInfo = 46,
+  kControlMsgContextualMenuClick = 47,
+  kControlMsgGetClickActivation = 48
+};
+
+typedef SInt16 ControlDefProcMessage;
+enum {
+
+
+
+
+
+  kControlSizeNormal = 0,
+
+
+
+
+
+
+  kControlSizeSmall = 1,
+
+
+
+
+
+
+  kControlSizeLarge = 2,
+
+
+
+
+
+
+  kControlSizeAuto = 0xFFFF
+};
+
+typedef UInt16 ControlSize;
+
+
+
+enum {
+  kDrawControlEntireControl = 0,
+  kDrawControlIndicatorOnly = 129
+};
+
+
+
+
+enum {
+  kDragControlEntireControl = 0,
+  kDragControlIndicator = 1
+};
+
+
+
+
+struct IndicatorDragConstraint {
+  Rect limitRect;
+  Rect slopRect;
+  DragConstraint axis;
+};
+typedef struct IndicatorDragConstraint IndicatorDragConstraint;
+typedef IndicatorDragConstraint * IndicatorDragConstraintPtr;
+
+
+
+enum {
+  kControlSupportsNewMessages = ' ok '
+};
+
+
+
+
+
+struct ControlTrackingRec {
+  Point startPt;
+  EventModifiers modifiers;
+  ControlActionUPP action;
+};
+typedef struct ControlTrackingRec ControlTrackingRec;
+typedef ControlTrackingRec * ControlTrackingPtr;
+
+
+
+struct ControlKeyDownRec {
+  EventModifiers modifiers;
+  SInt16 keyCode;
+  SInt16 charCode;
+};
+typedef struct ControlKeyDownRec ControlKeyDownRec;
+typedef ControlKeyDownRec * ControlKeyDownPtr;
+
+
+
+
+struct ControlDataAccessRec {
+  ResType tag;
+  ResType part;
+  Size size;
+  Ptr dataPtr;
+};
+typedef struct ControlDataAccessRec ControlDataAccessRec;
+typedef ControlDataAccessRec * ControlDataAccessPtr;
+
+
+
+struct ControlCalcSizeRec {
+  SInt16 height;
+  SInt16 width;
+  SInt16 baseLine;
+};
+typedef struct ControlCalcSizeRec ControlCalcSizeRec;
+typedef ControlCalcSizeRec * ControlCalcSizePtr;
+
+
+
+
+struct ControlBackgroundRec {
+  SInt16 depth;
+  Boolean colorDevice;
+};
+typedef struct ControlBackgroundRec ControlBackgroundRec;
+typedef ControlBackgroundRec * ControlBackgroundPtr;
+
+
+
+
+struct ControlApplyTextColorRec {
+  SInt16 depth;
+  Boolean colorDevice;
+  Boolean active;
+};
+typedef struct ControlApplyTextColorRec ControlApplyTextColorRec;
+typedef ControlApplyTextColorRec * ControlApplyTextColorPtr;
+
+
+
+
+struct ControlGetRegionRec {
+  RgnHandle region;
+  ControlPartCode part;
+};
+typedef struct ControlGetRegionRec ControlGetRegionRec;
+typedef ControlGetRegionRec * ControlGetRegionPtr;
+
+
+
+
+struct ControlSetCursorRec {
+  Point localPoint;
+  EventModifiers modifiers;
+  Boolean cursorWasSet;
+};
+typedef struct ControlSetCursorRec ControlSetCursorRec;
+typedef ControlSetCursorRec * ControlSetCursorPtr;
+
+
+
+
+
+struct ControlContextualMenuClickRec {
+  Point localPoint;
+  Boolean menuDisplayed;
+};
+typedef struct ControlContextualMenuClickRec ControlContextualMenuClickRec;
+typedef ControlContextualMenuClickRec * ControlContextualMenuClickPtr;
+
+
+
+
+
+struct ControlClickActivationRec {
+  Point localPoint;
+  EventModifiers modifiers;
+  ClickActivationResult result;
+};
+typedef struct ControlClickActivationRec ControlClickActivationRec;
+typedef ControlClickActivationRec * ControlClickActivationPtr;
+
+
+
+typedef SInt32 ( * ControlDefProcPtr)(SInt16 varCode, ControlRef theControl, ControlDefProcMessage message, SInt32 param);
+typedef ControlDefProcPtr ControlDefUPP;
+extern ControlDefUPP
+NewControlDefUPP(ControlDefProcPtr userRoutine) ;
+extern void
+DisposeControlDefUPP(ControlDefUPP userUPP) ;
+extern SInt32
+InvokeControlDefUPP(
+  SInt16 varCode,
+  ControlRef theControl,
+  ControlDefProcMessage message,
+  SInt32 param,
+  ControlDefUPP userUPP) ;
+enum {
+  kControlKeyFilterBlockKey = 0,
+  kControlKeyFilterPassKey = 1
+};
+
+typedef SInt16 ControlKeyFilterResult;
+typedef ControlKeyFilterResult ( * ControlKeyFilterProcPtr)(ControlRef theControl, SInt16 *keyCode, SInt16 *charCode, EventModifiers *modifiers);
+typedef ControlKeyFilterProcPtr ControlKeyFilterUPP;
+extern ControlKeyFilterUPP
+NewControlKeyFilterUPP(ControlKeyFilterProcPtr userRoutine) ;
+extern void
+DisposeControlKeyFilterUPP(ControlKeyFilterUPP userUPP) ;
+extern ControlKeyFilterResult
+InvokeControlKeyFilterUPP(
+  ControlRef theControl,
+  SInt16 * keyCode,
+  SInt16 * charCode,
+  EventModifiers * modifiers,
+  ControlKeyFilterUPP userUPP) ;
+
+
+
+
+
+
+
+enum {
+  noConstraint = kNoConstraint,
+  hAxisOnly = 1,
+  vAxisOnly = 2
+};
+
+
+
+
+
+enum {
+  kControlDefProcPtr = 0,
+  kControlDefObjectClass = 1
+};
+
+typedef UInt32 ControlDefType;
+struct ControlDefSpec {
+  ControlDefType defType;
+  union {
+    ControlDefUPP defProc;
+    void * classRef;
+  } u;
+};
+typedef struct ControlDefSpec ControlDefSpec;
+extern OSStatus
+CreateCustomControl(
+  WindowRef owningWindow,
+  const Rect * contBounds,
+  const ControlDefSpec * def,
+  Collection initData,
+  ControlRef * outControl) ;
+extern ControlRef
+NewControl(
+  WindowRef owningWindow,
+  const Rect * boundsRect,
+  ConstStr255Param controlTitle,
+  Boolean initiallyVisible,
+  SInt16 initialValue,
+  SInt16 minimumValue,
+  SInt16 maximumValue,
+  SInt16 procID,
+  SInt32 controlReference) ;
+extern ControlRef
+GetNewControl(
+  SInt16 resourceID,
+  WindowRef owningWindow) ;
+extern void
+DisposeControl(ControlRef theControl) ;
+extern void
+KillControls(WindowRef theWindow) ;
+typedef OSStatus ( * ControlCNTLToCollectionProcPtr)(const Rect *bounds, SInt16 value, Boolean visible, SInt16 max, SInt16 min, SInt16 procID, SInt32 refCon, ConstStr255Param title, Collection collection);
+typedef ControlCNTLToCollectionProcPtr ControlCNTLToCollectionUPP;
+extern ControlCNTLToCollectionUPP
+NewControlCNTLToCollectionUPP(ControlCNTLToCollectionProcPtr userRoutine) ;
+extern void
+DisposeControlCNTLToCollectionUPP(ControlCNTLToCollectionUPP userUPP) ;
+extern OSStatus
+InvokeControlCNTLToCollectionUPP(
+  const Rect * bounds,
+  SInt16 value,
+  Boolean visible,
+  SInt16 max,
+  SInt16 min,
+  SInt16 procID,
+  SInt32 refCon,
+  ConstStr255Param title,
+  Collection collection,
+  ControlCNTLToCollectionUPP userUPP) ;
+extern OSStatus
+RegisterControlDefinition(
+  SInt16 inCDEFResID,
+  const ControlDefSpec * inControlDef,
+  ControlCNTLToCollectionUPP inConversionProc) ;
+extern void
+HiliteControl(
+  ControlRef theControl,
+  ControlPartCode hiliteState) ;
+extern void
+ShowControl(ControlRef theControl) ;
+extern void
+HideControl(ControlRef theControl) ;
+extern Boolean
+IsControlActive(ControlRef inControl) ;
+extern Boolean
+IsControlVisible(ControlRef inControl) ;
+extern OSErr
+ActivateControl(ControlRef inControl) ;
+extern OSErr
+DeactivateControl(ControlRef inControl) ;
+extern OSErr
+SetControlVisibility(
+  ControlRef inControl,
+  Boolean inIsVisible,
+  Boolean inDoDraw) ;
+extern Boolean
+IsControlEnabled(ControlRef inControl) ;
+extern OSStatus
+EnableControl(ControlRef inControl) ;
+extern OSStatus
+DisableControl(ControlRef inControl) ;
+extern void
+DrawControls(WindowRef theWindow) ;
+extern void
+Draw1Control(ControlRef theControl) ;
+extern void
+UpdateControls(
+  WindowRef inWindow,
+  RgnHandle inUpdateRegion) ;
+extern OSErr
+GetBestControlRect(
+  ControlRef inControl,
+  Rect * outRect,
+  SInt16 * outBaseLineOffset) ;
+extern OSErr
+SetControlFontStyle(
+  ControlRef inControl,
+  const ControlFontStyleRec * inStyle) ;
+extern void
+DrawControlInCurrentPort(ControlRef inControl) ;
+extern OSErr
+SetUpControlBackground(
+  ControlRef inControl,
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+extern OSErr
+SetUpControlTextColor(
+  ControlRef inControl,
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+typedef OSStatus ( * ControlColorProcPtr)(ControlRef inControl, SInt16 inMessage, SInt16 inDrawDepth, Boolean inDrawInColor);
+typedef ControlColorProcPtr ControlColorUPP;
+extern ControlColorUPP
+NewControlColorUPP(ControlColorProcPtr userRoutine) ;
+extern void
+DisposeControlColorUPP(ControlColorUPP userUPP) ;
+extern OSStatus
+InvokeControlColorUPP(
+  ControlRef inControl,
+  SInt16 inMessage,
+  SInt16 inDrawDepth,
+  Boolean inDrawInColor,
+  ControlColorUPP userUPP) ;
+extern OSStatus
+SetControlColorProc(
+  ControlRef inControl,
+  ControlColorUPP inProc) ;
+extern ControlPartCode
+TrackControl(
+  ControlRef theControl,
+  Point startPoint,
+  ControlActionUPP actionProc) ;
+extern void
+DragControl(
+  ControlRef theControl,
+  Point startPoint,
+  const Rect * limitRect,
+  const Rect * slopRect,
+  DragConstraint axis) ;
+extern ControlPartCode
+TestControl(
+  ControlRef theControl,
+  Point testPoint) ;
+extern ControlPartCode
+FindControl(
+  Point testPoint,
+  WindowRef theWindow,
+  ControlRef * theControl) ;
+extern ControlRef
+FindControlUnderMouse(
+  Point inWhere,
+  WindowRef inWindow,
+  ControlPartCode * outPart) ;
+extern ControlPartCode
+HandleControlClick(
+  ControlRef inControl,
+  Point inWhere,
+  EventModifiers inModifiers,
+  ControlActionUPP inAction) ;
+extern OSStatus
+HandleControlContextualMenuClick(
+  ControlRef inControl,
+  Point inWhere,
+  Boolean * menuDisplayed) ;
+extern OSStatus
+GetControlClickActivation(
+  ControlRef inControl,
+  Point inWhere,
+  EventModifiers inModifiers,
+  ClickActivationResult * outResult) ;
+extern ControlPartCode
+HandleControlKey(
+  ControlRef inControl,
+  SInt16 inKeyCode,
+  SInt16 inCharCode,
+  EventModifiers inModifiers) ;
+extern void
+IdleControls(WindowRef inWindow) ;
+extern OSStatus
+HandleControlSetCursor(
+  ControlRef control,
+  Point localPoint,
+  EventModifiers modifiers,
+  Boolean * cursorWasSet) ;
+extern void
+MoveControl(
+  ControlRef theControl,
+  SInt16 h,
+  SInt16 v) ;
+extern void
+SizeControl(
+  ControlRef theControl,
+  SInt16 w,
+  SInt16 h) ;
+extern void
+SetControlTitle(
+  ControlRef theControl,
+  ConstStr255Param title) ;
+extern void
+GetControlTitle(
+  ControlRef theControl,
+  Str255 title) ;
+extern OSStatus
+SetControlTitleWithCFString(
+  ControlRef inControl,
+  CFStringRef inString) ;
+extern OSStatus
+CopyControlTitleAsCFString(
+  ControlRef inControl,
+  CFStringRef * outString) ;
+extern SInt16
+GetControlValue(ControlRef theControl) ;
+extern void
+SetControlValue(
+  ControlRef theControl,
+  SInt16 newValue) ;
+extern SInt16
+GetControlMinimum(ControlRef theControl) ;
+extern void
+SetControlMinimum(
+  ControlRef theControl,
+  SInt16 newMinimum) ;
+extern SInt16
+GetControlMaximum(ControlRef theControl) ;
+extern void
+SetControlMaximum(
+  ControlRef theControl,
+  SInt16 newMaximum) ;
+extern SInt32
+GetControlViewSize(ControlRef theControl) ;
+extern void
+SetControlViewSize(
+  ControlRef theControl,
+  SInt32 newViewSize) ;
+extern SInt32
+GetControl32BitValue(ControlRef theControl) ;
+extern void
+SetControl32BitValue(
+  ControlRef theControl,
+  SInt32 newValue) ;
+extern SInt32
+GetControl32BitMaximum(ControlRef theControl) ;
+extern void
+SetControl32BitMaximum(
+  ControlRef theControl,
+  SInt32 newMaximum) ;
+extern SInt32
+GetControl32BitMinimum(ControlRef theControl) ;
+extern void
+SetControl32BitMinimum(
+  ControlRef theControl,
+  SInt32 newMinimum) ;
+extern Boolean
+IsValidControlHandle(ControlRef theControl) ;
+
+
+
+
+
+
+struct ControlID {
+  OSType signature;
+  SInt32 id;
+};
+typedef struct ControlID ControlID;
+extern OSStatus
+SetControlID(
+  ControlRef inControl,
+  const ControlID * inID) ;
+extern OSStatus
+GetControlID(
+  ControlRef inControl,
+  ControlID * outID) ;
+extern OSStatus
+GetControlByID(
+  WindowRef inWindow,
+  const ControlID * inID,
+  ControlRef * outControl) ;
+extern OSStatus
+SetControlCommandID(
+  ControlRef inControl,
+  UInt32 inCommandID) ;
+extern OSStatus
+GetControlCommandID(
+  ControlRef inControl,
+  UInt32 * outCommandID) ;
+
+
+
+
+
+
+struct ControlKind {
+  OSType signature;
+  OSType kind;
+};
+typedef struct ControlKind ControlKind;
+
+
+
+
+
+enum {
+
+
+
+
+  kControlKindSignatureApple = 'appl'
+};
+extern OSStatus
+GetControlKind(
+  ControlRef inControl,
+  ControlKind * outControlKind) ;
+
+
+
+
+
+enum {
+  kControlPropertyPersistent = 0x00000001
+};
+extern OSStatus
+GetControlProperty(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 bufferSize,
+  UInt32 * actualSize,
+  void * propertyBuffer) ;
+extern OSStatus
+GetControlPropertySize(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 * size) ;
+extern OSStatus
+SetControlProperty(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 propertySize,
+  const void * propertyData) ;
+extern OSStatus
+RemoveControlProperty(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag) ;
+extern OSStatus
+GetControlPropertyAttributes(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 * attributes) ;
+extern OSStatus
+ChangeControlPropertyAttributes(
+  ControlRef control,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 attributesToSet,
+  UInt32 attributesToClear) ;
+extern OSStatus
+GetControlRegion(
+  ControlRef inControl,
+  ControlPartCode inPart,
+  RgnHandle outRegion) ;
+extern ControlVariant
+GetControlVariant(ControlRef theControl) ;
+extern void
+SetControlAction(
+  ControlRef theControl,
+  ControlActionUPP actionProc) ;
+extern ControlActionUPP
+GetControlAction(ControlRef theControl) ;
+extern void
+SetControlReference(
+  ControlRef theControl,
+  SInt32 data) ;
+extern SInt32
+GetControlReference(ControlRef theControl) ;
+extern SInt32
+SendControlMessage(
+  ControlRef inControl,
+  SInt16 inMessage,
+  void * inParam) ;
+extern OSErr
+DumpControlHierarchy(
+  WindowRef inWindow,
+  const FSSpec * inDumpFile) ;
+extern OSErr
+CreateRootControl(
+  WindowRef inWindow,
+  ControlRef * outControl) ;
+extern OSErr
+GetRootControl(
+  WindowRef inWindow,
+  ControlRef * outControl) ;
+extern OSErr
+EmbedControl(
+  ControlRef inControl,
+  ControlRef inContainer) ;
+extern OSErr
+AutoEmbedControl(
+  ControlRef inControl,
+  WindowRef inWindow) ;
+extern OSErr
+GetSuperControl(
+  ControlRef inControl,
+  ControlRef * outParent) ;
+extern OSErr
+CountSubControls(
+  ControlRef inControl,
+  UInt16 * outNumChildren) ;
+extern OSErr
+GetIndexedSubControl(
+  ControlRef inControl,
+  UInt16 inIndex,
+  ControlRef * outSubControl) ;
+extern OSErr
+SetControlSupervisor(
+  ControlRef inControl,
+  ControlRef inBoss) ;
+extern OSErr
+GetKeyboardFocus(
+  WindowRef inWindow,
+  ControlRef * outControl) ;
+extern OSErr
+SetKeyboardFocus(
+  WindowRef inWindow,
+  ControlRef inControl,
+  ControlFocusPart inPart) ;
+extern OSErr
+AdvanceKeyboardFocus(WindowRef inWindow) ;
+extern OSErr
+ReverseKeyboardFocus(WindowRef inWindow) ;
+extern OSErr
+ClearKeyboardFocus(WindowRef inWindow) ;
+extern OSErr
+GetControlFeatures(
+  ControlRef inControl,
+  UInt32 * outFeatures) ;
+extern OSErr
+SetControlData(
+  ControlRef inControl,
+  ControlPartCode inPart,
+  ResType inTagName,
+  Size inSize,
+  const void * inData) ;
+extern OSErr
+GetControlData(
+  ControlRef inControl,
+  ControlPartCode inPart,
+  ResType inTagName,
+  Size inBufferSize,
+  void * inBuffer,
+  Size * outActualSize) ;
+extern OSErr
+GetControlDataSize(
+  ControlRef inControl,
+  ControlPartCode inPart,
+  ResType inTagName,
+  Size * outMaxSize) ;
+enum {
+
+
+
+
+
+  kDragTrackingEnterControl = 2,
+
+
+
+
+
+  kDragTrackingInControl = 3,
+
+
+
+
+
+  kDragTrackingLeaveControl = 4
+};
+extern OSStatus
+HandleControlDragTracking(
+  ControlRef inControl,
+  DragTrackingMessage inMessage,
+  DragReference inDrag,
+  Boolean * outLikesDrag) ;
+extern OSStatus
+HandleControlDragReceive(
+  ControlRef inControl,
+  DragReference inDrag) ;
+extern OSStatus
+SetControlDragTrackingEnabled(
+  ControlRef inControl,
+  Boolean inTracks) ;
+extern OSStatus
+IsControlDragTrackingEnabled(
+  ControlRef inControl,
+  Boolean * outTracks) ;
+extern OSStatus
+SetAutomaticControlDragTrackingEnabledForWindow(
+  WindowRef inWindow,
+  Boolean inTracks) ;
+extern OSStatus
+IsAutomaticControlDragTrackingEnabledForWindow(
+  WindowRef inWindow,
+  Boolean * outTracks) ;
+extern Rect *
+GetControlBounds(
+  ControlRef control,
+  Rect * bounds) ;
+extern Boolean
+IsControlHilited(ControlRef control) ;
+extern UInt16
+GetControlHilite(ControlRef control) ;
+extern WindowRef
+GetControlOwner(ControlRef control) ;
+extern Handle
+GetControlDataHandle(ControlRef control) ;
+extern MenuRef
+GetControlPopupMenuHandle(ControlRef control) ;
+extern short
+GetControlPopupMenuID(ControlRef control) ;
+extern void
+SetControlDataHandle(
+  ControlRef control,
+  Handle dataHandle) ;
+extern void
+SetControlBounds(
+  ControlRef control,
+  const Rect * bounds) ;
+extern void
+SetControlPopupMenuHandle(
+  ControlRef control,
+  MenuRef popupMenu) ;
+extern void
+SetControlPopupMenuID(
+  ControlRef control,
+  short menuID) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef OSType PropertyCreator;
+typedef OSType PropertyTag;
+typedef UInt32 WindowClass;
+enum {
+  kAlertWindowClass = 1,
+  kMovableAlertWindowClass = 2,
+  kModalWindowClass = 3,
+  kMovableModalWindowClass = 4,
+  kFloatingWindowClass = 5,
+  kDocumentWindowClass = 6,
+  kUtilityWindowClass = 8,
+  kHelpWindowClass = 10,
+  kSheetWindowClass = 11,
+  kToolbarWindowClass = 12,
+  kPlainWindowClass = 13,
+  kOverlayWindowClass = 14,
+  kSheetAlertWindowClass = 15,
+  kAltPlainWindowClass = 16,
+  kDrawerWindowClass = 20,
+  kAllWindowClasses = (unsigned long)0xFFFFFFFF
+};
+
+
+
+
+
+
+typedef UInt32 WindowAttributes;
+
+
+
+
+
+enum {
+
+
+
+
+  kWindowNoAttributes = 0L,
+
+
+
+
+
+
+  kWindowCloseBoxAttribute = (1L << 0),
+
+
+
+
+
+
+  kWindowHorizontalZoomAttribute = (1L << 1),
+
+
+
+
+
+
+  kWindowVerticalZoomAttribute = (1L << 2),
+
+
+
+
+
+
+  kWindowFullZoomAttribute = (kWindowVerticalZoomAttribute | kWindowHorizontalZoomAttribute),
+
+
+
+
+
+
+
+  kWindowCollapseBoxAttribute = (1L << 3),
+
+
+
+
+
+
+  kWindowResizableAttribute = (1L << 4),
+
+
+
+
+
+
+  kWindowSideTitlebarAttribute = (1L << 5),
+
+
+
+
+
+  kWindowToolbarButtonAttribute = (1L << 6),
+  kWindowMetalAttribute = (1L << 8),
+
+
+
+
+  kWindowNoUpdatesAttribute = (1L << 16),
+
+
+
+
+  kWindowNoActivatesAttribute = (1L << 17),
+
+
+
+
+
+
+
+  kWindowOpaqueForEventsAttribute = (1L << 18),
+  kWindowCompositingAttribute = (1L << 19),
+
+
+
+
+
+
+  kWindowNoShadowAttribute = (1L << 21),
+
+
+
+
+
+
+
+  kWindowHideOnSuspendAttribute = (1L << 24),
+
+
+
+
+
+  kWindowStandardHandlerAttribute = (1L << 25),
+
+
+
+
+
+
+
+  kWindowHideOnFullScreenAttribute = (1L << 26),
+
+
+
+
+
+
+  kWindowInWindowMenuAttribute = (1L << 27),
+
+
+
+
+
+  kWindowLiveResizeAttribute = (1L << 28),
+
+
+
+
+
+
+
+  kWindowIgnoreClicksAttribute = (1L << 29),
+
+
+
+
+
+
+
+  kWindowNoConstrainAttribute = (unsigned long)((1L << 31)),
+
+
+
+
+
+  kWindowStandardDocumentAttributes = (kWindowCloseBoxAttribute | kWindowFullZoomAttribute | kWindowCollapseBoxAttribute | kWindowResizableAttribute),
+
+
+
+
+
+  kWindowStandardFloatingAttributes = (kWindowCloseBoxAttribute | kWindowCollapseBoxAttribute)
+};
+
+
+
+
+
+enum {
+  kWindowDefProcType = 'WDEF'
+};
+
+
+
+
+enum {
+  kStandardWindowDefinition = 0,
+  kRoundWindowDefinition = 1,
+  kFloatingWindowDefinition = 124
+};
+
+
+
+
+enum {
+
+  kDocumentWindowVariantCode = 0,
+  kModalDialogVariantCode = 1,
+  kPlainDialogVariantCode = 2,
+  kShadowDialogVariantCode = 3,
+  kMovableModalDialogVariantCode = 5,
+  kAlertVariantCode = 7,
+  kMovableAlertVariantCode = 9,
+  kSideFloaterVariantCode = 8
+};
+
+
+
+
+
+enum {
+
+  documentProc = 0,
+  dBoxProc = 1,
+  plainDBox = 2,
+  altDBoxProc = 3,
+  noGrowDocProc = 4,
+  movableDBoxProc = 5,
+  zoomDocProc = 8,
+  zoomNoGrow = 12,
+  floatProc = 1985,
+  floatGrowProc = 1987,
+  floatZoomProc = 1989,
+  floatZoomGrowProc = 1991,
+  floatSideProc = 1993,
+  floatSideGrowProc = 1995,
+  floatSideZoomProc = 1997,
+  floatSideZoomGrowProc = 1999
+};
+enum {
+
+  kWindowDocumentDefProcResID = 64,
+  kWindowDialogDefProcResID = 65,
+  kWindowUtilityDefProcResID = 66,
+  kWindowUtilitySideTitleDefProcResID = 67,
+  kWindowSheetDefProcResID = 68,
+  kWindowSimpleDefProcResID = 69,
+  kWindowSheetAlertDefProcResID = 70
+};
+
+enum {
+
+  kWindowDocumentProc = 1024,
+  kWindowGrowDocumentProc = 1025,
+  kWindowVertZoomDocumentProc = 1026,
+  kWindowVertZoomGrowDocumentProc = 1027,
+  kWindowHorizZoomDocumentProc = 1028,
+  kWindowHorizZoomGrowDocumentProc = 1029,
+  kWindowFullZoomDocumentProc = 1030,
+  kWindowFullZoomGrowDocumentProc = 1031
+};
+
+
+enum {
+
+  kWindowPlainDialogProc = 1040,
+  kWindowShadowDialogProc = 1041,
+  kWindowModalDialogProc = 1042,
+  kWindowMovableModalDialogProc = 1043,
+  kWindowAlertProc = 1044,
+  kWindowMovableAlertProc = 1045
+};
+
+
+enum {
+
+  kWindowMovableModalGrowProc = 1046
+};
+
+
+enum {
+
+  kWindowFloatProc = 1057,
+  kWindowFloatGrowProc = 1059,
+  kWindowFloatVertZoomProc = 1061,
+  kWindowFloatVertZoomGrowProc = 1063,
+  kWindowFloatHorizZoomProc = 1065,
+  kWindowFloatHorizZoomGrowProc = 1067,
+  kWindowFloatFullZoomProc = 1069,
+  kWindowFloatFullZoomGrowProc = 1071
+};
+
+
+enum {
+
+  kWindowFloatSideProc = 1073,
+  kWindowFloatSideGrowProc = 1075,
+  kWindowFloatSideVertZoomProc = 1077,
+  kWindowFloatSideVertZoomGrowProc = 1079,
+  kWindowFloatSideHorizZoomProc = 1081,
+  kWindowFloatSideHorizZoomGrowProc = 1083,
+  kWindowFloatSideFullZoomProc = 1085,
+  kWindowFloatSideFullZoomGrowProc = 1087
+};
+
+
+enum {
+
+  kWindowSheetProc = 1088,
+  kWindowSheetAlertProc = 1120
+};
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kWindowSimpleProc = 1104,
+
+
+
+
+  kWindowSimpleFrameProc = 1105
+};
+enum {
+  kWindowNoPosition = 0x0000,
+  kWindowDefaultPosition = 0x0000,
+  kWindowCenterMainScreen = 0x280A,
+  kWindowAlertPositionMainScreen = 0x300A,
+  kWindowStaggerMainScreen = 0x380A,
+  kWindowCenterParentWindow = 0xA80A,
+  kWindowAlertPositionParentWindow = 0xB00A,
+  kWindowStaggerParentWindow = 0xB80A,
+  kWindowCenterParentWindowScreen = 0x680A,
+  kWindowAlertPositionParentWindowScreen = 0x700A,
+  kWindowStaggerParentWindowScreen = 0x780A
+};
+typedef UInt32 WindowPositionMethod;
+enum {
+
+
+
+
+  kWindowCenterOnMainScreen = 1,
+
+
+
+
+  kWindowCenterOnParentWindow = 2,
+
+
+
+
+
+  kWindowCenterOnParentWindowScreen = 3,
+
+
+
+
+  kWindowCascadeOnMainScreen = 4,
+
+
+
+
+  kWindowCascadeOnParentWindow = 5,
+
+
+
+
+
+  kWindowCascadeOnParentWindowScreen = 6,
+
+
+
+
+
+
+
+  kWindowCascadeStartAtParentWindowScreen = 10,
+
+
+
+
+  kWindowAlertPositionOnMainScreen = 7,
+
+
+
+
+  kWindowAlertPositionOnParentWindow = 8,
+
+
+
+
+
+  kWindowAlertPositionOnParentWindowScreen = 9
+};
+
+
+
+
+
+typedef UInt16 WindowRegionCode;
+enum {
+
+  kWindowTitleBarRgn = 0,
+  kWindowTitleTextRgn = 1,
+  kWindowCloseBoxRgn = 2,
+  kWindowZoomBoxRgn = 3,
+  kWindowDragRgn = 5,
+  kWindowGrowRgn = 6,
+  kWindowCollapseBoxRgn = 7,
+  kWindowTitleProxyIconRgn = 8,
+  kWindowStructureRgn = 32,
+  kWindowContentRgn = 33,
+  kWindowUpdateRgn = 34,
+  kWindowOpaqueRgn = 35,
+  kWindowGlobalPortRgn = 40
+};
+
+
+struct GetWindowRegionRec {
+  RgnHandle winRgn;
+  WindowRegionCode regionCode;
+};
+typedef struct GetWindowRegionRec GetWindowRegionRec;
+typedef GetWindowRegionRec * GetWindowRegionPtr;
+typedef GetWindowRegionRec * GetWindowRegionRecPtr;
+struct SetupWindowProxyDragImageRec {
+  GWorldPtr imageGWorld;
+  RgnHandle imageRgn;
+  RgnHandle outlineRgn;
+};
+typedef struct SetupWindowProxyDragImageRec SetupWindowProxyDragImageRec;
+
+struct MeasureWindowTitleRec {
+
+  SInt16 fullTitleWidth;
+  SInt16 titleTextWidth;
+
+
+  Boolean isUnicodeTitle;
+  Boolean unused;
+};
+typedef struct MeasureWindowTitleRec MeasureWindowTitleRec;
+typedef MeasureWindowTitleRec * MeasureWindowTitleRecPtr;
+
+
+
+
+
+
+
+struct GetGrowImageRegionRec {
+  Rect growRect;
+  RgnHandle growImageRegion;
+};
+typedef struct GetGrowImageRegionRec GetGrowImageRegionRec;
+
+
+
+enum {
+  dialogKind = 2,
+  userKind = 8,
+  kDialogWindowKind = 2,
+  kApplicationWindowKind = 8
+};
+
+
+
+
+
+typedef SInt16 WindowPartCode;
+enum {
+  inDesk = 0,
+  inNoWindow = 0,
+  inMenuBar = 1,
+  inSysWindow = 2,
+  inContent = 3,
+  inDrag = 4,
+  inGrow = 5,
+  inGoAway = 6,
+  inZoomIn = 7,
+  inZoomOut = 8,
+  inCollapseBox = 11,
+  inProxyIcon = 12,
+  inToolbarButton = 13,
+  inStructure = 15
+};
+
+
+
+
+typedef SInt16 WindowDefPartCode;
+enum {
+  wNoHit = 0,
+  wInContent = 1,
+  wInDrag = 2,
+  wInGrow = 3,
+  wInGoAway = 4,
+  wInZoomIn = 5,
+  wInZoomOut = 6,
+  wInCollapseBox = 9,
+  wInProxyIcon = 10,
+  wInToolbarButton = 11,
+  wInStructure = 13
+};
+
+
+
+
+
+enum {
+  kWindowMsgDraw = 0,
+  kWindowMsgHitTest = 1,
+  kWindowMsgCalculateShape = 2,
+  kWindowMsgInitialize = 3,
+  kWindowMsgCleanUp = 4,
+  kWindowMsgDrawGrowOutline = 5,
+  kWindowMsgDrawGrowBox = 6
+};
+
+
+enum {
+  kWindowMsgGetFeatures = 7,
+  kWindowMsgGetRegion = 8
+};
+
+
+enum {
+  kWindowMsgDragHilite = 9,
+  kWindowMsgModified = 10,
+  kWindowMsgDrawInCurrentPort = 11,
+  kWindowMsgSetupProxyDragImage = 12,
+  kWindowMsgStateChanged = 13,
+  kWindowMsgMeasureTitle = 14
+};
+
+
+enum {
+  kWindowMsgGetGrowImageRegion = 19
+};
+
+
+enum {
+  wDraw = 0,
+  wHit = 1,
+  wCalcRgns = 2,
+  wNew = 3,
+  wDispose = 4,
+  wGrow = 5,
+  wDrawGIcon = 6
+};
+
+
+
+
+enum {
+  kWindowStateTitleChanged = (1 << 0)
+};
+
+
+
+
+
+enum {
+  kWindowCanGrow = (1 << 0),
+  kWindowCanZoom = (1 << 1),
+  kWindowCanCollapse = (1 << 2),
+  kWindowIsModal = (1 << 3),
+  kWindowCanGetWindowRegion = (1 << 4),
+  kWindowIsAlert = (1 << 5),
+  kWindowHasTitleBar = (1 << 6)
+};
+
+
+enum {
+  kWindowSupportsDragHilite = (1 << 7),
+  kWindowSupportsModifiedBit = (1 << 8),
+  kWindowCanDrawInCurrentPort = (1 << 9),
+  kWindowCanSetupProxyDragImage = (1 << 10),
+  kWindowCanMeasureTitle = (1 << 11),
+  kWindowWantsDisposeAtProcessDeath = (1 << 12),
+  kWindowSupportsGetGrowImageRegion = (1 << 13),
+  kWindowDefSupportsColorGrafPort = 0x40000002
+};
+
+
+enum {
+  kWindowIsOpaque = (1 << 14)
+};
+
+
+
+
+
+enum {
+  kWindowSupportsSetGrowImageRegion = (1 << 13)
+};
+
+
+
+
+enum {
+  deskPatID = 16
+};
+
+
+
+
+
+
+enum {
+  wContentColor = 0,
+  wFrameColor = 1,
+  wTextColor = 2,
+  wHiliteColor = 3,
+  wTitleBarColor = 4
+};
+
+
+
+
+
+
+enum {
+  kMouseUpOutOfSlop = (long)0x80008000
+};
+
+
+
+
+
+struct WinCTab {
+  long wCSeed;
+  short wCReserved;
+  short ctSize;
+  ColorSpec ctTable[5];
+};
+typedef struct WinCTab WinCTab;
+typedef WinCTab * WCTabPtr;
+typedef WCTabPtr * WCTabHandle;
+enum {
+  kWindowDefinitionVersionOne = 1,
+  kWindowDefinitionVersionTwo = 2
+};
+
+
+enum {
+  kWindowIsCollapsedState = (1 << 0L)
+};
+
+struct BasicWindowDescription {
+  UInt32 descriptionSize;
+
+  Rect windowContentRect;
+  Rect windowZoomRect;
+  UInt32 windowRefCon;
+  UInt32 windowStateFlags;
+  WindowPositionMethod windowPositionMethod;
+
+  UInt32 windowDefinitionVersion;
+  union {
+    struct {
+      SInt16 windowDefProc;
+      Boolean windowHasCloseBox;
+    } versionOne;
+
+    struct {
+      WindowClass windowClass;
+      WindowAttributes windowAttributes;
+    } versionTwo;
+
+  } windowDefinition;
+};
+typedef struct BasicWindowDescription BasicWindowDescription;
+
+enum {
+  kStoredWindowSystemTag = 'appl',
+  kStoredBasicWindowDescriptionID = 'sbas',
+  kStoredWindowPascalTitleID = 's255'
+};
+
+enum {
+  kStoredWindowUnicodeTitleID = 'ustr',
+  kStoredWindowTitleCFStringID = 'cfst'
+};
+struct WStateData {
+  Rect userState;
+  Rect stdState;
+};
+typedef struct WStateData WStateData;
+typedef WStateData * WStateDataPtr;
+typedef WStateDataPtr * WStateDataHandle;
+
+
+
+typedef long ( * WindowDefProcPtr)(short varCode, WindowRef window, short message, long param);
+typedef void ( * DeskHookProcPtr)(Boolean mouseClick, EventRecord *theEvent);
+typedef OSStatus ( * WindowPaintProcPtr)(GDHandle device, GrafPtr qdContext, WindowRef window, RgnHandle inClientPaintRgn, RgnHandle outSystemPaintRgn, void *refCon);
+typedef WindowDefProcPtr WindowDefUPP;
+typedef DeskHookProcPtr DeskHookUPP;
+typedef WindowPaintProcPtr WindowPaintUPP;
+extern WindowDefUPP
+NewWindowDefUPP(WindowDefProcPtr userRoutine) ;
+extern WindowPaintUPP
+NewWindowPaintUPP(WindowPaintProcPtr userRoutine) ;
+extern void
+DisposeWindowDefUPP(WindowDefUPP userUPP) ;
+extern void
+DisposeWindowPaintUPP(WindowPaintUPP userUPP) ;
+extern long
+InvokeWindowDefUPP(
+  short varCode,
+  WindowRef window,
+  short message,
+  long param,
+  WindowDefUPP userUPP) ;
+extern OSStatus
+InvokeWindowPaintUPP(
+  GDHandle device,
+  GrafPtr qdContext,
+  WindowRef window,
+  RgnHandle inClientPaintRgn,
+  RgnHandle outSystemPaintRgn,
+  void * refCon,
+  WindowPaintUPP userUPP) ;
+
+
+
+
+enum {
+  kWindowDefProcPtr = 0,
+  kWindowDefObjectClass = 1,
+  kWindowDefProcID = 2,
+  kWindowDefHIView = 3
+};
+
+typedef UInt32 WindowDefType;
+struct WindowDefSpec {
+  WindowDefType defType;
+  union {
+    WindowDefUPP defProc;
+    void * classRef;
+    short procID;
+    void * rootView;
+  } u;
+};
+typedef struct WindowDefSpec WindowDefSpec;
+typedef WindowDefSpec * WindowDefSpecPtr;
+extern WindowRef
+GetNewCWindow(
+  short windowID,
+  void * wStorage,
+  WindowRef behind) ;
+extern WindowRef
+NewWindow(
+  void * wStorage,
+  const Rect * boundsRect,
+  ConstStr255Param title,
+  Boolean visible,
+  short theProc,
+  WindowRef behind,
+  Boolean goAwayFlag,
+  long refCon) ;
+extern WindowRef
+GetNewWindow(
+  short windowID,
+  void * wStorage,
+  WindowRef behind) ;
+extern WindowRef
+NewCWindow(
+  void * wStorage,
+  const Rect * boundsRect,
+  ConstStr255Param title,
+  Boolean visible,
+  short procID,
+  WindowRef behind,
+  Boolean goAwayFlag,
+  long refCon) ;
+extern void
+DisposeWindow(WindowRef window) ;
+extern OSStatus
+CreateNewWindow(
+  WindowClass windowClass,
+  WindowAttributes attributes,
+  const Rect * contentBounds,
+  WindowRef * outWindow) ;
+extern OSStatus
+CreateWindowFromResource(
+  SInt16 resID,
+  WindowRef * outWindow) ;
+extern OSStatus
+StoreWindowIntoCollection(
+  WindowRef window,
+  Collection collection) ;
+extern OSStatus
+CreateWindowFromCollection(
+  Collection collection,
+  WindowRef * outWindow) ;
+extern OSStatus
+GetWindowOwnerCount(
+  WindowRef window,
+  UInt32 * outCount) ;
+extern OSStatus
+CloneWindow(WindowRef window) ;
+extern ItemCount
+GetWindowRetainCount(WindowRef inWindow) ;
+extern OSStatus
+RetainWindow(WindowRef inWindow) ;
+extern OSStatus
+ReleaseWindow(WindowRef inWindow) ;
+extern OSStatus
+CreateCustomWindow(
+  const WindowDefSpec * def,
+  WindowClass windowClass,
+  WindowAttributes attributes,
+  const Rect * contentBounds,
+  WindowRef * outWindow) ;
+extern OSStatus
+ReshapeCustomWindow(WindowRef window) ;
+extern OSStatus
+RegisterWindowDefinition(
+  SInt16 inResID,
+  const WindowDefSpec * inDefSpec) ;
+extern OSStatus
+GetWindowWidgetHilite(
+  WindowRef inWindow,
+  WindowDefPartCode * outHilite) ;
+extern Boolean
+IsValidWindowClass(WindowClass inClass) ;
+extern WindowAttributes
+GetAvailableWindowAttributes(WindowClass inClass) ;
+extern OSStatus
+GetWindowClass(
+  WindowRef window,
+  WindowClass * outClass) ;
+extern OSStatus
+GetWindowAttributes(
+  WindowRef window,
+  WindowAttributes * outAttributes) ;
+extern OSStatus
+ChangeWindowAttributes(
+  WindowRef window,
+  WindowAttributes setTheseAttributes,
+  WindowAttributes clearTheseAttributes) ;
+extern OSStatus
+SetWindowClass(
+  WindowRef inWindow,
+  WindowClass inWindowClass) ;
+typedef UInt32 WindowModality;
+enum {
+
+
+
+
+
+  kWindowModalityNone = 0,
+
+
+
+
+
+
+  kWindowModalitySystemModal = 1,
+
+
+
+
+
+  kWindowModalityAppModal = 2,
+
+
+
+
+  kWindowModalityWindowModal = 3
+};
+extern OSStatus
+SetWindowModality(
+  WindowRef inWindow,
+  WindowModality inModalKind,
+  WindowRef inUnavailableWindow) ;
+extern OSStatus
+GetWindowModality(
+  WindowRef inWindow,
+  WindowModality * outModalKind,
+  WindowRef * outUnavailableWindow) ;
+extern OSStatus
+ShowFloatingWindows(void) ;
+extern OSStatus
+HideFloatingWindows(void) ;
+extern Boolean
+AreFloatingWindowsVisible(void) ;
+typedef struct OpaqueWindowGroupRef* WindowGroupRef;
+typedef UInt32 WindowGroupAttributes;
+enum {
+
+
+
+
+
+
+
+  kWindowGroupAttrSelectAsLayer = 1 << 0,
+
+
+
+
+
+
+  kWindowGroupAttrMoveTogether = 1 << 1,
+  kWindowGroupAttrLayerTogether = 1 << 2,
+
+
+
+
+
+
+
+  kWindowGroupAttrSharedActivation = 1 << 3,
+  kWindowGroupAttrHideOnCollapse = 1 << 4
+};
+typedef UInt32 WindowActivationScope;
+enum {
+  kWindowActivationScopeNone = 0,
+
+
+
+
+
+
+
+  kWindowActivationScopeIndependent = 1,
+
+
+
+
+
+
+
+  kWindowActivationScopeAll = 2
+};
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+  kNextWindowGroup = true,
+
+
+
+
+
+  kPreviousWindowGroup = false
+};
+typedef UInt32 WindowGroupContentOptions;
+enum {
+
+
+
+
+
+
+  kWindowGroupContentsReturnWindows = 1 << 0,
+
+
+
+
+
+
+
+  kWindowGroupContentsRecurse = 1 << 1,
+
+
+
+
+
+
+  kWindowGroupContentsVisible = 1 << 2
+};
+extern OSStatus
+CreateWindowGroup(
+  WindowGroupAttributes inAttributes,
+  WindowGroupRef * outGroup) ;
+extern OSStatus
+RetainWindowGroup(WindowGroupRef inGroup) ;
+extern OSStatus
+ReleaseWindowGroup(WindowGroupRef inGroup) ;
+extern ItemCount
+GetWindowGroupRetainCount(WindowGroupRef inGroup) ;
+extern WindowGroupRef
+GetWindowGroupOfClass(WindowClass windowClass) ;
+extern OSStatus
+SetWindowGroupName(
+  WindowGroupRef inGroup,
+  CFStringRef inName) ;
+extern OSStatus
+CopyWindowGroupName(
+  WindowGroupRef inGroup,
+  CFStringRef * outName) ;
+extern OSStatus
+GetWindowGroupAttributes(
+  WindowGroupRef inGroup,
+  WindowGroupAttributes * outAttributes) ;
+extern OSStatus
+ChangeWindowGroupAttributes(
+  WindowGroupRef inGroup,
+  WindowGroupAttributes setTheseAttributes,
+  WindowGroupAttributes clearTheseAttributes) ;
+extern OSStatus
+SetWindowGroupLevel(
+  WindowGroupRef inGroup,
+  SInt32 inLevel) ;
+extern OSStatus
+GetWindowGroupLevel(
+  WindowGroupRef inGroup,
+  SInt32 * outLevel) ;
+extern OSStatus
+SendWindowGroupBehind(
+  WindowGroupRef inGroup,
+  WindowGroupRef behindGroup) ;
+extern WindowGroupRef
+GetWindowGroup(WindowRef inWindow) ;
+extern OSStatus
+SetWindowGroup(
+  WindowRef inWindow,
+  WindowGroupRef inNewGroup) ;
+extern Boolean
+IsWindowContainedInGroup(
+  WindowRef inWindow,
+  WindowGroupRef inGroup) ;
+extern WindowGroupRef
+GetWindowGroupParent(WindowGroupRef inGroup) ;
+extern OSStatus
+SetWindowGroupParent(
+  WindowGroupRef inGroup,
+  WindowGroupRef inNewGroup) ;
+extern WindowGroupRef
+GetWindowGroupSibling(
+  WindowGroupRef inGroup,
+  Boolean inNextGroup) ;
+extern WindowRef
+GetWindowGroupOwner(WindowGroupRef inGroup) ;
+extern OSStatus
+SetWindowGroupOwner(
+  WindowGroupRef inGroup,
+  WindowRef inWindow) ;
+extern ItemCount
+CountWindowGroupContents(
+  WindowGroupRef inGroup,
+  WindowGroupContentOptions inOptions) ;
+extern OSStatus
+GetWindowGroupContents(
+  WindowGroupRef inGroup,
+  WindowGroupContentOptions inOptions,
+  ItemCount inAllowedItems,
+  ItemCount * outNumItems,
+  void ** outItems) ;
+extern OSStatus
+GetIndexedWindow(
+  WindowGroupRef inGroup,
+  UInt32 inIndex,
+  WindowGroupContentOptions inOptions,
+  WindowRef * outWindow) ;
+extern OSStatus
+GetWindowIndex(
+  WindowRef inWindow,
+  WindowGroupRef inStartGroup,
+  WindowGroupContentOptions inOptions,
+  UInt32 * outIndex) ;
+extern WindowRef
+ActiveNonFloatingWindow(void) ;
+extern Boolean
+IsWindowActive(WindowRef inWindow) ;
+extern OSStatus
+ActivateWindow(
+  WindowRef inWindow,
+  Boolean inActivate) ;
+extern OSStatus
+GetWindowActivationScope(
+  WindowRef inWindow,
+  WindowActivationScope * outScope) ;
+extern OSStatus
+SetWindowActivationScope(
+  WindowRef inWindow,
+  WindowActivationScope inScope) ;
+extern void
+DebugPrintWindowGroup(WindowGroupRef inGroup) ;
+extern void
+DebugPrintAllWindowGroups(void) ;
+extern OSStatus
+SetWindowContentColor(
+  WindowRef window,
+  const RGBColor * color) ;
+extern OSStatus
+GetWindowContentColor(
+  WindowRef window,
+  RGBColor * color) ;
+extern OSStatus
+GetWindowContentPattern(
+  WindowRef window,
+  PixPatHandle outPixPat) ;
+extern OSStatus
+SetWindowContentPattern(
+  WindowRef window,
+  PixPatHandle pixPat) ;
+
+
+
+typedef OptionBits WindowPaintProcOptions;
+enum {
+  kWindowPaintProcOptionsNone = 0
+};
+extern OSStatus
+InstallWindowContentPaintProc(
+  WindowRef window,
+  WindowPaintUPP paintProc,
+  WindowPaintProcOptions options,
+  void * refCon) ;
+
+
+
+
+
+typedef UInt32 ScrollWindowOptions;
+enum {
+  kScrollWindowNoOptions = 0,
+  kScrollWindowInvalidate = (1L << 0),
+  kScrollWindowEraseToPortBackground = (1L << 1)
+};
+extern OSStatus
+ScrollWindowRect(
+  WindowRef inWindow,
+  const Rect * inScrollRect,
+  SInt16 inHPixels,
+  SInt16 inVPixels,
+  ScrollWindowOptions inOptions,
+  RgnHandle outExposedRgn) ;
+extern OSStatus
+ScrollWindowRegion(
+  WindowRef inWindow,
+  RgnHandle inScrollRgn,
+  SInt16 inHPixels,
+  SInt16 inVPixels,
+  ScrollWindowOptions inOptions,
+  RgnHandle outExposedRgn) ;
+extern void
+ClipAbove(WindowRef window) ;
+extern void
+PaintOne(
+  WindowRef window,
+  RgnHandle clobberedRgn) ;
+extern void
+PaintBehind(
+  WindowRef startWindow,
+  RgnHandle clobberedRgn) ;
+extern void
+CalcVis(WindowRef window) ;
+extern void
+CalcVisBehind(
+  WindowRef startWindow,
+  RgnHandle clobberedRgn) ;
+extern Boolean
+CheckUpdate(EventRecord * theEvent) ;
+extern WindowPartCode
+FindWindow(
+  Point thePoint,
+  WindowRef * window) ;
+extern WindowRef
+FrontWindow(void) ;
+extern void
+BringToFront(WindowRef window) ;
+extern void
+SendBehind(
+  WindowRef window,
+  WindowRef behindWindow) ;
+extern void
+SelectWindow(WindowRef window) ;
+extern WindowRef
+FrontNonFloatingWindow(void) ;
+extern WindowRef
+GetNextWindowOfClass(
+  WindowRef inWindow,
+  WindowClass inWindowClass,
+  Boolean mustBeVisible) ;
+extern WindowRef
+GetFrontWindowOfClass(
+  WindowClass inWindowClass,
+  Boolean mustBeVisible) ;
+extern OSStatus
+FindWindowOfClass(
+  const Point * where,
+  WindowClass inWindowClass,
+  WindowRef * outWindow,
+  WindowPartCode * outWindowPart) ;
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+  kWindowMenuIncludeRotate = 1 << 0
+};
+extern OSStatus
+CreateStandardWindowMenu(
+  OptionBits inOptions,
+  MenuRef * outMenu) ;
+extern OSStatus
+SetWindowAlternateTitle(
+  WindowRef inWindow,
+  CFStringRef inTitle) ;
+extern OSStatus
+CopyWindowAlternateTitle(
+  WindowRef inWindow,
+  CFStringRef * outTitle) ;
+extern Boolean
+IsValidWindowPtr(WindowRef possibleWindow) ;
+extern void
+HiliteWindow(
+  WindowRef window,
+  Boolean fHilite) ;
+extern void
+SetWRefCon(
+  WindowRef window,
+  long data) ;
+extern long
+GetWRefCon(WindowRef window) ;
+extern void
+SetWindowPic(
+  WindowRef window,
+  PicHandle pic) ;
+extern PicHandle
+GetWindowPic(WindowRef window) ;
+extern short
+GetWVariant(WindowRef window) ;
+extern OSStatus
+GetWindowFeatures(
+  WindowRef window,
+  UInt32 * outFeatures) ;
+extern OSStatus
+GetWindowRegion(
+  WindowRef window,
+  WindowRegionCode inRegionCode,
+  RgnHandle ioWinRgn) ;
+extern OSStatus
+GetWindowStructureWidths(
+  WindowRef inWindow,
+  Rect * outRect) ;
+extern void
+BeginUpdate(WindowRef window) ;
+extern void
+EndUpdate(WindowRef window) ;
+extern OSStatus
+InvalWindowRgn(
+  WindowRef window,
+  RgnHandle region) ;
+extern OSStatus
+InvalWindowRect(
+  WindowRef window,
+  const Rect * bounds) ;
+extern OSStatus
+ValidWindowRgn(
+  WindowRef window,
+  RgnHandle region) ;
+extern OSStatus
+ValidWindowRect(
+  WindowRef window,
+  const Rect * bounds) ;
+extern void
+DrawGrowIcon(WindowRef window) ;
+extern void
+SetWTitle(
+  WindowRef window,
+  ConstStr255Param title) ;
+extern void
+GetWTitle(
+  WindowRef window,
+  Str255 title) ;
+extern OSStatus
+SetWindowTitleWithCFString(
+  WindowRef inWindow,
+  CFStringRef inString) ;
+extern OSStatus
+CopyWindowTitleAsCFString(
+  WindowRef inWindow,
+  CFStringRef * outString) ;
+extern OSStatus
+SetWindowProxyFSSpec(
+  WindowRef window,
+  const FSSpec * inFile) ;
+extern OSStatus
+GetWindowProxyFSSpec(
+  WindowRef window,
+  FSSpec * outFile) ;
+extern OSStatus
+SetWindowProxyAlias(
+  WindowRef inWindow,
+  AliasHandle inAlias) ;
+extern OSStatus
+GetWindowProxyAlias(
+  WindowRef window,
+  AliasHandle * alias) ;
+extern OSStatus
+SetWindowProxyCreatorAndType(
+  WindowRef window,
+  OSType fileCreator,
+  OSType fileType,
+  SInt16 vRefNum) ;
+extern OSStatus
+GetWindowProxyIcon(
+  WindowRef window,
+  IconRef * outIcon) ;
+extern OSStatus
+SetWindowProxyIcon(
+  WindowRef window,
+  IconRef icon) ;
+extern OSStatus
+RemoveWindowProxy(WindowRef window) ;
+extern OSStatus
+BeginWindowProxyDrag(
+  WindowRef window,
+  DragReference * outNewDrag,
+  RgnHandle outDragOutlineRgn) ;
+extern OSStatus
+EndWindowProxyDrag(
+  WindowRef window,
+  DragReference theDrag) ;
+extern OSStatus
+TrackWindowProxyFromExistingDrag(
+  WindowRef window,
+  Point startPt,
+  DragReference drag,
+  RgnHandle inDragOutlineRgn) ;
+extern OSStatus
+TrackWindowProxyDrag(
+  WindowRef window,
+  Point startPt) ;
+extern Boolean
+IsWindowModified(WindowRef window) ;
+extern OSStatus
+SetWindowModified(
+  WindowRef window,
+  Boolean modified) ;
+extern Boolean
+IsWindowPathSelectClick(
+  WindowRef window,
+  const EventRecord * event) ;
+extern OSStatus
+WindowPathSelect(
+  WindowRef window,
+  MenuRef menu,
+  SInt32 * outMenuResult) ;
+extern Boolean
+IsWindowPathSelectEvent(
+  WindowRef window,
+  EventRef inEvent) ;
+extern OSStatus
+HiliteWindowFrameForDrag(
+  WindowRef window,
+  Boolean hilited) ;
+typedef UInt32 WindowTransitionEffect;
+enum {
+
+
+
+
+
+  kWindowZoomTransitionEffect = 1,
+
+
+
+
+
+
+  kWindowSheetTransitionEffect = 2,
+
+
+
+
+
+
+  kWindowSlideTransitionEffect = 3
+};
+typedef UInt32 WindowTransitionAction;
+enum {
+
+
+
+
+
+
+
+  kWindowShowTransitionAction = 1,
+
+
+
+
+
+
+
+  kWindowHideTransitionAction = 2,
+
+
+
+
+
+
+
+  kWindowMoveTransitionAction = 3,
+
+
+
+
+
+
+
+  kWindowResizeTransitionAction = 4
+};
+extern OSStatus
+TransitionWindow(
+  WindowRef inWindow,
+  WindowTransitionEffect inEffect,
+  WindowTransitionAction inAction,
+  const Rect * inRect) ;
+extern OSStatus
+TransitionWindowAndParent(
+  WindowRef inWindow,
+  WindowRef inParentWindow,
+  WindowTransitionEffect inEffect,
+  WindowTransitionAction inAction,
+  const Rect * inRect) ;
+extern void
+MoveWindow(
+  WindowRef window,
+  short hGlobal,
+  short vGlobal,
+  Boolean front) ;
+extern void
+SizeWindow(
+  WindowRef window,
+  short w,
+  short h,
+  Boolean fUpdate) ;
+extern long
+GrowWindow(
+  WindowRef window,
+  Point startPt,
+  const Rect * bBox) ;
+extern void
+DragWindow(
+  WindowRef window,
+  Point startPt,
+  const Rect * boundsRect) ;
+extern void
+ZoomWindow(
+  WindowRef window,
+  WindowPartCode partCode,
+  Boolean front) ;
+extern Boolean
+IsWindowCollapsable(WindowRef window) ;
+extern Boolean
+IsWindowCollapsed(WindowRef window) ;
+extern OSStatus
+CollapseWindow(
+  WindowRef window,
+  Boolean collapse) ;
+extern OSStatus
+CollapseAllWindows(Boolean collapse) ;
+extern OSStatus
+CreateQDContextForCollapsedWindowDockTile(
+  WindowRef inWindow,
+  CGrafPtr * outContext) ;
+extern OSStatus
+ReleaseQDContextForCollapsedWindowDockTile(
+  WindowRef inWindow,
+  CGrafPtr inContext) ;
+extern OSStatus
+UpdateCollapsedWindowDockTile(WindowRef inWindow) ;
+extern OSStatus
+SetWindowDockTileMenu(
+  WindowRef inWindow,
+  MenuRef inMenu) ;
+extern MenuRef
+GetWindowDockTileMenu(WindowRef inWindow) ;
+extern OSStatus
+GetWindowBounds(
+  WindowRef window,
+  WindowRegionCode regionCode,
+  Rect * globalBounds) ;
+extern OSStatus
+SetWindowResizeLimits(
+  WindowRef inWindow,
+  const HISize * inMinLimits,
+  const HISize * inMaxLimits) ;
+extern OSStatus
+GetWindowResizeLimits(
+  WindowRef inWindow,
+  HISize * outMinLimits,
+  HISize * outMaxLimits) ;
+extern Boolean
+ResizeWindow(
+  WindowRef inWindow,
+  Point inStartPoint,
+  const Rect * inSizeConstraints,
+  Rect * outNewContentRect) ;
+extern OSStatus
+SetWindowBounds(
+  WindowRef window,
+  WindowRegionCode regionCode,
+  const Rect * globalBounds) ;
+extern OSStatus
+RepositionWindow(
+  WindowRef window,
+  WindowRef parentWindow,
+  WindowPositionMethod method) ;
+extern OSStatus
+MoveWindowStructure(
+  WindowRef window,
+  short hGlobal,
+  short vGlobal) ;
+extern Boolean
+IsWindowInStandardState(
+  WindowRef inWindow,
+  const Point * inIdealSize,
+  Rect * outIdealStandardState) ;
+extern OSStatus
+ZoomWindowIdeal(
+  WindowRef inWindow,
+  WindowPartCode inPartCode,
+  Point * ioIdealSize) ;
+extern OSStatus
+GetWindowIdealUserState(
+  WindowRef inWindow,
+  Rect * outUserState) ;
+extern OSStatus
+SetWindowIdealUserState(
+  WindowRef inWindow,
+  const Rect * inUserState) ;
+extern OSStatus
+GetWindowGreatestAreaDevice(
+  WindowRef inWindow,
+  WindowRegionCode inRegion,
+  GDHandle * outGreatestDevice,
+  Rect * outGreatestDeviceRect) ;
+
+
+
+
+
+
+
+typedef UInt32 WindowConstrainOptions;
+enum {
+
+
+
+
+  kWindowConstrainMayResize = (1L << 0),
+
+
+
+
+  kWindowConstrainMoveRegardlessOfFit = (1L << 1),
+
+
+
+
+
+  kWindowConstrainAllowPartial = (1L << 2),
+
+
+
+
+
+  kWindowConstrainCalcOnly = (1L << 3),
+
+
+
+
+
+  kWindowConstrainUseTransitionWindow = (1L << 4),
+
+
+
+
+
+
+
+  kWindowConstrainStandardOptions = kWindowConstrainMoveRegardlessOfFit
+};
+extern OSStatus
+ConstrainWindowToScreen(
+  WindowRef inWindowRef,
+  WindowRegionCode inRegionCode,
+  WindowConstrainOptions inOptions,
+  const Rect * inScreenRect,
+  Rect * outStructure) ;
+extern OSStatus
+GetAvailableWindowPositioningBounds(
+  GDHandle inDevice,
+  Rect * outAvailableRect) ;
+extern OSStatus
+GetAvailableWindowPositioningRegion(
+  GDHandle inDevice,
+  RgnHandle ioRgn) ;
+extern void
+HideWindow(WindowRef window) ;
+extern void
+ShowWindow(WindowRef window) ;
+extern void
+ShowHide(
+  WindowRef window,
+  Boolean showFlag) ;
+extern Boolean
+IsWindowVisible(WindowRef window) ;
+typedef UInt32 WindowLatentVisibility;
+enum {
+
+
+
+
+  kWindowLatentVisibleFloater = 1 << 0,
+
+
+
+
+  kWindowLatentVisibleSuspend = 1 << 1,
+
+
+
+
+  kWindowLatentVisibleFullScreen = 1 << 2,
+
+
+
+
+  kWindowLatentVisibleAppHidden = 1 << 3,
+
+
+
+
+  kWindowLatentVisibleCollapsedOwner = 1 << 4,
+
+
+
+
+
+  kWindowLatentVisibleCollapsedGroup = 1 << 5
+};
+extern Boolean
+IsWindowLatentVisible(
+  WindowRef inWindow,
+  WindowLatentVisibility * outLatentVisible) ;
+extern OSStatus
+ShowSheetWindow(
+  WindowRef inSheet,
+  WindowRef inParentWindow) ;
+extern OSStatus
+HideSheetWindow(WindowRef inSheet) ;
+extern OSStatus
+GetSheetWindowParent(
+  WindowRef inSheet,
+  WindowRef * outParentWindow) ;
+enum {
+
+
+
+
+
+
+
+  kWindowEdgeDefault = 0,
+
+
+
+
+  kWindowEdgeTop = 1 << 0,
+
+
+
+
+  kWindowEdgeLeft = 1 << 1,
+
+
+
+
+  kWindowEdgeBottom = 1 << 2,
+
+
+
+
+  kWindowEdgeRight = 1 << 3
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+  kWindowDrawerOpening = 1,
+
+
+
+
+  kWindowDrawerOpen = 2,
+
+
+
+
+  kWindowDrawerClosing = 3,
+
+
+
+
+  kWindowDrawerClosed = 4
+};
+
+typedef UInt32 WindowDrawerState;
+extern OptionBits
+GetDrawerPreferredEdge(WindowRef inDrawerWindow) ;
+extern OSStatus
+SetDrawerPreferredEdge(
+  WindowRef inDrawerWindow,
+  OptionBits inEdge) ;
+extern OptionBits
+GetDrawerCurrentEdge(WindowRef inDrawerWindow) ;
+extern WindowDrawerState
+GetDrawerState(WindowRef inDrawerWindow) ;
+extern WindowRef
+GetDrawerParent(WindowRef inDrawerWindow) ;
+extern OSStatus
+SetDrawerParent(
+  WindowRef inDrawerWindow,
+  WindowRef inParent) ;
+extern OSStatus
+SetDrawerOffsets(
+  WindowRef inDrawerWindow,
+  float inLeadingOffset,
+  float inTrailingOffset) ;
+extern OSStatus
+GetDrawerOffsets(
+  WindowRef inDrawerWindow,
+  float * outLeadingOffset,
+  float * outTrailingOffset) ;
+extern OSStatus
+ToggleDrawer(WindowRef inDrawerWindow) ;
+extern OSStatus
+OpenDrawer(
+  WindowRef inDrawerWindow,
+  OptionBits inEdge,
+  Boolean inAsync) ;
+extern OSStatus
+CloseDrawer(
+  WindowRef inDrawerWindow,
+  Boolean inAsync) ;
+extern OSStatus
+DisableScreenUpdates(void) ;
+extern OSStatus
+EnableScreenUpdates(void) ;
+extern OSStatus
+SetWindowToolbar(
+  WindowRef inWindow,
+  HIToolbarRef inToolbar) ;
+extern OSStatus
+GetWindowToolbar(
+  WindowRef inWindow,
+  HIToolbarRef * outToolbar) ;
+extern OSStatus
+ShowHideWindowToolbar(
+  WindowRef inWindow,
+  Boolean inShow,
+  Boolean inAnimate) ;
+extern Boolean
+IsWindowToolbarVisible(WindowRef inWindow) ;
+extern OSStatus
+SetWindowAlpha(
+  WindowRef inWindow,
+  float inAlpha) ;
+extern OSStatus
+GetWindowAlpha(
+  WindowRef inWindow,
+  float * outAlpha) ;
+extern OSStatus
+GetWindowProperty(
+  WindowRef window,
+  PropertyCreator propertyCreator,
+  PropertyTag propertyTag,
+  UInt32 bufferSize,
+  UInt32 * actualSize,
+  void * propertyBuffer) ;
+extern OSStatus
+GetWindowPropertySize(
+  WindowRef window,
+  PropertyCreator creator,
+  PropertyTag tag,
+  UInt32 * size) ;
+extern OSStatus
+SetWindowProperty(
+  WindowRef window,
+  PropertyCreator propertyCreator,
+  PropertyTag propertyTag,
+  UInt32 propertySize,
+  const void * propertyBuffer) ;
+extern OSStatus
+RemoveWindowProperty(
+  WindowRef window,
+  PropertyCreator propertyCreator,
+  PropertyTag propertyTag) ;
+
+
+
+
+
+enum {
+  kWindowPropertyPersistent = 0x00000001
+};
+extern OSStatus
+GetWindowPropertyAttributes(
+  WindowRef window,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 * attributes) ;
+extern OSStatus
+ChangeWindowPropertyAttributes(
+  WindowRef window,
+  OSType propertyCreator,
+  OSType propertyTag,
+  UInt32 attributesToSet,
+  UInt32 attributesToClear) ;
+extern long
+PinRect(
+  const Rect * theRect,
+  Point thePt) ;
+extern RgnHandle
+GetGrayRgn(void) ;
+extern Boolean
+TrackBox(
+  WindowRef window,
+  Point thePt,
+  WindowPartCode partCode) ;
+extern Boolean
+TrackGoAway(
+  WindowRef window,
+  Point thePt) ;
+extern long
+DragGrayRgn(
+  RgnHandle theRgn,
+  Point startPt,
+  const Rect * limitRect,
+  const Rect * slopRect,
+  short axis,
+  DragGrayRgnUPP actionProc) ;
+extern long
+DragTheRgn(
+  RgnHandle theRgn,
+  Point startPt,
+  const Rect * limitRect,
+  const Rect * slopRect,
+  short axis,
+  DragGrayRgnUPP actionProc) ;
+extern WindowRef
+GetWindowList(void) ;
+extern CGrafPtr
+GetWindowPort(WindowRef window) ;
+extern CGrafPtr
+GetWindowStructurePort(WindowRef inWindow) ;
+extern short
+GetWindowKind(WindowRef window) ;
+extern Boolean
+IsWindowHilited(WindowRef window) ;
+extern Boolean
+IsWindowUpdatePending(WindowRef window) ;
+extern WindowRef
+GetNextWindow(WindowRef window) ;
+extern WindowRef
+GetPreviousWindow(WindowRef inWindow) ;
+extern Rect *
+GetWindowStandardState(
+  WindowRef window,
+  Rect * rect) ;
+extern Rect *
+GetWindowUserState(
+  WindowRef window,
+  Rect * rect) ;
+extern void
+SetWindowKind(
+  WindowRef window,
+  short kind) ;
+extern void
+SetWindowStandardState(
+  WindowRef window,
+  const Rect * rect) ;
+extern void
+SetWindowUserState(
+  WindowRef window,
+  const Rect * rect) ;
+extern void
+SetPortWindowPort(WindowRef window) ;
+extern Rect *
+GetWindowPortBounds(
+  WindowRef window,
+  Rect * bounds) ;
+extern WindowRef
+GetWindowFromPort(CGrafPtr port) ;
+enum {
+  kWindowGroupAttrSelectable = kWindowGroupAttrSelectAsLayer,
+  kWindowGroupAttrPositionFixed = kWindowGroupAttrMoveTogether,
+  kWindowGroupAttrZOrderFixed = kWindowGroupAttrLayerTogether
+};
+
+
+}
+extern "C" {
+
+
+enum {
+  kTrackMouseLocationOptionDontConsumeMouseUp = (1 << 0)
+};
+
+typedef UInt16 MouseTrackingResult;
+enum {
+  kMouseTrackingMouseDown = 1,
+  kMouseTrackingMouseUp = 2,
+  kMouseTrackingMouseExited = 3,
+  kMouseTrackingMouseEntered = 4,
+  kMouseTrackingMouseDragged = 5,
+  kMouseTrackingKeyModifiersChanged = 6,
+  kMouseTrackingUserCancelled = 7,
+  kMouseTrackingTimedOut = 8,
+  kMouseTrackingMouseMoved = 9
+};
+extern Boolean
+IsUserCancelEventRef(EventRef event) ;
+extern OSStatus
+TrackMouseLocation(
+  GrafPtr inPort,
+  Point * outPt,
+  MouseTrackingResult * outResult) ;
+extern OSStatus
+TrackMouseLocationWithOptions(
+  GrafPtr inPort,
+  OptionBits inOptions,
+  EventTimeout inTimeout,
+  Point * outPt,
+  UInt32 * outModifiers,
+  MouseTrackingResult * outResult) ;
+extern OSStatus
+TrackMouseRegion(
+  GrafPtr inPort,
+  RgnHandle inRegion,
+  Boolean * ioWasInRgn,
+  MouseTrackingResult * outResult) ;
+extern Boolean
+ConvertEventRefToEventRecord(
+  EventRef inEvent,
+  EventRecord * outEvent) ;
+extern Boolean
+IsEventInMask(
+  EventRef inEvent,
+  EventMask inMask) ;
+extern EventTime
+GetLastUserEventTime(void) ;
+extern Boolean
+IsMouseCoalescingEnabled(void) ;
+extern OSStatus
+SetMouseCoalescingEnabled(
+  Boolean inNewState,
+  Boolean * outOldState) ;
+enum {
+
+
+
+
+  kEventClassMouse = 'mous',
+
+
+
+
+  kEventClassKeyboard = 'keyb',
+
+
+
+
+  kEventClassTextInput = 'text',
+
+
+
+
+  kEventClassApplication = 'appl',
+
+
+
+
+  kEventClassAppleEvent = 'eppc',
+
+
+
+
+  kEventClassMenu = 'menu',
+
+
+
+
+  kEventClassWindow = 'wind',
+
+
+
+
+  kEventClassControl = 'cntl',
+
+
+
+
+  kEventClassCommand = 'cmds',
+
+
+
+
+  kEventClassTablet = 'tblt',
+
+
+
+
+  kEventClassVolume = 'vol ',
+
+
+
+
+  kEventClassAppearance = 'appm',
+
+
+
+
+  kEventClassService = 'serv',
+
+
+
+
+  kEventClassToolbar = 'tbar',
+
+
+
+
+  kEventClassToolbarItem = 'tbit',
+
+
+
+
+  kEventClassAccessibility = 'acce'
+};
+enum {
+
+
+
+
+  kEventMouseDown = 1,
+
+
+
+
+  kEventMouseUp = 2,
+
+
+
+
+  kEventMouseMoved = 5,
+
+
+
+
+  kEventMouseDragged = 6,
+
+
+
+
+  kEventMouseEntered = 8,
+
+
+
+
+  kEventMouseExited = 9,
+
+
+
+
+  kEventMouseWheelMoved = 10
+};
+typedef UInt16 EventMouseButton;
+enum {
+
+
+
+
+
+  kEventMouseButtonPrimary = 1,
+
+
+
+
+  kEventMouseButtonSecondary = 2,
+
+
+
+
+  kEventMouseButtonTertiary = 3
+};
+
+
+
+
+
+
+
+typedef UInt16 EventMouseWheelAxis;
+enum {
+
+
+
+
+  kEventMouseWheelAxisX = 0,
+
+
+
+
+  kEventMouseWheelAxisY = 1
+};
+enum {
+
+
+
+
+
+  kEventTextInputUpdateActiveInputArea = 1,
+  kEventTextInputUnicodeForKeyEvent = 2,
+
+
+
+
+
+
+
+  kEventTextInputOffsetToPos = 3,
+  kEventTextInputPosToOffset = 4,
+
+
+
+
+
+
+  kEventTextInputShowHideBottomWindow = 5,
+
+
+
+
+
+  kEventTextInputGetSelectedText = 6,
+  kEventTextInputUnicodeText = 7
+};
+enum {
+
+
+
+
+  kEventRawKeyDown = 1,
+
+
+
+
+  kEventRawKeyRepeat = 2,
+
+
+
+
+  kEventRawKeyUp = 3,
+
+
+
+
+  kEventRawKeyModifiersChanged = 4,
+
+
+
+
+  kEventHotKeyPressed = 5,
+
+
+
+
+  kEventHotKeyReleased = 6
+};
+enum {
+
+
+
+
+  kEventKeyModifierNumLockBit = 16,
+
+
+
+
+  kEventKeyModifierFnBit = 17
+};
+
+enum {
+  kEventKeyModifierNumLockMask = 1L << kEventKeyModifierNumLockBit,
+  kEventKeyModifierFnMask = 1L << kEventKeyModifierFnBit
+};
+enum {
+
+
+
+
+
+
+  kEventAppActivated = 1,
+
+
+
+
+  kEventAppDeactivated = 2,
+  kEventAppQuit = 3,
+
+
+
+
+
+
+  kEventAppLaunchNotification = 4,
+
+
+
+
+
+  kEventAppLaunched = 5,
+
+
+
+
+
+  kEventAppTerminated = 6,
+
+
+
+
+
+  kEventAppFrontSwitched = 7,
+
+
+
+
+
+
+
+  kEventAppFocusMenuBar = 8,
+  kEventAppFocusNextDocumentWindow = 9,
+  kEventAppFocusNextFloatingWindow = 10,
+  kEventAppFocusToolbar = 11,
+  kEventAppGetDockTileMenu = 20,
+
+
+
+
+  kEventAppHidden = 107,
+
+
+
+
+
+  kEventAppShown = 108,
+
+
+
+
+
+  kEventAppSystemUIModeChanged = 109
+};
+enum {
+
+
+
+
+
+  kEventAppleEvent = 1
+};
+enum {
+
+
+
+
+
+
+
+  kEventWindowUpdate = 1,
+
+
+
+
+
+
+  kEventWindowDrawContent = 2
+};
+enum {
+
+
+
+
+
+
+  kEventWindowActivated = 5,
+
+
+
+
+
+
+  kEventWindowDeactivated = 6,
+  kEventWindowGetClickActivation = 7
+};
+enum {
+
+
+
+
+  kEventWindowShowing = 22,
+
+
+
+
+  kEventWindowHiding = 23,
+
+
+
+
+  kEventWindowShown = 24,
+
+
+
+
+  kEventWindowHidden = 25,
+
+
+
+
+
+  kEventWindowCollapsing = 86,
+
+
+
+
+  kEventWindowCollapsed = 67,
+
+
+
+
+
+  kEventWindowExpanding = 87,
+
+
+
+
+  kEventWindowExpanded = 70,
+  kEventWindowZoomed = 76,
+  kEventWindowBoundsChanging = 26,
+
+
+
+
+
+
+
+
+  kEventWindowBoundsChanged = 27,
+
+
+
+
+  kEventWindowResizeStarted = 28,
+
+
+
+
+  kEventWindowResizeCompleted = 29,
+
+
+
+
+  kEventWindowDragStarted = 30,
+
+
+
+
+  kEventWindowDragCompleted = 31,
+
+
+
+
+  kEventWindowClosed = 73
+};
+enum {
+
+
+
+
+
+  kWindowBoundsChangeUserDrag = (1 << 0),
+
+
+
+
+  kWindowBoundsChangeUserResize = (1 << 1),
+
+
+
+
+  kWindowBoundsChangeSizeChanged = (1 << 2),
+
+
+
+
+  kWindowBoundsChangeOriginChanged = (1 << 3),
+  kWindowBoundsChangeZoom = (1 << 4)
+};
+enum {
+
+
+
+
+
+  kEventWindowClickDragRgn = 32,
+
+
+
+
+
+  kEventWindowClickResizeRgn = 33,
+
+
+
+
+
+
+
+  kEventWindowClickCollapseRgn = 34,
+
+
+
+
+
+  kEventWindowClickCloseRgn = 35,
+
+
+
+
+
+  kEventWindowClickZoomRgn = 36,
+
+
+
+
+
+
+
+  kEventWindowClickContentRgn = 37,
+
+
+
+
+
+
+  kEventWindowClickProxyIconRgn = 38,
+
+
+
+
+
+
+  kEventWindowClickToolbarButtonRgn = 41,
+
+
+
+
+
+  kEventWindowClickStructureRgn = 42
+};
+enum {
+  kEventWindowCursorChange = 40
+};
+enum {
+  kEventWindowCollapse = 66,
+  kEventWindowCollapseAll = 68,
+  kEventWindowExpand = 69,
+  kEventWindowExpandAll = 71,
+
+
+
+
+
+
+
+  kEventWindowClose = 72,
+  kEventWindowCloseAll = 74,
+  kEventWindowZoom = 75,
+  kEventWindowZoomAll = 77,
+
+
+
+
+
+
+  kEventWindowContextualMenuSelect = 78,
+
+
+
+
+
+
+  kEventWindowPathSelect = 79,
+
+
+
+
+
+  kEventWindowGetIdealSize = 80,
+  kEventWindowGetMinimumSize = 81,
+  kEventWindowGetMaximumSize = 82,
+  kEventWindowConstrain = 83,
+
+
+
+
+
+
+
+  kEventWindowHandleContentClick = 85,
+  kEventWindowGetDockTileMenu = 90,
+
+
+
+
+
+  kEventWindowProxyBeginDrag = 128,
+
+
+
+
+
+  kEventWindowProxyEndDrag = 129,
+  kEventWindowToolbarSwitchMode = 150
+};
+enum {
+
+
+
+
+
+
+
+  kEventWindowFocusAcquired = 200,
+
+
+
+
+
+
+  kEventWindowFocusRelinquish = 201,
+
+
+
+
+
+
+
+  kEventWindowFocusContent = 202,
+
+
+
+
+
+
+
+  kEventWindowFocusToolbar = 203
+};
+enum {
+
+
+
+
+
+
+  kEventWindowDrawerOpening = 220,
+
+
+
+
+
+  kEventWindowDrawerOpened = 221,
+
+
+
+
+
+
+  kEventWindowDrawerClosing = 222,
+
+
+
+
+
+  kEventWindowDrawerClosed = 223
+};
+enum {
+
+
+
+
+
+
+
+  kEventWindowDrawFrame = 1000,
+
+
+
+
+
+
+  kEventWindowDrawPart = 1001,
+
+
+
+
+
+
+
+  kEventWindowGetRegion = 1002,
+
+
+
+
+
+
+
+  kEventWindowHitTest = 1003,
+  kEventWindowInit = 1004,
+  kEventWindowDispose = 1005,
+
+
+
+
+
+
+  kEventWindowDragHilite = 1006,
+
+
+
+
+
+
+  kEventWindowModified = 1007,
+
+
+
+
+
+
+  kEventWindowSetupProxyDragImage = 1008,
+
+
+
+
+
+  kEventWindowStateChanged = 1009,
+
+
+
+
+
+  kEventWindowMeasureTitle = 1010,
+  kEventWindowDrawGrowBox = 1011,
+  kEventWindowGetGrowImageRegion = 1012,
+  kEventWindowPaint = 1013
+};
+enum {
+  kEventMenuBeginTracking = 1,
+
+
+
+
+  kEventMenuEndTracking = 2,
+
+
+
+
+
+
+
+  kEventMenuChangeTrackingMode = 3,
+  kEventMenuOpening = 4,
+
+
+
+
+  kEventMenuClosed = 5,
+
+
+
+
+
+  kEventMenuTargetItem = 6,
+  kEventMenuMatchKey = 7,
+  kEventMenuEnableItems = 8,
+  kEventMenuPopulate = 9,
+  kEventMenuMeasureItemWidth = 100,
+  kEventMenuMeasureItemHeight = 101,
+  kEventMenuDrawItem = 102,
+  kEventMenuDrawItemContent = 103,
+
+
+
+
+  kEventMenuDispose = 1001
+};
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+
+  kMenuContextMenuBar = 1 << 0,
+
+
+
+
+
+  kMenuContextPullDown = 1 << 8,
+
+
+
+
+
+  kMenuContextPopUp = 1 << 9,
+
+
+
+
+
+  kMenuContextSubmenu = 1 << 10,
+
+
+
+
+
+  kMenuContextMenuBarTracking = 1 << 16,
+
+
+
+
+
+  kMenuContextPopUpTracking = 1 << 17,
+
+
+
+
+
+  kMenuContextKeyMatching = 1 << 18,
+  kMenuContextMenuEnabling = 1 << 19,
+
+
+
+
+
+
+
+  kMenuContextCommandIDSearch = 1 << 20
+};
+enum {
+  kEventProcessCommand = 1,
+  kEventCommandProcess = 1,
+  kEventCommandUpdateStatus = 2
+};
+enum {
+
+
+
+
+  kHICommandOK = 'ok  ',
+
+
+
+
+  kHICommandCancel = 'not!',
+
+
+
+
+  kHICommandQuit = 'quit',
+
+
+
+
+  kHICommandUndo = 'undo',
+
+
+
+
+  kHICommandRedo = 'redo',
+
+
+
+
+  kHICommandCut = 'cut ',
+
+
+
+
+  kHICommandCopy = 'copy',
+
+
+
+
+  kHICommandPaste = 'past',
+
+
+
+
+  kHICommandClear = 'clea',
+
+
+
+
+  kHICommandSelectAll = 'sall',
+
+
+
+
+
+
+  kHICommandHide = 'hide',
+
+
+
+
+
+
+  kHICommandHideOthers = 'hido',
+
+
+
+
+
+
+  kHICommandShowAll = 'shal',
+
+
+
+
+  kHICommandPreferences = 'pref',
+  kHICommandZoomWindow = 'zoom',
+
+
+
+
+
+
+  kHICommandMinimizeWindow = 'mini',
+
+
+
+
+
+
+
+  kHICommandMinimizeAll = 'mina',
+
+
+
+
+
+
+  kHICommandMaximizeWindow = 'maxi',
+
+
+
+
+
+
+
+  kHICommandMaximizeAll = 'maxa',
+
+
+
+
+
+
+  kHICommandArrangeInFront = 'frnt',
+
+
+
+
+
+
+
+  kHICommandBringAllToFront = 'bfrt',
+  kHICommandWindowListSeparator = 'wldv',
+  kHICommandWindowListTerminator = 'wlst',
+
+
+
+
+
+
+  kHICommandSelectWindow = 'swin',
+  kHICommandRotateWindowsForward = 'rotw',
+  kHICommandRotateWindowsBackward = 'rotb',
+  kHICommandRotateFloatingWindowsForward = 'rtfw',
+  kHICommandRotateFloatingWindowsBackward = 'rtfb',
+
+
+
+
+  kHICommandAbout = 'abou',
+
+
+
+
+  kHICommandNew = 'new ',
+
+
+
+
+  kHICommandOpen = 'open',
+
+
+
+
+  kHICommandClose = 'clos',
+
+
+
+
+  kHICommandSave = 'save',
+
+
+
+
+  kHICommandSaveAs = 'svas',
+
+
+
+
+
+  kHICommandRevert = 'rvrt',
+
+
+
+
+  kHICommandPrint = 'prnt',
+
+
+
+
+
+  kHICommandPageSetup = 'page',
+
+
+
+
+
+
+
+  kHICommandAppHelp = 'ahlp'
+};
+enum {
+
+
+
+
+
+  kHICommandFromMenu = (1L << 0),
+
+
+
+
+
+  kHICommandFromControl = (1L << 1),
+
+
+
+
+
+  kHICommandFromWindow = (1L << 2)
+};
+
+struct HICommand {
+  UInt32 attributes;
+  UInt32 commandID;
+  struct {
+    MenuRef menuRef;
+    MenuItemIndex menuItemIndex;
+  } menu;
+};
+typedef struct HICommand HICommand;
+struct HICommandExtended {
+  UInt32 attributes;
+  UInt32 commandID;
+  union {
+    ControlRef control;
+    WindowRef window;
+    struct {
+      MenuRef menuRef;
+      MenuItemIndex menuItemIndex;
+    } menu;
+  } source;
+};
+typedef struct HICommandExtended HICommandExtended;
+enum {
+
+
+
+
+  kEventControlInitialize = 1000,
+
+
+
+
+  kEventControlDispose = 1001,
+  kEventControlGetOptimalBounds = 1003,
+  kEventControlDefInitialize = kEventControlInitialize,
+  kEventControlDefDispose = kEventControlDispose,
+
+
+
+
+
+  kEventControlHit = 1,
+  kEventControlSimulateHit = 2,
+
+
+
+
+
+
+
+  kEventControlHitTest = 3,
+
+
+
+
+
+
+  kEventControlDraw = 4,
+
+
+
+
+
+
+
+  kEventControlApplyBackground = 5,
+  kEventControlApplyTextColor = 6,
+  kEventControlSetFocusPart = 7,
+
+
+
+
+
+
+  kEventControlGetFocusPart = 8,
+
+
+
+
+
+  kEventControlActivate = 9,
+
+
+
+
+
+  kEventControlDeactivate = 10,
+
+
+
+
+
+  kEventControlSetCursor = 11,
+
+
+
+
+
+
+  kEventControlContextualMenuClick = 12,
+
+
+
+
+
+
+
+  kEventControlClick = 13,
+  kEventControlGetNextFocusCandidate = 14,
+
+
+
+
+
+
+  kEventControlGetAutoToggleValue = 15,
+  kEventControlInterceptSubviewClick = 16,
+  kEventControlGetClickActivation = 17,
+  kEventControlDragEnter = 18,
+
+
+
+
+
+
+
+  kEventControlDragWithin = 19,
+
+
+
+
+
+  kEventControlDragLeave = 20,
+
+
+
+
+  kEventControlDragReceive = 21,
+
+
+
+
+
+
+
+  kEventControlTrack = 51,
+  kEventControlGetScrollToHereStartPoint = 52,
+
+
+
+
+
+
+  kEventControlGetIndicatorDragConstraint = 53,
+
+
+
+
+
+
+
+  kEventControlIndicatorMoved = 54,
+
+
+
+
+
+  kEventControlGhostingFinished = 55,
+
+
+
+
+
+
+
+  kEventControlGetActionProcPart = 56,
+
+
+
+
+
+
+
+  kEventControlGetPartRegion = 101,
+
+
+
+
+
+
+
+  kEventControlGetPartBounds = 102,
+
+
+
+
+
+  kEventControlSetData = 103,
+
+
+
+
+
+  kEventControlGetData = 104,
+  kEventControlGetSizeConstraints = 105,
+
+
+
+
+
+
+  kEventControlValueFieldChanged = 151,
+
+
+
+
+
+  kEventControlAddedSubControl = 152,
+
+
+
+
+
+  kEventControlRemovingSubControl = 153,
+
+
+
+
+
+  kEventControlBoundsChanged = 154,
+
+
+
+
+
+  kEventControlTitleChanged = 158,
+
+
+
+
+
+
+  kEventControlOwningWindowChanged = 159,
+
+
+
+
+
+
+
+  kEventControlHiliteChanged = 160,
+
+
+
+
+
+
+
+  kEventControlEnabledStateChanged = 161,
+
+
+
+
+
+  kEventControlArbitraryMessage = 201
+};
+enum {
+
+
+
+
+  kControlBoundsChangeSizeChanged = (1 << 2),
+
+
+
+
+  kControlBoundsChangePositionChanged = (1 << 3)
+};
+enum {
+
+
+
+
+
+  kEventTabletPoint = 1,
+
+
+
+
+
+  kEventTabletProximity = 2,
+  kEventTabletPointer = 1
+};
+
+struct TabletPointRec {
+  SInt32 absX;
+  SInt32 absY;
+  SInt32 absZ;
+  UInt16 buttons;
+  UInt16 pressure;
+  SInt16 tiltX;
+  SInt16 tiltY;
+  UInt16 rotation;
+  SInt16 tangentialPressure;
+  UInt16 deviceID;
+  SInt16 vendor1;
+  SInt16 vendor2;
+  SInt16 vendor3;
+};
+typedef struct TabletPointRec TabletPointRec;
+typedef TabletPointRec TabletPointerRec;
+struct TabletProximityRec {
+  UInt16 vendorID;
+  UInt16 tabletID;
+  UInt16 pointerID;
+  UInt16 deviceID;
+  UInt16 systemTabletID;
+  UInt16 vendorPointerType;
+  UInt32 pointerSerialNumber;
+  UInt64 uniqueID;
+  UInt32 capabilityMask;
+  UInt8 pointerType;
+  UInt8 enterProximity;
+};
+typedef struct TabletProximityRec TabletProximityRec;
+enum {
+
+
+
+
+
+  kEventVolumeMounted = 1,
+
+
+
+
+
+  kEventVolumeUnmounted = 2
+};
+enum {
+  typeFSVolumeRefNum = 'voln'
+};
+enum {
+
+
+
+
+
+  kEventAppearanceScrollBarVariantChanged = 1
+};
+enum {
+
+
+
+
+
+
+  kEventServiceCopy = 1,
+
+
+
+
+
+
+  kEventServicePaste = 2,
+  kEventServiceGetTypes = 3,
+  kEventServicePerform = 4
+};
+extern CFStringRef
+CreateTypeStringWithOSType(OSType inType) ;
+enum {
+  kEventAccessibleGetChildAtPoint = 1,
+  kEventAccessibleGetFocusedChild = 2,
+
+
+
+
+
+
+  kEventAccessibleGetAllAttributeNames = 21,
+
+
+
+
+
+
+
+  kEventAccessibleGetNamedAttribute = 22,
+  kEventAccessibleSetNamedAttribute = 23,
+  kEventAccessibleIsNamedAttributeSettable = 24,
+
+
+
+
+
+
+  kEventAccessibleGetAllActionNames = 41,
+
+
+
+
+
+
+  kEventAccessiblePerformNamedAction = 42,
+  kEventAccessibleGetNamedActionDescription = 44
+};
+extern AXUIElementRef
+AXUIElementCreateWithHIObjectAndIdentifier(
+  HIObjectRef inHIObject,
+  UInt64 inIdentifier) ;
+extern HIObjectRef
+AXUIElementGetHIObject(AXUIElementRef inUIElement) ;
+extern void
+AXUIElementGetIdentifier(
+  AXUIElementRef inUIElement,
+  UInt64 * outIdentifier) ;
+extern void
+AXNotificationHIObjectNotify(
+  CFStringRef inNotification,
+  HIObjectRef inHIObject,
+  UInt64 inIdentifier) ;
+
+
+
+
+
+enum {
+  kEventParamDirectObject = '----'
+};
+
+
+
+
+enum {
+  kEventParamPostTarget = 'ptrg',
+
+
+
+
+  typeEventTargetRef = 'etrg'
+};
+
+
+
+enum {
+  kEventParamWindowRef = 'wind',
+  kEventParamGrafPort = 'graf',
+  kEventParamDragRef = 'drag',
+  kEventParamMenuRef = 'menu',
+  kEventParamEventRef = 'evnt',
+  kEventParamControlRef = 'ctrl',
+  kEventParamRgnHandle = 'rgnh',
+  kEventParamEnabled = 'enab',
+  kEventParamDimensions = 'dims',
+  kEventParamAvailableBounds = 'avlb',
+  kEventParamAEEventID = keyAEEventID,
+  kEventParamAEEventClass = keyAEEventClass,
+  kEventParamCGContextRef = 'cntx',
+  kEventParamDeviceDepth = 'devd',
+  kEventParamDeviceColor = 'devc',
+  kEventParamMutableArray = 'marr',
+  kEventParamResult = 'ansr',
+  kEventParamMinimumSize = 'mnsz',
+  kEventParamMaximumSize = 'mxsz',
+  typeWindowRef = 'wind',
+  typeGrafPtr = 'graf',
+  typeGWorldPtr = 'gwld',
+  typeDragRef = 'drag',
+  typeMenuRef = 'menu',
+  typeControlRef = 'ctrl',
+  typeCollection = 'cltn',
+  typeQDRgnHandle = 'rgnh',
+  typeOSStatus = 'osst',
+  typeCFStringRef = 'cfst',
+  typeCFMutableStringRef = 'cfms',
+  typeCFIndex = 'cfix',
+  typeCFTypeRef = 'cfty',
+  typeCGContextRef = 'cntx',
+  typeHIPoint = 'hipt',
+  typeHISize = 'hisz',
+  typeHIRect = 'hirc',
+  typeVoidPtr = 'void'
+};
+
+
+
+enum {
+  kEventParamMouseLocation = 'mloc',
+  kEventParamWindowMouseLocation = 'wmou',
+  kEventParamMouseButton = 'mbtn',
+  kEventParamClickCount = 'ccnt',
+  kEventParamMouseWheelAxis = 'mwax',
+  kEventParamMouseWheelDelta = 'mwdl',
+  kEventParamMouseDelta = 'mdta',
+  kEventParamMouseChord = 'chor',
+  kEventParamTabletEventType = 'tblt',
+  kEventParamMouseTrackingRef = 'mtrf',
+  typeMouseButton = 'mbtn',
+  typeMouseWheelAxis = 'mwax',
+  typeMouseTrackingRef = 'mtrf'
+};
+
+
+
+enum {
+  kEventParamKeyCode = 'kcod',
+  kEventParamKeyMacCharCodes = 'kchr',
+  kEventParamKeyModifiers = 'kmod',
+  kEventParamKeyUnicodes = 'kuni',
+  kEventParamKeyboardType = 'kbdt',
+  typeEventHotKeyID = 'hkid'
+};
+
+
+
+enum {
+  kEventParamTextInputSendRefCon = 'tsrc',
+  kEventParamTextInputSendComponentInstance = 'tsci',
+  kEventParamTextInputSendSLRec = 'tssl',
+  kEventParamTextInputReplySLRec = 'trsl',
+  kEventParamTextInputSendText = 'tstx',
+  kEventParamTextInputReplyText = 'trtx',
+  kEventParamTextInputSendUpdateRng = 'tsup',
+  kEventParamTextInputSendHiliteRng = 'tshi',
+  kEventParamTextInputSendClauseRng = 'tscl',
+  kEventParamTextInputSendPinRng = 'tspn',
+  kEventParamTextInputSendFixLen = 'tsfx',
+  kEventParamTextInputSendLeadingEdge = 'tsle',
+  kEventParamTextInputReplyLeadingEdge = 'trle',
+  kEventParamTextInputSendTextOffset = 'tsto',
+  kEventParamTextInputReplyTextOffset = 'trto',
+  kEventParamTextInputReplyRegionClass = 'trrg',
+  kEventParamTextInputSendCurrentPoint = 'tscp',
+  kEventParamTextInputSendDraggingMode = 'tsdm',
+  kEventParamTextInputReplyPoint = 'trpt',
+  kEventParamTextInputReplyFont = 'trft',
+  kEventParamTextInputReplyFMFont = 'trfm',
+  kEventParamTextInputReplyPointSize = 'trpz',
+  kEventParamTextInputReplyLineHeight = 'trlh',
+  kEventParamTextInputReplyLineAscent = 'trla',
+  kEventParamTextInputReplyTextAngle = 'trta',
+  kEventParamTextInputSendShowHide = 'tssh',
+  kEventParamTextInputReplyShowHide = 'trsh',
+  kEventParamTextInputSendKeyboardEvent = 'tske',
+  kEventParamTextInputSendTextServiceEncoding = 'tsse',
+  kEventParamTextInputSendTextServiceMacEncoding = 'tssm',
+  kEventParamTextInputGlyphInfoArray = 'glph'
+};
+
+
+
+enum {
+  kEventParamHICommand = 'hcmd',
+  typeHICommand = 'hcmd'
+};
+
+
+
+enum {
+  kEventParamWindowFeatures = 'wftr',
+  kEventParamWindowDefPart = 'wdpc',
+  kEventParamCurrentBounds = 'crct',
+  kEventParamOriginalBounds = 'orct',
+  kEventParamPreviousBounds = 'prct',
+  kEventParamClickActivation = 'clac',
+  kEventParamWindowRegionCode = 'wshp',
+  kEventParamWindowDragHiliteFlag = 'wdhf',
+  kEventParamWindowModifiedFlag = 'wmff',
+  kEventParamWindowProxyGWorldPtr = 'wpgw',
+  kEventParamWindowProxyImageRgn = 'wpir',
+  kEventParamWindowProxyOutlineRgn = 'wpor',
+  kEventParamWindowStateChangedFlags = 'wscf',
+  kEventParamWindowTitleFullWidth = 'wtfw',
+  kEventParamWindowTitleTextWidth = 'wttw',
+  kEventParamWindowGrowRect = 'grct',
+  kEventParamAttributes = 'attr',
+  kEventParamPreviousDockRect = 'pdrc',
+  kEventParamCurrentDockRect = 'cdrc',
+  typeWindowRegionCode = 'wshp',
+  typeWindowDefPartCode = 'wdpt',
+  typeClickActivationResult = 'clac'
+};
+
+
+
+enum {
+  kEventParamControlPart = 'cprt',
+  kEventParamInitCollection = 'icol',
+  kEventParamControlMessage = 'cmsg',
+  kEventParamControlParam = 'cprm',
+  kEventParamControlResult = 'crsl',
+  kEventParamControlRegion = 'crgn',
+  kEventParamControlAction = 'caup',
+  kEventParamControlIndicatorDragConstraint = 'cidc',
+  kEventParamControlIndicatorRegion = 'cirn',
+  kEventParamControlIsGhosting = 'cgst',
+  kEventParamControlIndicatorOffset = 'ciof',
+  kEventParamControlClickActivationResult = 'ccar',
+  kEventParamControlSubControl = 'csub',
+  kEventParamControlOptimalBounds = 'cobn',
+  kEventParamControlOptimalBaselineOffset = 'cobo',
+  kEventParamControlDataTag = 'cdtg',
+  kEventParamControlDataBuffer = 'cdbf',
+  kEventParamControlDataBufferSize = 'cdbs',
+  kEventParamControlDrawDepth = 'cddp',
+  kEventParamControlDrawInColor = 'cdic',
+  kEventParamControlFeatures = 'cftr',
+  kEventParamControlPartBounds = 'cpbd',
+  kEventParamControlOriginalOwningWindow = 'coow',
+  kEventParamControlCurrentOwningWindow = 'ccow',
+  kEventParamControlFocusEverything = 'cfev',
+  kEventParamNextControl = 'cnxc',
+  kEventParamStartControl = 'cstc',
+  kEventParamControlSubview = 'csvw',
+  kEventParamControlPreviousPart = 'copc',
+  kEventParamControlCurrentPart = 'cnpc',
+  kEventParamControlInvalRgn = 'civr',
+  kEventParamControlValue = 'cval',
+  typeControlActionUPP = 'caup',
+  typeIndicatorDragConstraint = 'cidc',
+  typeControlPartCode = 'cprt'
+};
+
+
+
+enum {
+  kEventParamCurrentMenuTrackingMode = 'cmtm',
+  kEventParamNewMenuTrackingMode = 'nmtm',
+  kEventParamMenuFirstOpen = '1sto',
+  kEventParamMenuItemIndex = 'item',
+  kEventParamMenuCommand = 'mcmd',
+  kEventParamEnableMenuForKeyEvent = 'fork',
+  kEventParamMenuEventOptions = 'meop',
+  kEventParamMenuContext = 'mctx',
+  kEventParamMenuItemBounds = 'mitb',
+  kEventParamMenuMarkBounds = 'mmkb',
+  kEventParamMenuIconBounds = 'micb',
+  kEventParamMenuTextBounds = 'mtxb',
+  kEventParamMenuTextBaseline = 'mtbl',
+  kEventParamMenuCommandKeyBounds = 'mcmb',
+  kEventParamMenuVirtualTop = 'mvrt',
+  kEventParamMenuVirtualBottom = 'mvrb',
+  kEventParamMenuDrawState = 'mdrs',
+  kEventParamMenuItemType = 'mitp',
+  kEventParamMenuItemWidth = 'mitw',
+  kEventParamMenuItemHeight = 'mith',
+  typeMenuItemIndex = 'midx',
+  typeMenuCommand = 'mcmd',
+  typeMenuTrackingMode = 'mtmd',
+  typeMenuEventOptions = 'meop',
+  typeThemeMenuState = 'tmns',
+  typeThemeMenuItemType = 'tmit'
+};
+
+
+
+enum {
+  kEventParamProcessID = 'psn ',
+  kEventParamLaunchRefCon = 'lref',
+  kEventParamLaunchErr = 'err ',
+  kEventParamSystemUIMode = 'uimd'
+};
+
+
+
+enum {
+  kEventParamTabletPointRec = 'tbrc',
+  kEventParamTabletProximityRec = 'tbpx',
+  typeTabletPointRec = 'tbrc',
+  typeTabletProximityRec = 'tbpx',
+  kEventParamTabletPointerRec = 'tbrc',
+  typeTabletPointerRec = 'tbrc'
+};
+
+
+
+enum {
+  kEventParamNewScrollBarVariant = 'nsbv'
+};
+
+
+
+enum {
+  kEventParamScrapRef = 'scrp',
+  kEventParamServiceCopyTypes = 'svsd',
+  kEventParamServicePasteTypes = 'svpt',
+  kEventParamServiceMessageName = 'svmg',
+  kEventParamServiceUserData = 'svud',
+  typeScrapRef = 'scrp',
+  typeCFMutableArrayRef = 'cfma'
+};
+
+
+
+enum {
+  kEventParamToolbar = 'tbar',
+  kEventParamToolbarItem = 'tbit',
+  kEventParamToolbarItemIdentifier = 'tbii',
+  kEventParamToolbarItemConfigData = 'tbid',
+  typeHIToolbarRef = 'tbar',
+  typeHIToolbarItemRef = 'tbit'
+};
+
+
+
+enum {
+  kEventParamAccessibleObject = 'aobj',
+  kEventParamAccessibleChild = 'achl',
+  kEventParamAccessibleAttributeName = 'atnm',
+  kEventParamAccessibleAttributeNames = 'atns',
+  kEventParamAccessibleAttributeValue = 'atvl',
+  kEventParamAccessibleAttributeSettable = 'atst',
+  kEventParamAccessibleActionName = 'acnm',
+  kEventParamAccessibleActionNames = 'acns',
+  kEventParamAccessibleActionDescription = 'acds'
+};
+extern EventTargetRef
+GetWindowEventTarget(WindowRef inWindow) ;
+extern EventTargetRef
+GetControlEventTarget(ControlRef inControl) ;
+extern EventTargetRef
+GetMenuEventTarget(MenuRef inMenu) ;
+extern EventTargetRef
+GetApplicationEventTarget(void) ;
+extern EventTargetRef
+GetUserFocusEventTarget(void) ;
+extern EventTargetRef
+GetEventDispatcherTarget(void) ;
+typedef struct OpaqueToolboxObjectClassRef* ToolboxObjectClassRef;
+extern OSStatus
+RegisterToolboxObjectClass(
+  CFStringRef inClassID,
+  ToolboxObjectClassRef inBaseClass,
+  UInt32 inNumEvents,
+  const EventTypeSpec * inEventList,
+  EventHandlerUPP inEventHandler,
+  void * inEventHandlerData,
+  ToolboxObjectClassRef * outClassRef) ;
+extern OSStatus
+UnregisterToolboxObjectClass(ToolboxObjectClassRef inClassRef) ;
+extern OSStatus
+ProcessHICommand(const HICommand * inCommand) ;
+extern void
+RunApplicationEventLoop(void) ;
+extern void
+QuitApplicationEventLoop(void) ;
+extern OSStatus
+RunAppModalLoopForWindow(WindowRef inWindow) ;
+extern OSStatus
+QuitAppModalLoopForWindow(WindowRef inWindow) ;
+extern OSStatus
+BeginAppModalStateForWindow(WindowRef inWindow) ;
+extern OSStatus
+EndAppModalStateForWindow(WindowRef inWindow) ;
+extern OSStatus
+SetUserFocusWindow(WindowRef inWindow) ;
+extern WindowRef
+GetUserFocusWindow(void) ;
+extern OSStatus
+SetWindowDefaultButton(
+  WindowRef inWindow,
+  ControlRef inControl) ;
+extern OSStatus
+SetWindowCancelButton(
+  WindowRef inWindow,
+  ControlRef inControl) ;
+extern OSStatus
+GetWindowDefaultButton(
+  WindowRef inWindow,
+  ControlRef * outControl) ;
+extern OSStatus
+GetWindowCancelButton(
+  WindowRef inWindow,
+  ControlRef * outControl) ;
+
+
+
+
+
+
+struct EventHotKeyID {
+  OSType signature;
+  UInt32 id;
+};
+typedef struct EventHotKeyID EventHotKeyID;
+typedef struct OpaqueEventHotKeyRef* EventHotKeyRef;
+extern OSStatus
+RegisterEventHotKey(
+  UInt32 inHotKeyCode,
+  UInt32 inHotKeyModifiers,
+  EventHotKeyID inHotKeyID,
+  EventTargetRef inTarget,
+  OptionBits inOptions,
+  EventHotKeyRef * outRef) ;
+extern OSStatus
+UnregisterEventHotKey(EventHotKeyRef inHotKey) ;
+typedef struct OpaqueMouseTrackingRef* MouseTrackingRef;
+typedef UInt32 MouseTrackingOptions;
+enum {
+
+
+
+
+
+  kMouseTrackingOptionsLocalClip = 0,
+
+
+
+
+
+  kMouseTrackingOptionsGlobalClip = 1,
+
+
+
+
+
+  kMouseTrackingOptionsStandard = kMouseTrackingOptionsLocalClip
+};
+
+struct MouseTrackingRegionID {
+  OSType signature;
+  SInt32 id;
+};
+typedef struct MouseTrackingRegionID MouseTrackingRegionID;
+extern OSStatus
+CreateMouseTrackingRegion(
+  WindowRef inWindow,
+  RgnHandle inRegion,
+  RgnHandle inClip,
+  MouseTrackingOptions inOptions,
+  MouseTrackingRegionID inID,
+  void * inRefCon,
+  EventTargetRef inTargetToNotify,
+  MouseTrackingRef * outTrackingRef) ;
+extern OSStatus
+RetainMouseTrackingRegion(MouseTrackingRef inMouseRef) ;
+extern OSStatus
+ReleaseMouseTrackingRegion(MouseTrackingRef inMouseRef) ;
+extern OSStatus
+ChangeMouseTrackingRegion(
+  MouseTrackingRef inMouseRef,
+  RgnHandle inRegion,
+  RgnHandle inClip) ;
+extern OSStatus
+ClipMouseTrackingRegion(
+  MouseTrackingRef inMouseRef,
+  RgnHandle inRegion) ;
+extern OSStatus
+GetMouseTrackingRegionID(
+  MouseTrackingRef inMouseRef,
+  MouseTrackingRegionID * outID) ;
+extern OSStatus
+GetMouseTrackingRegionRefCon(
+  MouseTrackingRef inMouseRef,
+  void ** outRefCon) ;
+extern OSStatus
+MoveMouseTrackingRegion(
+  MouseTrackingRef inMouseRef,
+  SInt16 deltaH,
+  SInt16 deltaV,
+  RgnHandle inClip) ;
+extern OSStatus
+SetMouseTrackingRegionEnabled(
+  MouseTrackingRef inMouseRef,
+  Boolean inEnabled) ;
+extern OSStatus
+ClipWindowMouseTrackingRegions(
+  WindowRef inWindow,
+  OSType inSignature,
+  RgnHandle inClip) ;
+extern OSStatus
+MoveWindowMouseTrackingRegions(
+  WindowRef inWindow,
+  OSType inSignature,
+  SInt16 deltaH,
+  SInt16 deltaV,
+  RgnHandle inClip) ;
+extern OSStatus
+SetWindowMouseTrackingRegionsEnabled(
+  WindowRef inWindow,
+  OSType inSignature,
+  Boolean inEnabled) ;
+extern OSStatus
+ReleaseWindowMouseTrackingRegions(
+  WindowRef inWindow,
+  OSType inSignature) ;
+
+
+
+
+
+
+enum {
+  kEventWindowDefDrawFrame = kEventWindowDrawFrame,
+  kEventWindowDefDrawPart = kEventWindowDrawPart,
+  kEventWindowDefGetRegion = kEventWindowGetRegion,
+  kEventWindowDefHitTest = kEventWindowHitTest,
+  kEventWindowDefInit = kEventWindowInit,
+  kEventWindowDefDispose = kEventWindowDispose,
+  kEventWindowDefDragHilite = kEventWindowDragHilite,
+  kEventWindowDefModified = kEventWindowModified,
+  kEventWindowDefSetupProxyDragImage = kEventWindowSetupProxyDragImage,
+  kEventWindowDefStateChanged = kEventWindowStateChanged,
+  kEventWindowDefMeasureTitle = kEventWindowMeasureTitle,
+  kEventWindowDefDrawGrowBox = kEventWindowDrawGrowBox,
+  kEventWindowDefGetGrowImageRegion = kEventWindowGetGrowImageRegion
+};
+
+
+enum {
+  kEventClassEPPC = kEventClassAppleEvent,
+  kEventHighLevelEvent = kEventAppleEvent
+};
+
+enum {
+  kEventUpdateActiveInputArea = kEventTextInputUpdateActiveInputArea,
+  kEventUnicodeForKeyEvent = kEventTextInputUnicodeForKeyEvent,
+  kEventOffsetToPos = kEventTextInputOffsetToPos,
+  kEventPosToOffset = kEventTextInputPosToOffset,
+  kEventShowHideBottomWindow = kEventTextInputShowHideBottomWindow,
+  kEventGetSelectedText = kEventTextInputGetSelectedText
+};
+
+
+
+
+
+typedef UInt32 EventClassID;
+typedef UInt32 EventClass;
+typedef UInt32 EventType;
+
+
+
+enum {
+  kMouseTrackingMousePressed = kMouseTrackingMouseDown,
+  kMouseTrackingMouseReleased = kMouseTrackingMouseUp
+};
+
+enum {
+  kEventControlGetSubviewForMouseEvent = kEventControlInterceptSubviewClick
+};
+
+
+
+
+}
+extern "C" {
+
+
+
+typedef ControlRef HIViewRef;
+typedef ControlID HIViewID;
+typedef ControlPartCode HIViewPartCode;
+extern const HIViewID kHIViewWindowContentID;
+extern const HIViewID kHIViewWindowGrowBoxID;
+
+
+
+
+
+
+enum {
+
+
+
+
+  kHIViewZOrderAbove = 1,
+
+
+
+
+  kHIViewZOrderBelow = 2
+};
+
+typedef UInt32 HIViewZOrderOp;
+enum {
+
+
+
+
+
+
+
+  kHIViewSendCommandToUserFocus = (1 << 0)
+};
+extern HIViewRef
+HIViewGetRoot(WindowRef inWindow) ;
+extern OSStatus
+HIViewAddSubview(
+  HIViewRef inParent,
+  HIViewRef inNewChild) ;
+extern OSStatus
+HIViewRemoveFromSuperview(HIViewRef inView) ;
+extern HIViewRef
+HIViewGetSuperview(HIViewRef inView) ;
+extern HIViewRef
+HIViewGetFirstSubview(HIViewRef inView) ;
+extern HIViewRef
+HIViewGetLastSubview(HIViewRef inView) ;
+extern HIViewRef
+HIViewGetNextView(HIViewRef inView) ;
+extern HIViewRef
+HIViewGetPreviousView(HIViewRef inView) ;
+extern OSStatus
+HIViewSetZOrder(
+  HIViewRef inView,
+  HIViewZOrderOp inOp,
+  HIViewRef inOther) ;
+extern OSStatus
+HIViewSetVisible(
+  HIViewRef inView,
+  Boolean inVisible) ;
+extern Boolean
+HIViewIsVisible(HIViewRef inView) ;
+extern OSStatus
+HIViewGetBounds(
+  HIViewRef inView,
+  HIRect * outRect) ;
+extern OSStatus
+HIViewGetFrame(
+  HIViewRef inView,
+  HIRect * outRect) ;
+extern OSStatus
+HIViewSetFrame(
+  HIViewRef inView,
+  const HIRect * inRect) ;
+extern OSStatus
+HIViewMoveBy(
+  HIViewRef inView,
+  float inDX,
+  float inDY) ;
+extern OSStatus
+HIViewPlaceInSuperviewAt(
+  HIViewRef inView,
+  float inX,
+  float inY) ;
+extern OSStatus
+HIViewReshapeStructure(HIViewRef inView) ;
+extern OSStatus
+HIViewGetViewForMouseEvent(
+  HIViewRef inView,
+  EventRef inEvent,
+  HIViewRef * outView) ;
+extern OSStatus
+HIViewClick(
+  HIViewRef inView,
+  EventRef inEvent) ;
+extern OSStatus
+HIViewSimulateClick(
+  HIViewRef inView,
+  HIViewPartCode inPartToClick,
+  UInt32 inModifiers,
+  ControlPartCode * outPartClicked) ;
+extern OSStatus
+HIViewGetPartHit(
+  HIViewRef inView,
+  const HIPoint * inPoint,
+  HIViewPartCode * outPart) ;
+extern OSStatus
+HIViewGetSubviewHit(
+  HIViewRef inView,
+  const HIPoint * inPoint,
+  Boolean inDeep,
+  HIViewRef * outView) ;
+extern Boolean
+HIViewGetNeedsDisplay(HIViewRef inView) ;
+extern OSStatus
+HIViewSetNeedsDisplay(
+  HIViewRef inView,
+  Boolean inNeedsDisplay) ;
+extern OSStatus
+HIViewSetNeedsDisplayInRegion(
+  HIViewRef inView,
+  RgnHandle inRgn,
+  Boolean inNeedsDisplay) ;
+extern OSStatus
+HIViewFlashDirtyArea(WindowRef inWindow) ;
+extern OSStatus
+HIViewGetSizeConstraints(
+  HIViewRef inView,
+  HISize * outMinSize,
+  HISize * outMaxSize) ;
+extern OSStatus
+HIViewConvertPoint(
+  HIPoint * ioPoint,
+  HIViewRef inSourceView,
+  HIViewRef inDestView) ;
+extern OSStatus
+HIViewConvertRect(
+  HIRect * ioRect,
+  HIViewRef inSourceView,
+  HIViewRef inDestView) ;
+extern OSStatus
+HIViewConvertRegion(
+  RgnHandle ioRgn,
+  HIViewRef inSourceView,
+  HIViewRef inDestView) ;
+extern OSStatus
+HIViewSetDrawingEnabled(
+  HIViewRef inView,
+  Boolean inEnabled) ;
+extern Boolean
+HIViewIsDrawingEnabled(HIViewRef inView) ;
+extern OSStatus
+HIViewScrollRect(
+  HIViewRef inView,
+  const HIRect * inRect,
+  float inDX,
+  float inDY) ;
+extern OSStatus
+HIViewSetBoundsOrigin(
+  HIViewRef inView,
+  float inX,
+  float inY) ;
+extern OSStatus
+HIViewAdvanceFocus(
+  HIViewRef inRootForFocus,
+  EventModifiers inModifiers) ;
+extern OSStatus
+HIViewGetFocusPart(
+  HIViewRef inView,
+  HIViewPartCode * outFocusPart) ;
+extern Boolean
+HIViewSubtreeContainsFocus(HIViewRef inSubtreeStart) ;
+extern OSStatus
+HIViewSetNextFocus(
+  HIViewRef inView,
+  HIViewRef inNextFocus) ;
+extern OSStatus
+HIViewSetFirstSubViewFocus(
+  HIViewRef inParent,
+  HIViewRef inSubView) ;
+extern OSStatus
+HIViewFindByID(
+  HIViewRef inStartView,
+  HIViewID inID,
+  HIViewRef * outControl) ;
+extern OSStatus
+HIViewGetAttributes(
+  HIViewRef inView,
+  OptionBits * outAttrs) ;
+extern OSStatus
+HIViewChangeAttributes(
+  HIViewRef inView,
+  OptionBits inAttrsToSet,
+  OptionBits inAttrsToClear) ;
+extern OSStatus
+HIViewCreateOffscreenImage(
+  HIViewRef inView,
+  OptionBits inOptions,
+  HIRect * outFrame,
+  CGImageRef * outImage) ;
+extern OSStatus
+HIViewDrawCGImage(
+  CGContextRef inContext,
+  const HIRect * inBounds,
+  CGImageRef inImage) ;
+extern OSStatus
+HIGrowBoxViewSetTransparent(
+  HIViewRef inGrowBoxView,
+  Boolean inTransparent) ;
+extern Boolean
+HIGrowBoxViewIsTransparent(HIViewRef inGrowBoxView) ;
+
+
+
+
+
+
+enum {
+  kEventClassScrollable = 'scrl'
+};
+
+enum {
+  kEventScrollableGetInfo = 1,
+  kEventScrollableInfoChanged = 2,
+  kEventScrollableScrollTo = 10
+};
+
+enum {
+  kEventParamImageSize = 'imsz',
+  kEventParamViewSize = 'vwsz',
+  kEventParamLineSize = 'lnsz',
+  kEventParamOrigin = 'orgn'
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+  kHIScrollViewOptionsVertScroll = (1 << 0),
+
+
+
+
+  kHIScrollViewOptionsHorizScroll = (1 << 1),
+
+
+
+
+
+
+  kHIScrollViewOptionsAllowGrow = (1 << 2),
+  kHIScrollViewValidOptions = (kHIScrollViewOptionsVertScroll | kHIScrollViewOptionsHorizScroll | kHIScrollViewOptionsAllowGrow)
+};
+extern OSStatus
+HIScrollViewCreate(
+  OptionBits inOptions,
+  HIViewRef * outView) ;
+extern OSStatus
+HIScrollViewSetScrollBarAutoHide(
+  HIViewRef inView,
+  Boolean inAutoHide) ;
+extern Boolean
+HIScrollViewGetScrollBarAutoHide(HIViewRef inView) ;
+extern OSStatus
+HIImageViewCreate(
+  CGImageRef inImage,
+  ControlRef * outControl) ;
+
+
+enum {
+  kHIImageViewImageTag = 'imag'
+};
+extern OSStatus
+HIImageViewSetOpaque(
+  HIViewRef inView,
+  Boolean inOpaque) ;
+extern Boolean
+HIImageViewIsOpaque(HIViewRef inView) ;
+extern OSStatus
+HIImageViewSetAlpha(
+  HIViewRef inView,
+  float inAlpha) ;
+extern float
+HIImageViewGetAlpha(HIViewRef inView) ;
+extern OSStatus
+HIImageViewSetScaleToFit(
+  HIViewRef inView,
+  Boolean inScaleToFit) ;
+extern Boolean
+HIImageViewGetScaleToFit(HIViewRef inView) ;
+extern OSStatus
+HIImageViewSetImage(
+  HIViewRef inView,
+  CGImageRef inImage) ;
+extern CGImageRef
+HIImageViewCopyImage(HIViewRef inView) ;
+enum {
+
+
+
+
+  kHIComboBoxNoAttributes = 0L,
+
+
+
+
+
+
+  kHIComboBoxAutoCompletionAttribute = (1L << 0),
+
+
+
+
+
+  kHIComboBoxAutoDisclosureAttribute = (1L << 1),
+
+
+
+
+
+  kHIComboBoxAutoSortAttribute = (1L << 2),
+
+
+
+
+
+  kHIComboBoxAutoSizeListAttribute = (1L << 3),
+
+
+
+
+  kHIComboBoxStandardAttributes = (kHIComboBoxAutoCompletionAttribute | kHIComboBoxAutoDisclosureAttribute | kHIComboBoxAutoSizeListAttribute)
+};
+
+
+enum {
+  kControlKindHIComboBox = 'cbbx'
+};
+
+
+enum {
+  kHIComboBoxEditTextPart = 5,
+  kHIComboBoxDisclosurePart = 28
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+
+  kHIComboBoxListTag = 'cbls',
+
+
+
+
+
+  kHIComboBoxListPixelWidthTag = 'cblw',
+
+
+
+
+
+  kHIComboBoxListPixelHeightTag = 'cblh',
+
+
+
+
+
+  kHIComboBoxNumVisibleItemsTag = 'cbni'
+};
+extern OSStatus
+HIComboBoxCreate(
+  const HIRect * boundsRect,
+  CFStringRef text,
+  const ControlFontStyleRec * style,
+  CFArrayRef list,
+  OptionBits inAttributes,
+  HIViewRef * outComboBox) ;
+extern ItemCount
+HIComboBoxGetItemCount(HIViewRef inComboBox) ;
+extern OSStatus
+HIComboBoxInsertTextItemAtIndex(
+  HIViewRef inComboBox,
+  CFIndex inIndex,
+  CFStringRef inText) ;
+extern OSStatus
+HIComboBoxAppendTextItem(
+  HIViewRef inComboBox,
+  CFStringRef inText,
+  CFIndex * outIndex) ;
+extern OSStatus
+HIComboBoxCopyTextItemAtIndex(
+  HIViewRef inComboBox,
+  CFIndex inIndex,
+  CFStringRef * outString) ;
+extern OSStatus
+HIComboBoxRemoveItemAtIndex(
+  HIViewRef inComboBox,
+  CFIndex inIndex) ;
+extern OSStatus
+HIComboBoxChangeAttributes(
+  HIViewRef inComboBox,
+  OptionBits inAttributesToSet,
+  OptionBits inAttributesToClear) ;
+extern OSStatus
+HIComboBoxGetAttributes(
+  HIViewRef inComboBox,
+  OptionBits * outAttributes) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+extern OSStatus
+GetTextAndEncodingFromCFString(
+  CFStringRef inString,
+  BytePtr outText,
+  ByteCount inTextMaxLength,
+  ByteCount * outTextLength,
+  TextEncoding * outEncoding) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+typedef const struct __HIShape* HIShapeRef;
+typedef struct __HIShape* HIMutableShapeRef;
+extern CFTypeID
+HIShapeGetTypeID(void) ;
+extern HIShapeRef
+HIShapeCreateWithQDRgn(RgnHandle inRgn) ;
+extern HIShapeRef
+HIShapeCreateWithRect(const HIRect * inRect) ;
+extern HIShapeRef
+HIShapeCreateCopy(HIShapeRef inShape) ;
+extern HIShapeRef
+HIShapeCreateIntersection(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2) ;
+extern HIShapeRef
+HIShapeCreateDifference(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2) ;
+extern HIShapeRef
+HIShapeCreateUnion(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2) ;
+extern Boolean
+HIShapeIsEmpty(HIShapeRef inShape) ;
+extern Boolean
+HIShapeIsRectangular(HIShapeRef inShape) ;
+extern Boolean
+HIShapeContainsPoint(
+  HIShapeRef inShape,
+  const HIPoint * inPoint) ;
+extern HIRect *
+HIShapeGetBounds(
+  HIShapeRef inShape,
+  HIRect * outRect) ;
+extern OSStatus
+HIShapeGetAsQDRgn(
+  HIShapeRef inShape,
+  RgnHandle outRgn) ;
+extern OSStatus
+HIShapeReplacePathInCGContext(
+  HIShapeRef inShape,
+  CGContextRef inContext) ;
+extern OSStatus
+HIShapeSetQDClip(
+  HIShapeRef inShape,
+  CGrafPtr inPort) ;
+extern HIMutableShapeRef
+HIShapeCreateMutable(void) ;
+extern HIMutableShapeRef
+HIShapeCreateMutableCopy(HIShapeRef inOrig) ;
+extern OSStatus
+HIShapeSetEmpty(HIMutableShapeRef inShape) ;
+extern OSStatus
+HIShapeIntersect(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2,
+  HIMutableShapeRef outResult) ;
+extern OSStatus
+HIShapeDifference(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2,
+  HIMutableShapeRef outResult) ;
+extern OSStatus
+HIShapeUnion(
+  HIShapeRef inShape1,
+  HIShapeRef inShape2,
+  HIMutableShapeRef outResult) ;
+extern OSStatus
+HIShapeOffset(
+  HIMutableShapeRef inShape,
+  float inDX,
+  float inDY) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+
+
+
+
+typedef SInt16 BalloonVariant;
+enum {
+  kTopLeftTipPointsLeftVariant = 0,
+  kTopLeftTipPointsUpVariant = 1,
+  kTopRightTipPointsUpVariant = 2,
+  kTopRightTipPointsRightVariant = 3,
+  kBottomRightTipPointsRightVariant = 4,
+  kBottomRightTipPointsDownVariant = 5,
+  kBottomLeftTipPointsDownVariant = 6,
+  kBottomLeftTipPointsLeftVariant = 7,
+  kBalloonVariantCount = 8
+};
+
+
+enum {
+  hmBalloonHelpVersion = 0x0002
+};
+
+enum {
+  kHMHelpMenuID = -16490,
+  kHMAboutHelpItem = 1,
+  kHMShowBalloonsItem = 3
+};
+
+enum {
+  kHMHelpID = -5696,
+  kBalloonWDEFID = 126
+};
+
+enum {
+
+  helpItem = 1
+};
+
+enum {
+
+  hmDefaultOptions = 0,
+  hmUseSubIDBit = 0,
+  hmAbsoluteCoordsBit = 1,
+  hmSaveBitsNoWindowBit = 2,
+  hmSaveBitsWindowBit = 3,
+  hmMatchInTitleBit = 4,
+  hmUseSubIDMask = (1 << hmUseSubIDBit),
+  hmAbsoluteCoordsMask = (1 << hmAbsoluteCoordsBit),
+  hmSaveBitsNoWindowMask = (1 << hmSaveBitsNoWindowBit),
+  hmSaveBitsWindowMask = (1 << hmSaveBitsWindowBit),
+  hmMatchInTitleMask = (1 << hmMatchInTitleBit)
+};
+enum {
+
+  kHMStringItem = 1,
+  kHMPictItem = 2,
+  kHMStringResItem = 3,
+  kHMTEResItem = 6,
+  kHMSTRResItem = 7,
+  kHMSkipItem = 256,
+  kHMCompareItem = 512,
+  kHMNamedResourceItem = 1024,
+  kHMTrackCntlItem = 2048
+};
+
+enum {
+
+  khmmString = 1,
+  khmmPict = 2,
+  khmmStringRes = 3,
+  khmmTEHandle = 4,
+  khmmPictHandle = 5,
+  khmmTERes = 6,
+  khmmSTRRes = 7,
+  kHMEnabledItem = 0
+};
+
+enum {
+
+  kHMTETextResType = 'TEXT',
+  kHMTEStyleResType = 'styl'
+};
+
+enum {
+  kHMDisabledItem = 1,
+  kHMCheckedItem = 2,
+  kHMOtherItem = 3,
+
+  kHMRegularWindow = 0,
+  kHMSaveBitsNoWindow = 1,
+  kHMSaveBitsWindow = 2
+};
+
+enum {
+
+  kHMMenuResType = 'hmnu',
+  kHMDialogResType = 'hdlg',
+  kHMWindListResType = 'hwin',
+  kHMRectListResType = 'hrct',
+  kHMOverrideResType = 'hovr',
+  kHMFinderApplResType = 'hfdr'
+};
+
+struct HMStringResType {
+  short hmmResID;
+  short hmmIndex;
+};
+typedef struct HMStringResType HMStringResType;
+struct HMMessageRecord {
+  SInt16 hmmHelpType;
+  union {
+    Str255 hmmString;
+    SInt16 hmmPict;
+    TEHandle hmmTEHandle;
+    HMStringResType hmmStringRes;
+    SInt16 hmmPictRes;
+    PicHandle hmmPictHandle;
+    SInt16 hmmTERes;
+    SInt16 hmmSTRRes;
+  } u;
+};
+typedef struct HMMessageRecord HMMessageRecord;
+typedef HMMessageRecord * HMMessageRecPtr;
+typedef OSErr ( * TipFunctionProcPtr)(Point tip, RgnHandle structure, Rect *r, BalloonVariant *balloonVariant);
+typedef TipFunctionProcPtr TipFunctionUPP;
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+typedef struct NMRec NMRec;
+typedef NMRec * NMRecPtr;
+typedef void ( * NMProcPtr)(NMRecPtr nmReqPtr);
+typedef NMProcPtr NMUPP;
+struct NMRec {
+  QElemPtr qLink;
+  short qType;
+  short nmFlags;
+  long nmPrivate;
+  short nmReserved;
+  short nmMark;
+  Handle nmIcon;
+  Handle nmSound;
+  StringPtr nmStr;
+  NMUPP nmResp;
+  long nmRefCon;
+};
+extern NMUPP
+NewNMUPP(NMProcPtr userRoutine) ;
+extern void
+DisposeNMUPP(NMUPP userUPP) ;
+extern void
+InvokeNMUPP(
+  NMRecPtr nmReqPtr,
+  NMUPP userUPP) ;
+extern OSErr
+NMInstall(NMRecPtr nmReqPtr) ;
+extern OSErr
+NMRemove(NMRecPtr nmReqPtr) ;
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+enum {
+  kAppearanceEventClass = 'appr',
+  kAEAppearanceChanged = 'thme',
+  kAESystemFontChanged = 'sysf',
+  kAESmallSystemFontChanged = 'ssfn',
+  kAEViewsFontChanged = 'vfnt'
+};
+
+
+
+
+enum {
+  kThemeDataFileType = 'thme',
+  kThemePlatinumFileType = 'pltn',
+  kThemeCustomThemesFileType = 'scen',
+  kThemeSoundTrackFileType = 'tsnd'
+};
+enum {
+  kThemeBrushDialogBackgroundActive = 1,
+  kThemeBrushDialogBackgroundInactive = 2,
+  kThemeBrushAlertBackgroundActive = 3,
+  kThemeBrushAlertBackgroundInactive = 4,
+  kThemeBrushModelessDialogBackgroundActive = 5,
+  kThemeBrushModelessDialogBackgroundInactive = 6,
+  kThemeBrushUtilityWindowBackgroundActive = 7,
+  kThemeBrushUtilityWindowBackgroundInactive = 8,
+  kThemeBrushListViewSortColumnBackground = 9,
+  kThemeBrushListViewBackground = 10,
+  kThemeBrushIconLabelBackground = 11,
+  kThemeBrushListViewSeparator = 12,
+  kThemeBrushChasingArrows = 13,
+  kThemeBrushDragHilite = 14,
+  kThemeBrushDocumentWindowBackground = 15,
+  kThemeBrushFinderWindowBackground = 16
+};
+
+
+enum {
+  kThemeBrushScrollBarDelimiterActive = 17,
+  kThemeBrushScrollBarDelimiterInactive = 18,
+  kThemeBrushFocusHighlight = 19,
+  kThemeBrushPopupArrowActive = 20,
+  kThemeBrushPopupArrowPressed = 21,
+  kThemeBrushPopupArrowInactive = 22,
+  kThemeBrushAppleGuideCoachmark = 23,
+  kThemeBrushIconLabelBackgroundSelected = 24,
+  kThemeBrushStaticAreaFill = 25,
+  kThemeBrushActiveAreaFill = 26,
+  kThemeBrushButtonFrameActive = 27,
+  kThemeBrushButtonFrameInactive = 28,
+  kThemeBrushButtonFaceActive = 29,
+  kThemeBrushButtonFaceInactive = 30,
+  kThemeBrushButtonFacePressed = 31,
+  kThemeBrushButtonActiveDarkShadow = 32,
+  kThemeBrushButtonActiveDarkHighlight = 33,
+  kThemeBrushButtonActiveLightShadow = 34,
+  kThemeBrushButtonActiveLightHighlight = 35,
+  kThemeBrushButtonInactiveDarkShadow = 36,
+  kThemeBrushButtonInactiveDarkHighlight = 37,
+  kThemeBrushButtonInactiveLightShadow = 38,
+  kThemeBrushButtonInactiveLightHighlight = 39,
+  kThemeBrushButtonPressedDarkShadow = 40,
+  kThemeBrushButtonPressedDarkHighlight = 41,
+  kThemeBrushButtonPressedLightShadow = 42,
+  kThemeBrushButtonPressedLightHighlight = 43,
+  kThemeBrushBevelActiveLight = 44,
+  kThemeBrushBevelActiveDark = 45,
+  kThemeBrushBevelInactiveLight = 46,
+  kThemeBrushBevelInactiveDark = 47
+};
+
+
+enum {
+  kThemeBrushNotificationWindowBackground = 48
+};
+
+
+enum {
+  kThemeBrushMovableModalBackground = 49,
+  kThemeBrushSheetBackgroundOpaque = 50,
+  kThemeBrushDrawerBackground = 51,
+  kThemeBrushToolbarBackground = 52,
+  kThemeBrushSheetBackgroundTransparent = 53,
+  kThemeBrushMenuBackground = 54,
+  kThemeBrushMenuBackgroundSelected = 55
+};
+
+
+enum {
+  kThemeBrushSheetBackground = kThemeBrushSheetBackgroundOpaque
+};
+
+
+
+
+enum {
+  kThemeBrushBlack = -1,
+  kThemeBrushWhite = -2,
+  kThemeBrushPrimaryHighlightColor = -3,
+  kThemeBrushSecondaryHighlightColor = -4
+};
+
+typedef SInt16 ThemeBrush;
+enum {
+  kThemeTextColorDialogActive = 1,
+  kThemeTextColorDialogInactive = 2,
+  kThemeTextColorAlertActive = 3,
+  kThemeTextColorAlertInactive = 4,
+  kThemeTextColorModelessDialogActive = 5,
+  kThemeTextColorModelessDialogInactive = 6,
+  kThemeTextColorWindowHeaderActive = 7,
+  kThemeTextColorWindowHeaderInactive = 8,
+  kThemeTextColorPlacardActive = 9,
+  kThemeTextColorPlacardInactive = 10,
+  kThemeTextColorPlacardPressed = 11,
+  kThemeTextColorPushButtonActive = 12,
+  kThemeTextColorPushButtonInactive = 13,
+  kThemeTextColorPushButtonPressed = 14,
+  kThemeTextColorBevelButtonActive = 15,
+  kThemeTextColorBevelButtonInactive = 16,
+  kThemeTextColorBevelButtonPressed = 17,
+  kThemeTextColorPopupButtonActive = 18,
+  kThemeTextColorPopupButtonInactive = 19,
+  kThemeTextColorPopupButtonPressed = 20,
+  kThemeTextColorIconLabel = 21,
+  kThemeTextColorListView = 22
+};
+
+
+enum {
+  kThemeTextColorDocumentWindowTitleActive = 23,
+  kThemeTextColorDocumentWindowTitleInactive = 24,
+  kThemeTextColorMovableModalWindowTitleActive = 25,
+  kThemeTextColorMovableModalWindowTitleInactive = 26,
+  kThemeTextColorUtilityWindowTitleActive = 27,
+  kThemeTextColorUtilityWindowTitleInactive = 28,
+  kThemeTextColorPopupWindowTitleActive = 29,
+  kThemeTextColorPopupWindowTitleInactive = 30,
+  kThemeTextColorRootMenuActive = 31,
+  kThemeTextColorRootMenuSelected = 32,
+  kThemeTextColorRootMenuDisabled = 33,
+  kThemeTextColorMenuItemActive = 34,
+  kThemeTextColorMenuItemSelected = 35,
+  kThemeTextColorMenuItemDisabled = 36,
+  kThemeTextColorPopupLabelActive = 37,
+  kThemeTextColorPopupLabelInactive = 38
+};
+
+
+
+enum {
+  kThemeTextColorTabFrontActive = 39,
+  kThemeTextColorTabNonFrontActive = 40,
+  kThemeTextColorTabNonFrontPressed = 41,
+  kThemeTextColorTabFrontInactive = 42,
+  kThemeTextColorTabNonFrontInactive = 43,
+  kThemeTextColorIconLabelSelected = 44,
+  kThemeTextColorBevelButtonStickyActive = 45,
+  kThemeTextColorBevelButtonStickyInactive = 46
+};
+
+
+enum {
+  kThemeTextColorNotification = 47
+};
+
+
+
+enum {
+  kThemeTextColorSystemDetail = 48
+};
+
+
+
+enum {
+  kThemeTextColorBlack = -1,
+  kThemeTextColorWhite = -2
+};
+
+typedef SInt16 ThemeTextColor;
+
+enum {
+  kThemeStateInactive = 0,
+  kThemeStateActive = 1,
+  kThemeStatePressed = 2,
+  kThemeStateRollover = 6,
+  kThemeStateUnavailable = 7,
+  kThemeStateUnavailableInactive = 8
+};
+
+
+enum {
+  kThemeStateDisabled = 0
+};
+
+enum {
+  kThemeStatePressedUp = 2,
+  kThemeStatePressedDown = 3
+};
+
+typedef UInt32 ThemeDrawState;
+
+
+
+enum {
+  kThemeArrowCursor = 0,
+  kThemeCopyArrowCursor = 1,
+  kThemeAliasArrowCursor = 2,
+  kThemeContextualMenuArrowCursor = 3,
+  kThemeIBeamCursor = 4,
+  kThemeCrossCursor = 5,
+  kThemePlusCursor = 6,
+  kThemeWatchCursor = 7,
+  kThemeClosedHandCursor = 8,
+  kThemeOpenHandCursor = 9,
+  kThemePointingHandCursor = 10,
+  kThemeCountingUpHandCursor = 11,
+  kThemeCountingDownHandCursor = 12,
+  kThemeCountingUpAndDownHandCursor = 13,
+  kThemeSpinningCursor = 14,
+  kThemeResizeLeftCursor = 15,
+  kThemeResizeRightCursor = 16,
+  kThemeResizeLeftRightCursor = 17,
+  kThemeNotAllowedCursor = 18
+};
+
+typedef UInt32 ThemeCursor;
+
+
+
+enum {
+  kThemeMenuBarNormal = 0,
+  kThemeMenuBarSelected = 1
+};
+
+typedef UInt16 ThemeMenuBarState;
+
+enum {
+  kThemeMenuSquareMenuBar = (1 << 0)
+};
+
+
+
+
+enum {
+  kThemeMenuActive = 0,
+  kThemeMenuSelected = 1,
+  kThemeMenuDisabled = 3
+};
+
+typedef UInt16 ThemeMenuState;
+
+
+
+
+enum {
+  kThemeMenuTypePullDown = 0,
+  kThemeMenuTypePopUp = 1,
+  kThemeMenuTypeHierarchical = 2,
+  kThemeMenuTypeInactive = 0x0100
+};
+
+typedef UInt16 ThemeMenuType;
+enum {
+  kThemeMenuItemPlain = 0,
+  kThemeMenuItemHierarchical = 1,
+  kThemeMenuItemScrollUpArrow = 2,
+  kThemeMenuItemScrollDownArrow = 3,
+  kThemeMenuItemAtTop = 0x0100,
+  kThemeMenuItemAtBottom = 0x0200,
+  kThemeMenuItemHierBackground = 0x0400,
+  kThemeMenuItemPopUpBackground = 0x0800,
+  kThemeMenuItemHasIcon = 0x8000,
+  kThemeMenuItemNoBackground = 0x4000
+};
+
+typedef UInt16 ThemeMenuItemType;
+
+
+
+enum {
+  kThemeBackgroundTabPane = 1,
+  kThemeBackgroundPlacard = 2,
+  kThemeBackgroundWindowHeader = 3,
+  kThemeBackgroundListViewWindowHeader = 4,
+  kThemeBackgroundSecondaryGroupBox = 5
+};
+
+typedef UInt32 ThemeBackgroundKind;
+enum {
+  kThemeNameTag = 'name',
+  kThemeVariantNameTag = 'varn',
+  kThemeVariantBaseTintTag = 'tint',
+  kThemeHighlightColorTag = 'hcol',
+  kThemeScrollBarArrowStyleTag = 'sbar',
+  kThemeScrollBarThumbStyleTag = 'sbth',
+  kThemeSoundsEnabledTag = 'snds',
+  kThemeDblClickCollapseTag = 'coll'
+};
+
+enum {
+  kThemeAppearanceFileNameTag = 'thme',
+  kThemeSystemFontTag = 'lgsf',
+  kThemeSmallSystemFontTag = 'smsf',
+  kThemeViewsFontTag = 'vfnt',
+  kThemeViewsFontSizeTag = 'vfsz',
+  kThemeDesktopPatternNameTag = 'patn',
+  kThemeDesktopPatternTag = 'patt',
+  kThemeDesktopPictureNameTag = 'dpnm',
+  kThemeDesktopPictureAliasTag = 'dpal',
+  kThemeDesktopPictureAlignmentTag = 'dpan',
+  kThemeHighlightColorNameTag = 'hcnm',
+  kThemeExamplePictureIDTag = 'epic',
+  kThemeSoundTrackNameTag = 'sndt',
+  kThemeSoundMaskTag = 'smsk',
+  kThemeUserDefinedTag = 'user',
+  kThemeSmoothFontEnabledTag = 'smoo',
+  kThemeSmoothFontMinSizeTag = 'smos'
+};
+
+
+enum {
+  kTiledOnScreen = 1,
+  kCenterOnScreen = 2,
+  kFitToScreen = 3,
+  kFillScreen = 4,
+  kUseBestGuess = 5
+};
+
+
+
+
+enum {
+  kThemeCheckBoxClassicX = 0,
+  kThemeCheckBoxCheckMark = 1
+};
+
+typedef UInt16 ThemeCheckBoxStyle;
+enum {
+  kThemeScrollBarArrowsSingle = 0,
+  kThemeScrollBarArrowsLowerRight = 1
+};
+
+typedef UInt16 ThemeScrollBarArrowStyle;
+enum {
+  kThemeScrollBarThumbNormal = 0,
+  kThemeScrollBarThumbProportional = 1
+};
+
+typedef UInt16 ThemeScrollBarThumbStyle;
+enum {
+  kThemeSystemFont = 0,
+
+
+
+
+
+
+  kThemeSmallSystemFont = 1,
+
+
+
+
+
+
+  kThemeSmallEmphasizedSystemFont = 2,
+
+
+
+
+
+  kThemeViewsFont = 3,
+
+
+
+
+
+
+
+  kThemeEmphasizedSystemFont = 4,
+
+
+
+
+
+
+
+  kThemeApplicationFont = 5,
+
+
+
+
+
+
+
+  kThemeLabelFont = 6,
+
+
+
+
+
+  kThemeMenuTitleFont = 100,
+
+
+
+
+
+  kThemeMenuItemFont = 101,
+
+
+
+
+
+  kThemeMenuItemMarkFont = 102,
+
+
+
+
+
+  kThemeMenuItemCmdKeyFont = 103,
+
+
+
+
+
+  kThemeWindowTitleFont = 104,
+
+
+
+
+
+  kThemePushButtonFont = 105,
+
+
+
+
+
+  kThemeUtilityWindowTitleFont = 106,
+
+
+
+
+
+  kThemeAlertHeaderFont = 107,
+  kThemeSystemFontDetail = 7,
+  kThemeSystemFontDetailEmphasized = 8,
+  kThemeCurrentPortFont = 200,
+
+
+
+
+
+  kThemeToolbarFont = 108
+};
+
+
+enum {
+  kPublicThemeFontCount = 17
+};
+
+typedef UInt16 ThemeFontID;
+
+
+
+enum {
+  kThemeTabNonFront = 0,
+  kThemeTabNonFrontPressed = 1,
+  kThemeTabNonFrontInactive = 2,
+  kThemeTabFront = 3,
+  kThemeTabFrontInactive = 4,
+  kThemeTabNonFrontUnavailable = 5,
+  kThemeTabFrontUnavailable = 6
+};
+
+typedef UInt16 ThemeTabStyle;
+enum {
+  kThemeTabNorth = 0,
+  kThemeTabSouth = 1,
+  kThemeTabEast = 2,
+  kThemeTabWest = 3
+};
+
+typedef UInt16 ThemeTabDirection;
+
+
+
+
+
+
+enum {
+  kThemeSmallTabHeight = 16,
+  kThemeLargeTabHeight = 21,
+  kThemeTabPaneOverlap = 3,
+  kThemeSmallTabHeightMax = 19,
+  kThemeLargeTabHeightMax = 24
+};
+
+
+
+
+enum {
+  kThemeMediumScrollBar = 0,
+  kThemeSmallScrollBar = 1,
+  kThemeMediumSlider = 2,
+  kThemeMediumProgressBar = 3,
+  kThemeMediumIndeterminateBar = 4,
+  kThemeRelevanceBar = 5,
+  kThemeSmallSlider = 6,
+  kThemeLargeProgressBar = 7,
+  kThemeLargeIndeterminateBar = 8
+};
+
+typedef UInt16 ThemeTrackKind;
+
+
+
+enum {
+
+  kThemeTrackActive = 0,
+  kThemeTrackDisabled = 1,
+  kThemeTrackNothingToScroll = 2,
+  kThemeTrackInactive = 3
+};
+
+typedef UInt8 ThemeTrackEnableState;
+
+
+
+enum {
+
+  kThemeLeftOutsideArrowPressed = 0x01,
+  kThemeLeftInsideArrowPressed = 0x02,
+  kThemeLeftTrackPressed = 0x04,
+  kThemeThumbPressed = 0x08,
+  kThemeRightTrackPressed = 0x10,
+  kThemeRightInsideArrowPressed = 0x20,
+  kThemeRightOutsideArrowPressed = 0x40,
+  kThemeTopOutsideArrowPressed = kThemeLeftOutsideArrowPressed,
+  kThemeTopInsideArrowPressed = kThemeLeftInsideArrowPressed,
+  kThemeTopTrackPressed = kThemeLeftTrackPressed,
+  kThemeBottomTrackPressed = kThemeRightTrackPressed,
+  kThemeBottomInsideArrowPressed = kThemeRightInsideArrowPressed,
+  kThemeBottomOutsideArrowPressed = kThemeRightOutsideArrowPressed
+};
+
+typedef UInt8 ThemeTrackPressState;
+
+
+
+enum {
+
+  kThemeThumbPlain = 0,
+  kThemeThumbUpward = 1,
+  kThemeThumbDownward = 2
+};
+
+typedef UInt8 ThemeThumbDirection;
+enum {
+
+
+
+
+  kThemeTrackHorizontal = (1 << 0),
+
+
+
+
+  kThemeTrackRightToLeft = (1 << 1),
+
+
+
+
+  kThemeTrackShowThumb = (1 << 2),
+
+
+
+
+  kThemeTrackThumbRgnIsNotGhost = (1 << 3),
+
+
+
+
+
+  kThemeTrackNoScrollBarArrows = (1 << 4),
+
+
+
+
+
+  kThemeTrackHasFocus = (1 << 5)
+};
+
+typedef UInt16 ThemeTrackAttributes;
+
+
+
+struct ScrollBarTrackInfo {
+  SInt32 viewsize;
+  ThemeTrackPressState pressState;
+};
+typedef struct ScrollBarTrackInfo ScrollBarTrackInfo;
+struct SliderTrackInfo {
+  ThemeThumbDirection thumbDir;
+  ThemeTrackPressState pressState;
+};
+typedef struct SliderTrackInfo SliderTrackInfo;
+struct ProgressTrackInfo {
+  UInt8 phase;
+};
+typedef struct ProgressTrackInfo ProgressTrackInfo;
+struct ThemeTrackDrawInfo {
+  ThemeTrackKind kind;
+  Rect bounds;
+  SInt32 min;
+  SInt32 max;
+  SInt32 value;
+  UInt32 reserved;
+
+  ThemeTrackAttributes attributes;
+  ThemeTrackEnableState enableState;
+  UInt8 filler1;
+
+  union {
+    ScrollBarTrackInfo scrollbar;
+    SliderTrackInfo slider;
+    ProgressTrackInfo progress;
+  } trackInfo;
+};
+typedef struct ThemeTrackDrawInfo ThemeTrackDrawInfo;
+
+
+
+enum {
+  kThemeWindowHasGrow = (1 << 0),
+  kThemeWindowHasHorizontalZoom = (1 << 3),
+  kThemeWindowHasVerticalZoom = (1 << 4),
+  kThemeWindowHasFullZoom = kThemeWindowHasHorizontalZoom + kThemeWindowHasVerticalZoom,
+  kThemeWindowHasCloseBox = (1 << 5),
+  kThemeWindowHasCollapseBox = (1 << 6),
+  kThemeWindowHasTitleText = (1 << 7),
+  kThemeWindowIsCollapsed = (1 << 8),
+  kThemeWindowHasDirty = (1 << 9)
+};
+
+
+typedef UInt32 ThemeWindowAttributes;
+
+
+
+enum {
+  kThemeDocumentWindow = 0,
+  kThemeDialogWindow = 1,
+  kThemeMovableDialogWindow = 2,
+  kThemeAlertWindow = 3,
+  kThemeMovableAlertWindow = 4,
+  kThemePlainDialogWindow = 5,
+  kThemeShadowDialogWindow = 6,
+  kThemePopupWindow = 7,
+  kThemeUtilityWindow = 8,
+  kThemeUtilitySideWindow = 9,
+  kThemeSheetWindow = 10,
+  kThemeDrawerWindow = 11
+};
+
+typedef UInt16 ThemeWindowType;
+
+
+
+enum {
+  kThemeWidgetCloseBox = 0,
+  kThemeWidgetZoomBox = 1,
+  kThemeWidgetCollapseBox = 2,
+  kThemeWidgetDirtyCloseBox = 6
+};
+
+enum {
+
+  kThemeWidgetABox = 3,
+  kThemeWidgetBBox = 4,
+  kThemeWidgetBOffBox = 5
+};
+
+typedef UInt16 ThemeTitleBarWidget;
+
+
+
+enum {
+  kThemeArrowLeft = 0,
+  kThemeArrowDown = 1,
+  kThemeArrowRight = 2,
+  kThemeArrowUp = 3
+};
+
+typedef UInt16 ThemeArrowOrientation;
+
+
+
+enum {
+  kThemeArrow3pt = 0,
+  kThemeArrow5pt = 1,
+  kThemeArrow7pt = 2,
+  kThemeArrow9pt = 3
+};
+
+typedef UInt16 ThemePopupArrowSize;
+
+
+
+enum {
+  kThemeGrowLeft = (1 << 0),
+  kThemeGrowRight = (1 << 1),
+  kThemeGrowUp = (1 << 2),
+  kThemeGrowDown = (1 << 3)
+};
+
+typedef UInt16 ThemeGrowDirection;
+
+
+
+enum {
+  kThemePushButton = 0,
+  kThemeCheckBox = 1,
+  kThemeRadioButton = 2,
+  kThemeBevelButton = 3,
+  kThemeArrowButton = 4,
+  kThemePopupButton = 5,
+  kThemeDisclosureButton = 6,
+  kThemeIncDecButton = 7,
+  kThemeSmallBevelButton = 8,
+  kThemeMediumBevelButton = 3,
+  kThemeLargeBevelButton = 9,
+  kThemeListHeaderButton = 10,
+  kThemeRoundButton = 11,
+  kThemeLargeRoundButton = 12,
+  kThemeSmallCheckBox = 13,
+  kThemeSmallRadioButton = 14,
+  kThemeRoundedBevelButton = 15,
+  kThemeNormalCheckBox = kThemeCheckBox,
+  kThemeNormalRadioButton = kThemeRadioButton
+};
+
+typedef UInt16 ThemeButtonKind;
+
+
+
+enum {
+  kThemeButtonOff = 0,
+  kThemeButtonOn = 1,
+  kThemeButtonMixed = 2,
+  kThemeDisclosureRight = 0,
+  kThemeDisclosureDown = 1,
+  kThemeDisclosureLeft = 2
+};
+
+typedef UInt16 ThemeButtonValue;
+
+
+
+enum {
+  kThemeAdornmentNone = 0,
+  kThemeAdornmentDefault = (1 << 0),
+  kThemeAdornmentFocus = (1 << 2),
+  kThemeAdornmentRightToLeft = (1 << 4),
+  kThemeAdornmentDrawIndicatorOnly = (1 << 5),
+  kThemeAdornmentHeaderButtonLeftNeighborSelected = (1 << 6),
+  kThemeAdornmentHeaderButtonRightNeighborSelected = (1 << 7),
+  kThemeAdornmentHeaderButtonSortUp = (1 << 8),
+  kThemeAdornmentHeaderMenuButton = (1 << 9),
+  kThemeAdornmentHeaderButtonNoShadow = (1 << 10),
+  kThemeAdornmentHeaderButtonShadowOnly = (1 << 11),
+  kThemeAdornmentNoShadow = kThemeAdornmentHeaderButtonNoShadow,
+  kThemeAdornmentShadowOnly = kThemeAdornmentHeaderButtonShadowOnly,
+  kThemeAdornmentArrowLeftArrow = (1 << 6),
+  kThemeAdornmentArrowDownArrow = (1 << 7),
+  kThemeAdornmentArrowDoubleArrow = (1 << 8),
+  kThemeAdornmentArrowUpArrow = (1 << 9)
+};
+
+typedef UInt16 ThemeButtonAdornment;
+
+
+
+struct ThemeButtonDrawInfo {
+  ThemeDrawState state;
+  ThemeButtonValue value;
+  ThemeButtonAdornment adornment;
+};
+typedef struct ThemeButtonDrawInfo ThemeButtonDrawInfo;
+typedef ThemeButtonDrawInfo * ThemeButtonDrawInfoPtr;
+enum {
+  kThemeNoSounds = 0,
+  kThemeWindowSoundsMask = (1 << 0),
+  kThemeMenuSoundsMask = (1 << 1),
+  kThemeControlSoundsMask = (1 << 2),
+  kThemeFinderSoundsMask = (1 << 3)
+};
+enum {
+  kThemeDragSoundNone = 0,
+  kThemeDragSoundMoveWindow = 'wmov',
+  kThemeDragSoundGrowWindow = 'wgro',
+  kThemeDragSoundMoveUtilWindow = 'umov',
+  kThemeDragSoundGrowUtilWindow = 'ugro',
+  kThemeDragSoundMoveDialog = 'dmov',
+  kThemeDragSoundMoveAlert = 'amov',
+  kThemeDragSoundMoveIcon = 'imov',
+  kThemeDragSoundSliderThumb = 'slth',
+  kThemeDragSoundSliderGhost = 'slgh',
+  kThemeDragSoundScrollBarThumb = 'sbth',
+  kThemeDragSoundScrollBarGhost = 'sbgh',
+  kThemeDragSoundScrollBarArrowDecreasing = 'sbad',
+  kThemeDragSoundScrollBarArrowIncreasing = 'sbai',
+  kThemeDragSoundDragging = 'drag'
+};
+
+typedef OSType ThemeDragSoundKind;
+enum {
+  kThemeSoundNone = 0,
+  kThemeSoundMenuOpen = 'mnuo',
+  kThemeSoundMenuClose = 'mnuc',
+  kThemeSoundMenuItemHilite = 'mnui',
+  kThemeSoundMenuItemRelease = 'mnus',
+  kThemeSoundWindowClosePress = 'wclp',
+  kThemeSoundWindowCloseEnter = 'wcle',
+  kThemeSoundWindowCloseExit = 'wclx',
+  kThemeSoundWindowCloseRelease = 'wclr',
+  kThemeSoundWindowZoomPress = 'wzmp',
+  kThemeSoundWindowZoomEnter = 'wzme',
+  kThemeSoundWindowZoomExit = 'wzmx',
+  kThemeSoundWindowZoomRelease = 'wzmr',
+  kThemeSoundWindowCollapsePress = 'wcop',
+  kThemeSoundWindowCollapseEnter = 'wcoe',
+  kThemeSoundWindowCollapseExit = 'wcox',
+  kThemeSoundWindowCollapseRelease = 'wcor',
+  kThemeSoundWindowDragBoundary = 'wdbd',
+  kThemeSoundUtilWinClosePress = 'uclp',
+  kThemeSoundUtilWinCloseEnter = 'ucle',
+  kThemeSoundUtilWinCloseExit = 'uclx',
+  kThemeSoundUtilWinCloseRelease = 'uclr',
+  kThemeSoundUtilWinZoomPress = 'uzmp',
+  kThemeSoundUtilWinZoomEnter = 'uzme',
+  kThemeSoundUtilWinZoomExit = 'uzmx',
+  kThemeSoundUtilWinZoomRelease = 'uzmr',
+  kThemeSoundUtilWinCollapsePress = 'ucop',
+  kThemeSoundUtilWinCollapseEnter = 'ucoe',
+  kThemeSoundUtilWinCollapseExit = 'ucox',
+  kThemeSoundUtilWinCollapseRelease = 'ucor',
+  kThemeSoundUtilWinDragBoundary = 'udbd',
+  kThemeSoundWindowOpen = 'wopn',
+  kThemeSoundWindowClose = 'wcls',
+  kThemeSoundWindowZoomIn = 'wzmi',
+  kThemeSoundWindowZoomOut = 'wzmo',
+  kThemeSoundWindowCollapseUp = 'wcol',
+  kThemeSoundWindowCollapseDown = 'wexp',
+  kThemeSoundWindowActivate = 'wact',
+  kThemeSoundUtilWindowOpen = 'uopn',
+  kThemeSoundUtilWindowClose = 'ucls',
+  kThemeSoundUtilWindowZoomIn = 'uzmi',
+  kThemeSoundUtilWindowZoomOut = 'uzmo',
+  kThemeSoundUtilWindowCollapseUp = 'ucol',
+  kThemeSoundUtilWindowCollapseDown = 'uexp',
+  kThemeSoundUtilWindowActivate = 'uact',
+  kThemeSoundDialogOpen = 'dopn',
+  kThemeSoundDialogClose = 'dlgc',
+  kThemeSoundAlertOpen = 'aopn',
+  kThemeSoundAlertClose = 'altc',
+  kThemeSoundPopupWindowOpen = 'pwop',
+  kThemeSoundPopupWindowClose = 'pwcl',
+  kThemeSoundButtonPress = 'btnp',
+  kThemeSoundButtonEnter = 'btne',
+  kThemeSoundButtonExit = 'btnx',
+  kThemeSoundButtonRelease = 'btnr',
+  kThemeSoundDefaultButtonPress = 'dbtp',
+  kThemeSoundDefaultButtonEnter = 'dbte',
+  kThemeSoundDefaultButtonExit = 'dbtx',
+  kThemeSoundDefaultButtonRelease = 'dbtr',
+  kThemeSoundCancelButtonPress = 'cbtp',
+  kThemeSoundCancelButtonEnter = 'cbte',
+  kThemeSoundCancelButtonExit = 'cbtx',
+  kThemeSoundCancelButtonRelease = 'cbtr',
+  kThemeSoundCheckboxPress = 'chkp',
+  kThemeSoundCheckboxEnter = 'chke',
+  kThemeSoundCheckboxExit = 'chkx',
+  kThemeSoundCheckboxRelease = 'chkr',
+  kThemeSoundRadioPress = 'radp',
+  kThemeSoundRadioEnter = 'rade',
+  kThemeSoundRadioExit = 'radx',
+  kThemeSoundRadioRelease = 'radr',
+  kThemeSoundScrollArrowPress = 'sbap',
+  kThemeSoundScrollArrowEnter = 'sbae',
+  kThemeSoundScrollArrowExit = 'sbax',
+  kThemeSoundScrollArrowRelease = 'sbar',
+  kThemeSoundScrollEndOfTrack = 'sbte',
+  kThemeSoundScrollTrackPress = 'sbtp',
+  kThemeSoundSliderEndOfTrack = 'slte',
+  kThemeSoundSliderTrackPress = 'sltp',
+  kThemeSoundBalloonOpen = 'blno',
+  kThemeSoundBalloonClose = 'blnc',
+  kThemeSoundBevelPress = 'bevp',
+  kThemeSoundBevelEnter = 'beve',
+  kThemeSoundBevelExit = 'bevx',
+  kThemeSoundBevelRelease = 'bevr',
+  kThemeSoundLittleArrowUpPress = 'laup',
+  kThemeSoundLittleArrowDnPress = 'ladp',
+  kThemeSoundLittleArrowEnter = 'lare',
+  kThemeSoundLittleArrowExit = 'larx',
+  kThemeSoundLittleArrowUpRelease = 'laur',
+  kThemeSoundLittleArrowDnRelease = 'ladr',
+  kThemeSoundPopupPress = 'popp',
+  kThemeSoundPopupEnter = 'pope',
+  kThemeSoundPopupExit = 'popx',
+  kThemeSoundPopupRelease = 'popr',
+  kThemeSoundDisclosurePress = 'dscp',
+  kThemeSoundDisclosureEnter = 'dsce',
+  kThemeSoundDisclosureExit = 'dscx',
+  kThemeSoundDisclosureRelease = 'dscr',
+  kThemeSoundTabPressed = 'tabp',
+  kThemeSoundTabEnter = 'tabe',
+  kThemeSoundTabExit = 'tabx',
+  kThemeSoundTabRelease = 'tabr',
+  kThemeSoundDragTargetHilite = 'dthi',
+  kThemeSoundDragTargetUnhilite = 'dtuh',
+  kThemeSoundDragTargetDrop = 'dtdr',
+  kThemeSoundEmptyTrash = 'ftrs',
+  kThemeSoundSelectItem = 'fsel',
+  kThemeSoundNewItem = 'fnew',
+  kThemeSoundReceiveDrop = 'fdrp',
+  kThemeSoundCopyDone = 'fcpd',
+  kThemeSoundResolveAlias = 'fral',
+  kThemeSoundLaunchApp = 'flap',
+  kThemeSoundDiskInsert = 'dski',
+  kThemeSoundDiskEject = 'dske',
+  kThemeSoundFinderDragOnIcon = 'fdon',
+  kThemeSoundFinderDragOffIcon = 'fdof'
+};
+
+typedef OSType ThemeSoundKind;
+enum {
+  kThemePopupTabNormalPosition = 0,
+  kThemePopupTabCenterOnWindow = 1,
+  kThemePopupTabCenterOnOffset = 2
+};
+
+struct ThemeWindowMetrics {
+  UInt16 metricSize;
+  SInt16 titleHeight;
+  SInt16 titleWidth;
+  SInt16 popupTabOffset;
+  SInt16 popupTabWidth;
+  UInt16 popupTabPosition;
+};
+typedef struct ThemeWindowMetrics ThemeWindowMetrics;
+typedef ThemeWindowMetrics * ThemeWindowMetricsPtr;
+enum {
+
+
+
+
+  kThemeMetricScrollBarWidth = 0,
+
+
+
+
+  kThemeMetricSmallScrollBarWidth = 1,
+
+
+
+
+  kThemeMetricCheckBoxHeight = 2,
+
+
+
+
+  kThemeMetricRadioButtonHeight = 3,
+  kThemeMetricEditTextWhitespace = 4,
+
+
+
+
+
+
+
+  kThemeMetricEditTextFrameOutset = 5,
+
+
+
+
+
+  kThemeMetricListBoxFrameOutset = 6,
+
+
+
+
+
+
+  kThemeMetricFocusRectOutset = 7,
+
+
+
+
+  kThemeMetricImageWellThickness = 8,
+
+
+
+
+
+
+
+  kThemeMetricScrollBarOverlap = 9,
+
+
+
+
+  kThemeMetricLargeTabHeight = 10,
+
+
+
+
+
+  kThemeMetricLargeTabCapsWidth = 11,
+
+
+
+
+
+
+
+  kThemeMetricTabFrameOverlap = 12,
+  kThemeMetricTabIndentOrStyle = 13,
+
+
+
+
+
+  kThemeMetricTabOverlap = 14,
+
+
+
+
+
+  kThemeMetricSmallTabHeight = 15,
+
+
+
+
+
+  kThemeMetricSmallTabCapsWidth = 16,
+
+
+
+
+  kThemeMetricPushButtonHeight = 19,
+
+
+
+
+  kThemeMetricListHeaderHeight = 20,
+
+
+
+
+
+  kThemeMetricDisclosureTriangleHeight = 25,
+
+
+
+
+  kThemeMetricDisclosureTriangleWidth = 26,
+
+
+
+
+  kThemeMetricLittleArrowsHeight = 27,
+
+
+
+
+  kThemeMetricLittleArrowsWidth = 28,
+
+
+
+
+  kThemeMetricPopupButtonHeight = 30,
+
+
+
+
+  kThemeMetricSmallPopupButtonHeight = 31,
+
+
+
+
+  kThemeMetricLargeProgressBarThickness = 32,
+
+
+
+
+  kThemeMetricPullDownHeight = 33,
+
+
+
+
+  kThemeMetricSmallPullDownHeight = 34,
+
+
+
+
+  kThemeMetricResizeControlHeight = 38,
+
+
+
+
+  kThemeMetricSmallResizeControlHeight = 39,
+
+
+
+
+  kThemeMetricHSliderHeight = 41,
+
+
+
+
+  kThemeMetricHSliderTickHeight = 42,
+
+
+
+
+  kThemeMetricVSliderWidth = 45,
+
+
+
+
+  kThemeMetricVSliderTickWidth = 46,
+
+
+
+
+
+  kThemeMetricTitleBarControlsHeight = 49,
+
+
+
+
+  kThemeMetricCheckBoxWidth = 50,
+
+
+
+
+  kThemeMetricRadioButtonWidth = 52,
+
+
+
+
+  kThemeMetricNormalProgressBarThickness = 58,
+
+
+
+
+  kThemeMetricProgressBarShadowOutset = 59,
+
+
+
+
+
+  kThemeMetricSmallProgressBarShadowOutset = 60,
+
+
+
+
+
+  kThemeMetricPrimaryGroupBoxContentInset = 61,
+
+
+
+
+
+  kThemeMetricSecondaryGroupBoxContentInset = 62,
+
+
+
+
+  kThemeMetricMenuMarkColumnWidth = 63,
+
+
+
+
+
+  kThemeMetricMenuExcludedMarkColumnWidth = 64,
+
+
+
+
+
+  kThemeMetricMenuMarkIndent = 65,
+
+
+
+
+  kThemeMetricMenuTextLeadingEdgeMargin = 66,
+
+
+
+
+  kThemeMetricMenuTextTrailingEdgeMargin = 67,
+
+
+
+
+  kThemeMetricMenuIndentWidth = 68,
+
+
+
+
+
+  kThemeMetricMenuIconTrailingEdgeMargin = 69
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+  kThemeMetricDisclosureButtonHeight = 17,
+
+
+
+
+  kThemeMetricRoundButtonSize = 18,
+
+
+
+
+  kThemeMetricSmallCheckBoxHeight = 21,
+
+
+
+
+  kThemeMetricDisclosureButtonWidth = 22,
+
+
+
+
+  kThemeMetricSmallDisclosureButtonHeight = 23,
+
+
+
+
+  kThemeMetricSmallDisclosureButtonWidth = 24,
+
+
+
+
+  kThemeMetricPaneSplitterHeight = 29,
+
+
+
+
+  kThemeMetricSmallPushButtonHeight = 35,
+
+
+
+
+  kThemeMetricSmallRadioButtonHeight = 36,
+
+
+
+
+  kThemeMetricRelevanceIndicatorHeight = 37,
+
+
+
+
+  kThemeMetricLargeRoundButtonSize = 40,
+
+
+
+
+  kThemeMetricSmallHSliderHeight = 43,
+
+
+
+
+
+  kThemeMetricSmallHSliderTickHeight = 44,
+
+
+
+
+  kThemeMetricSmallVSliderWidth = 47,
+
+
+
+
+  kThemeMetricSmallVSliderTickWidth = 48,
+
+
+
+
+  kThemeMetricSmallCheckBoxWidth = 51,
+
+
+
+
+  kThemeMetricSmallRadioButtonWidth = 53,
+
+
+
+
+
+  kThemeMetricSmallHSliderMinThumbWidth = 54,
+
+
+
+
+  kThemeMetricSmallVSliderMinThumbHeight = 55,
+
+
+
+
+
+  kThemeMetricSmallHSliderTickOffset = 56,
+
+
+
+
+
+  kThemeMetricSmallVSliderTickOffset = 57
+};
+
+typedef UInt32 ThemeMetric;
+
+
+
+typedef struct OpaqueThemeDrawingState* ThemeDrawingState;
+
+
+
+typedef void ( * ThemeTabTitleDrawProcPtr)(const Rect *bounds, ThemeTabStyle style, ThemeTabDirection direction, SInt16 depth, Boolean isColorDev, UInt32 userData);
+typedef void ( * ThemeEraseProcPtr)(const Rect *bounds, UInt32 eraseData, SInt16 depth, Boolean isColorDev);
+typedef void ( * ThemeButtonDrawProcPtr)(const Rect *bounds, ThemeButtonKind kind, const ThemeButtonDrawInfo *info, UInt32 userData, SInt16 depth, Boolean isColorDev);
+typedef void ( * WindowTitleDrawingProcPtr)(const Rect *bounds, SInt16 depth, Boolean colorDevice, UInt32 userData);
+typedef Boolean ( * ThemeIteratorProcPtr)(ConstStr255Param inFileName, SInt16 resID, Collection inThemeSettings, void *inUserData);
+typedef ThemeTabTitleDrawProcPtr ThemeTabTitleDrawUPP;
+typedef ThemeEraseProcPtr ThemeEraseUPP;
+typedef ThemeButtonDrawProcPtr ThemeButtonDrawUPP;
+typedef WindowTitleDrawingProcPtr WindowTitleDrawingUPP;
+typedef ThemeIteratorProcPtr ThemeIteratorUPP;
+extern ThemeTabTitleDrawUPP
+NewThemeTabTitleDrawUPP(ThemeTabTitleDrawProcPtr userRoutine) ;
+extern ThemeEraseUPP
+NewThemeEraseUPP(ThemeEraseProcPtr userRoutine) ;
+extern ThemeButtonDrawUPP
+NewThemeButtonDrawUPP(ThemeButtonDrawProcPtr userRoutine) ;
+extern WindowTitleDrawingUPP
+NewWindowTitleDrawingUPP(WindowTitleDrawingProcPtr userRoutine) ;
+extern ThemeIteratorUPP
+NewThemeIteratorUPP(ThemeIteratorProcPtr userRoutine) ;
+extern void
+DisposeThemeTabTitleDrawUPP(ThemeTabTitleDrawUPP userUPP) ;
+extern void
+DisposeThemeEraseUPP(ThemeEraseUPP userUPP) ;
+extern void
+DisposeThemeButtonDrawUPP(ThemeButtonDrawUPP userUPP) ;
+extern void
+DisposeWindowTitleDrawingUPP(WindowTitleDrawingUPP userUPP) ;
+extern void
+DisposeThemeIteratorUPP(ThemeIteratorUPP userUPP) ;
+extern void
+InvokeThemeTabTitleDrawUPP(
+  const Rect * bounds,
+  ThemeTabStyle style,
+  ThemeTabDirection direction,
+  SInt16 depth,
+  Boolean isColorDev,
+  UInt32 userData,
+  ThemeTabTitleDrawUPP userUPP) ;
+extern void
+InvokeThemeEraseUPP(
+  const Rect * bounds,
+  UInt32 eraseData,
+  SInt16 depth,
+  Boolean isColorDev,
+  ThemeEraseUPP userUPP) ;
+extern void
+InvokeThemeButtonDrawUPP(
+  const Rect * bounds,
+  ThemeButtonKind kind,
+  const ThemeButtonDrawInfo * info,
+  UInt32 userData,
+  SInt16 depth,
+  Boolean isColorDev,
+  ThemeButtonDrawUPP userUPP) ;
+extern void
+InvokeWindowTitleDrawingUPP(
+  const Rect * bounds,
+  SInt16 depth,
+  Boolean colorDevice,
+  UInt32 userData,
+  WindowTitleDrawingUPP userUPP) ;
+extern Boolean
+InvokeThemeIteratorUPP(
+  ConstStr255Param inFileName,
+  SInt16 resID,
+  Collection inThemeSettings,
+  void * inUserData,
+  ThemeIteratorUPP userUPP) ;
+
+
+
+
+typedef void ( * MenuTitleDrawingProcPtr)(const Rect *inBounds, SInt16 inDepth, Boolean inIsColorDevice, SInt32 inUserData);
+typedef void ( * MenuItemDrawingProcPtr)(const Rect *inBounds, SInt16 inDepth, Boolean inIsColorDevice, SInt32 inUserData);
+typedef MenuTitleDrawingProcPtr MenuTitleDrawingUPP;
+typedef MenuItemDrawingProcPtr MenuItemDrawingUPP;
+extern MenuTitleDrawingUPP
+NewMenuTitleDrawingUPP(MenuTitleDrawingProcPtr userRoutine) ;
+extern MenuItemDrawingUPP
+NewMenuItemDrawingUPP(MenuItemDrawingProcPtr userRoutine) ;
+extern void
+DisposeMenuTitleDrawingUPP(MenuTitleDrawingUPP userUPP) ;
+extern void
+DisposeMenuItemDrawingUPP(MenuItemDrawingUPP userUPP) ;
+extern void
+InvokeMenuTitleDrawingUPP(
+  const Rect * inBounds,
+  SInt16 inDepth,
+  Boolean inIsColorDevice,
+  SInt32 inUserData,
+  MenuTitleDrawingUPP userUPP) ;
+extern void
+InvokeMenuItemDrawingUPP(
+  const Rect * inBounds,
+  SInt16 inDepth,
+  Boolean inIsColorDevice,
+  SInt32 inUserData,
+  MenuItemDrawingUPP userUPP) ;
+extern OSStatus
+RegisterAppearanceClient(void) ;
+extern OSStatus
+UnregisterAppearanceClient(void) ;
+extern Boolean
+IsAppearanceClient(const ProcessSerialNumber * process) ;
+extern OSStatus
+SetThemePen(
+  ThemeBrush inBrush,
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+extern OSStatus
+SetThemeBackground(
+  ThemeBrush inBrush,
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+extern OSStatus
+SetThemeTextColor(
+  ThemeTextColor inColor,
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+extern OSStatus
+SetThemeWindowBackground(
+  WindowRef inWindow,
+  ThemeBrush inBrush,
+  Boolean inUpdate) ;
+extern OSStatus
+DrawThemeWindowHeader(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeWindowListViewHeader(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemePlacard(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeEditTextFrame(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeListBoxFrame(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeFocusRect(
+  const Rect * inRect,
+  Boolean inHasFocus) ;
+extern OSStatus
+DrawThemePrimaryGroup(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeSecondaryGroup(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeSeparator(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeModelessDialogFrame(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeGenericWell(
+  const Rect * inRect,
+  ThemeDrawState inState,
+  Boolean inFillCenter) ;
+extern OSStatus
+DrawThemeFocusRegion(
+  RgnHandle inRegion,
+  Boolean inHasFocus) ;
+extern Boolean
+IsThemeInColor(
+  SInt16 inDepth,
+  Boolean inIsColorDevice) ;
+extern OSStatus
+GetThemeAccentColors(CTabHandle * outColors) ;
+extern OSStatus
+DrawThemeMenuBarBackground(
+  const Rect * inBounds,
+  ThemeMenuBarState inState,
+  UInt32 inAttributes) ;
+extern OSStatus
+DrawThemeMenuTitle(
+  const Rect * inMenuBarRect,
+  const Rect * inTitleRect,
+  ThemeMenuState inState,
+  UInt32 inAttributes,
+  MenuTitleDrawingUPP inTitleProc,
+  UInt32 inTitleData) ;
+extern OSStatus
+GetThemeMenuBarHeight(SInt16 * outHeight) ;
+extern OSStatus
+DrawThemeMenuBackground(
+  const Rect * inMenuRect,
+  ThemeMenuType inMenuType) ;
+extern OSStatus
+GetThemeMenuBackgroundRegion(
+  const Rect * inMenuRect,
+  ThemeMenuType menuType,
+  RgnHandle region) ;
+extern OSStatus
+DrawThemeMenuItem(
+  const Rect * inMenuRect,
+  const Rect * inItemRect,
+  SInt16 inVirtualMenuTop,
+  SInt16 inVirtualMenuBottom,
+  ThemeMenuState inState,
+  ThemeMenuItemType inItemType,
+  MenuItemDrawingUPP inDrawProc,
+  UInt32 inUserData) ;
+extern OSStatus
+DrawThemeMenuSeparator(const Rect * inItemRect) ;
+extern OSStatus
+GetThemeMenuSeparatorHeight(SInt16 * outHeight) ;
+extern OSStatus
+GetThemeMenuItemExtra(
+  ThemeMenuItemType inItemType,
+  SInt16 * outHeight,
+  SInt16 * outWidth) ;
+extern OSStatus
+GetThemeMenuTitleExtra(
+  SInt16 * outWidth,
+  Boolean inIsSquished) ;
+extern OSStatus
+GetTheme(Collection ioCollection) ;
+extern OSStatus
+SetTheme(Collection ioCollection) ;
+extern OSStatus
+IterateThemes(
+  ThemeIteratorUPP inProc,
+  void * inUserData) ;
+extern OSStatus
+DrawThemeTabPane(
+  const Rect * inRect,
+  ThemeDrawState inState) ;
+extern OSStatus
+DrawThemeTab(
+  const Rect * inRect,
+  ThemeTabStyle inStyle,
+  ThemeTabDirection inDirection,
+  ThemeTabTitleDrawUPP labelProc,
+  UInt32 userData) ;
+extern OSStatus
+GetThemeTabRegion(
+  const Rect * inRect,
+  ThemeTabStyle inStyle,
+  ThemeTabDirection inDirection,
+  RgnHandle ioRgn) ;
+extern OSStatus
+SetThemeCursor(ThemeCursor inCursor) ;
+extern OSStatus
+SetAnimatedThemeCursor(
+  ThemeCursor inCursor,
+  UInt32 inAnimationStep) ;
+extern OSStatus
+GetThemeScrollBarThumbStyle(ThemeScrollBarThumbStyle * outStyle) ;
+extern OSStatus
+GetThemeScrollBarArrowStyle(ThemeScrollBarArrowStyle * outStyle) ;
+extern OSStatus
+GetThemeCheckBoxStyle(ThemeCheckBoxStyle * outStyle) ;
+extern OSStatus
+UseThemeFont(
+  ThemeFontID inFontID,
+  ScriptCode inScript) ;
+extern OSStatus
+GetThemeFont(
+  ThemeFontID inFontID,
+  ScriptCode inScript,
+  Str255 outFontName,
+  SInt16 * outFontSize,
+  Style * outStyle) ;
+extern OSStatus
+DrawThemeTextBox(
+  CFStringRef inString,
+  ThemeFontID inFontID,
+  ThemeDrawState inState,
+  Boolean inWrapToWidth,
+  const Rect * inBoundingBox,
+  SInt16 inJust,
+  void * inContext) ;
+extern OSStatus
+TruncateThemeText(
+  CFMutableStringRef inString,
+  ThemeFontID inFontID,
+  ThemeDrawState inState,
+  SInt16 inPixelWidthLimit,
+  TruncCode inTruncWhere,
+  Boolean * outTruncated) ;
+extern OSStatus
+GetThemeTextDimensions(
+  CFStringRef inString,
+  ThemeFontID inFontID,
+  ThemeDrawState inState,
+  Boolean inWrapToWidth,
+  Point * ioBounds,
+  SInt16 * outBaseline) ;
+extern OSStatus
+GetThemeTextShadowOutset(
+  ThemeFontID inFontID,
+  ThemeDrawState inState,
+  Rect * outOutset) ;
+extern OSStatus
+DrawThemeTrack(
+  const ThemeTrackDrawInfo * drawInfo,
+  RgnHandle rgnGhost,
+  ThemeEraseUPP eraseProc,
+  UInt32 eraseData) ;
+extern Boolean
+HitTestThemeTrack(
+  const ThemeTrackDrawInfo * drawInfo,
+  Point mousePoint,
+  ControlPartCode * partHit) ;
+extern OSStatus
+GetThemeTrackBounds(
+  const ThemeTrackDrawInfo * drawInfo,
+  Rect * bounds) ;
+extern OSStatus
+GetThemeTrackThumbRgn(
+  const ThemeTrackDrawInfo * drawInfo,
+  RgnHandle thumbRgn) ;
+extern OSStatus
+GetThemeTrackDragRect(
+  const ThemeTrackDrawInfo * drawInfo,
+  Rect * dragRect) ;
+extern OSStatus
+DrawThemeTrackTickMarks(
+  const ThemeTrackDrawInfo * drawInfo,
+  ItemCount numTicks,
+  ThemeEraseUPP eraseProc,
+  UInt32 eraseData) ;
+extern OSStatus
+GetThemeTrackThumbPositionFromOffset(
+  const ThemeTrackDrawInfo * drawInfo,
+  Point thumbOffset,
+  SInt32 * relativePosition) ;
+extern OSStatus
+GetThemeTrackThumbPositionFromRegion(
+  const ThemeTrackDrawInfo * drawInfo,
+  RgnHandle thumbRgn,
+  SInt32 * relativePosition) ;
+extern OSStatus
+GetThemeTrackLiveValue(
+  const ThemeTrackDrawInfo * drawInfo,
+  SInt32 relativePosition,
+  SInt32 * value) ;
+extern OSStatus
+DrawThemeScrollBarArrows(
+  const Rect * bounds,
+  ThemeTrackEnableState enableState,
+  ThemeTrackPressState pressState,
+  Boolean isHoriz,
+  Rect * trackBounds) ;
+extern OSStatus
+GetThemeScrollBarTrackRect(
+  const Rect * bounds,
+  ThemeTrackEnableState enableState,
+  ThemeTrackPressState pressState,
+  Boolean isHoriz,
+  Rect * trackBounds) ;
+extern Boolean
+HitTestThemeScrollBarArrows(
+  const Rect * scrollBarBounds,
+  ThemeTrackEnableState enableState,
+  ThemeTrackPressState pressState,
+  Boolean isHoriz,
+  Point ptHit,
+  Rect * trackBounds,
+  ControlPartCode * partcode) ;
+extern OSStatus
+GetThemeWindowRegion(
+  ThemeWindowType flavor,
+  const Rect * contRect,
+  ThemeDrawState state,
+  const ThemeWindowMetrics * metrics,
+  ThemeWindowAttributes attributes,
+  WindowRegionCode winRegion,
+  RgnHandle rgn) ;
+extern OSStatus
+DrawThemeWindowFrame(
+  ThemeWindowType flavor,
+  const Rect * contRect,
+  ThemeDrawState state,
+  const ThemeWindowMetrics * metrics,
+  ThemeWindowAttributes attributes,
+  WindowTitleDrawingUPP titleProc,
+  UInt32 titleData) ;
+extern OSStatus
+DrawThemeTitleBarWidget(
+  ThemeWindowType flavor,
+  const Rect * contRect,
+  ThemeDrawState state,
+  const ThemeWindowMetrics * metrics,
+  ThemeWindowAttributes attributes,
+  ThemeTitleBarWidget widget) ;
+extern Boolean
+GetThemeWindowRegionHit(
+  ThemeWindowType flavor,
+  const Rect * inContRect,
+  ThemeDrawState state,
+  const ThemeWindowMetrics * metrics,
+  ThemeWindowAttributes inAttributes,
+  Point inPoint,
+  WindowRegionCode * outRegionHit) ;
+extern OSStatus
+DrawThemeScrollBarDelimiters(
+  ThemeWindowType flavor,
+  const Rect * inContRect,
+  ThemeDrawState state,
+  ThemeWindowAttributes attributes) ;
+extern OSStatus
+DrawThemeButton(
+  const Rect * inBounds,
+  ThemeButtonKind inKind,
+  const ThemeButtonDrawInfo * inNewInfo,
+  const ThemeButtonDrawInfo * inPrevInfo,
+  ThemeEraseUPP inEraseProc,
+  ThemeButtonDrawUPP inLabelProc,
+  UInt32 inUserData) ;
+extern OSStatus
+GetThemeButtonRegion(
+  const Rect * inBounds,
+  ThemeButtonKind inKind,
+  const ThemeButtonDrawInfo * inNewInfo,
+  RgnHandle outRegion) ;
+extern OSStatus
+GetThemeButtonContentBounds(
+  const Rect * inBounds,
+  ThemeButtonKind inKind,
+  const ThemeButtonDrawInfo * inDrawInfo,
+  Rect * outBounds) ;
+extern OSStatus
+GetThemeButtonBackgroundBounds(
+  const Rect * inBounds,
+  ThemeButtonKind inKind,
+  const ThemeButtonDrawInfo * inDrawInfo,
+  Rect * outBounds) ;
+extern OSStatus
+PlayThemeSound(ThemeSoundKind kind) ;
+extern OSStatus
+BeginThemeDragSound(ThemeDragSoundKind kind) ;
+extern OSStatus
+EndThemeDragSound(void) ;
+extern OSStatus
+DrawThemeTickMark(
+  const Rect * bounds,
+  ThemeDrawState state) ;
+extern OSStatus
+DrawThemeChasingArrows(
+  const Rect * bounds,
+  UInt32 index,
+  ThemeDrawState state,
+  ThemeEraseUPP eraseProc,
+  UInt32 eraseData) ;
+extern OSStatus
+DrawThemePopupArrow(
+  const Rect * bounds,
+  ThemeArrowOrientation orientation,
+  ThemePopupArrowSize size,
+  ThemeDrawState state,
+  ThemeEraseUPP eraseProc,
+  UInt32 eraseData) ;
+extern OSStatus
+DrawThemeStandaloneGrowBox(
+  Point origin,
+  ThemeGrowDirection growDirection,
+  Boolean isSmall,
+  ThemeDrawState state) ;
+extern OSStatus
+DrawThemeStandaloneNoGrowBox(
+  Point origin,
+  ThemeGrowDirection growDirection,
+  Boolean isSmall,
+  ThemeDrawState state) ;
+extern OSStatus
+GetThemeStandaloneGrowBoxBounds(
+  Point origin,
+  ThemeGrowDirection growDirection,
+  Boolean isSmall,
+  Rect * bounds) ;
+extern OSStatus
+NormalizeThemeDrawingState(void) ;
+extern OSStatus
+GetThemeDrawingState(ThemeDrawingState * outState) ;
+extern OSStatus
+SetThemeDrawingState(
+  ThemeDrawingState inState,
+  Boolean inDisposeNow) ;
+extern OSStatus
+DisposeThemeDrawingState(ThemeDrawingState inState) ;
+extern OSStatus
+ApplyThemeBackground(
+  ThemeBackgroundKind inKind,
+  const Rect * bounds,
+  ThemeDrawState inState,
+  SInt16 inDepth,
+  Boolean inColorDev) ;
+extern OSStatus
+SetThemeTextColorForWindow(
+  WindowRef inWindow,
+  Boolean inActive,
+  SInt16 inDepth,
+  Boolean inColorDev) ;
+extern Boolean
+IsValidAppearanceFileType(OSType fileType) ;
+extern OSStatus
+GetThemeBrushAsColor(
+  ThemeBrush inBrush,
+  SInt16 inDepth,
+  Boolean inColorDev,
+  RGBColor * outColor) ;
+extern OSStatus
+GetThemeTextColor(
+  ThemeTextColor inColor,
+  SInt16 inDepth,
+  Boolean inColorDev,
+  RGBColor * outColor) ;
+extern OSStatus
+GetThemeMetric(
+  ThemeMetric inMetric,
+  SInt32 * outMetric) ;
+extern OSStatus
+CopyThemeIdentifier(CFStringRef * outIdentifier) ;
+
+
+
+
+
+
+enum {
+  appearanceBadBrushIndexErr = themeInvalidBrushErr,
+  appearanceProcessRegisteredErr = themeProcessRegisteredErr,
+  appearanceProcessNotRegisteredErr = themeProcessNotRegisteredErr,
+  appearanceBadTextColorIndexErr = themeBadTextColorErr,
+  appearanceThemeHasNoAccents = themeHasNoAccentsErr,
+  appearanceBadCursorIndexErr = themeBadCursorIndexErr
+};
+
+enum {
+  kThemeActiveDialogBackgroundBrush = kThemeBrushDialogBackgroundActive,
+  kThemeInactiveDialogBackgroundBrush = kThemeBrushDialogBackgroundInactive,
+  kThemeActiveAlertBackgroundBrush = kThemeBrushAlertBackgroundActive,
+  kThemeInactiveAlertBackgroundBrush = kThemeBrushAlertBackgroundInactive,
+  kThemeActiveModelessDialogBackgroundBrush = kThemeBrushModelessDialogBackgroundActive,
+  kThemeInactiveModelessDialogBackgroundBrush = kThemeBrushModelessDialogBackgroundInactive,
+  kThemeActiveUtilityWindowBackgroundBrush = kThemeBrushUtilityWindowBackgroundActive,
+  kThemeInactiveUtilityWindowBackgroundBrush = kThemeBrushUtilityWindowBackgroundInactive,
+  kThemeListViewSortColumnBackgroundBrush = kThemeBrushListViewSortColumnBackground,
+  kThemeListViewBackgroundBrush = kThemeBrushListViewBackground,
+  kThemeIconLabelBackgroundBrush = kThemeBrushIconLabelBackground,
+  kThemeListViewSeparatorBrush = kThemeBrushListViewSeparator,
+  kThemeChasingArrowsBrush = kThemeBrushChasingArrows,
+  kThemeDragHiliteBrush = kThemeBrushDragHilite,
+  kThemeDocumentWindowBackgroundBrush = kThemeBrushDocumentWindowBackground,
+  kThemeFinderWindowBackgroundBrush = kThemeBrushFinderWindowBackground
+};
+
+enum {
+  kThemeActiveScrollBarDelimiterBrush = kThemeBrushScrollBarDelimiterActive,
+  kThemeInactiveScrollBarDelimiterBrush = kThemeBrushScrollBarDelimiterInactive,
+  kThemeFocusHighlightBrush = kThemeBrushFocusHighlight,
+  kThemeActivePopupArrowBrush = kThemeBrushPopupArrowActive,
+  kThemePressedPopupArrowBrush = kThemeBrushPopupArrowPressed,
+  kThemeInactivePopupArrowBrush = kThemeBrushPopupArrowInactive,
+  kThemeAppleGuideCoachmarkBrush = kThemeBrushAppleGuideCoachmark
+};
+
+enum {
+  kThemeActiveDialogTextColor = kThemeTextColorDialogActive,
+  kThemeInactiveDialogTextColor = kThemeTextColorDialogInactive,
+  kThemeActiveAlertTextColor = kThemeTextColorAlertActive,
+  kThemeInactiveAlertTextColor = kThemeTextColorAlertInactive,
+  kThemeActiveModelessDialogTextColor = kThemeTextColorModelessDialogActive,
+  kThemeInactiveModelessDialogTextColor = kThemeTextColorModelessDialogInactive,
+  kThemeActiveWindowHeaderTextColor = kThemeTextColorWindowHeaderActive,
+  kThemeInactiveWindowHeaderTextColor = kThemeTextColorWindowHeaderInactive,
+  kThemeActivePlacardTextColor = kThemeTextColorPlacardActive,
+  kThemeInactivePlacardTextColor = kThemeTextColorPlacardInactive,
+  kThemePressedPlacardTextColor = kThemeTextColorPlacardPressed,
+  kThemeActivePushButtonTextColor = kThemeTextColorPushButtonActive,
+  kThemeInactivePushButtonTextColor = kThemeTextColorPushButtonInactive,
+  kThemePressedPushButtonTextColor = kThemeTextColorPushButtonPressed,
+  kThemeActiveBevelButtonTextColor = kThemeTextColorBevelButtonActive,
+  kThemeInactiveBevelButtonTextColor = kThemeTextColorBevelButtonInactive,
+  kThemePressedBevelButtonTextColor = kThemeTextColorBevelButtonPressed,
+  kThemeActivePopupButtonTextColor = kThemeTextColorPopupButtonActive,
+  kThemeInactivePopupButtonTextColor = kThemeTextColorPopupButtonInactive,
+  kThemePressedPopupButtonTextColor = kThemeTextColorPopupButtonPressed,
+  kThemeIconLabelTextColor = kThemeTextColorIconLabel,
+  kThemeListViewTextColor = kThemeTextColorListView
+};
+
+enum {
+  kThemeActiveDocumentWindowTitleTextColor = kThemeTextColorDocumentWindowTitleActive,
+  kThemeInactiveDocumentWindowTitleTextColor = kThemeTextColorDocumentWindowTitleInactive,
+  kThemeActiveMovableModalWindowTitleTextColor = kThemeTextColorMovableModalWindowTitleActive,
+  kThemeInactiveMovableModalWindowTitleTextColor = kThemeTextColorMovableModalWindowTitleInactive,
+  kThemeActiveUtilityWindowTitleTextColor = kThemeTextColorUtilityWindowTitleActive,
+  kThemeInactiveUtilityWindowTitleTextColor = kThemeTextColorUtilityWindowTitleInactive,
+  kThemeActivePopupWindowTitleColor = kThemeTextColorPopupWindowTitleActive,
+  kThemeInactivePopupWindowTitleColor = kThemeTextColorPopupWindowTitleInactive,
+  kThemeActiveRootMenuTextColor = kThemeTextColorRootMenuActive,
+  kThemeSelectedRootMenuTextColor = kThemeTextColorRootMenuSelected,
+  kThemeDisabledRootMenuTextColor = kThemeTextColorRootMenuDisabled,
+  kThemeActiveMenuItemTextColor = kThemeTextColorMenuItemActive,
+  kThemeSelectedMenuItemTextColor = kThemeTextColorMenuItemSelected,
+  kThemeDisabledMenuItemTextColor = kThemeTextColorMenuItemDisabled,
+  kThemeActivePopupLabelTextColor = kThemeTextColorPopupLabelActive,
+  kThemeInactivePopupLabelTextColor = kThemeTextColorPopupLabelInactive
+};
+
+enum {
+  kAEThemeSwitch = kAEAppearanceChanged
+};
+
+enum {
+  kThemeNoAdornment = kThemeAdornmentNone,
+  kThemeDefaultAdornment = kThemeAdornmentDefault,
+  kThemeFocusAdornment = kThemeAdornmentFocus,
+  kThemeRightToLeftAdornment = kThemeAdornmentRightToLeft,
+  kThemeDrawIndicatorOnly = kThemeAdornmentDrawIndicatorOnly
+};
+
+enum {
+  kThemeBrushPassiveAreaFill = kThemeBrushStaticAreaFill
+};
+
+enum {
+  kThemeMetricCheckBoxGlyphHeight = kThemeMetricCheckBoxHeight,
+  kThemeMetricRadioButtonGlyphHeight = kThemeMetricRadioButtonHeight,
+  kThemeMetricDisclosureButtonSize = kThemeMetricDisclosureButtonHeight,
+  kThemeMetricBestListHeaderHeight = kThemeMetricListHeaderHeight,
+  kThemeMetricSmallProgressBarThickness = kThemeMetricNormalProgressBarThickness,
+  kThemeMetricProgressBarThickness = kThemeMetricLargeProgressBarThickness
+};
+
+enum {
+  kThemeScrollBar = kThemeMediumScrollBar,
+  kThemeSlider = kThemeMediumSlider,
+  kThemeProgressBar = kThemeMediumProgressBar,
+  kThemeIndeterminateBar = kThemeMediumIndeterminateBar
+};
+
+
+
+
+}
+extern "C" {
+
+
+
+enum {
+
+  kControlDialogItem = 4,
+  kButtonDialogItem = kControlDialogItem | 0,
+  kCheckBoxDialogItem = kControlDialogItem | 1,
+  kRadioButtonDialogItem = kControlDialogItem | 2,
+  kResourceControlDialogItem = kControlDialogItem | 3,
+  kStaticTextDialogItem = 8,
+  kEditTextDialogItem = 16,
+  kIconDialogItem = 32,
+  kPictureDialogItem = 64,
+  kUserDialogItem = 0,
+  kHelpDialogItem = 1,
+  kItemDisableBit = 128
+};
+
+enum {
+
+  ctrlItem = 4,
+  btnCtrl = 0,
+  chkCtrl = 1,
+  radCtrl = 2,
+  resCtrl = 3,
+  statText = 8,
+  editText = 16,
+  iconItem = 32,
+  picItem = 64,
+  userItem = 0,
+  itemDisable = 128
+};
+
+enum {
+
+  kStdOkItemIndex = 1,
+  kStdCancelItemIndex = 2,
+  ok = kStdOkItemIndex,
+  cancel = kStdCancelItemIndex
+};
+
+enum {
+
+  kStopIcon = 0,
+  kNoteIcon = 1,
+  kCautionIcon = 2,
+  stopIcon = kStopIcon,
+  noteIcon = kNoteIcon,
+  cautionIcon = kCautionIcon
+};
+typedef SInt16 DITLMethod;
+enum {
+  overlayDITL = 0,
+  appendDITLRight = 1,
+  appendDITLBottom = 2
+};
+
+typedef SInt16 StageList;
+
+typedef DialogPtr DialogRef;
+struct DialogTemplate {
+  Rect boundsRect;
+  SInt16 procID;
+  Boolean visible;
+  Boolean filler1;
+  Boolean goAwayFlag;
+  Boolean filler2;
+  SInt32 refCon;
+  SInt16 itemsID;
+  Str255 title;
+};
+typedef struct DialogTemplate DialogTemplate;
+typedef DialogTemplate * DialogTPtr;
+typedef DialogTPtr * DialogTHndl;
+struct AlertTemplate {
+  Rect boundsRect;
+  SInt16 itemsID;
+  StageList stages;
+};
+typedef struct AlertTemplate AlertTemplate;
+typedef AlertTemplate * AlertTPtr;
+typedef AlertTPtr * AlertTHndl;
+
+typedef SInt16 DialogItemIndexZeroBased;
+typedef SInt16 DialogItemIndex;
+typedef SInt16 DialogItemType;
+
+typedef void ( * SoundProcPtr)(SInt16 soundNumber);
+typedef Boolean ( * ModalFilterProcPtr)(DialogRef theDialog, EventRecord *theEvent, DialogItemIndex *itemHit);
+
+typedef Boolean ( * ModalFilterYDProcPtr)(DialogRef theDialog, EventRecord *theEvent, short *itemHit, void *yourDataPtr);
+typedef void ( * UserItemProcPtr)(DialogRef theDialog, DialogItemIndex itemNo);
+typedef SoundProcPtr SoundUPP;
+typedef ModalFilterProcPtr ModalFilterUPP;
+typedef ModalFilterYDProcPtr ModalFilterYDUPP;
+typedef UserItemProcPtr UserItemUPP;
+extern ModalFilterUPP
+NewModalFilterUPP(ModalFilterProcPtr userRoutine) ;
+extern ModalFilterYDUPP
+NewModalFilterYDUPP(ModalFilterYDProcPtr userRoutine) ;
+extern UserItemUPP
+NewUserItemUPP(UserItemProcPtr userRoutine) ;
+extern void
+DisposeModalFilterUPP(ModalFilterUPP userUPP) ;
+extern void
+DisposeModalFilterYDUPP(ModalFilterYDUPP userUPP) ;
+extern void
+DisposeUserItemUPP(UserItemUPP userUPP) ;
+extern Boolean
+InvokeModalFilterUPP(
+  DialogRef theDialog,
+  EventRecord * theEvent,
+  DialogItemIndex * itemHit,
+  ModalFilterUPP userUPP) ;
+extern Boolean
+InvokeModalFilterYDUPP(
+  DialogRef theDialog,
+  EventRecord * theEvent,
+  short * itemHit,
+  void * yourDataPtr,
+  ModalFilterYDUPP userUPP) ;
+extern void
+InvokeUserItemUPP(
+  DialogRef theDialog,
+  DialogItemIndex itemNo,
+  UserItemUPP userUPP) ;
+
+
+
+
+
+
+
+enum {
+
+  kAlertStopAlert = 0,
+  kAlertNoteAlert = 1,
+  kAlertCautionAlert = 2,
+  kAlertPlainAlert = 3
+};
+
+typedef SInt16 AlertType;
+enum {
+  kAlertDefaultOKText = -1,
+  kAlertDefaultCancelText = -1,
+  kAlertDefaultOtherText = -1
+};
+
+
+enum {
+  kAlertStdAlertOKButton = 1,
+  kAlertStdAlertCancelButton = 2,
+  kAlertStdAlertOtherButton = 3,
+  kAlertStdAlertHelpButton = 4
+};
+
+enum {
+
+  kDialogFlagsUseThemeBackground = (1 << 0),
+  kDialogFlagsUseControlHierarchy = (1 << 1),
+  kDialogFlagsHandleMovableModal = (1 << 2),
+  kDialogFlagsUseThemeControls = (1 << 3)
+};
+
+enum {
+
+  kAlertFlagsUseThemeBackground = (1 << 0),
+  kAlertFlagsUseControlHierarchy = (1 << 1),
+  kAlertFlagsAlertIsMovable = (1 << 2),
+  kAlertFlagsUseThemeControls = (1 << 3)
+};
+
+
+enum {
+  kDialogFontNoFontStyle = 0,
+  kDialogFontUseFontMask = 0x0001,
+  kDialogFontUseFaceMask = 0x0002,
+  kDialogFontUseSizeMask = 0x0004,
+  kDialogFontUseForeColorMask = 0x0008,
+  kDialogFontUseBackColorMask = 0x0010,
+  kDialogFontUseModeMask = 0x0020,
+  kDialogFontUseJustMask = 0x0040,
+  kDialogFontUseAllMask = 0x00FF,
+  kDialogFontAddFontSizeMask = 0x0100,
+  kDialogFontUseFontNameMask = 0x0200,
+  kDialogFontAddToMetaFontMask = 0x0400
+};
+
+
+
+enum {
+  kDialogFontUseThemeFontIDMask = 0x0080
+};
+
+struct AlertStdAlertParamRec {
+  Boolean movable;
+  Boolean helpButton;
+  ModalFilterUPP filterProc;
+  ConstStringPtr defaultText;
+  ConstStringPtr cancelText;
+  ConstStringPtr otherText;
+  SInt16 defaultButton;
+  SInt16 cancelButton;
+  UInt16 position;
+
+};
+typedef struct AlertStdAlertParamRec AlertStdAlertParamRec;
+typedef AlertStdAlertParamRec * AlertStdAlertParamPtr;
+enum {
+  kHICommandOther = 'othr'
+};
+
+enum {
+  kStdCFStringAlertVersionOne = 1
+};
+
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kStdAlertDoNotDisposeSheet = 1 << 0,
+
+
+
+
+
+
+  kStdAlertDoNotAnimateOnDefault = 1 << 1,
+
+
+
+
+
+
+  kStdAlertDoNotAnimateOnCancel = 1 << 2,
+
+
+
+
+
+
+  kStdAlertDoNotAnimateOnOther = 1 << 3
+};
+
+struct AlertStdCFStringAlertParamRec {
+  UInt32 version;
+  Boolean movable;
+  Boolean helpButton;
+  CFStringRef defaultText;
+  CFStringRef cancelText;
+  CFStringRef otherText;
+  SInt16 defaultButton;
+  SInt16 cancelButton;
+  UInt16 position;
+
+  OptionBits flags;
+};
+typedef struct AlertStdCFStringAlertParamRec AlertStdCFStringAlertParamRec;
+typedef AlertStdCFStringAlertParamRec * AlertStdCFStringAlertParamPtr;
+extern DialogRef
+NewDialog(
+  void * dStorage,
+  const Rect * boundsRect,
+  ConstStr255Param title,
+  Boolean visible,
+  SInt16 procID,
+  WindowRef behind,
+  Boolean goAwayFlag,
+  SInt32 refCon,
+  Handle items) ;
+extern DialogRef
+GetNewDialog(
+  SInt16 dialogID,
+  void * dStorage,
+  WindowRef behind) ;
+extern DialogRef
+NewColorDialog(
+  void * dStorage,
+  const Rect * boundsRect,
+  ConstStr255Param title,
+  Boolean visible,
+  SInt16 procID,
+  WindowRef behind,
+  Boolean goAwayFlag,
+  SInt32 refCon,
+  Handle items) ;
+extern void
+DisposeDialog(DialogRef theDialog) ;
+extern void
+ModalDialog(
+  ModalFilterUPP modalFilter,
+  DialogItemIndex * itemHit) ;
+extern Boolean
+IsDialogEvent(const EventRecord * theEvent) ;
+extern Boolean
+DialogSelect(
+  const EventRecord * theEvent,
+  DialogRef * theDialog,
+  DialogItemIndex * itemHit) ;
+extern void
+DrawDialog(DialogRef theDialog) ;
+extern void
+UpdateDialog(
+  DialogRef theDialog,
+  RgnHandle updateRgn) ;
+extern void
+HideDialogItem(
+  DialogRef theDialog,
+  DialogItemIndex itemNo) ;
+extern void
+ShowDialogItem(
+  DialogRef theDialog,
+  DialogItemIndex itemNo) ;
+extern DialogItemIndexZeroBased
+FindDialogItem(
+  DialogRef theDialog,
+  Point thePt) ;
+extern void
+DialogCut(DialogRef theDialog) ;
+extern void
+DialogPaste(DialogRef theDialog) ;
+extern void
+DialogCopy(DialogRef theDialog) ;
+extern void
+DialogDelete(DialogRef theDialog) ;
+extern DialogItemIndex
+Alert(
+  SInt16 alertID,
+  ModalFilterUPP modalFilter) ;
+extern DialogItemIndex
+StopAlert(
+  SInt16 alertID,
+  ModalFilterUPP modalFilter) ;
+extern DialogItemIndex
+NoteAlert(
+  SInt16 alertID,
+  ModalFilterUPP modalFilter) ;
+extern DialogItemIndex
+CautionAlert(
+  SInt16 alertID,
+  ModalFilterUPP modalFilter) ;
+extern void
+GetDialogItem(
+  DialogRef theDialog,
+  DialogItemIndex itemNo,
+  DialogItemType * itemType,
+  Handle * item,
+  Rect * box) ;
+extern void
+SetDialogItem(
+  DialogRef theDialog,
+  DialogItemIndex itemNo,
+  DialogItemType itemType,
+  Handle item,
+  const Rect * box) ;
+extern void
+ParamText(
+  ConstStr255Param param0,
+  ConstStr255Param param1,
+  ConstStr255Param param2,
+  ConstStr255Param param3) ;
+extern void
+SelectDialogItemText(
+  DialogRef theDialog,
+  DialogItemIndex itemNo,
+  SInt16 strtSel,
+  SInt16 endSel) ;
+extern void
+GetDialogItemText(
+  Handle item,
+  Str255 text) ;
+extern void
+SetDialogItemText(
+  Handle item,
+  ConstStr255Param text) ;
+extern SInt16
+GetAlertStage(void) ;
+extern void
+SetDialogFont(SInt16 fontNum) ;
+extern void
+ResetAlertStage(void) ;
+extern void
+GetParamText(
+  StringPtr param0,
+  StringPtr param1,
+  StringPtr param2,
+  StringPtr param3) ;
+extern void
+AppendDITL(
+  DialogRef theDialog,
+  Handle theHandle,
+  DITLMethod method) ;
+extern DialogItemIndex
+CountDITL(DialogRef theDialog) ;
+extern void
+ShortenDITL(
+  DialogRef theDialog,
+  DialogItemIndex numberItems) ;
+extern OSStatus
+InsertDialogItem(
+  DialogRef theDialog,
+  DialogItemIndex afterItem,
+  DialogItemType itemType,
+  Handle itemHandle,
+  const Rect * box) ;
+extern OSStatus
+RemoveDialogItems(
+  DialogRef theDialog,
+  DialogItemIndex itemNo,
+  DialogItemIndex amountToRemove,
+  Boolean disposeItemData) ;
+extern Boolean
+StdFilterProc(
+  DialogRef theDialog,
+  EventRecord * event,
+  DialogItemIndex * itemHit) ;
+extern OSErr
+GetStdFilterProc(ModalFilterUPP * theProc) ;
+extern OSErr
+SetDialogDefaultItem(
+  DialogRef theDialog,
+  DialogItemIndex newItem) ;
+extern OSErr
+SetDialogCancelItem(
+  DialogRef theDialog,
+  DialogItemIndex newItem) ;
+extern OSErr
+SetDialogTracksCursor(
+  DialogRef theDialog,
+  Boolean tracks) ;
+extern DialogRef
+NewFeaturesDialog(
+  void * inStorage,
+  const Rect * inBoundsRect,
+  ConstStr255Param inTitle,
+  Boolean inIsVisible,
+  SInt16 inProcID,
+  WindowRef inBehind,
+  Boolean inGoAwayFlag,
+  SInt32 inRefCon,
+  Handle inItemListHandle,
+  UInt32 inFlags) ;
+extern OSErr
+AutoSizeDialog(DialogRef inDialog) ;
+extern OSErr
+StandardAlert(
+  AlertType inAlertType,
+  ConstStr255Param inError,
+  ConstStr255Param inExplanation,
+  const AlertStdAlertParamRec * inAlertParam,
+  SInt16 * outItemHit) ;
+extern OSStatus
+GetStandardAlertDefaultParams(
+  AlertStdCFStringAlertParamPtr param,
+  UInt32 version) ;
+extern OSStatus
+CreateStandardAlert(
+  AlertType alertType,
+  CFStringRef error,
+  CFStringRef explanation,
+  const AlertStdCFStringAlertParamRec * param,
+  DialogRef * outAlert) ;
+extern OSStatus
+RunStandardAlert(
+  DialogRef inAlert,
+  ModalFilterUPP filterProc,
+  DialogItemIndex * outItemHit) ;
+extern OSStatus
+CreateStandardSheet(
+  AlertType alertType,
+  CFStringRef error,
+  CFStringRef explanation,
+  const AlertStdCFStringAlertParamRec * param,
+  EventTargetRef notifyTarget,
+  DialogRef * outSheet) ;
+extern OSStatus
+CloseStandardSheet(
+  DialogRef inSheet,
+  UInt32 inResultCommand) ;
+extern OSErr
+GetDialogItemAsControl(
+  DialogRef inDialog,
+  SInt16 inItemNo,
+  ControlRef * outControl) ;
+extern OSErr
+MoveDialogItem(
+  DialogRef inDialog,
+  SInt16 inItemNo,
+  SInt16 inHoriz,
+  SInt16 inVert) ;
+extern OSErr
+SizeDialogItem(
+  DialogRef inDialog,
+  SInt16 inItemNo,
+  SInt16 inWidth,
+  SInt16 inHeight) ;
+extern OSErr
+AppendDialogItemList(
+  DialogRef dialog,
+  SInt16 ditlID,
+  DITLMethod method) ;
+extern OSStatus
+SetDialogTimeout(
+  DialogRef inDialog,
+  SInt16 inButtonToPress,
+  UInt32 inSecondsToWait) ;
+extern OSStatus
+GetDialogTimeout(
+  DialogRef inDialog,
+  SInt16 * outButtonToPress,
+  UInt32 * outSecondsToWait,
+  UInt32 * outSecondsRemaining) ;
+extern OSStatus
+SetModalDialogEventMask(
+  DialogRef inDialog,
+  EventMask inMask) ;
+extern OSStatus
+GetModalDialogEventMask(
+  DialogRef inDialog,
+  EventMask * outMask) ;
+extern WindowRef
+GetDialogWindow(DialogRef dialog) ;
+extern TEHandle
+GetDialogTextEditHandle(DialogRef dialog) ;
+extern SInt16
+GetDialogDefaultItem(DialogRef dialog) ;
+extern SInt16
+GetDialogCancelItem(DialogRef dialog) ;
+extern SInt16
+GetDialogKeyboardFocusItem(DialogRef dialog) ;
+extern void
+SetPortDialogPort(DialogRef dialog) ;
+extern CGrafPtr
+GetDialogPort(DialogRef dialog) ;
+extern DialogRef
+GetDialogFromWindow(WindowRef window) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef Point Cell;
+typedef Rect ListBounds;
+typedef char DataArray[32001];
+typedef char * DataPtr;
+typedef DataPtr * DataHandle;
+typedef short ( * ListSearchProcPtr)(Ptr aPtr, Ptr bPtr, short aLen, short bLen);
+typedef Boolean ( * ListClickLoopProcPtr)(void);
+typedef ListSearchProcPtr ListSearchUPP;
+typedef ListClickLoopProcPtr ListClickLoopUPP;
+struct ListRec {
+  Rect rView;
+  GrafPtr port;
+  Point indent;
+  Point cellSize;
+  ListBounds visible;
+  ControlRef vScroll;
+  ControlRef hScroll;
+  SInt8 selFlags;
+  Boolean lActive;
+  SInt8 lReserved;
+  SInt8 listFlags;
+  long clikTime;
+  Point clikLoc;
+  Point mouseLoc;
+  ListClickLoopUPP lClickLoop;
+  Cell lastClick;
+  long refCon;
+  Handle listDefProc;
+  Handle userHandle;
+  ListBounds dataBounds;
+  DataHandle cells;
+  short maxIndex;
+  short cellArray[1];
+};
+typedef struct ListRec ListRec;
+typedef ListRec * ListPtr;
+typedef ListPtr * ListHandle;
+
+typedef ListHandle ListRef;
+
+
+enum {
+
+  lDrawingModeOffBit = 3,
+  lDoVAutoscrollBit = 1,
+  lDoHAutoscrollBit = 0
+};
+
+enum {
+
+  lDrawingModeOff = 8,
+  lDoVAutoscroll = 2,
+  lDoHAutoscroll = 1
+};
+
+
+enum {
+
+  lOnlyOneBit = 7,
+  lExtendDragBit = 6,
+  lNoDisjointBit = 5,
+  lNoExtendBit = 4,
+  lNoRectBit = 3,
+  lUseSenseBit = 2,
+  lNoNilHiliteBit = 1
+};
+
+
+enum {
+
+  lOnlyOne = -128,
+  lExtendDrag = 64,
+  lNoDisjoint = 32,
+  lNoExtend = 16,
+  lNoRect = 8,
+  lUseSense = 4,
+  lNoNilHilite = 2
+};
+
+
+enum {
+
+  lInitMsg = 0,
+  lDrawMsg = 1,
+  lHiliteMsg = 2,
+  lCloseMsg = 3
+};
+
+
+
+
+
+struct StandardIconListCellDataRec {
+  Handle iconHandle;
+  short font;
+  short face;
+  short size;
+  Str255 name;
+};
+typedef struct StandardIconListCellDataRec StandardIconListCellDataRec;
+typedef StandardIconListCellDataRec * StandardIconListCellDataPtr;
+
+
+typedef void ( * ListDefProcPtr)(short lMessage, Boolean lSelect, Rect *lRect, Cell lCell, short lDataOffset, short lDataLen, ListHandle lHandle);
+typedef ListDefProcPtr ListDefUPP;
+extern ListSearchUPP
+NewListSearchUPP(ListSearchProcPtr userRoutine) ;
+extern ListClickLoopUPP
+NewListClickLoopUPP(ListClickLoopProcPtr userRoutine) ;
+extern ListDefUPP
+NewListDefUPP(ListDefProcPtr userRoutine) ;
+extern void
+DisposeListSearchUPP(ListSearchUPP userUPP) ;
+extern void
+DisposeListClickLoopUPP(ListClickLoopUPP userUPP) ;
+extern void
+DisposeListDefUPP(ListDefUPP userUPP) ;
+extern short
+InvokeListSearchUPP(
+  Ptr aPtr,
+  Ptr bPtr,
+  short aLen,
+  short bLen,
+  ListSearchUPP userUPP) ;
+extern Boolean
+InvokeListClickLoopUPP(ListClickLoopUPP userUPP) ;
+extern void
+InvokeListDefUPP(
+  short lMessage,
+  Boolean lSelect,
+  Rect * lRect,
+  Cell lCell,
+  short lDataOffset,
+  short lDataLen,
+  ListHandle lHandle,
+  ListDefUPP userUPP) ;
+
+enum {
+  kListDefProcPtr = 0,
+  kListDefUserProcType = kListDefProcPtr,
+  kListDefStandardTextType = 1,
+  kListDefStandardIconType = 2
+};
+
+typedef UInt32 ListDefType;
+struct ListDefSpec {
+  ListDefType defType;
+  union {
+    ListDefUPP userProc;
+  } u;
+};
+typedef struct ListDefSpec ListDefSpec;
+typedef ListDefSpec * ListDefSpecPtr;
+extern OSStatus
+CreateCustomList(
+  const Rect * rView,
+  const ListBounds * dataBounds,
+  Point cellSize,
+  const ListDefSpec * theSpec,
+  WindowRef theWindow,
+  Boolean drawIt,
+  Boolean hasGrow,
+  Boolean scrollHoriz,
+  Boolean scrollVert,
+  ListHandle * outList) ;
+extern ListHandle
+LNew(
+  const Rect * rView,
+  const ListBounds * dataBounds,
+  Point cSize,
+  short theProc,
+  WindowRef theWindow,
+  Boolean drawIt,
+  Boolean hasGrow,
+  Boolean scrollHoriz,
+  Boolean scrollVert) ;
+extern void
+LDispose(ListHandle lHandle) ;
+extern short
+LAddColumn(
+  short count,
+  short colNum,
+  ListHandle lHandle) ;
+extern short
+LAddRow(
+  short count,
+  short rowNum,
+  ListHandle lHandle) ;
+extern void
+LDelColumn(
+  short count,
+  short colNum,
+  ListHandle lHandle) ;
+extern void
+LDelRow(
+  short count,
+  short rowNum,
+  ListHandle lHandle) ;
+extern Boolean
+LGetSelect(
+  Boolean next,
+  Cell * theCell,
+  ListHandle lHandle) ;
+extern Cell
+LLastClick(ListHandle lHandle) ;
+extern Boolean
+LNextCell(
+  Boolean hNext,
+  Boolean vNext,
+  Cell * theCell,
+  ListHandle lHandle) ;
+extern Boolean
+LSearch(
+  const void * dataPtr,
+  short dataLen,
+  ListSearchUPP searchProc,
+  Cell * theCell,
+  ListHandle lHandle) ;
+extern void
+LSize(
+  short listWidth,
+  short listHeight,
+  ListHandle lHandle) ;
+extern void
+LSetDrawingMode(
+  Boolean drawIt,
+  ListHandle lHandle) ;
+extern void
+LScroll(
+  short dCols,
+  short dRows,
+  ListHandle lHandle) ;
+extern void
+LAutoScroll(ListHandle lHandle) ;
+extern void
+LUpdate(
+  RgnHandle theRgn,
+  ListHandle lHandle) ;
+extern void
+LActivate(
+  Boolean act,
+  ListHandle lHandle) ;
+extern void
+LCellSize(
+  Point cSize,
+  ListHandle lHandle) ;
+extern Boolean
+LClick(
+  Point pt,
+  EventModifiers modifiers,
+  ListHandle lHandle) ;
+extern void
+LAddToCell(
+  const void * dataPtr,
+  short dataLen,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LClrCell(
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LGetCell(
+  void * dataPtr,
+  short * dataLen,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LRect(
+  Rect * cellRect,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LSetCell(
+  const void * dataPtr,
+  short dataLen,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LSetSelect(
+  Boolean setIt,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LDraw(
+  Cell theCell,
+  ListHandle lHandle) ;
+extern void
+LGetCellDataLocation(
+  short * offset,
+  short * len,
+  Cell theCell,
+  ListHandle lHandle) ;
+extern OSStatus
+RegisterListDefinition(
+  SInt16 inResID,
+  ListDefSpecPtr inDefSpec) ;
+extern Rect *
+GetListViewBounds(
+  ListHandle list,
+  Rect * view) ;
+extern CGrafPtr
+GetListPort(ListHandle list) ;
+extern Point *
+GetListCellIndent(
+  ListHandle list,
+  Point * indent) ;
+extern Point *
+GetListCellSize(
+  ListHandle list,
+  Point * size) ;
+extern ListBounds *
+GetListVisibleCells(
+  ListHandle list,
+  ListBounds * visible) ;
+extern ControlRef
+GetListVerticalScrollBar(ListHandle list) ;
+extern ControlRef
+GetListHorizontalScrollBar(ListHandle list) ;
+extern Boolean
+GetListActive(ListHandle list) ;
+extern SInt32
+GetListClickTime(ListHandle list) ;
+extern Point *
+GetListClickLocation(
+  ListHandle list,
+  Point * click) ;
+extern Point *
+GetListMouseLocation(
+  ListHandle list,
+  Point * mouse) ;
+extern ListClickLoopUPP
+GetListClickLoop(ListHandle list) ;
+extern SInt32
+GetListRefCon(ListHandle list) ;
+extern Handle
+GetListDefinition(ListHandle list) ;
+extern Handle
+GetListUserHandle(ListHandle list) ;
+extern ListBounds *
+GetListDataBounds(
+  ListHandle list,
+  ListBounds * bounds) ;
+extern DataHandle
+GetListDataHandle(ListHandle list) ;
+extern OptionBits
+GetListFlags(ListHandle list) ;
+extern OptionBits
+GetListSelectionFlags(ListHandle list) ;
+extern void
+SetListViewBounds(
+  ListHandle list,
+  const Rect * view) ;
+extern void
+SetListPort(
+  ListHandle list,
+  CGrafPtr port) ;
+extern void
+SetListCellIndent(
+  ListHandle list,
+  Point * indent) ;
+extern void
+SetListClickTime(
+  ListHandle list,
+  SInt32 time) ;
+extern void
+SetListClickLoop(
+  ListHandle list,
+  ListClickLoopUPP clickLoop) ;
+extern void
+SetListLastClick(
+  ListHandle list,
+  Cell * lastClick) ;
+extern void
+SetListRefCon(
+  ListHandle list,
+  SInt32 refCon) ;
+extern void
+SetListUserHandle(
+  ListHandle list,
+  Handle userHandle) ;
+extern void
+SetListFlags(
+  ListHandle list,
+  OptionBits listFlags) ;
+extern void
+SetListSelectionFlags(
+  ListHandle list,
+  OptionBits selectionFlags) ;
+
+
+}
+extern "C" {
+
+
+
+
+
+typedef Boolean ( * AEIdleProcPtr)(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn);
+typedef Boolean ( * AEFilterProcPtr)(EventRecord *theEvent, long returnID, long transactionID, const AEAddressDesc *sender);
+typedef AEIdleProcPtr AEIdleUPP;
+typedef AEFilterProcPtr AEFilterUPP;
+extern OSErr
+AESend(
+  const AppleEvent * theAppleEvent,
+  AppleEvent * reply,
+  AESendMode sendMode,
+  AESendPriority sendPriority,
+  long timeOutInTicks,
+  AEIdleUPP idleProc,
+  AEFilterUPP filterProc) ;
+extern OSErr
+AEProcessAppleEvent(const EventRecord * theEventRecord) ;
+extern OSErr
+AEResetTimer(const AppleEvent * reply) ;
+typedef SInt8 AEInteractAllowed;
+enum {
+  kAEInteractWithSelf = 0,
+  kAEInteractWithLocal = 1,
+  kAEInteractWithAll = 2
+};
+extern OSErr
+AEGetInteractionAllowed(AEInteractAllowed * level) ;
+extern OSErr
+AESetInteractionAllowed(AEInteractAllowed level) ;
+extern OSErr
+AEInteractWithUser(
+  long timeOutInTicks,
+  NMRecPtr nmReqPtr,
+  AEIdleUPP idleProc) ;
+extern OSErr
+AESuspendTheCurrentEvent(const AppleEvent * theAppleEvent) ;
+enum {
+  kAEDoNotIgnoreHandler = 0x00000000,
+  kAEIgnoreAppPhacHandler = 0x00000001,
+  kAEIgnoreAppEventHandler = 0x00000002,
+  kAEIgnoreSysPhacHandler = 0x00000004,
+  kAEIgnoreSysEventHandler = 0x00000008,
+  kAEIngoreBuiltInEventHandler = 0x00000010,
+  kAEDontDisposeOnResume = (long)0x80000000
+};
+
+
+enum {
+  kAENoDispatch = 0,
+  kAEUseStandardDispatch = (long)0xFFFFFFFF
+};
+extern OSErr
+AEResumeTheCurrentEvent(
+  const AppleEvent * theAppleEvent,
+  const AppleEvent * reply,
+  AEEventHandlerUPP dispatcher,
+  long handlerRefcon) ;
+extern OSErr
+AEGetTheCurrentEvent(AppleEvent * theAppleEvent) ;
+extern OSErr
+AESetTheCurrentEvent(const AppleEvent * theAppleEvent) ;
+extern AEIdleUPP
+NewAEIdleUPP(AEIdleProcPtr userRoutine) ;
+extern AEFilterUPP
+NewAEFilterUPP(AEFilterProcPtr userRoutine) ;
+extern void
+DisposeAEIdleUPP(AEIdleUPP userUPP) ;
+extern void
+DisposeAEFilterUPP(AEFilterUPP userUPP) ;
+extern Boolean
+InvokeAEIdleUPP(
+  EventRecord * theEvent,
+  long * sleepTime,
+  RgnHandle * mouseRgn,
+  AEIdleUPP userUPP) ;
+extern Boolean
+InvokeAEFilterUPP(
+  EventRecord * theEvent,
+  long returnID,
+  long transactionID,
+  const AEAddressDesc * sender,
+  AEFilterUPP userUPP) ;
+
+
+
+
+
+
+}
+extern "C" {
+
+
+
+enum {
+  kTextService = 'tsvc',
+  kTSMVersion = 0x0150
+};
+
+
+
+
+
+
+enum {
+  kKeyboardInputMethodClass = 'inpm',
+  kInkInputMethodClass = 'ink ',
+  kCharacterPaletteInputMethodClass = 'cplt'
+};
+
+typedef OSType TextServiceClass;
+enum {
+  kTSClassHonorUserSetting = 1,
+  kTSClassForceSetting = 2,
+  kTSClassForceToHonorUserSetting = 3
+};
+
+typedef UInt32 TSClassEnablingForceLevel;
+enum {
+  kUnicodeDocument = 'udoc',
+  kUnicodeTextService = 'utsv'
+};
+
+
+enum {
+  kTSMDocumentPropertySupportGlyphInfo = 'dpgi'
+};
+
+
+
+enum {
+  kUnknownLanguage = 0xFFFF,
+  kUnknownScript = 0xFFFF,
+  kNeutralScript = 0xFFFF
+};
+
+
+enum {
+  kTextServiceVersion2 = 'tsv2'
+};
+
+
+
+enum {
+  kInteractiveServicesTag = 'tmin',
+  kLocaleIDTag = 'loce',
+  kTextInputObjectTag = 'tiot',
+  kLocaleObjectRefTag = 'lobj',
+  kLocaleRefTag = 'lref',
+  kKeyboardInputMethodContextTag = 'kinp',
+  kKeyboardLocaleObjectRefTag = 'kilo',
+  kHandwritingInputMethodContextTag = 'hinp',
+  kHandwritingLocaleObjectRefTag = 'hilo',
+  kSpeechInputMethodContextTag = 'sinp',
+  kSpeechLocaleObjectRefTag = 'silo',
+  kPasswordModeTag = 'pwdm',
+  kRefconTag = 'refc',
+  kUseFloatingWindowTag = 'uswm',
+  kReadOnlyDocumentTag = 'isro',
+  kSupportsMultiInlineHolesTag = 'minl',
+  kProtocolVersionTag = 'nprt',
+  kTSMContextCollectionTag = 'tsmx'
+};
+
+
+
+enum {
+  kIMRomanInputMode = 'romn',
+  kIMPasswordInputMode = 'pasw',
+  kIMXingInputMode = 'xing',
+  kIMHuaInputMode = 'huam',
+  kIMPinyinInputMode = 'piny',
+  kIMQuweiInputMode = 'quwe',
+  kIMCangjieInputMode = 'cgji',
+  kIMJianyiInputMode = 'jnyi',
+  kIMZhuyinInputMode = 'zhuy',
+  kIMB5CodeInputMode = 'b5cd',
+  kIMKatakanaInputMode = 'kata',
+  kIMHiraganaInputMode = 'hira'
+};
+
+
+
+enum {
+  kIM2ByteInputMode = '2byt',
+  kIM1ByteInputMode = '1byt',
+  kIMDirectInputMode = 'dinp'
+};
+enum {
+  kNeedsInputWindow = 1,
+  kHandlesUpdateRegion = 2,
+  kHandlesGetRegion = 3,
+  kHandlesPos2Offset = 4,
+  kHandlesOffset2Pos = 5,
+  kInPasswordMode = 6,
+  kHandleMultipleHoles = 7,
+  kDocumentIsReadOnly = 8
+};
+
+enum {
+
+  bTakeActiveEvent = 15,
+  bHandleAERecording = 16,
+  bScriptMask = 0x00007F00,
+  bLanguageMask = 0x000000FF,
+  bScriptLanguageMask = bScriptMask + bLanguageMask
+};
+
+enum {
+
+  kIMJaTypingMethodProperty = 'jtyp',
+  kIMJaTypingMethodRoman = 'roma',
+  kIMJaTypingMethodKana = 'kana'
+};
+
+enum {
+
+  kCMGetScriptLangSupport = 0x0001,
+  kCMInitiateTextService = 0x0002,
+  kCMTerminateTextService = 0x0003,
+  kCMActivateTextService = 0x0004,
+  kCMDeactivateTextService = 0x0005,
+  kCMTextServiceEvent = 0x0006,
+  kCMGetTextServiceMenu = 0x0007,
+  kCMTextServiceMenuSelect = 0x0008,
+  kCMFixTextService = 0x0009,
+  kCMSetTextServiceCursor = 0x000A,
+  kCMHidePaletteWindows = 0x000B,
+  kCMGetTextServiceProperty = 0x000C,
+  kCMSetTextServiceProperty = 0x000D
+};
+
+enum {
+
+  kCMUCTextServiceEvent = 0x000E
+};
+
+
+
+
+
+
+
+typedef struct OpaqueTSMContext* TSMContext;
+typedef struct OpaqueTSMDocumentID* TSMDocumentID;
+typedef OSType InterfaceTypeList[1];
+
+
+struct TextServiceInfo {
+  Component fComponent;
+  Str255 fItemName;
+};
+typedef struct TextServiceInfo TextServiceInfo;
+typedef TextServiceInfo * TextServiceInfoPtr;
+struct TextServiceList {
+  short fTextServiceCount;
+  TextServiceInfo fServices[1];
+};
+typedef struct TextServiceList TextServiceList;
+typedef TextServiceList * TextServiceListPtr;
+typedef TextServiceListPtr * TextServiceListHandle;
+struct ScriptLanguageRecord {
+  ScriptCode fScript;
+  LangCode fLanguage;
+};
+typedef struct ScriptLanguageRecord ScriptLanguageRecord;
+struct ScriptLanguageSupport {
+  short fScriptLanguageCount;
+  ScriptLanguageRecord fScriptLanguageArray[1];
+};
+typedef struct ScriptLanguageSupport ScriptLanguageSupport;
+typedef ScriptLanguageSupport * ScriptLanguageSupportPtr;
+typedef ScriptLanguageSupportPtr * ScriptLanguageSupportHandle;
+struct TSMGlyphInfo {
+  CFRange range;
+  ATSFontRef fontRef;
+  UInt16 collection;
+  UInt16 glyphID;
+};
+typedef struct TSMGlyphInfo TSMGlyphInfo;
+struct TSMGlyphInfoArray {
+  ItemCount numGlyphInfo;
+  TSMGlyphInfo glyphInfo[1];
+};
+typedef struct TSMGlyphInfoArray TSMGlyphInfoArray;
+extern OSErr
+NewTSMDocument(
+  short numOfInterface,
+  InterfaceTypeList supportedInterfaceTypes,
+  TSMDocumentID * idocID,
+  long refcon) ;
+extern OSErr
+DeleteTSMDocument(TSMDocumentID idocID) ;
+extern OSErr
+ActivateTSMDocument(TSMDocumentID idocID) ;
+extern OSErr
+DeactivateTSMDocument(TSMDocumentID idocID) ;
+extern OSErr
+FixTSMDocument(TSMDocumentID idocID) ;
+extern OSErr
+GetServiceList(
+  short numOfInterface,
+  OSType * supportedInterfaceTypes,
+  TextServiceListHandle * serviceInfo,
+  long * seedValue) ;
+extern OSErr
+OpenTextService(
+  TSMDocumentID idocID,
+  Component aComponent,
+  ComponentInstance * aComponentInstance) ;
+extern OSErr
+CloseTextService(
+  TSMDocumentID idocID,
+  ComponentInstance aComponentInstance) ;
+extern OSErr
+SendAEFromTSMComponent(
+  const AppleEvent * theAppleEvent,
+  AppleEvent * reply,
+  AESendMode sendMode,
+  AESendPriority sendPriority,
+  long timeOutInTicks,
+  AEIdleUPP idleProc,
+  AEFilterUPP filterProc) ;
+extern OSStatus
+SendTextInputEvent(EventRef inEvent) ;
+extern OSErr
+SetDefaultInputMethod(
+  Component ts,
+  ScriptLanguageRecord * slRecordPtr) ;
+extern OSErr
+GetDefaultInputMethod(
+  Component * ts,
+  ScriptLanguageRecord * slRecordPtr) ;
+extern OSErr
+SetTextServiceLanguage(ScriptLanguageRecord * slRecordPtr) ;
+extern OSErr
+GetTextServiceLanguage(ScriptLanguageRecord * slRecordPtr) ;
+extern OSErr
+UseInputWindow(
+  TSMDocumentID idocID,
+  Boolean useWindow) ;
+extern OSStatus
+TSMSetInlineInputRegion(
+  TSMDocumentID inTSMDocument,
+  WindowRef inWindow,
+  RgnHandle inRegion) ;
+extern ComponentResult
+GetScriptLanguageSupport(
+  ComponentInstance ts,
+  ScriptLanguageSupportHandle * scriptHdl) ;
+extern ComponentResult
+InitiateTextService(ComponentInstance ts) ;
+extern ComponentResult
+TerminateTextService(ComponentInstance ts) ;
+extern ComponentResult
+ActivateTextService(ComponentInstance ts) ;
+extern ComponentResult
+DeactivateTextService(ComponentInstance ts) ;
+extern ComponentResult
+GetTextServiceMenu(
+  ComponentInstance ts,
+  MenuRef * serviceMenu) ;
+extern ComponentResult
+TextServiceEventRef(
+  ComponentInstance ts,
+  EventRef event) ;
+extern ComponentResult
+FixTextService(ComponentInstance ts) ;
+extern ComponentResult
+HidePaletteWindows(ComponentInstance ts) ;
+extern ComponentResult
+GetTextServiceProperty(
+  ComponentInstance ts,
+  OSType propertySelector,
+  SInt32 * result) ;
+extern ComponentResult
+SetTextServiceProperty(
+  ComponentInstance ts,
+  OSType propertySelector,
+  SInt32 value) ;
+extern TSMDocumentID
+TSMGetActiveDocument(void) ;
+extern OSStatus
+GetDefaultInputMethodOfClass(
+  Component * aComp,
+  ScriptLanguageRecord * slRecPtr,
+  TextServiceClass tsClass) ;
+extern OSStatus
+SetDefaultInputMethodOfClass(
+  Component aComp,
+  ScriptLanguageRecord * slRecPtr,
+  TextServiceClass tsClass) ;
+extern OSStatus
+DeselectTextService(Component aComp) ;
+extern OSStatus
+SelectTextService(Component aComp) ;
+extern OSStatus
+TSMSetDocumentProperty(
+  TSMDocumentID docID,
+  OSType propertyTag,
+  UInt32 propertySize,
+  void * propertyData) ;
+extern OSStatus
+TSMGetDocumentProperty(
+  TSMDocumentID docID,
+  OSType propertyTag,
+  UInt32 bufferSize,
+  UInt32 * actualSize,
+  void * propertyBuffer) ;
+extern OSStatus
+TSMRemoveDocumentProperty(
+  TSMDocumentID docID,
+  OSType propertyTag) ;
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef FourCharCode ScrapFlavorType;
+
+
+
+
+
+
+enum {
+  kScrapFlavorTypePicture = 'PICT',
+  kScrapFlavorTypeText = 'TEXT',
+  kScrapFlavorTypeTextStyle = 'styl',
+  kScrapFlavorTypeMovie = 'moov',
+  kScrapFlavorTypeSound = 'snd ',
+  kScrapFlavorTypeUnicode = 'utxt',
+  kScrapFlavorTypeUnicodeStyle = 'ustl'
+};
+extern OSStatus
+LoadScrap(void) ;
+extern OSStatus
+UnloadScrap(void) ;
+enum {
+  kScrapFlavorSizeUnknown = -1
+};
+
+
+
+
+
+
+
+enum {
+  kScrapReservedFlavorType = 'srft'
+};
+enum {
+  kScrapFlavorMaskNone = 0x00000000,
+  kScrapFlavorMaskSenderOnly = 0x00000001,
+  kScrapFlavorMaskTranslated = 0x00000002
+};
+
+typedef UInt32 ScrapFlavorFlags;
+
+
+
+
+struct ScrapFlavorInfo {
+  ScrapFlavorType flavorType;
+  ScrapFlavorFlags flavorFlags;
+};
+typedef struct ScrapFlavorInfo ScrapFlavorInfo;
+typedef struct OpaqueScrapRef* ScrapRef;
+enum {
+  kScrapGetNamedScrap = 0,
+  kScrapClearNamedScrap = (1L << 0)
+};
+extern OSStatus
+GetScrapByName(
+  CFStringRef name,
+  OptionBits options,
+  ScrapRef * scrap) ;
+extern OSStatus
+GetCurrentScrap(ScrapRef * scrap) ;
+extern OSStatus
+GetScrapFlavorFlags(
+  ScrapRef scrap,
+  ScrapFlavorType flavorType,
+  ScrapFlavorFlags * flavorFlags) ;
+extern OSStatus
+GetScrapFlavorSize(
+  ScrapRef scrap,
+  ScrapFlavorType flavorType,
+  Size * byteCount) ;
+extern OSStatus
+GetScrapFlavorData(
+  ScrapRef scrap,
+  ScrapFlavorType flavorType,
+  Size * byteCount,
+  void * destination) ;
+extern OSStatus
+ClearCurrentScrap(void) ;
+extern OSStatus
+ClearScrap(ScrapRef * inOutScrap) ;
+extern OSStatus
+PutScrapFlavor(
+  ScrapRef scrap,
+  ScrapFlavorType flavorType,
+  ScrapFlavorFlags flavorFlags,
+  Size flavorSize,
+  const void * flavorData) ;
+typedef OSStatus ( * ScrapPromiseKeeperProcPtr)(ScrapRef scrap, ScrapFlavorType flavorType, void *userData);
+typedef ScrapPromiseKeeperProcPtr ScrapPromiseKeeperUPP;
+extern ScrapPromiseKeeperUPP
+NewScrapPromiseKeeperUPP(ScrapPromiseKeeperProcPtr userRoutine) ;
+extern void
+DisposeScrapPromiseKeeperUPP(ScrapPromiseKeeperUPP userUPP) ;
+extern OSStatus
+InvokeScrapPromiseKeeperUPP(
+  ScrapRef scrap,
+  ScrapFlavorType flavorType,
+  void * userData,
+  ScrapPromiseKeeperUPP userUPP) ;
+extern OSStatus
+SetScrapPromiseKeeper(
+  ScrapRef scrap,
+  ScrapPromiseKeeperUPP upp,
+  const void * userData) ;
+extern OSStatus
+GetScrapFlavorCount(
+  ScrapRef scrap,
+  UInt32 * infoCount) ;
+extern OSStatus
+GetScrapFlavorInfoList(
+  ScrapRef scrap,
+  UInt32 * infoCount,
+  ScrapFlavorInfo info[]) ;
+extern OSStatus
+CallInScrapPromises(void) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+typedef struct OpaqueTXNObject* TXNObject;
+typedef struct OpaqueTXNFontMenuObject* TXNFontMenuObject;
+typedef UInt32 TXNFrameID;
+typedef UInt32 TXNVersionValue;
+enum {
+  kTXNWillDefaultToATSUIBit = 0,
+  kTXNWillDefaultToCarbonEventBit = 1
+};
+
+
+typedef OptionBits TXNFeatureBits;
+enum {
+  kTXNWillDefaultToATSUIMask = 1L << kTXNWillDefaultToATSUIBit,
+  kTXNWillDefaultToCarbonEventMask = 1L << kTXNWillDefaultToCarbonEventBit
+};
+
+enum {
+  kTXNWantMoviesBit = 0,
+  kTXNWantSoundBit = 1,
+  kTXNWantGraphicsBit = 2,
+  kTXNAlwaysUseQuickDrawTextBit = 3,
+  kTXNUseTemporaryMemoryBit = 4
+};
+
+
+typedef OptionBits TXNInitOptions;
+enum {
+  kTXNWantMoviesMask = 1L << kTXNWantMoviesBit,
+  kTXNWantSoundMask = 1L << kTXNWantSoundBit,
+  kTXNWantGraphicsMask = 1L << kTXNWantGraphicsBit,
+  kTXNAlwaysUseQuickDrawTextMask = 1L << kTXNAlwaysUseQuickDrawTextBit,
+  kTXNUseTemporaryMemoryMask = 1L << kTXNUseTemporaryMemoryBit
+};
+
+enum {
+  kTXNDrawGrowIconBit = 0,
+  kTXNShowWindowBit = 1,
+  kTXNWantHScrollBarBit = 2,
+  kTXNWantVScrollBarBit = 3,
+  kTXNNoTSMEverBit = 4,
+  kTXNReadOnlyBit = 5,
+  kTXNNoKeyboardSyncBit = 6,
+  kTXNNoSelectionBit = 7,
+  kTXNSaveStylesAsSTYLResourceBit = 8,
+  kOutputTextInUnicodeEncodingBit = 9,
+  kTXNDoNotInstallDragProcsBit = 10,
+  kTXNAlwaysWrapAtViewEdgeBit = 11,
+  kTXNDontDrawCaretWhenInactiveBit = 12,
+  kTXNDontDrawSelectionWhenInactiveBit = 13,
+  kTXNSingleLineOnlyBit = 14,
+  kTXNDisableDragAndDropBit = 15,
+  kTXNUseQDforImagingBit = 16,
+  kTXNMonostyledTextBit = 17
+};
+typedef OptionBits TXNFrameOptions;
+enum {
+
+
+
+
+  kTXNDrawGrowIconMask = 1L << kTXNDrawGrowIconBit,
+
+
+
+
+
+
+
+  kTXNShowWindowMask = 1L << kTXNShowWindowBit,
+
+
+
+
+  kTXNWantHScrollBarMask = 1L << kTXNWantHScrollBarBit,
+
+
+
+
+  kTXNWantVScrollBarMask = 1L << kTXNWantVScrollBarBit,
+
+
+
+
+
+  kTXNNoTSMEverMask = 1L << kTXNNoTSMEverBit,
+
+
+
+
+  kTXNReadOnlyMask = 1L << kTXNReadOnlyBit,
+
+
+
+
+  kTXNNoKeyboardSyncMask = 1L << kTXNNoKeyboardSyncBit,
+
+
+
+
+
+  kTXNNoSelectionMask = 1L << kTXNNoSelectionBit,
+  kTXNSaveStylesAsSTYLResourceMask = 1L << kTXNSaveStylesAsSTYLResourceBit,
+
+
+
+
+  kOutputTextInUnicodeEncodingMask = 1L << kOutputTextInUnicodeEncodingBit,
+
+
+
+
+
+
+  kTXNDoNotInstallDragProcsMask = 1L << kTXNDoNotInstallDragProcsBit,
+
+
+
+
+  kTXNAlwaysWrapAtViewEdgeMask = 1L << kTXNAlwaysWrapAtViewEdgeBit,
+
+
+
+
+
+  kTXNDontDrawCaretWhenInactiveMask = 1L << kTXNDontDrawCaretWhenInactiveBit,
+
+
+
+
+
+  kTXNDontDrawSelectionWhenInactiveMask = 1L << kTXNDontDrawSelectionWhenInactiveBit,
+
+
+
+
+
+
+
+  kTXNSingleLineOnlyMask = 1L << kTXNSingleLineOnlyBit,
+
+
+
+
+
+  kTXNDisableDragAndDropMask = 1L << kTXNDisableDragAndDropBit,
+
+
+
+
+
+  kTXNUseQDforImagingMask = 1L << kTXNUseQDforImagingBit,
+
+
+
+
+
+  kTXNMonostyledTextMask = 1L << kTXNMonostyledTextBit
+};
+
+enum {
+  kTXNSetFlushnessBit = 0,
+  kTXNSetJustificationBit = 1,
+  kTXNUseFontFallBackBit = 2,
+  kTXNRotateTextBit = 3,
+  kTXNUseVerticalTextBit = 4,
+  kTXNDontUpdateBoxRectBit = 5,
+  kTXNDontDrawTextBit = 6,
+  kTXNUseCGContextRefBit = 7,
+  kTXNImageWithQDBit = 8,
+  kTXNDontWrapTextBit = 9
+};
+typedef OptionBits TXNTextBoxOptions;
+enum {
+
+
+
+
+
+  kTXNSetFlushnessMask = 1L << kTXNSetFlushnessBit,
+
+
+
+
+
+
+
+  kTXNSetJustificationMask = 1L << kTXNSetJustificationBit,
+
+
+
+
+
+  kTXNUseFontFallBackMask = 1L << kTXNUseFontFallBackBit,
+
+
+
+
+
+
+
+  kTXNRotateTextMask = 1L << kTXNRotateTextBit,
+
+
+
+
+
+  kTXNUseVerticalTextMask = 1L << kTXNUseVerticalTextBit,
+  kTXNDontUpdateBoxRectMask = 1L << kTXNDontUpdateBoxRectBit,
+
+
+
+
+
+  kTXNDontDrawTextMask = 1L << kTXNDontDrawTextBit,
+
+
+
+
+
+  kTXNUseCGContextRefMask = 1L << kTXNUseCGContextRefBit,
+
+
+
+
+
+  kTXNImageWithQDMask = 1L << kTXNImageWithQDBit,
+
+
+
+
+  kTXNDontWrapTextMask = 1L << kTXNDontWrapTextBit
+};
+
+struct TXNTextBoxOptionsData {
+  TXNTextBoxOptions optionTags;
+  Fract flushness;
+  Fract justification;
+  Fixed rotation;
+  void * options;
+};
+typedef struct TXNTextBoxOptionsData TXNTextBoxOptionsData;
+enum {
+  kTXNFontContinuousBit = 0,
+  kTXNSizeContinuousBit = 1,
+  kTXNStyleContinuousBit = 2,
+  kTXNColorContinuousBit = 3
+};
+
+typedef OptionBits TXNContinuousFlags;
+enum {
+  kTXNFontContinuousMask = 1L << kTXNFontContinuousBit,
+  kTXNSizeContinuousMask = 1L << kTXNSizeContinuousBit,
+  kTXNStyleContinuousMask = 1L << kTXNStyleContinuousBit,
+  kTXNColorContinuousMask = 1L << kTXNColorContinuousBit
+};
+
+enum {
+  kTXNIgnoreCaseBit = 0,
+  kTXNEntireWordBit = 1,
+  kTXNUseEncodingWordRulesBit = 31
+};
+
+typedef OptionBits TXNMatchOptions;
+enum {
+  kTXNIgnoreCaseMask = 1L << kTXNIgnoreCaseBit,
+  kTXNEntireWordMask = 1L << kTXNEntireWordBit,
+  kTXNUseEncodingWordRulesMask = (unsigned long)(1L << kTXNUseEncodingWordRulesBit)
+};
+
+
+typedef OSType TXNFileType;
+enum {
+  kTXNTextensionFile = 'txtn',
+  kTXNTextFile = 'TEXT',
+  kTXNPictureFile = 'PICT',
+  kTXNMovieFile = 'MooV',
+  kTXNSoundFile = 'sfil',
+  kTXNAIFFFile = 'AIFF',
+  kTXNUnicodeTextFile = 'utxt'
+};
+
+
+typedef UInt32 TXNFrameType;
+enum {
+  kTXNTextEditStyleFrameType = 1,
+  kTXNPageFrameType = 2,
+  kTXNMultipleFrameType = 3
+};
+
+
+typedef OSType TXNDataType;
+enum {
+  kTXNTextData = 'TEXT',
+  kTXNPictureData = 'PICT',
+  kTXNMovieData = 'moov',
+  kTXNSoundData = 'snd ',
+  kTXNUnicodeTextData = 'utxt'
+};
+
+
+typedef FourCharCode TXNControlTag;
+enum {
+  kTXNLineDirectionTag = 'lndr',
+  kTXNJustificationTag = 'just',
+  kTXNIOPrivilegesTag = 'iopv',
+  kTXNSelectionStateTag = 'slst',
+  kTXNInlineStateTag = 'inst',
+  kTXNWordWrapStateTag = 'wwrs',
+  kTXNKeyboardSyncStateTag = 'kbsy',
+  kTXNAutoIndentStateTag = 'auin',
+  kTXNTabSettingsTag = 'tabs',
+  kTXNRefConTag = 'rfcn',
+  kTXNMarginsTag = 'marg',
+  kTXNFlattenMoviesTag = 'flat',
+  kTXNDoFontSubstitution = 'fSub',
+  kTXNNoUserIOTag = 'nuio',
+  kTXNUseCarbonEvents = 'cbcb',
+  kTXNDrawCaretWhenInactiveTag = 'dcrt',
+  kTXNDrawSelectionWhenInactiveTag = 'dsln',
+  kTXNDisableDragAndDropTag = 'drag',
+  kTXNSingleLevelUndoTag = 'undo',
+  kTXNVisibilityTag = 'visb'
+};
+
+typedef UInt32 TXNActionKey;
+enum {
+  kTXNTypingAction = 0,
+  kTXNCutAction = 1,
+  kTXNPasteAction = 2,
+  kTXNClearAction = 3,
+  kTXNChangeFontAction = 4,
+  kTXNChangeFontColorAction = 5,
+  kTXNChangeFontSizeAction = 6,
+  kTXNChangeStyleAction = 7,
+  kTXNAlignLeftAction = 8,
+  kTXNAlignCenterAction = 9,
+  kTXNAlignRightAction = 10,
+  kTXNDropAction = 11,
+  kTXNMoveAction = 12,
+  kTXNFontFeatureAction = 13,
+  kTXNFontVariationAction = 14,
+  kTXNUndoLastAction = 1024
+};
+
+enum {
+  kTXNClearThisControl = (long)0xFFFFFFFF,
+  kTXNClearTheseFontFeatures = (long)0x80000000
+};
+
+
+
+
+
+enum {
+  kTXNReadWrite = false,
+  kTXNReadOnly = true
+};
+
+
+enum {
+  kTXNSelectionOn = true,
+  kTXNSelectionOff = false
+};
+
+
+enum {
+  kTXNUseInline = false,
+  kTXNUseBottomline = true
+};
+
+
+
+enum {
+  kTXNAutoWrap = false,
+  kTXNNoAutoWrap = true
+};
+
+
+enum {
+  kTXNSyncKeyboard = false,
+  kTXNNoSyncKeyboard = true
+};
+
+
+enum {
+  kTXNAutoIndentOff = false,
+  kTXNAutoIndentOn = true
+};
+
+
+enum {
+  kTXNDontDrawCaretWhenInactive = false,
+  kTXNDrawCaretWhenInactive = true
+};
+
+
+enum {
+  kTXNDontDrawSelectionWhenInactive = false,
+  kTXNDrawSelectionWhenInactive = true
+};
+
+
+enum {
+  kTXNEnableDragAndDrop = false,
+  kTXNDisableDragAndDrop = true
+};
+
+typedef SInt8 TXNTabType;
+enum {
+  kTXNRightTab = -1,
+  kTXNLeftTab = 0,
+  kTXNCenterTab = 1
+};
+
+struct TXNTab {
+  SInt16 value;
+  TXNTabType tabType;
+  UInt8 filler;
+};
+typedef struct TXNTab TXNTab;
+enum {
+  kTXNLeftToRight = 0,
+  kTXNRightToLeft = 1
+};
+
+enum {
+  kTXNFlushDefault = 0,
+  kTXNFlushLeft = 1,
+  kTXNFlushRight = 2,
+  kTXNCenter = 4,
+  kTXNFullJust = 8,
+  kTXNForceFullJust = 16
+};
+
+
+
+
+
+struct TXNMargins {
+  SInt16 topMargin;
+  SInt16 leftMargin;
+  SInt16 bottomMargin;
+  SInt16 rightMargin;
+};
+typedef struct TXNMargins TXNMargins;
+union TXNControlData {
+  UInt32 uValue;
+  SInt32 sValue;
+  TXNTab tabValue;
+  TXNMargins * marginsPtr;
+};
+typedef union TXNControlData TXNControlData;
+typedef Boolean TXNScrollBarState;
+enum {
+  kScrollBarsAlwaysActive = true,
+  kScrollBarsSyncWithFocus = false
+};
+
+
+
+
+
+enum {
+  kTXNDontCareTypeSize = (long)0xFFFFFFFF,
+  kTXNDontCareTypeStyle = 0xFF,
+  kTXNIncrementTypeSize = 0x00000001,
+  kTXNDecrementTypeSize = (long)0x80000000,
+  kTXNUseScriptDefaultValue = -1,
+  kTXNNoFontVariations = 0x7FFF
+};
+
+typedef UInt32 TXNOffset;
+enum {
+  kTXNUseCurrentSelection = (unsigned long)0xFFFFFFFF,
+  kTXNStartOffset = 0,
+  kTXNEndOffset = 0x7FFFFFFF
+};
+
+
+enum {
+  kTXNSingleStylePerTextDocumentResType = 'MPSR',
+  kTXNMultipleStylesPerTextDocumentResType = 'styl'
+};
+
+
+typedef void * TXNObjectRefcon;
+
+enum {
+  kTXNShowStart = false,
+  kTXNShowEnd = true
+};
+
+typedef OSStatus TXNErrors;
+
+
+enum {
+  kTXNDefaultFontSize = 0x000C0000
+};
+
+enum {
+  kTXNDefaultFontStyle = normal
+};
+
+
+typedef UInt32 TXNHyperLinkState;
+enum {
+  kTXNLinkNotPressed = 0,
+  kTXNLinkWasPressed = 1,
+  kTXNLinkTracking = 3
+};
+
+typedef FourCharCode TXNTypeRunAttributes;
+enum {
+  kTXNQDFontNameAttribute = 'fntn',
+  kTXNQDFontFamilyIDAttribute = 'font',
+  kTXNQDFontSizeAttribute = 'size',
+  kTXNQDFontStyleAttribute = 'face',
+  kTXNQDFontColorAttribute = 'klor',
+  kTXNTextEncodingAttribute = 'encd',
+  kTXNATSUIFontFeaturesAttribute = 'atfe',
+  kTXNATSUIFontVariationsAttribute = 'atva',
+  kTXNURLAttribute = 'urla'
+};
+
+
+
+
+
+
+typedef ByteCount TXNTypeRunAttributeSizes;
+enum {
+  kTXNQDFontNameAttributeSize = sizeof(Str255),
+  kTXNQDFontFamilyIDAttributeSize = sizeof(SInt16),
+  kTXNQDFontSizeAttributeSize = sizeof(SInt16),
+  kTXNQDFontStyleAttributeSize = sizeof(Style),
+  kTXNQDFontColorAttributeSize = sizeof(RGBColor),
+  kTXNTextEncodingAttributeSize = sizeof(TextEncoding),
+  kTXNFontSizeAttributeSize = sizeof(Fixed)
+};
+
+typedef UInt32 TXNPermanentTextEncodingType;
+enum {
+  kTXNSystemDefaultEncoding = 0,
+  kTXNMacOSEncoding = 1,
+  kTXNUnicodeEncoding = 2
+};
+
+
+
+typedef FourCharCode TXTNTag;
+struct TXNATSUIFeatures {
+  ItemCount featureCount;
+  ATSUFontFeatureType * featureTypes;
+  ATSUFontFeatureSelector * featureSelectors;
+};
+typedef struct TXNATSUIFeatures TXNATSUIFeatures;
+struct TXNATSUIVariations {
+  ItemCount variationCount;
+  ATSUFontVariationAxis * variationAxis;
+  ATSUFontVariationValue * variationValues;
+};
+typedef struct TXNATSUIVariations TXNATSUIVariations;
+union TXNAttributeData {
+  void * dataPtr;
+  UInt32 dataValue;
+  TXNATSUIFeatures * atsuFeatures;
+  TXNATSUIVariations * atsuVariations;
+  CFURLRef urlReference;
+};
+typedef union TXNAttributeData TXNAttributeData;
+struct TXNTypeAttributes {
+  TXTNTag tag;
+  ByteCount size;
+  TXNAttributeData data;
+};
+typedef struct TXNTypeAttributes TXNTypeAttributes;
+struct TXNMacOSPreferredFontDescription {
+  UInt32 fontID;
+  Fixed pointSize;
+  TextEncoding encoding;
+  Style fontStyle;
+};
+typedef struct TXNMacOSPreferredFontDescription TXNMacOSPreferredFontDescription;
+struct TXNMatchTextRecord {
+  const void * iTextPtr;
+  SInt32 iTextToMatchLength;
+  TextEncoding iTextEncoding;
+};
+typedef struct TXNMatchTextRecord TXNMatchTextRecord;
+
+typedef UInt32 TXNBackgroundType;
+enum {
+  kTXNBackgroundTypeRGB = 1
+};
+
+
+
+
+
+union TXNBackgroundData {
+  RGBColor color;
+};
+typedef union TXNBackgroundData TXNBackgroundData;
+struct TXNBackground {
+  TXNBackgroundType bgType;
+  TXNBackgroundData bg;
+};
+typedef struct TXNBackground TXNBackground;
+struct TXNLongRect {
+  SInt32 top;
+  SInt32 left;
+  SInt32 bottom;
+  SInt32 right;
+};
+typedef struct TXNLongRect TXNLongRect;
+
+
+
+
+enum {
+  kTXNTextInputCountBit = 0,
+  kTXNRunCountBit = 1
+};
+
+typedef OptionBits TXNCountOptions;
+enum {
+  kTXNTextInputCountMask = 1L << kTXNTextInputCountBit,
+  kTXNRunCountMask = 1L << kTXNRunCountBit,
+  kTXNAllCountMask = kTXNTextInputCountMask | kTXNRunCountMask
+};
+
+
+typedef UInt32 TXNScrollUnit;
+enum {
+  kTXNScrollUnitsInPixels = 0,
+  kTXNScrollUnitsInLines = 1,
+  kTXNScrollUnitsInViewRects = 2
+};
+
+typedef UInt32 TXNScrollBarOrientation;
+enum {
+  kTXNHorizontal = 0,
+  kTXNVertical = 1
+};
+
+typedef OSStatus ( * TXNFindProcPtr)(const TXNMatchTextRecord *matchData, TXNDataType iDataType, TXNMatchOptions iMatchOptions, const void *iSearchTextPtr, TextEncoding encoding, TXNOffset absStartOffset, ByteCount searchTextLength, TXNOffset *oStartMatch, TXNOffset *oEndMatch, Boolean *ofound, UInt32 refCon);
+typedef CFStringRef ( * TXNActionKeyMapperProcPtr)(TXNActionKey actionKey, UInt32 commandID);
+
+typedef void ( * TXNScrollInfoProcPtr)(SInt32 iValue, SInt32 iMaximumValue, TXNScrollBarOrientation iScrollBarOrientation, SInt32 iRefCon);
+typedef TXNFindProcPtr TXNFindUPP;
+typedef TXNActionKeyMapperProcPtr TXNActionKeyMapperUPP;
+typedef TXNScrollInfoProcPtr TXNScrollInfoUPP;
+extern TXNFindUPP
+NewTXNFindUPP(TXNFindProcPtr userRoutine) ;
+extern TXNActionKeyMapperUPP
+NewTXNActionKeyMapperUPP(TXNActionKeyMapperProcPtr userRoutine) ;
+extern TXNScrollInfoUPP
+NewTXNScrollInfoUPP(TXNScrollInfoProcPtr userRoutine) ;
+extern void
+DisposeTXNFindUPP(TXNFindUPP userUPP) ;
+extern void
+DisposeTXNActionKeyMapperUPP(TXNActionKeyMapperUPP userUPP) ;
+extern void
+DisposeTXNScrollInfoUPP(TXNScrollInfoUPP userUPP) ;
+extern OSStatus
+InvokeTXNFindUPP(
+  const TXNMatchTextRecord * matchData,
+  TXNDataType iDataType,
+  TXNMatchOptions iMatchOptions,
+  const void * iSearchTextPtr,
+  TextEncoding encoding,
+  TXNOffset absStartOffset,
+  ByteCount searchTextLength,
+  TXNOffset * oStartMatch,
+  TXNOffset * oEndMatch,
+  Boolean * ofound,
+  UInt32 refCon,
+  TXNFindUPP userUPP) ;
+extern CFStringRef
+InvokeTXNActionKeyMapperUPP(
+  TXNActionKey actionKey,
+  UInt32 commandID,
+  TXNActionKeyMapperUPP userUPP) ;
+extern void
+InvokeTXNScrollInfoUPP(
+  SInt32 iValue,
+  SInt32 iMaximumValue,
+  TXNScrollBarOrientation iScrollBarOrientation,
+  SInt32 iRefCon,
+  TXNScrollInfoUPP userUPP) ;
+enum {
+  kTXNNoAppleEventHandlersBit = 0,
+  kTXNRestartAppleEventHandlersBit = 1
+};
+
+enum {
+  kTXNNoAppleEventHandlersMask = 1 << kTXNNoAppleEventHandlersBit,
+  kTXNRestartAppleEventHandlersMask = 1 << kTXNRestartAppleEventHandlersBit
+};
+struct TXNCarbonEventInfo {
+  Boolean useCarbonEvents;
+  UInt8 filler;
+  UInt16 flags;
+  CFDictionaryRef fDictionary;
+};
+typedef struct TXNCarbonEventInfo TXNCarbonEventInfo;
+extern OSStatus
+TXNNewObject(
+  const FSSpec * iFileSpec,
+  WindowRef iWindow,
+  const Rect * iFrame,
+  TXNFrameOptions iFrameOptions,
+  TXNFrameType iFrameType,
+  TXNFileType iFileType,
+  TXNPermanentTextEncodingType iPermanentEncoding,
+  TXNObject * oTXNObject,
+  TXNFrameID * oTXNFrameID,
+  TXNObjectRefcon iRefCon) ;
+extern void
+TXNDeleteObject(TXNObject iTXNObject) ;
+extern void
+TXNResizeFrame(
+  TXNObject iTXNObject,
+  UInt32 iWidth,
+  UInt32 iHeight,
+  TXNFrameID iTXNFrameID) ;
+extern void
+TXNSetFrameBounds(
+  TXNObject iTXNObject,
+  SInt32 iTop,
+  SInt32 iLeft,
+  SInt32 iBottom,
+  SInt32 iRight,
+  TXNFrameID iTXNFrameID) ;
+extern OSStatus
+TXNInitTextension(
+  const TXNMacOSPreferredFontDescription iDefaultFonts[],
+  ItemCount iCountDefaultFonts,
+  TXNInitOptions iUsageFlags) ;
+extern void
+TXNTerminateTextension(void) ;
+extern void
+TXNKeyDown(
+  TXNObject iTXNObject,
+  const EventRecord * iEvent) ;
+extern void
+TXNAdjustCursor(
+  TXNObject iTXNObject,
+  RgnHandle ioCursorRgn) ;
+extern void
+TXNClick(
+  TXNObject iTXNObject,
+  const EventRecord * iEvent) ;
+extern void
+TXNSelectAll(TXNObject iTXNObject) ;
+extern void
+TXNFocus(
+  TXNObject iTXNObject,
+  Boolean iBecomingFocused) ;
+extern void
+TXNUpdate(TXNObject iTXNObject) ;
+extern void
+TXNDraw(
+  TXNObject iTXNObject,
+  GWorldPtr iDrawPort) ;
+extern void
+TXNForceUpdate(TXNObject iTXNObject) ;
+extern UInt32
+TXNGetSleepTicks(TXNObject iTXNObject) ;
+extern void
+TXNIdle(TXNObject iTXNObject) ;
+extern void
+TXNGrowWindow(
+  TXNObject iTXNObject,
+  const EventRecord * iEvent) ;
+extern void
+TXNZoomWindow(
+  TXNObject iTXNObject,
+  SInt16 iPart) ;
+extern Boolean
+TXNCanUndo(
+  TXNObject iTXNObject,
+  TXNActionKey * oTXNActionKey) ;
+extern void
+TXNUndo(TXNObject iTXNObject) ;
+extern Boolean
+TXNCanRedo(
+  TXNObject iTXNObject,
+  TXNActionKey * oTXNActionKey) ;
+extern void
+TXNRedo(TXNObject iTXNObject) ;
+extern OSStatus
+TXNCut(TXNObject iTXNObject) ;
+extern OSStatus
+TXNCopy(TXNObject iTXNObject) ;
+extern OSStatus
+TXNPaste(TXNObject iTXNObject) ;
+extern OSStatus
+TXNClear(TXNObject iTXNObject) ;
+extern void
+TXNGetSelection(
+  TXNObject iTXNObject,
+  TXNOffset * oStartOffset,
+  TXNOffset * oEndOffset) ;
+extern void
+TXNShowSelection(
+  TXNObject iTXNObject,
+  Boolean iShowEnd) ;
+extern Boolean
+TXNIsSelectionEmpty(TXNObject iTXNObject) ;
+extern OSStatus
+TXNSetSelection(
+  TXNObject iTXNObject,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset) ;
+extern OSStatus
+TXNGetContinuousTypeAttributes(
+  TXNObject iTxnObject,
+  TXNContinuousFlags * oContinuousFlags,
+  ItemCount iCount,
+  TXNTypeAttributes ioTypeAttributes[]) ;
+extern OSStatus
+TXNSetTypeAttributes(
+  TXNObject iTXNObject,
+  ItemCount iAttrCount,
+  const TXNTypeAttributes iAttributes[],
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset) ;
+extern OSStatus
+TXNSetTXNObjectControls(
+  TXNObject iTXNObject,
+  Boolean iClearAll,
+  ItemCount iControlCount,
+  const TXNControlTag iControlTags[],
+  const TXNControlData iControlData[]) ;
+extern OSStatus
+TXNGetTXNObjectControls(
+  TXNObject iTXNObject,
+  ItemCount iControlCount,
+  const TXNControlTag iControlTags[],
+  TXNControlData oControlData[]) ;
+extern OSStatus
+TXNCountRunsInRange(
+  TXNObject iTXNObject,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset,
+  ItemCount * oRunCount) ;
+extern OSStatus
+TXNGetIndexedRunInfoFromRange(
+  TXNObject iTXNObject,
+  ItemCount iIndex,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset,
+  TXNOffset * oRunStartOffset,
+  TXNOffset * oRunEndOffset,
+  TXNDataType * oRunDataType,
+  ItemCount iTypeAttributeCount,
+  TXNTypeAttributes * ioTypeAttributes) ;
+extern ByteCount
+TXNDataSize(TXNObject iTXNObject) ;
+extern OSStatus
+TXNGetData(
+  TXNObject iTXNObject,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset,
+  Handle * oDataHandle) ;
+extern OSStatus
+TXNGetDataEncoded(
+  TXNObject iTXNObject,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset,
+  Handle * oDataHandle,
+  TXNDataType iEncoding) ;
+extern OSStatus
+TXNSetDataFromFile(
+  TXNObject iTXNObject,
+  SInt16 iFileRefNum,
+  OSType iFileType,
+  ByteCount iFileLength,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset) ;
+extern OSStatus
+TXNSetData(
+  TXNObject iTXNObject,
+  TXNDataType iDataType,
+  const void * iDataPtr,
+  ByteCount iDataSize,
+  TXNOffset iStartOffset,
+  TXNOffset iEndOffset) ;
+extern ItemCount
+TXNGetChangeCount(TXNObject iTXNObject) ;
+extern OSStatus
+TXNSave(
+  TXNObject iTXNObject,
+  TXNFileType iType,
+  OSType iResType,
+  TXNPermanentTextEncodingType iPermanentEncoding,
+  const FSSpec * iFileSpecification,
+  SInt16 iDataReference,
+  SInt16 iResourceReference) ;
+extern OSStatus
+TXNRevert(TXNObject iTXNObject) ;
+extern OSStatus
+TXNPageSetup(TXNObject iTXNObject) ;
+extern OSStatus
+TXNPrint(TXNObject iTXNObject) ;
+extern Boolean
+TXNIsScrapPastable(void) ;
+extern OSStatus
+TXNConvertToPublicScrap(void) ;
+extern OSStatus
+TXNConvertFromPublicScrap(void) ;
+extern void
+TXNGetViewRect(
+  TXNObject iTXNObject,
+  Rect * oViewRect) ;
+extern void
+TXNSetViewRect(
+  TXNObject iTXNObject,
+  const Rect * iViewRect) ;
+extern OSStatus
+TXNFind(
+  TXNObject iTXNObject,
+  const TXNMatchTextRecord * iMatchTextDataPtr,
+  TXNDataType iDataType,
+  TXNMatchOptions iMatchOptions,
+  TXNOffset iStartSearchOffset,
+  TXNOffset iEndSearchOffset,
+  TXNFindUPP iFindProc,
+  SInt32 iRefCon,
+  TXNOffset * oStartMatchOffset,
+  TXNOffset * oEndMatchOffset) ;
+extern OSStatus
+TXNSetFontDefaults(
+  TXNObject iTXNObject,
+  ItemCount iCount,
+  const TXNMacOSPreferredFontDescription iFontDefaults[]) ;
+extern OSStatus
+TXNGetFontDefaults(
+  TXNObject iTXNObject,
+  ItemCount * ioCount,
+  TXNMacOSPreferredFontDescription ioFontDefaults[]) ;
+extern OSStatus
+TXNAttachObjectToWindow(
+  TXNObject iTXNObject,
+  GWorldPtr iWindow,
+  Boolean iIsActualWindow) ;
+extern Boolean
+TXNIsObjectAttachedToWindow(TXNObject iTXNObject) ;
+extern OSErr
+TXNDragTracker(
+  TXNObject iTXNObject,
+  TXNFrameID iTXNFrameID,
+  DragTrackingMessage iMessage,
+  WindowRef iWindow,
+  DragReference iDragReference,
+  Boolean iDifferentObjectSameWindow) ;
+extern OSErr
+TXNDragReceiver(
+  TXNObject iTXNObject,
+  TXNFrameID iTXNFrameID,
+  WindowRef iWindow,
+  DragReference iDragReference,
+  Boolean iDifferentObjectSameWindow) ;
+extern OSStatus
+TXNActivate(
+  TXNObject iTXNObject,
+  TXNFrameID iTXNFrameID,
+  TXNScrollBarState iActiveState) ;
+extern OSStatus
+TXNSetBackground(
+  TXNObject iTXNObject,
+  const TXNBackground * iBackgroundInfo) ;
+extern OSStatus
+TXNEchoMode(
+  TXNObject iTXNObject,
+  UniChar iEchoCharacter,
+  TextEncoding iEncoding,
+  Boolean iOn) ;
+extern OSStatus
+TXNNewFontMenuObject(
+  MenuRef iFontMenuHandle,
+  SInt16 iMenuID,
+  SInt16 iStartHierMenuID,
+  TXNFontMenuObject * oTXNFontMenuObject) ;
+extern OSStatus
+TXNGetFontMenuHandle(
+  TXNFontMenuObject iTXNFontMenuObject,
+  MenuRef * oFontMenuHandle) ;
+extern OSStatus
+TXNDisposeFontMenuObject(TXNFontMenuObject iTXNFontMenuObject) ;
+extern OSStatus
+TXNDoFontMenuSelection(
+  TXNObject iTXNObject,
+  TXNFontMenuObject iTXNFontMenuObject,
+  SInt16 iMenuID,
+  SInt16 iMenuItem) ;
+extern OSStatus
+TXNPrepareFontMenu(
+  TXNObject iTXNObject,
+  TXNFontMenuObject iTXNFontMenuObject) ;
+extern TXNVersionValue
+TXNVersionInformation(TXNFeatureBits * oFeatureFlags) ;
+extern OSStatus
+TXNPointToOffset(
+  TXNObject iTXNObject,
+  Point iPoint,
+  TXNOffset * oOffset) ;
+extern OSStatus
+TXNOffsetToPoint(
+  TXNObject iTXNObject,
+  TXNOffset iOffset,
+  Point * oPoint) ;
+extern OSStatus
+TXNDrawUnicodeTextBox(
+  const UniChar iText[],
+  UniCharCount iLen,
+  Rect * ioBox,
+  ATSUStyle iStyle,
+  const TXNTextBoxOptionsData * iOptions) ;
+extern OSStatus
+TXNDrawCFStringTextBox(
+  CFStringRef iText,
+  Rect * ioBox,
+  ATSUStyle iStyle,
+  const TXNTextBoxOptionsData * iOptions) ;
+extern OSStatus
+TXNGetLineCount(
+  TXNObject iTXNObject,
+  ItemCount * oLineTotal) ;
+extern OSStatus
+TXNGetLineMetrics(
+  TXNObject iTXNObject,
+  UInt32 iLineNumber,
+  Fixed * oLineWidth,
+  Fixed * oLineHeight) ;
+extern OSStatus
+TXNGetActionChangeCount(
+  TXNObject iTXNObject,
+  TXNCountOptions iOptions,
+  ItemCount * oCount) ;
+extern OSStatus
+TXNClearActionChangeCount(
+  TXNObject iTXNObject,
+  TXNCountOptions iOptions) ;
+extern OSStatus
+TXNIsObjectAttachedToSpecificWindow(
+  TXNObject iTXNObject,
+  WindowRef iWindow,
+  Boolean * oAttached) ;
+extern void
+TXNSetRectBounds(
+  TXNObject iTXNObject,
+  const Rect * iViewRect,
+  const TXNLongRect * iDestinationRect,
+  Boolean iUpdate) ;
+extern OSStatus
+TXNGetRectBounds(
+  TXNObject iTXNObject,
+  Rect * oViewRect,
+  TXNLongRect * oDestinationRect,
+  TXNLongRect * oTextRect) ;
+extern void
+TXNRecalcTextLayout(TXNObject iTXNObject) ;
+extern OSStatus
+TXNScroll(
+  TXNObject iTXNObject,
+  TXNScrollUnit iVerticalScrollUnit,
+  TXNScrollUnit iHorizontalScrollUnit,
+  SInt32 * ioVerticalDelta,
+  SInt32 * ioHorizontalDelta) ;
+extern void
+TXNRegisterScrollInfoProc(
+  TXNObject iTXNObject,
+  TXNScrollInfoUPP iTXNScrollInfoUPP,
+  SInt32 iRefCon) ;
+extern OSStatus
+TXNClearUndo(TXNObject iTXNObject) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+
+enum {
+  kMacHelpVersion = 0x0003
+};
+
+typedef SInt16 HMContentRequest;
+enum {
+  kHMSupplyContent = 0,
+  kHMDisposeContent = 1
+};
+
+typedef UInt32 HMContentType;
+enum {
+  kHMNoContent = 'none',
+  kHMCFStringContent = 'cfst',
+  kHMCFStringLocalizedContent = 'cfsl',
+  kHMPascalStrContent = 'pstr',
+  kHMStringResContent = 'str#',
+  kHMTEHandleContent = 'txth',
+  kHMTextResContent = 'text',
+  kHMStrResContent = 'str '
+};
+typedef SInt16 HMTagDisplaySide;
+enum {
+
+
+
+
+  kHMDefaultSide = 0,
+
+
+
+
+  kHMOutsideTopScriptAligned = 1,
+
+
+
+
+  kHMOutsideLeftCenterAligned = 2,
+  kHMOutsideBottomScriptAligned = 3,
+
+
+
+
+  kHMOutsideRightCenterAligned = 4,
+
+
+
+
+  kHMOutsideTopLeftAligned = 5,
+
+
+
+
+  kHMOutsideTopRightAligned = 6,
+
+
+
+
+  kHMOutsideLeftTopAligned = 7,
+
+
+
+
+  kHMOutsideLeftBottomAligned = 8,
+
+
+
+
+  kHMOutsideBottomLeftAligned = 9,
+
+
+
+
+  kHMOutsideBottomRightAligned = 10,
+  kHMOutsideRightTopAligned = 11,
+  kHMOutsideRightBottomAligned = 12,
+
+
+
+
+  kHMOutsideTopCenterAligned = 13,
+
+
+
+
+  kHMOutsideBottomCenterAligned = 14,
+
+
+
+
+  kHMInsideRightCenterAligned = 15,
+
+
+
+
+  kHMInsideLeftCenterAligned = 16,
+
+
+
+
+  kHMInsideBottomCenterAligned = 17,
+
+
+
+
+  kHMInsideTopCenterAligned = 18,
+
+
+
+
+  kHMInsideTopLeftCorner = 19,
+
+
+
+
+  kHMInsideTopRightCorner = 20,
+
+
+
+
+  kHMInsideBottomLeftCorner = 21,
+
+
+
+
+  kHMInsideBottomRightCorner = 22,
+
+
+
+
+  kHMAbsoluteCenterAligned = 23
+};
+
+
+enum {
+  kHMTopSide = kHMOutsideTopScriptAligned,
+  kHMLeftSide = kHMOutsideLeftCenterAligned,
+  kHMBottomSide = kHMOutsideBottomScriptAligned,
+  kHMRightSide = kHMOutsideRightCenterAligned,
+  kHMTopLeftCorner = kHMOutsideTopLeftAligned,
+  kHMTopRightCorner = kHMOutsideTopRightAligned,
+  kHMLeftTopCorner = kHMOutsideLeftTopAligned,
+  kHMLeftBottomCorner = kHMOutsideLeftBottomAligned,
+  kHMBottomLeftCorner = kHMOutsideBottomLeftAligned,
+  kHMBottomRightCorner = kHMOutsideBottomRightAligned,
+  kHMRightTopCorner = kHMOutsideRightTopAligned,
+  kHMRightBottomCorner = kHMOutsideRightBottomAligned
+};
+
+typedef SInt16 HMContentProvidedType;
+enum {
+  kHMContentProvided = 0,
+  kHMContentNotProvided = 1,
+  kHMContentNotProvidedDontPropagate = 2
+};
+
+enum {
+  kHMMinimumContentIndex = 0,
+  kHMMaximumContentIndex = 1
+};
+
+enum {
+  errHMIllegalContentForMinimumState = -10980,
+  errHMIllegalContentForMaximumState = -10981
+};
+
+
+enum {
+  kHMIllegalContentForMinimumState = errHMIllegalContentForMinimumState
+};
+
+enum {
+  kHelpTagEventHandlerTag = 'hevt'
+};
+
+struct HMHelpContent {
+  HMContentType contentType;
+  union {
+    CFStringRef tagCFString;
+    Str255 tagString;
+    HMStringResType tagStringRes;
+    TEHandle tagTEHandle;
+    SInt16 tagTextRes;
+    SInt16 tagStrRes;
+  } u;
+};
+typedef struct HMHelpContent HMHelpContent;
+struct HMHelpContentRec {
+  SInt32 version;
+  Rect absHotRect;
+  HMTagDisplaySide tagSide;
+  HMHelpContent content[2];
+};
+typedef struct HMHelpContentRec HMHelpContentRec;
+typedef HMHelpContentRec * HMHelpContentPtr;
+
+
+
+typedef OSStatus ( * HMControlContentProcPtr)(ControlRef inControl, Point inGlobalMouse, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent);
+typedef OSStatus ( * HMWindowContentProcPtr)(WindowRef inWindow, Point inGlobalMouse, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent);
+typedef OSStatus ( * HMMenuTitleContentProcPtr)(MenuRef inMenu, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent);
+typedef OSStatus ( * HMMenuItemContentProcPtr)(const MenuTrackingData *inTrackingData, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent);
+typedef HMControlContentProcPtr HMControlContentUPP;
+typedef HMWindowContentProcPtr HMWindowContentUPP;
+typedef HMMenuTitleContentProcPtr HMMenuTitleContentUPP;
+typedef HMMenuItemContentProcPtr HMMenuItemContentUPP;
+extern HMControlContentUPP
+NewHMControlContentUPP(HMControlContentProcPtr userRoutine) ;
+extern HMWindowContentUPP
+NewHMWindowContentUPP(HMWindowContentProcPtr userRoutine) ;
+extern HMMenuTitleContentUPP
+NewHMMenuTitleContentUPP(HMMenuTitleContentProcPtr userRoutine) ;
+extern HMMenuItemContentUPP
+NewHMMenuItemContentUPP(HMMenuItemContentProcPtr userRoutine) ;
+extern void
+DisposeHMControlContentUPP(HMControlContentUPP userUPP) ;
+extern void
+DisposeHMWindowContentUPP(HMWindowContentUPP userUPP) ;
+extern void
+DisposeHMMenuTitleContentUPP(HMMenuTitleContentUPP userUPP) ;
+extern void
+DisposeHMMenuItemContentUPP(HMMenuItemContentUPP userUPP) ;
+extern OSStatus
+InvokeHMControlContentUPP(
+  ControlRef inControl,
+  Point inGlobalMouse,
+  HMContentRequest inRequest,
+  HMContentProvidedType * outContentProvided,
+  HMHelpContentPtr ioHelpContent,
+  HMControlContentUPP userUPP) ;
+extern OSStatus
+InvokeHMWindowContentUPP(
+  WindowRef inWindow,
+  Point inGlobalMouse,
+  HMContentRequest inRequest,
+  HMContentProvidedType * outContentProvided,
+  HMHelpContentPtr ioHelpContent,
+  HMWindowContentUPP userUPP) ;
+extern OSStatus
+InvokeHMMenuTitleContentUPP(
+  MenuRef inMenu,
+  HMContentRequest inRequest,
+  HMContentProvidedType * outContentProvided,
+  HMHelpContentPtr ioHelpContent,
+  HMMenuTitleContentUPP userUPP) ;
+extern OSStatus
+InvokeHMMenuItemContentUPP(
+  const MenuTrackingData * inTrackingData,
+  HMContentRequest inRequest,
+  HMContentProvidedType * outContentProvided,
+  HMHelpContentPtr ioHelpContent,
+  HMMenuItemContentUPP userUPP) ;
+extern OSStatus
+HMGetHelpMenu(
+  MenuRef * outHelpMenu,
+  MenuItemIndex * outFirstCustomItemIndex) ;
+extern OSStatus
+HMSetControlHelpContent(
+  ControlRef inControl,
+  const HMHelpContentRec * inContent) ;
+extern OSStatus
+HMGetControlHelpContent(
+  ControlRef inControl,
+  HMHelpContentRec * outContent) ;
+extern OSStatus
+HMSetWindowHelpContent(
+  WindowRef inWindow,
+  const HMHelpContentRec * inContent) ;
+extern OSStatus
+HMGetWindowHelpContent(
+  WindowRef inWindow,
+  HMHelpContentRec * outContent) ;
+extern OSStatus
+HMSetMenuItemHelpContent(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  const HMHelpContentRec * inContent) ;
+extern OSStatus
+HMGetMenuItemHelpContent(
+  MenuRef inMenu,
+  MenuItemIndex inItem,
+  HMHelpContentRec * outContent) ;
+extern OSStatus
+HMInstallControlContentCallback(
+  ControlRef inControl,
+  HMControlContentUPP inContentUPP) ;
+extern OSStatus
+HMInstallWindowContentCallback(
+  WindowRef inWindow,
+  HMWindowContentUPP inContentUPP) ;
+extern OSStatus
+HMInstallMenuTitleContentCallback(
+  MenuRef inMenu,
+  HMMenuTitleContentUPP inContentUPP) ;
+extern OSStatus
+HMInstallMenuItemContentCallback(
+  MenuRef inMenu,
+  HMMenuItemContentUPP inContentUPP) ;
+extern OSStatus
+HMGetControlContentCallback(
+  ControlRef inControl,
+  HMControlContentUPP * outContentUPP) ;
+extern OSStatus
+HMGetWindowContentCallback(
+  WindowRef inWindow,
+  HMWindowContentUPP * outContentUPP) ;
+extern OSStatus
+HMGetMenuTitleContentCallback(
+  MenuRef inMenu,
+  HMMenuTitleContentUPP * outContentUPP) ;
+extern OSStatus
+HMGetMenuItemContentCallback(
+  MenuRef inMenu,
+  HMMenuItemContentUPP * outContentUPP) ;
+extern Boolean
+HMAreHelpTagsDisplayed(void) ;
+extern OSStatus
+HMSetHelpTagsDisplayed(Boolean inDisplayTags) ;
+extern OSStatus
+HMSetTagDelay(Duration inDelay) ;
+extern OSStatus
+HMGetTagDelay(Duration * outDelay) ;
+extern OSStatus
+HMSetMenuHelpFromBalloonRsrc(
+  MenuRef inMenu,
+  SInt16 inHmnuRsrcID) ;
+extern OSStatus
+HMSetDialogHelpFromBalloonRsrc(
+  DialogRef inDialog,
+  SInt16 inHdlgRsrcID,
+  SInt16 inItemStart) ;
+extern OSStatus
+HMDisplayTag(const HMHelpContentRec * inContent) ;
+extern OSStatus
+HMHideTag(void) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  kControlTabListResType = 'tab#',
+  kControlListDescResType = 'ldes'
+};
+
+
+
+
+enum {
+  kControlCheckBoxUncheckedValue = 0,
+  kControlCheckBoxCheckedValue = 1,
+  kControlCheckBoxMixedValue = 2
+};
+
+
+
+
+enum {
+  kControlRadioButtonUncheckedValue = 0,
+  kControlRadioButtonCheckedValue = 1,
+  kControlRadioButtonMixedValue = 2
+};
+
+
+
+
+
+enum {
+  popupFixedWidth = 1 << 0,
+  popupVariableWidth = 1 << 1,
+  popupUseAddResMenu = 1 << 2,
+  popupUseWFont = 1 << 3
+};
+
+
+enum {
+  popupTitleBold = 1 << 8,
+  popupTitleItalic = 1 << 9,
+  popupTitleUnderline = 1 << 10,
+  popupTitleOutline = 1 << 11,
+  popupTitleShadow = 1 << 12,
+  popupTitleCondense = 1 << 13,
+  popupTitleExtend = 1 << 14,
+  popupTitleNoStyle = 1 << 15
+};
+
+
+enum {
+  popupTitleLeftJust = 0x00000000,
+  popupTitleCenterJust = 0x00000001,
+  popupTitleRightJust = 0x000000FF
+};
+enum {
+  pushButProc = 0,
+  checkBoxProc = 1,
+  radioButProc = 2,
+  scrollBarProc = 16,
+  popupMenuProc = 1008
+};
+
+
+
+
+enum {
+  kControlLabelPart = 1,
+  kControlMenuPart = 2,
+  kControlTrianglePart = 4,
+  kControlEditTextPart = 5,
+  kControlPicturePart = 6,
+  kControlIconPart = 7,
+  kControlClockPart = 8,
+  kControlListBoxPart = 24,
+  kControlListBoxDoubleClickPart = 25,
+  kControlImageWellPart = 26,
+  kControlRadioGroupPart = 27,
+  kControlButtonPart = 10,
+  kControlCheckBoxPart = 11,
+  kControlRadioButtonPart = 11,
+  kControlUpButtonPart = 20,
+  kControlDownButtonPart = 21,
+  kControlPageUpPart = 22,
+  kControlPageDownPart = 23,
+  kControlClockHourDayPart = 9,
+  kControlClockMinuteMonthPart = 10,
+  kControlClockSecondYearPart = 11,
+  kControlClockAMPMPart = 12,
+  kControlDataBrowserPart = 24,
+  kControlDataBrowserDraggedPart = 25
+};
+enum {
+  kControlBevelButtonSmallBevelProc = 32,
+  kControlBevelButtonNormalBevelProc = 33,
+  kControlBevelButtonLargeBevelProc = 34
+};
+
+
+enum {
+  kControlBevelButtonSmallBevelVariant = 0,
+  kControlBevelButtonNormalBevelVariant = (1 << 0),
+  kControlBevelButtonLargeBevelVariant = (1 << 1),
+  kControlBevelButtonMenuOnRightVariant = (1 << 2)
+};
+
+
+typedef UInt16 ControlBevelThickness;
+enum {
+  kControlBevelButtonSmallBevel = 0,
+  kControlBevelButtonNormalBevel = 1,
+  kControlBevelButtonLargeBevel = 2
+};
+
+
+
+enum {
+  kControlBehaviorPushbutton = 0,
+  kControlBehaviorToggles = 0x0100,
+  kControlBehaviorSticky = 0x0200,
+  kControlBehaviorSingleValueMenu = 0,
+  kControlBehaviorMultiValueMenu = 0x4000,
+  kControlBehaviorOffsetContents = 0x8000
+};
+
+
+enum {
+  kControlBehaviorCommandMenu = 0x2000
+};
+
+typedef UInt16 ControlBevelButtonBehavior;
+typedef UInt16 ControlBevelButtonMenuBehavior;
+
+typedef UInt16 ControlBevelButtonMenuPlacement;
+enum {
+  kControlBevelButtonMenuOnBottom = 0,
+  kControlBevelButtonMenuOnRight = (1 << 2)
+};
+
+
+enum {
+  kControlKindBevelButton = 'bevl'
+};
+extern OSStatus
+CreateBevelButtonControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  ControlBevelThickness thickness,
+  ControlBevelButtonBehavior behavior,
+  ControlButtonContentInfoPtr info,
+  SInt16 menuID,
+  ControlBevelButtonMenuBehavior menuBehavior,
+  ControlBevelButtonMenuPlacement menuPlacement,
+  ControlRef * outControl) ;
+
+
+
+
+
+typedef SInt16 ControlButtonGraphicAlignment;
+enum {
+  kControlBevelButtonAlignSysDirection = -1,
+  kControlBevelButtonAlignCenter = 0,
+  kControlBevelButtonAlignLeft = 1,
+  kControlBevelButtonAlignRight = 2,
+  kControlBevelButtonAlignTop = 3,
+  kControlBevelButtonAlignBottom = 4,
+  kControlBevelButtonAlignTopLeft = 5,
+  kControlBevelButtonAlignBottomLeft = 6,
+  kControlBevelButtonAlignTopRight = 7,
+  kControlBevelButtonAlignBottomRight = 8
+};
+
+
+typedef SInt16 ControlButtonTextAlignment;
+enum {
+  kControlBevelButtonAlignTextSysDirection = teFlushDefault,
+  kControlBevelButtonAlignTextCenter = teCenter,
+  kControlBevelButtonAlignTextFlushRight = teFlushRight,
+  kControlBevelButtonAlignTextFlushLeft = teFlushLeft
+};
+
+
+typedef SInt16 ControlButtonTextPlacement;
+enum {
+  kControlBevelButtonPlaceSysDirection = -1,
+  kControlBevelButtonPlaceNormally = 0,
+  kControlBevelButtonPlaceToRightOfGraphic = 1,
+  kControlBevelButtonPlaceToLeftOfGraphic = 2,
+  kControlBevelButtonPlaceBelowGraphic = 3,
+  kControlBevelButtonPlaceAboveGraphic = 4
+};
+
+
+
+enum {
+  kControlBevelButtonContentTag = 'cont',
+  kControlBevelButtonTransformTag = 'tran',
+  kControlBevelButtonTextAlignTag = 'tali',
+  kControlBevelButtonTextOffsetTag = 'toff',
+  kControlBevelButtonGraphicAlignTag = 'gali',
+  kControlBevelButtonGraphicOffsetTag = 'goff',
+  kControlBevelButtonTextPlaceTag = 'tplc',
+  kControlBevelButtonMenuValueTag = 'mval',
+  kControlBevelButtonMenuHandleTag = 'mhnd',
+  kControlBevelButtonMenuRefTag = 'mhnd',
+  kControlBevelButtonCenterPopupGlyphTag = 'pglc'
+};
+
+
+enum {
+  kControlBevelButtonLastMenuTag = 'lmnu',
+  kControlBevelButtonMenuDelayTag = 'mdly'
+};
+
+
+enum {
+
+
+
+
+
+  kControlBevelButtonScaleIconTag = 'scal'
+};
+
+
+enum {
+  kControlBevelButtonOwnedMenuRefTag = 'omrf',
+  kControlBevelButtonKindTag = 'bebk'
+};
+extern OSErr
+GetBevelButtonMenuValue(
+  ControlRef inButton,
+  SInt16 * outValue) ;
+extern OSErr
+SetBevelButtonMenuValue(
+  ControlRef inButton,
+  SInt16 inValue) ;
+extern OSErr
+GetBevelButtonMenuHandle(
+  ControlRef inButton,
+  MenuHandle * outHandle) ;
+extern OSErr
+GetBevelButtonContentInfo(
+  ControlRef inButton,
+  ControlButtonContentInfoPtr outContent) ;
+extern OSErr
+SetBevelButtonContentInfo(
+  ControlRef inButton,
+  ControlButtonContentInfoPtr inContent) ;
+extern OSErr
+SetBevelButtonTransform(
+  ControlRef inButton,
+  IconTransformType transform) ;
+extern OSErr
+SetBevelButtonGraphicAlignment(
+  ControlRef inButton,
+  ControlButtonGraphicAlignment inAlign,
+  SInt16 inHOffset,
+  SInt16 inVOffset) ;
+extern OSErr
+SetBevelButtonTextAlignment(
+  ControlRef inButton,
+  ControlButtonTextAlignment inAlign,
+  SInt16 inHOffset) ;
+extern OSErr
+SetBevelButtonTextPlacement(
+  ControlRef inButton,
+  ControlButtonTextPlacement inWhere) ;
+enum {
+  kControlSliderProc = 48,
+  kControlSliderLiveFeedback = (1 << 0),
+  kControlSliderHasTickMarks = (1 << 1),
+  kControlSliderReverseDirection = (1 << 2),
+  kControlSliderNonDirectional = (1 << 3)
+};
+
+
+typedef UInt16 ControlSliderOrientation;
+enum {
+  kControlSliderPointsDownOrRight = 0,
+  kControlSliderPointsUpOrLeft = 1,
+  kControlSliderDoesNotPoint = 2
+};
+
+
+enum {
+  kControlKindSlider = 'sldr'
+};
+extern OSStatus
+CreateSliderControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt32 value,
+  SInt32 minimum,
+  SInt32 maximum,
+  ControlSliderOrientation orientation,
+  UInt16 numTickMarks,
+  Boolean liveTracking,
+  ControlActionUPP liveTrackingProc,
+  ControlRef * outControl) ;
+enum {
+  kControlTriangleProc = 64,
+  kControlTriangleLeftFacingProc = 65,
+  kControlTriangleAutoToggleProc = 66,
+  kControlTriangleLeftFacingAutoToggleProc = 67
+};
+
+typedef UInt16 ControlDisclosureTriangleOrientation;
+enum {
+  kControlDisclosureTrianglePointDefault = 0,
+  kControlDisclosureTrianglePointRight = 1,
+  kControlDisclosureTrianglePointLeft = 2
+};
+
+
+enum {
+  kControlKindDisclosureTriangle = 'dist'
+};
+extern OSStatus
+CreateDisclosureTriangleControl(
+  WindowRef inWindow,
+  const Rect * inBoundsRect,
+  ControlDisclosureTriangleOrientation inOrientation,
+  CFStringRef inTitle,
+  SInt32 inInitialValue,
+  Boolean inDrawTitle,
+  Boolean inAutoToggles,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlTriangleLastValueTag = 'last'
+};
+extern OSErr
+SetDisclosureTriangleLastValue(
+  ControlRef inTabControl,
+  SInt16 inValue) ;
+enum {
+  kControlProgressBarProc = 80,
+  kControlRelevanceBarProc = 81
+};
+
+
+enum {
+  kControlKindProgressBar = 'prgb',
+  kControlKindRelevanceBar = 'relb'
+};
+extern OSStatus
+CreateProgressBarControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt32 value,
+  SInt32 minimum,
+  SInt32 maximum,
+  Boolean indeterminate,
+  ControlRef * outControl) ;
+extern OSStatus
+CreateRelevanceBarControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt32 value,
+  SInt32 minimum,
+  SInt32 maximum,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlProgressBarIndeterminateTag = 'inde',
+  kControlProgressBarAnimatingTag = 'anim'
+};
+
+
+
+
+
+
+
+enum {
+  kControlLittleArrowsProc = 96
+};
+
+
+enum {
+  kControlKindLittleArrows = 'larr'
+};
+extern OSStatus
+CreateLittleArrowsControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt32 value,
+  SInt32 minimum,
+  SInt32 maximum,
+  SInt32 increment,
+  ControlRef * outControl) ;
+enum {
+  kControlChasingArrowsProc = 112
+};
+
+
+enum {
+  kControlKindChasingArrows = 'carr'
+};
+extern OSStatus
+CreateChasingArrowsControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlChasingArrowsAnimatingTag = 'anim'
+};
+enum {
+  kControlTabLargeProc = 128,
+  kControlTabSmallProc = 129,
+  kControlTabLargeNorthProc = 128,
+  kControlTabSmallNorthProc = 129,
+  kControlTabLargeSouthProc = 130,
+  kControlTabSmallSouthProc = 131,
+  kControlTabLargeEastProc = 132,
+  kControlTabSmallEastProc = 133,
+  kControlTabLargeWestProc = 134,
+  kControlTabSmallWestProc = 135
+};
+
+
+typedef UInt16 ControlTabDirection;
+enum {
+  kControlTabDirectionNorth = 0,
+  kControlTabDirectionSouth = 1,
+  kControlTabDirectionEast = 2,
+  kControlTabDirectionWest = 3
+};
+
+
+typedef UInt16 ControlTabSize;
+enum {
+  kControlTabSizeLarge = kControlSizeNormal,
+  kControlTabSizeSmall = kControlSizeSmall
+};
+
+
+
+
+
+struct ControlTabEntry {
+  ControlButtonContentInfo * icon;
+  CFStringRef name;
+  Boolean enabled;
+};
+typedef struct ControlTabEntry ControlTabEntry;
+
+enum {
+  kControlKindTabs = 'tabs'
+};
+extern OSStatus
+CreateTabsControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlTabSize size,
+  ControlTabDirection direction,
+  UInt16 numTabs,
+  const ControlTabEntry * tabArray,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlTabContentRectTag = 'rect',
+  kControlTabEnabledFlagTag = 'enab',
+  kControlTabFontStyleTag = kControlFontStyleTag
+};
+
+
+enum {
+  kControlTabInfoTag = 'tabi'
+};
+
+
+enum {
+  kControlTabImageContentTag = 'cont'
+};
+
+enum {
+  kControlTabInfoVersionZero = 0,
+  kControlTabInfoVersionOne = 1
+};
+
+struct ControlTabInfoRec {
+  SInt16 version;
+  SInt16 iconSuiteID;
+  Str255 name;
+};
+typedef struct ControlTabInfoRec ControlTabInfoRec;
+struct ControlTabInfoRecV1 {
+  SInt16 version;
+  SInt16 iconSuiteID;
+  CFStringRef name;
+
+};
+typedef struct ControlTabInfoRecV1 ControlTabInfoRecV1;
+extern OSErr
+GetTabContentRect(
+  ControlRef inTabControl,
+  Rect * outContentRect) ;
+extern OSErr
+SetTabEnabled(
+  ControlRef inTabControl,
+  SInt16 inTabToHilite,
+  Boolean inEnabled) ;
+enum {
+  kControlSeparatorLineProc = 144
+};
+
+
+enum {
+  kControlKindSeparator = 'sepa'
+};
+extern OSStatus
+CreateSeparatorControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlRef * outControl) ;
+enum {
+  kControlGroupBoxTextTitleProc = 160,
+  kControlGroupBoxCheckBoxProc = 161,
+  kControlGroupBoxPopupButtonProc = 162,
+  kControlGroupBoxSecondaryTextTitleProc = 164,
+  kControlGroupBoxSecondaryCheckBoxProc = 165,
+  kControlGroupBoxSecondaryPopupButtonProc = 166
+};
+
+
+enum {
+  kControlKindGroupBox = 'grpb',
+  kControlKindCheckGroupBox = 'cgrp',
+  kControlKindPopupGroupBox = 'pgrp'
+};
+extern OSStatus
+CreateGroupBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  Boolean primary,
+  ControlRef * outControl) ;
+extern OSStatus
+CreateCheckGroupBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  SInt32 initialValue,
+  Boolean primary,
+  Boolean autoToggle,
+  ControlRef * outControl) ;
+extern OSStatus
+CreatePopupGroupBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  Boolean primary,
+  SInt16 menuID,
+  Boolean variableWidth,
+  SInt16 titleWidth,
+  SInt16 titleJustification,
+  Style titleStyle,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlGroupBoxMenuHandleTag = 'mhan',
+  kControlGroupBoxMenuRefTag = 'mhan',
+  kControlGroupBoxFontStyleTag = kControlFontStyleTag
+};
+
+
+enum {
+  kControlGroupBoxTitleRectTag = 'trec'
+};
+enum {
+  kControlImageWellProc = 176
+};
+
+
+enum {
+  kControlKindImageWell = 'well'
+};
+extern OSStatus
+CreateImageWellControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  const ControlButtonContentInfo * info,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlImageWellContentTag = 'cont',
+  kControlImageWellTransformTag = 'tran',
+  kControlImageWellIsDragDestinationTag = 'drag'
+};
+extern OSErr
+GetImageWellContentInfo(
+  ControlRef inButton,
+  ControlButtonContentInfoPtr outContent) ;
+extern OSErr
+SetImageWellContentInfo(
+  ControlRef inButton,
+  ControlButtonContentInfoPtr inContent) ;
+extern OSErr
+SetImageWellTransform(
+  ControlRef inButton,
+  IconTransformType inTransform) ;
+enum {
+  kControlPopupArrowEastProc = 192,
+  kControlPopupArrowWestProc = 193,
+  kControlPopupArrowNorthProc = 194,
+  kControlPopupArrowSouthProc = 195,
+  kControlPopupArrowSmallEastProc = 196,
+  kControlPopupArrowSmallWestProc = 197,
+  kControlPopupArrowSmallNorthProc = 198,
+  kControlPopupArrowSmallSouthProc = 199
+};
+
+
+enum {
+  kControlPopupArrowOrientationEast = 0,
+  kControlPopupArrowOrientationWest = 1,
+  kControlPopupArrowOrientationNorth = 2,
+  kControlPopupArrowOrientationSouth = 3
+};
+
+
+typedef UInt16 ControlPopupArrowOrientation;
+
+enum {
+  kControlPopupArrowSizeNormal = 0,
+  kControlPopupArrowSizeSmall = 1
+};
+
+typedef UInt16 ControlPopupArrowSize;
+
+enum {
+  kControlKindPopupArrow = 'parr'
+};
+extern OSStatus
+CreatePopupArrowControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlPopupArrowOrientation orientation,
+  ControlPopupArrowSize size,
+  ControlRef * outControl) ;
+
+
+
+
+
+
+enum {
+  kControlPlacardProc = 224
+};
+
+
+enum {
+  kControlKindPlacard = 'plac'
+};
+extern OSStatus
+CreatePlacardControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlRef * outControl) ;
+enum {
+  kControlClockTimeProc = 240,
+  kControlClockTimeSecondsProc = 241,
+  kControlClockDateProc = 242,
+  kControlClockMonthYearProc = 243
+};
+
+
+typedef UInt16 ControlClockType;
+enum {
+  kControlClockTypeHourMinute = 0,
+  kControlClockTypeHourMinuteSecond = 1,
+  kControlClockTypeMonthDayYear = 2,
+  kControlClockTypeMonthYear = 3
+};
+
+
+
+
+typedef UInt32 ControlClockFlags;
+enum {
+  kControlClockFlagStandard = 0,
+  kControlClockNoFlags = 0,
+  kControlClockFlagDisplayOnly = 1,
+  kControlClockIsDisplayOnly = 1,
+  kControlClockFlagLive = 2,
+  kControlClockIsLive = 2
+};
+
+
+enum {
+  kControlKindClock = 'clck'
+};
+extern OSStatus
+CreateClockControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlClockType clockType,
+  ControlClockFlags clockFlags,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlClockLongDateTag = 'date',
+  kControlClockFontStyleTag = kControlFontStyleTag,
+  kControlClockAnimatingTag = 'anim'
+};
+enum {
+  kControlUserPaneProc = 256
+};
+
+
+enum {
+  kControlKindUserPane = 'upan'
+};
+extern OSStatus
+CreateUserPaneControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  UInt32 features,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlUserItemDrawProcTag = 'uidp',
+  kControlUserPaneDrawProcTag = 'draw',
+  kControlUserPaneHitTestProcTag = 'hitt',
+  kControlUserPaneTrackingProcTag = 'trak',
+  kControlUserPaneIdleProcTag = 'idle',
+  kControlUserPaneKeyDownProcTag = 'keyd',
+  kControlUserPaneActivateProcTag = 'acti',
+  kControlUserPaneFocusProcTag = 'foci',
+  kControlUserPaneBackgroundProcTag = 'back'
+};
+
+typedef void ( * ControlUserPaneDrawProcPtr)(ControlRef control, SInt16 part);
+typedef ControlPartCode ( * ControlUserPaneHitTestProcPtr)(ControlRef control, Point where);
+typedef ControlPartCode ( * ControlUserPaneTrackingProcPtr)(ControlRef control, Point startPt, ControlActionUPP actionProc);
+typedef void ( * ControlUserPaneIdleProcPtr)(ControlRef control);
+typedef ControlPartCode ( * ControlUserPaneKeyDownProcPtr)(ControlRef control, SInt16 keyCode, SInt16 charCode, SInt16 modifiers);
+typedef void ( * ControlUserPaneActivateProcPtr)(ControlRef control, Boolean activating);
+typedef ControlPartCode ( * ControlUserPaneFocusProcPtr)(ControlRef control, ControlFocusPart action);
+typedef void ( * ControlUserPaneBackgroundProcPtr)(ControlRef control, ControlBackgroundPtr info);
+typedef ControlUserPaneDrawProcPtr ControlUserPaneDrawUPP;
+typedef ControlUserPaneHitTestProcPtr ControlUserPaneHitTestUPP;
+typedef ControlUserPaneTrackingProcPtr ControlUserPaneTrackingUPP;
+typedef ControlUserPaneIdleProcPtr ControlUserPaneIdleUPP;
+typedef ControlUserPaneKeyDownProcPtr ControlUserPaneKeyDownUPP;
+typedef ControlUserPaneActivateProcPtr ControlUserPaneActivateUPP;
+typedef ControlUserPaneFocusProcPtr ControlUserPaneFocusUPP;
+typedef ControlUserPaneBackgroundProcPtr ControlUserPaneBackgroundUPP;
+extern ControlUserPaneDrawUPP
+NewControlUserPaneDrawUPP(ControlUserPaneDrawProcPtr userRoutine) ;
+extern ControlUserPaneHitTestUPP
+NewControlUserPaneHitTestUPP(ControlUserPaneHitTestProcPtr userRoutine) ;
+extern ControlUserPaneTrackingUPP
+NewControlUserPaneTrackingUPP(ControlUserPaneTrackingProcPtr userRoutine) ;
+extern ControlUserPaneIdleUPP
+NewControlUserPaneIdleUPP(ControlUserPaneIdleProcPtr userRoutine) ;
+extern ControlUserPaneKeyDownUPP
+NewControlUserPaneKeyDownUPP(ControlUserPaneKeyDownProcPtr userRoutine) ;
+extern ControlUserPaneActivateUPP
+NewControlUserPaneActivateUPP(ControlUserPaneActivateProcPtr userRoutine) ;
+extern ControlUserPaneFocusUPP
+NewControlUserPaneFocusUPP(ControlUserPaneFocusProcPtr userRoutine) ;
+extern ControlUserPaneBackgroundUPP
+NewControlUserPaneBackgroundUPP(ControlUserPaneBackgroundProcPtr userRoutine) ;
+extern void
+DisposeControlUserPaneDrawUPP(ControlUserPaneDrawUPP userUPP) ;
+extern void
+DisposeControlUserPaneHitTestUPP(ControlUserPaneHitTestUPP userUPP) ;
+extern void
+DisposeControlUserPaneTrackingUPP(ControlUserPaneTrackingUPP userUPP) ;
+extern void
+DisposeControlUserPaneIdleUPP(ControlUserPaneIdleUPP userUPP) ;
+extern void
+DisposeControlUserPaneKeyDownUPP(ControlUserPaneKeyDownUPP userUPP) ;
+extern void
+DisposeControlUserPaneActivateUPP(ControlUserPaneActivateUPP userUPP) ;
+extern void
+DisposeControlUserPaneFocusUPP(ControlUserPaneFocusUPP userUPP) ;
+extern void
+DisposeControlUserPaneBackgroundUPP(ControlUserPaneBackgroundUPP userUPP) ;
+extern void
+InvokeControlUserPaneDrawUPP(
+  ControlRef control,
+  SInt16 part,
+  ControlUserPaneDrawUPP userUPP) ;
+extern ControlPartCode
+InvokeControlUserPaneHitTestUPP(
+  ControlRef control,
+  Point where,
+  ControlUserPaneHitTestUPP userUPP) ;
+extern ControlPartCode
+InvokeControlUserPaneTrackingUPP(
+  ControlRef control,
+  Point startPt,
+  ControlActionUPP actionProc,
+  ControlUserPaneTrackingUPP userUPP) ;
+extern void
+InvokeControlUserPaneIdleUPP(
+  ControlRef control,
+  ControlUserPaneIdleUPP userUPP) ;
+extern ControlPartCode
+InvokeControlUserPaneKeyDownUPP(
+  ControlRef control,
+  SInt16 keyCode,
+  SInt16 charCode,
+  SInt16 modifiers,
+  ControlUserPaneKeyDownUPP userUPP) ;
+extern void
+InvokeControlUserPaneActivateUPP(
+  ControlRef control,
+  Boolean activating,
+  ControlUserPaneActivateUPP userUPP) ;
+extern ControlPartCode
+InvokeControlUserPaneFocusUPP(
+  ControlRef control,
+  ControlFocusPart action,
+  ControlUserPaneFocusUPP userUPP) ;
+extern void
+InvokeControlUserPaneBackgroundUPP(
+  ControlRef control,
+  ControlBackgroundPtr info,
+  ControlUserPaneBackgroundUPP userUPP) ;
+
+
+
+
+
+
+
+enum {
+  kControlEditTextProc = 272,
+  kControlEditTextPasswordProc = 274
+};
+
+
+enum {
+  kControlEditTextInlineInputProc = 276
+};
+
+
+enum {
+  kControlKindEditText = 'etxt'
+};
+extern OSStatus
+CreateEditTextControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef text,
+  Boolean isPassword,
+  Boolean useInlineInput,
+  const ControlFontStyleRec * style,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlEditTextStyleTag = kControlFontStyleTag,
+  kControlEditTextTextTag = 'text',
+  kControlEditTextTEHandleTag = 'than',
+  kControlEditTextKeyFilterTag = kControlKeyFilterTag,
+  kControlEditTextSelectionTag = 'sele',
+  kControlEditTextPasswordTag = 'pass'
+};
+
+
+enum {
+  kControlEditTextKeyScriptBehaviorTag = 'kscr',
+
+  kControlEditTextLockedTag = 'lock',
+  kControlEditTextFixedTextTag = 'ftxt',
+  kControlEditTextValidationProcTag = 'vali',
+  kControlEditTextInlinePreUpdateProcTag = 'prup',
+  kControlEditTextInlinePostUpdateProcTag = 'poup'
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kControlEditTextCFStringTag = 'cfst',
+
+
+
+
+
+
+  kControlEditTextPasswordCFStringTag = 'pwcf'
+};
+
+
+
+
+
+struct ControlEditTextSelectionRec {
+  SInt16 selStart;
+  SInt16 selEnd;
+};
+typedef struct ControlEditTextSelectionRec ControlEditTextSelectionRec;
+typedef ControlEditTextSelectionRec * ControlEditTextSelectionPtr;
+typedef void ( * ControlEditTextValidationProcPtr)(ControlRef control);
+typedef ControlEditTextValidationProcPtr ControlEditTextValidationUPP;
+extern ControlEditTextValidationUPP
+NewControlEditTextValidationUPP(ControlEditTextValidationProcPtr userRoutine) ;
+extern void
+DisposeControlEditTextValidationUPP(ControlEditTextValidationUPP userUPP) ;
+extern void
+InvokeControlEditTextValidationUPP(
+  ControlRef control,
+  ControlEditTextValidationUPP userUPP) ;
+
+
+
+
+
+enum {
+  kControlStaticTextProc = 288
+};
+
+
+enum {
+  kControlKindStaticText = 'stxt'
+};
+extern OSStatus
+CreateStaticTextControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef text,
+  const ControlFontStyleRec * style,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlStaticTextStyleTag = kControlFontStyleTag,
+  kControlStaticTextTextTag = 'text',
+  kControlStaticTextTextHeightTag = 'thei'
+};
+
+
+enum {
+  kControlStaticTextTruncTag = 'trun'
+};
+
+
+enum {
+  kControlStaticTextCFStringTag = 'cfst'
+};
+enum {
+  kControlPictureProc = 304,
+  kControlPictureNoTrackProc = 305
+};
+
+
+enum {
+  kControlKindPicture = 'pict'
+};
+extern OSStatus
+CreatePictureControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  const ControlButtonContentInfo * content,
+  Boolean dontTrack,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlPictureHandleTag = 'pich'
+};
+enum {
+  kControlIconProc = 320,
+  kControlIconNoTrackProc = 321,
+  kControlIconSuiteProc = 322,
+  kControlIconSuiteNoTrackProc = 323
+};
+
+enum {
+
+
+
+  kControlIconRefProc = 324,
+  kControlIconRefNoTrackProc = 325
+};
+
+
+enum {
+  kControlKindIcon = 'icon'
+};
+extern OSStatus
+CreateIconControl(
+  WindowRef inWindow,
+  const Rect * inBoundsRect,
+  const ControlButtonContentInfo * inIconContent,
+  Boolean inDontTrack,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlIconTransformTag = 'trfm',
+  kControlIconAlignmentTag = 'algn'
+};
+
+
+enum {
+  kControlIconResourceIDTag = 'ires',
+  kControlIconContentTag = 'cont'
+};
+
+
+
+
+
+enum {
+  kControlWindowHeaderProc = 336,
+  kControlWindowListViewHeaderProc = 337
+};
+
+
+enum {
+  kControlKindWindowHeader = 'whed'
+};
+extern OSStatus
+CreateWindowHeaderControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  Boolean isListHeader,
+  ControlRef * outControl) ;
+enum {
+  kControlListBoxProc = 352,
+  kControlListBoxAutoSizeProc = 353
+};
+
+
+enum {
+  kControlKindListBox = 'lbox'
+};
+extern OSStatus
+CreateListBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  Boolean autoSize,
+  SInt16 numRows,
+  SInt16 numColumns,
+  Boolean horizScroll,
+  Boolean vertScroll,
+  SInt16 cellHeight,
+  SInt16 cellWidth,
+  Boolean hasGrowSpace,
+  const ListDefSpec * listDef,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlListBoxListHandleTag = 'lhan',
+  kControlListBoxKeyFilterTag = kControlKeyFilterTag,
+  kControlListBoxFontStyleTag = kControlFontStyleTag
+};
+
+
+enum {
+  kControlListBoxDoubleClickTag = 'dblc',
+  kControlListBoxLDEFTag = 'ldef'
+};
+enum {
+  kControlPushButtonProc = 368,
+  kControlCheckBoxProc = 369,
+  kControlRadioButtonProc = 370,
+  kControlPushButLeftIconProc = 374,
+  kControlPushButRightIconProc = 375
+};
+
+
+enum {
+  kControlCheckBoxAutoToggleProc = 371,
+  kControlRadioButtonAutoToggleProc = 372
+};
+
+
+typedef UInt16 ControlPushButtonIconAlignment;
+enum {
+  kControlPushButtonIconOnLeft = 6,
+  kControlPushButtonIconOnRight = 7
+};
+
+
+enum {
+  kControlKindPushButton = 'push',
+  kControlKindPushIconButton = 'picn',
+  kControlKindRadioButton = 'rdio',
+  kControlKindCheckBox = 'cbox'
+};
+extern OSStatus
+CreatePushButtonControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  ControlRef * outControl) ;
+extern OSStatus
+CreatePushButtonWithIconControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  ControlButtonContentInfo * icon,
+  ControlPushButtonIconAlignment iconAlignment,
+  ControlRef * outControl) ;
+extern OSStatus
+CreateRadioButtonControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  SInt32 initialValue,
+  Boolean autoToggle,
+  ControlRef * outControl) ;
+extern OSStatus
+CreateCheckBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  SInt32 initialValue,
+  Boolean autoToggle,
+  ControlRef * outControl) ;
+
+
+
+
+
+enum {
+  kControlPushButtonDefaultTag = 'dflt',
+  kControlPushButtonCancelTag = 'cncl'
+};
+
+
+
+
+
+
+
+enum {
+  kControlScrollBarProc = 384,
+  kControlScrollBarLiveProc = 386
+};
+
+
+enum {
+  kControlKindScrollBar = 'sbar'
+};
+extern OSStatus
+CreateScrollBarControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt32 value,
+  SInt32 minimum,
+  SInt32 maximum,
+  SInt32 viewSize,
+  Boolean liveTracking,
+  ControlActionUPP liveTrackingProc,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlScrollBarShowsArrowsTag = 'arro'
+};
+enum {
+  kControlPopupButtonProc = 400,
+  kControlPopupFixedWidthVariant = 1 << 0,
+  kControlPopupVariableWidthVariant = 1 << 1,
+  kControlPopupUseAddResMenuVariant = 1 << 2,
+  kControlPopupUseWFontVariant = kControlUsesOwningWindowsFontVariant
+};
+
+
+enum {
+  kControlKindPopupButton = 'popb'
+};
+extern OSStatus
+CreatePopupButtonControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef title,
+  SInt16 menuID,
+  Boolean variableWidth,
+  SInt16 titleWidth,
+  SInt16 titleJustification,
+  Style titleStyle,
+  ControlRef * outControl) ;
+
+
+
+
+
+enum {
+  kControlPopupButtonMenuHandleTag = 'mhan',
+  kControlPopupButtonMenuRefTag = 'mhan',
+  kControlPopupButtonMenuIDTag = 'mnid'
+};
+
+
+enum {
+  kControlPopupButtonExtraHeightTag = 'exht',
+  kControlPopupButtonOwnedMenuRefTag = 'omrf'
+};
+
+
+enum {
+  kControlPopupButtonCheckCurrentTag = 'chck'
+};
+enum {
+  kControlRadioGroupProc = 416
+};
+
+
+enum {
+  kControlKindRadioGroup = 'rgrp'
+};
+extern OSStatus
+CreateRadioGroupControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  ControlRef * outControl) ;
+enum {
+  kControlScrollTextBoxProc = 432,
+  kControlScrollTextBoxAutoScrollProc = 433
+};
+
+
+enum {
+  kControlKindScrollingTextBox = 'stbx'
+};
+extern OSStatus
+CreateScrollingTextBoxControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  SInt16 contentResID,
+  Boolean autoScroll,
+  UInt32 delayBeforeAutoScroll,
+  UInt32 delayBetweenAutoScroll,
+  UInt16 autoScrollAmount,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlScrollTextBoxDelayBeforeAutoScrollTag = 'stdl',
+  kControlScrollTextBoxDelayBetweenAutoScrollTag = 'scdl',
+  kControlScrollTextBoxAutoScrollAmountTag = 'samt',
+  kControlScrollTextBoxContentsTag = 'tres',
+  kControlScrollTextBoxAnimatingTag = 'anim'
+};
+extern OSStatus
+CreateDisclosureButtonControl(
+  WindowRef inWindow,
+  const Rect * inBoundsRect,
+  SInt32 inValue,
+  Boolean inAutoToggles,
+  ControlRef * outControl) ;
+
+
+
+
+enum {
+  kControlKindDisclosureButton = 'disb'
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+  kControlDisclosureButtonClosed = 0,
+
+
+
+
+  kControlDisclosureButtonDisclosed = 1
+};
+typedef SInt16 ControlRoundButtonSize;
+enum {
+
+
+
+
+  kControlRoundButtonNormalSize = kControlSizeNormal,
+
+
+
+
+  kControlRoundButtonLargeSize = kControlSizeLarge
+};
+
+
+enum {
+  kControlRoundButtonContentTag = 'cont',
+  kControlRoundButtonSizeTag = kControlSizeTag
+};
+
+
+enum {
+  kControlKindRoundButton = 'rndb'
+};
+extern OSStatus
+CreateRoundButtonControl(
+  WindowRef inWindow,
+  const Rect * inBoundsRect,
+  ControlRoundButtonSize inSize,
+  ControlButtonContentInfo * inContent,
+  ControlRef * outControl) ;
+enum {
+  kControlKindDataBrowser = 'datb'
+};
+
+
+enum {
+  errDataBrowserNotConfigured = -4970,
+  errDataBrowserItemNotFound = -4971,
+  errDataBrowserItemNotAdded = -4975,
+  errDataBrowserPropertyNotFound = -4972,
+  errDataBrowserInvalidPropertyPart = -4973,
+  errDataBrowserInvalidPropertyData = -4974,
+  errDataBrowserPropertyNotSupported = -4979
+};
+
+enum {
+
+  kControlDataBrowserIncludesFrameAndFocusTag = 'brdr',
+  kControlDataBrowserKeyFilterTag = kControlEditTextKeyFilterTag,
+  kControlDataBrowserEditTextKeyFilterTag = kControlDataBrowserKeyFilterTag,
+  kControlDataBrowserEditTextValidationProcTag = kControlEditTextValidationProcTag
+};
+
+
+typedef OSType DataBrowserViewStyle;
+enum {
+  kDataBrowserNoView = 0x3F3F3F3F,
+  kDataBrowserListView = 'lstv',
+  kDataBrowserColumnView = 'clmv'
+};
+
+
+typedef UInt32 DataBrowserSelectionFlags;
+enum {
+  kDataBrowserDragSelect = 1 << 0,
+  kDataBrowserSelectOnlyOne = 1 << 1,
+  kDataBrowserResetSelection = 1 << 2,
+  kDataBrowserCmdTogglesSelection = 1 << 3,
+  kDataBrowserNoDisjointSelection = 1 << 4,
+  kDataBrowserAlwaysExtendSelection = 1 << 5,
+  kDataBrowserNeverEmptySelectionSet = 1 << 6
+};
+
+
+typedef UInt16 DataBrowserSortOrder;
+enum {
+  kDataBrowserOrderUndefined = 0,
+  kDataBrowserOrderIncreasing = 1,
+  kDataBrowserOrderDecreasing = 2
+};
+
+
+typedef UInt32 DataBrowserItemID;
+enum {
+  kDataBrowserNoItem = 0L
+};
+
+typedef UInt32 DataBrowserItemState;
+enum {
+  kDataBrowserItemNoState = 0,
+  kDataBrowserItemAnyState = (unsigned long)(-1),
+  kDataBrowserItemIsSelected = 1 << 0,
+  kDataBrowserContainerIsOpen = 1 << 1,
+  kDataBrowserItemIsDragTarget = 1 << 2
+};
+
+
+typedef UInt8 DataBrowserRevealOptions;
+enum {
+  kDataBrowserRevealOnly = 0,
+  kDataBrowserRevealAndCenterInView = 1 << 0,
+  kDataBrowserRevealWithoutSelecting = 1 << 1
+};
+
+
+typedef UInt32 DataBrowserSetOption;
+enum {
+  kDataBrowserItemsAdd = 0,
+  kDataBrowserItemsAssign = 1,
+  kDataBrowserItemsToggle = 2,
+  kDataBrowserItemsRemove = 3
+};
+
+
+typedef UInt32 DataBrowserSelectionAnchorDirection;
+enum {
+  kDataBrowserSelectionAnchorUp = 0,
+  kDataBrowserSelectionAnchorDown = 1,
+  kDataBrowserSelectionAnchorLeft = 2,
+  kDataBrowserSelectionAnchorRight = 3
+};
+
+
+typedef UInt32 DataBrowserEditCommand;
+enum {
+  kDataBrowserEditMsgUndo = kHICommandUndo,
+  kDataBrowserEditMsgRedo = kHICommandRedo,
+  kDataBrowserEditMsgCut = kHICommandCut,
+  kDataBrowserEditMsgCopy = kHICommandCopy,
+  kDataBrowserEditMsgPaste = kHICommandPaste,
+  kDataBrowserEditMsgClear = kHICommandClear,
+  kDataBrowserEditMsgSelectAll = kHICommandSelectAll
+};
+
+
+typedef UInt32 DataBrowserItemNotification;
+enum {
+  kDataBrowserItemAdded = 1,
+  kDataBrowserItemRemoved = 2,
+  kDataBrowserEditStarted = 3,
+  kDataBrowserEditStopped = 4,
+  kDataBrowserItemSelected = 5,
+  kDataBrowserItemDeselected = 6,
+  kDataBrowserItemDoubleClicked = 7,
+  kDataBrowserContainerOpened = 8,
+  kDataBrowserContainerClosing = 9,
+  kDataBrowserContainerClosed = 10,
+  kDataBrowserContainerSorting = 11,
+  kDataBrowserContainerSorted = 12,
+  kDataBrowserUserToggledContainer = 16,
+  kDataBrowserTargetChanged = 15,
+  kDataBrowserUserStateChanged = 13,
+  kDataBrowserSelectionSetChanged = 14
+};
+
+
+
+typedef UInt32 DataBrowserPropertyID;
+enum {
+
+  kDataBrowserItemNoProperty = 0L,
+  kDataBrowserItemIsActiveProperty = 1L,
+  kDataBrowserItemIsSelectableProperty = 2L,
+  kDataBrowserItemIsEditableProperty = 3L,
+  kDataBrowserItemIsContainerProperty = 4L,
+  kDataBrowserContainerIsOpenableProperty = 5L,
+  kDataBrowserContainerIsClosableProperty = 6L,
+  kDataBrowserContainerIsSortableProperty = 7L,
+  kDataBrowserItemSelfIdentityProperty = 8L,
+  kDataBrowserContainerAliasIDProperty = 9L,
+  kDataBrowserColumnViewPreviewProperty = 10L,
+  kDataBrowserItemParentContainerProperty = 11L
+};
+
+
+
+
+typedef OSType DataBrowserPropertyType;
+enum {
+
+  kDataBrowserCustomType = 0x3F3F3F3F,
+  kDataBrowserIconType = 'icnr',
+  kDataBrowserTextType = 'text',
+  kDataBrowserDateTimeType = 'date',
+  kDataBrowserSliderType = 'sldr',
+  kDataBrowserCheckboxType = 'chbx',
+  kDataBrowserProgressBarType = 'prog',
+  kDataBrowserRelevanceRankType = 'rank',
+  kDataBrowserPopupMenuType = 'menu',
+  kDataBrowserIconAndTextType = 'ticn'
+};
+
+
+
+
+typedef OSType DataBrowserPropertyPart;
+enum {
+  kDataBrowserPropertyEnclosingPart = 0L,
+  kDataBrowserPropertyContentPart = '----',
+  kDataBrowserPropertyDisclosurePart = 'disc',
+  kDataBrowserPropertyTextPart = kDataBrowserTextType,
+  kDataBrowserPropertyIconPart = kDataBrowserIconType,
+  kDataBrowserPropertySliderPart = kDataBrowserSliderType,
+  kDataBrowserPropertyCheckboxPart = kDataBrowserCheckboxType,
+  kDataBrowserPropertyProgressBarPart = kDataBrowserProgressBarType,
+  kDataBrowserPropertyRelevanceRankPart = kDataBrowserRelevanceRankType
+};
+
+
+typedef unsigned long DataBrowserPropertyFlags;
+
+enum {
+  kDataBrowserUniversalPropertyFlagsMask = 0xFF,
+  kDataBrowserPropertyIsMutable = 1 << 0,
+  kDataBrowserDefaultPropertyFlags = 0 << 0,
+  kDataBrowserUniversalPropertyFlags = kDataBrowserUniversalPropertyFlagsMask,
+  kDataBrowserPropertyIsEditable = kDataBrowserPropertyIsMutable
+};
+
+
+enum {
+  kDataBrowserPropertyFlagsOffset = 8,
+  kDataBrowserPropertyFlagsMask = 0xFF << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserCheckboxTriState = 1 << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserDateTimeRelative = 1 << (kDataBrowserPropertyFlagsOffset),
+  kDataBrowserDateTimeDateOnly = 1 << (kDataBrowserPropertyFlagsOffset + 1),
+  kDataBrowserDateTimeTimeOnly = 1 << (kDataBrowserPropertyFlagsOffset + 2),
+  kDataBrowserDateTimeSecondsToo = 1 << (kDataBrowserPropertyFlagsOffset + 3),
+  kDataBrowserSliderPlainThumb = kThemeThumbPlain << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserSliderUpwardThumb = kThemeThumbUpward << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserSliderDownwardThumb = kThemeThumbDownward << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserDoNotTruncateText = 3 << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserTruncateTextAtEnd = 2 << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserTruncateTextMiddle = 0 << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserTruncateTextAtStart = 1 << kDataBrowserPropertyFlagsOffset,
+  kDataBrowserPropertyModificationFlags = kDataBrowserPropertyFlagsMask,
+  kDataBrowserRelativeDateTime = kDataBrowserDateTimeRelative
+};
+
+
+
+
+
+enum {
+  kDataBrowserViewSpecificFlagsOffset = 16,
+  kDataBrowserViewSpecificFlagsMask = 0xFF << kDataBrowserViewSpecificFlagsOffset,
+  kDataBrowserViewSpecificPropertyFlags = kDataBrowserViewSpecificFlagsMask
+};
+
+
+enum {
+  kDataBrowserClientPropertyFlagsOffset = 24,
+  kDataBrowserClientPropertyFlagsMask = (unsigned long)(0xFF << kDataBrowserClientPropertyFlagsOffset)
+};
+
+
+struct DataBrowserPropertyDesc {
+  DataBrowserPropertyID propertyID;
+  DataBrowserPropertyType propertyType;
+  DataBrowserPropertyFlags propertyFlags;
+};
+typedef struct DataBrowserPropertyDesc DataBrowserPropertyDesc;
+
+typedef void ( * DataBrowserItemProcPtr)(DataBrowserItemID item, DataBrowserItemState state, void *clientData);
+typedef DataBrowserItemProcPtr DataBrowserItemUPP;
+extern DataBrowserItemUPP
+NewDataBrowserItemUPP(DataBrowserItemProcPtr userRoutine) ;
+extern void
+DisposeDataBrowserItemUPP(DataBrowserItemUPP userUPP) ;
+extern void
+InvokeDataBrowserItemUPP(
+  DataBrowserItemID item,
+  DataBrowserItemState state,
+  void * clientData,
+  DataBrowserItemUPP userUPP) ;
+extern OSStatus
+CreateDataBrowserControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  DataBrowserViewStyle style,
+  ControlRef * outControl) ;
+extern OSStatus
+GetDataBrowserViewStyle(
+  ControlRef browser,
+  DataBrowserViewStyle * style) ;
+extern OSStatus
+SetDataBrowserViewStyle(
+  ControlRef browser,
+  DataBrowserViewStyle style) ;
+extern OSStatus
+AddDataBrowserItems(
+  ControlRef browser,
+  DataBrowserItemID container,
+  UInt32 numItems,
+  const DataBrowserItemID * items,
+  DataBrowserPropertyID preSortProperty) ;
+extern OSStatus
+RemoveDataBrowserItems(
+  ControlRef browser,
+  DataBrowserItemID container,
+  UInt32 numItems,
+  const DataBrowserItemID * items,
+  DataBrowserPropertyID preSortProperty) ;
+extern OSStatus
+UpdateDataBrowserItems(
+  ControlRef browser,
+  DataBrowserItemID container,
+  UInt32 numItems,
+  const DataBrowserItemID * items,
+  DataBrowserPropertyID preSortProperty,
+  DataBrowserPropertyID propertyID) ;
+extern Boolean
+EnableDataBrowserEditCommand(
+  ControlRef browser,
+  DataBrowserEditCommand command) ;
+extern OSStatus
+ExecuteDataBrowserEditCommand(
+  ControlRef browser,
+  DataBrowserEditCommand command) ;
+extern OSStatus
+GetDataBrowserSelectionAnchor(
+  ControlRef browser,
+  DataBrowserItemID * first,
+  DataBrowserItemID * last) ;
+extern OSStatus
+MoveDataBrowserSelectionAnchor(
+  ControlRef browser,
+  DataBrowserSelectionAnchorDirection direction,
+  Boolean extendSelection) ;
+extern OSStatus
+OpenDataBrowserContainer(
+  ControlRef browser,
+  DataBrowserItemID container) ;
+extern OSStatus
+CloseDataBrowserContainer(
+  ControlRef browser,
+  DataBrowserItemID container) ;
+extern OSStatus
+SortDataBrowserContainer(
+  ControlRef browser,
+  DataBrowserItemID container,
+  Boolean sortChildren) ;
+extern OSStatus
+GetDataBrowserItems(
+  ControlRef browser,
+  DataBrowserItemID container,
+  Boolean recurse,
+  DataBrowserItemState state,
+  Handle items) ;
+extern OSStatus
+GetDataBrowserItemCount(
+  ControlRef browser,
+  DataBrowserItemID container,
+  Boolean recurse,
+  DataBrowserItemState state,
+  UInt32 * numItems) ;
+extern OSStatus
+ForEachDataBrowserItem(
+  ControlRef browser,
+  DataBrowserItemID container,
+  Boolean recurse,
+  DataBrowserItemState state,
+  DataBrowserItemUPP callback,
+  void * clientData) ;
+extern Boolean
+IsDataBrowserItemSelected(
+  ControlRef browser,
+  DataBrowserItemID item) ;
+extern OSStatus
+GetDataBrowserItemState(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserItemState * state) ;
+extern OSStatus
+RevealDataBrowserItem(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID propertyID,
+  DataBrowserRevealOptions options) ;
+extern OSStatus
+SetDataBrowserSelectedItems(
+  ControlRef browser,
+  UInt32 numItems,
+  const DataBrowserItemID * items,
+  DataBrowserSetOption operation) ;
+extern OSStatus
+SetDataBrowserUserState(
+  ControlRef browser,
+  CFDataRef stateInfo) ;
+extern OSStatus
+GetDataBrowserUserState(
+  ControlRef browser,
+  CFDataRef * stateInfo) ;
+extern OSStatus
+SetDataBrowserActiveItems(
+  ControlRef browser,
+  Boolean active) ;
+extern OSStatus
+GetDataBrowserActiveItems(
+  ControlRef browser,
+  Boolean * active) ;
+extern OSStatus
+SetDataBrowserScrollBarInset(
+  ControlRef browser,
+  Rect * insetRect) ;
+extern OSStatus
+GetDataBrowserScrollBarInset(
+  ControlRef browser,
+  Rect * insetRect) ;
+extern OSStatus
+SetDataBrowserTarget(
+  ControlRef browser,
+  DataBrowserItemID target) ;
+extern OSStatus
+GetDataBrowserTarget(
+  ControlRef browser,
+  DataBrowserItemID * target) ;
+extern OSStatus
+SetDataBrowserSortOrder(
+  ControlRef browser,
+  DataBrowserSortOrder order) ;
+extern OSStatus
+GetDataBrowserSortOrder(
+  ControlRef browser,
+  DataBrowserSortOrder * order) ;
+extern OSStatus
+SetDataBrowserScrollPosition(
+  ControlRef browser,
+  UInt32 top,
+  UInt32 left) ;
+extern OSStatus
+GetDataBrowserScrollPosition(
+  ControlRef browser,
+  UInt32 * top,
+  UInt32 * left) ;
+extern OSStatus
+SetDataBrowserHasScrollBars(
+  ControlRef browser,
+  Boolean horiz,
+  Boolean vert) ;
+extern OSStatus
+GetDataBrowserHasScrollBars(
+  ControlRef browser,
+  Boolean * horiz,
+  Boolean * vert) ;
+extern OSStatus
+SetDataBrowserSortProperty(
+  ControlRef browser,
+  DataBrowserPropertyID property) ;
+extern OSStatus
+GetDataBrowserSortProperty(
+  ControlRef browser,
+  DataBrowserPropertyID * property) ;
+extern OSStatus
+SetDataBrowserSelectionFlags(
+  ControlRef browser,
+  DataBrowserSelectionFlags selectionFlags) ;
+extern OSStatus
+GetDataBrowserSelectionFlags(
+  ControlRef browser,
+  DataBrowserSelectionFlags * selectionFlags) ;
+extern OSStatus
+SetDataBrowserPropertyFlags(
+  ControlRef browser,
+  DataBrowserPropertyID property,
+  DataBrowserPropertyFlags flags) ;
+extern OSStatus
+GetDataBrowserPropertyFlags(
+  ControlRef browser,
+  DataBrowserPropertyID property,
+  DataBrowserPropertyFlags * flags) ;
+extern OSStatus
+SetDataBrowserEditText(
+  ControlRef browser,
+  CFStringRef text) ;
+extern OSStatus
+CopyDataBrowserEditText(
+  ControlRef browser,
+  CFStringRef * text) ;
+extern OSStatus
+GetDataBrowserEditText(
+  ControlRef browser,
+  CFMutableStringRef text) ;
+extern OSStatus
+SetDataBrowserEditItem(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property) ;
+extern OSStatus
+GetDataBrowserEditItem(
+  ControlRef browser,
+  DataBrowserItemID * item,
+  DataBrowserPropertyID * property) ;
+extern OSStatus
+GetDataBrowserItemPartBounds(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property,
+  DataBrowserPropertyPart part,
+  Rect * bounds) ;
+
+
+
+
+
+typedef void * DataBrowserItemDataRef;
+extern OSStatus
+SetDataBrowserItemDataIcon(
+  DataBrowserItemDataRef itemData,
+  IconRef theData) ;
+extern OSStatus
+GetDataBrowserItemDataIcon(
+  DataBrowserItemDataRef itemData,
+  IconRef * theData) ;
+extern OSStatus
+SetDataBrowserItemDataText(
+  DataBrowserItemDataRef itemData,
+  CFStringRef theData) ;
+extern OSStatus
+GetDataBrowserItemDataText(
+  DataBrowserItemDataRef itemData,
+  CFStringRef * theData) ;
+extern OSStatus
+SetDataBrowserItemDataValue(
+  DataBrowserItemDataRef itemData,
+  SInt32 theData) ;
+extern OSStatus
+GetDataBrowserItemDataValue(
+  DataBrowserItemDataRef itemData,
+  SInt32 * theData) ;
+extern OSStatus
+SetDataBrowserItemDataMinimum(
+  DataBrowserItemDataRef itemData,
+  SInt32 theData) ;
+extern OSStatus
+GetDataBrowserItemDataMinimum(
+  DataBrowserItemDataRef itemData,
+  SInt32 * theData) ;
+extern OSStatus
+SetDataBrowserItemDataMaximum(
+  DataBrowserItemDataRef itemData,
+  SInt32 theData) ;
+extern OSStatus
+GetDataBrowserItemDataMaximum(
+  DataBrowserItemDataRef itemData,
+  SInt32 * theData) ;
+extern OSStatus
+SetDataBrowserItemDataBooleanValue(
+  DataBrowserItemDataRef itemData,
+  Boolean theData) ;
+extern OSStatus
+GetDataBrowserItemDataBooleanValue(
+  DataBrowserItemDataRef itemData,
+  Boolean * theData) ;
+extern OSStatus
+SetDataBrowserItemDataMenuRef(
+  DataBrowserItemDataRef itemData,
+  MenuRef theData) ;
+extern OSStatus
+GetDataBrowserItemDataMenuRef(
+  DataBrowserItemDataRef itemData,
+  MenuRef * theData) ;
+extern OSStatus
+SetDataBrowserItemDataRGBColor(
+  DataBrowserItemDataRef itemData,
+  const RGBColor * theData) ;
+extern OSStatus
+GetDataBrowserItemDataRGBColor(
+  DataBrowserItemDataRef itemData,
+  RGBColor * theData) ;
+extern OSStatus
+SetDataBrowserItemDataDrawState(
+  DataBrowserItemDataRef itemData,
+  ThemeDrawState theData) ;
+extern OSStatus
+GetDataBrowserItemDataDrawState(
+  DataBrowserItemDataRef itemData,
+  ThemeDrawState * theData) ;
+extern OSStatus
+SetDataBrowserItemDataButtonValue(
+  DataBrowserItemDataRef itemData,
+  ThemeButtonValue theData) ;
+extern OSStatus
+GetDataBrowserItemDataButtonValue(
+  DataBrowserItemDataRef itemData,
+  ThemeButtonValue * theData) ;
+extern OSStatus
+SetDataBrowserItemDataIconTransform(
+  DataBrowserItemDataRef itemData,
+  IconTransformType theData) ;
+extern OSStatus
+GetDataBrowserItemDataIconTransform(
+  DataBrowserItemDataRef itemData,
+  IconTransformType * theData) ;
+extern OSStatus
+SetDataBrowserItemDataDateTime(
+  DataBrowserItemDataRef itemData,
+  long theData) ;
+extern OSStatus
+GetDataBrowserItemDataDateTime(
+  DataBrowserItemDataRef itemData,
+  long * theData) ;
+extern OSStatus
+SetDataBrowserItemDataLongDateTime(
+  DataBrowserItemDataRef itemData,
+  const LongDateTime * theData) ;
+extern OSStatus
+GetDataBrowserItemDataLongDateTime(
+  DataBrowserItemDataRef itemData,
+  LongDateTime * theData) ;
+extern OSStatus
+SetDataBrowserItemDataItemID(
+  DataBrowserItemDataRef itemData,
+  DataBrowserItemID theData) ;
+extern OSStatus
+GetDataBrowserItemDataItemID(
+  DataBrowserItemDataRef itemData,
+  DataBrowserItemID * theData) ;
+extern OSStatus
+GetDataBrowserItemDataProperty(
+  DataBrowserItemDataRef itemData,
+  DataBrowserPropertyID * theData) ;
+
+
+
+
+
+
+typedef OSStatus ( * DataBrowserItemDataProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, DataBrowserItemDataRef itemData, Boolean setValue);
+typedef DataBrowserItemDataProcPtr DataBrowserItemDataUPP;
+
+
+typedef Boolean ( * DataBrowserItemCompareProcPtr)(ControlRef browser, DataBrowserItemID itemOne, DataBrowserItemID itemTwo, DataBrowserPropertyID sortProperty);
+typedef DataBrowserItemCompareProcPtr DataBrowserItemCompareUPP;
+typedef void ( * DataBrowserItemNotificationWithItemProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserItemNotification message, DataBrowserItemDataRef itemData);
+typedef void ( * DataBrowserItemNotificationProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserItemNotification message);
+typedef DataBrowserItemNotificationWithItemProcPtr DataBrowserItemNotificationWithItemUPP;
+typedef DataBrowserItemNotificationProcPtr DataBrowserItemNotificationUPP;
+
+
+
+typedef Boolean ( * DataBrowserAddDragItemProcPtr)(ControlRef browser, DragReference theDrag, DataBrowserItemID item, ItemReference *itemRef);
+typedef Boolean ( * DataBrowserAcceptDragProcPtr)(ControlRef browser, DragReference theDrag, DataBrowserItemID item);
+typedef Boolean ( * DataBrowserReceiveDragProcPtr)(ControlRef browser, DragReference theDrag, DataBrowserItemID item);
+typedef void ( * DataBrowserPostProcessDragProcPtr)(ControlRef browser, DragReference theDrag, OSStatus trackDragResult);
+typedef DataBrowserAddDragItemProcPtr DataBrowserAddDragItemUPP;
+typedef DataBrowserAcceptDragProcPtr DataBrowserAcceptDragUPP;
+typedef DataBrowserReceiveDragProcPtr DataBrowserReceiveDragUPP;
+typedef DataBrowserPostProcessDragProcPtr DataBrowserPostProcessDragUPP;
+
+
+typedef void ( * DataBrowserGetContextualMenuProcPtr)(ControlRef browser, MenuRef *menu, UInt32 *helpType, CFStringRef *helpItemString, AEDesc *selection);
+typedef void ( * DataBrowserSelectContextualMenuProcPtr)(ControlRef browser, MenuRef menu, UInt32 selectionType, SInt16 menuID, MenuItemIndex menuItem);
+typedef DataBrowserGetContextualMenuProcPtr DataBrowserGetContextualMenuUPP;
+typedef DataBrowserSelectContextualMenuProcPtr DataBrowserSelectContextualMenuUPP;
+
+
+typedef void ( * DataBrowserItemHelpContentProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, HMContentRequest inRequest, HMContentProvidedType *outContentProvided, HMHelpContentPtr ioHelpContent);
+typedef DataBrowserItemHelpContentProcPtr DataBrowserItemHelpContentUPP;
+extern DataBrowserItemDataUPP
+NewDataBrowserItemDataUPP(DataBrowserItemDataProcPtr userRoutine) ;
+extern DataBrowserItemCompareUPP
+NewDataBrowserItemCompareUPP(DataBrowserItemCompareProcPtr userRoutine) ;
+extern DataBrowserItemNotificationWithItemUPP
+NewDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationWithItemProcPtr userRoutine) ;
+extern DataBrowserItemNotificationUPP
+NewDataBrowserItemNotificationUPP(DataBrowserItemNotificationProcPtr userRoutine) ;
+extern DataBrowserAddDragItemUPP
+NewDataBrowserAddDragItemUPP(DataBrowserAddDragItemProcPtr userRoutine) ;
+extern DataBrowserAcceptDragUPP
+NewDataBrowserAcceptDragUPP(DataBrowserAcceptDragProcPtr userRoutine) ;
+extern DataBrowserReceiveDragUPP
+NewDataBrowserReceiveDragUPP(DataBrowserReceiveDragProcPtr userRoutine) ;
+extern DataBrowserPostProcessDragUPP
+NewDataBrowserPostProcessDragUPP(DataBrowserPostProcessDragProcPtr userRoutine) ;
+extern DataBrowserGetContextualMenuUPP
+NewDataBrowserGetContextualMenuUPP(DataBrowserGetContextualMenuProcPtr userRoutine) ;
+extern DataBrowserSelectContextualMenuUPP
+NewDataBrowserSelectContextualMenuUPP(DataBrowserSelectContextualMenuProcPtr userRoutine) ;
+extern DataBrowserItemHelpContentUPP
+NewDataBrowserItemHelpContentUPP(DataBrowserItemHelpContentProcPtr userRoutine) ;
+extern void
+DisposeDataBrowserItemDataUPP(DataBrowserItemDataUPP userUPP) ;
+extern void
+DisposeDataBrowserItemCompareUPP(DataBrowserItemCompareUPP userUPP) ;
+extern void
+DisposeDataBrowserItemNotificationWithItemUPP(DataBrowserItemNotificationWithItemUPP userUPP) ;
+extern void
+DisposeDataBrowserItemNotificationUPP(DataBrowserItemNotificationUPP userUPP) ;
+extern void
+DisposeDataBrowserAddDragItemUPP(DataBrowserAddDragItemUPP userUPP) ;
+extern void
+DisposeDataBrowserAcceptDragUPP(DataBrowserAcceptDragUPP userUPP) ;
+extern void
+DisposeDataBrowserReceiveDragUPP(DataBrowserReceiveDragUPP userUPP) ;
+extern void
+DisposeDataBrowserPostProcessDragUPP(DataBrowserPostProcessDragUPP userUPP) ;
+extern void
+DisposeDataBrowserGetContextualMenuUPP(DataBrowserGetContextualMenuUPP userUPP) ;
+extern void
+DisposeDataBrowserSelectContextualMenuUPP(DataBrowserSelectContextualMenuUPP userUPP) ;
+extern void
+DisposeDataBrowserItemHelpContentUPP(DataBrowserItemHelpContentUPP userUPP) ;
+extern OSStatus
+InvokeDataBrowserItemDataUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property,
+  DataBrowserItemDataRef itemData,
+  Boolean setValue,
+  DataBrowserItemDataUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserItemCompareUPP(
+  ControlRef browser,
+  DataBrowserItemID itemOne,
+  DataBrowserItemID itemTwo,
+  DataBrowserPropertyID sortProperty,
+  DataBrowserItemCompareUPP userUPP) ;
+extern void
+InvokeDataBrowserItemNotificationWithItemUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserItemNotification message,
+  DataBrowserItemDataRef itemData,
+  DataBrowserItemNotificationWithItemUPP userUPP) ;
+extern void
+InvokeDataBrowserItemNotificationUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserItemNotification message,
+  DataBrowserItemNotificationUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserAddDragItemUPP(
+  ControlRef browser,
+  DragReference theDrag,
+  DataBrowserItemID item,
+  ItemReference * itemRef,
+  DataBrowserAddDragItemUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserAcceptDragUPP(
+  ControlRef browser,
+  DragReference theDrag,
+  DataBrowserItemID item,
+  DataBrowserAcceptDragUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserReceiveDragUPP(
+  ControlRef browser,
+  DragReference theDrag,
+  DataBrowserItemID item,
+  DataBrowserReceiveDragUPP userUPP) ;
+extern void
+InvokeDataBrowserPostProcessDragUPP(
+  ControlRef browser,
+  DragReference theDrag,
+  OSStatus trackDragResult,
+  DataBrowserPostProcessDragUPP userUPP) ;
+extern void
+InvokeDataBrowserGetContextualMenuUPP(
+  ControlRef browser,
+  MenuRef * menu,
+  UInt32 * helpType,
+  CFStringRef * helpItemString,
+  AEDesc * selection,
+  DataBrowserGetContextualMenuUPP userUPP) ;
+extern void
+InvokeDataBrowserSelectContextualMenuUPP(
+  ControlRef browser,
+  MenuRef menu,
+  UInt32 selectionType,
+  SInt16 menuID,
+  MenuItemIndex menuItem,
+  DataBrowserSelectContextualMenuUPP userUPP) ;
+extern void
+InvokeDataBrowserItemHelpContentUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property,
+  HMContentRequest inRequest,
+  HMContentProvidedType * outContentProvided,
+  HMHelpContentPtr ioHelpContent,
+  DataBrowserItemHelpContentUPP userUPP) ;
+
+
+enum {
+  kDataBrowserLatestCallbacks = 0
+};
+
+struct DataBrowserCallbacks {
+  UInt32 version;
+
+  union {
+    struct {
+      DataBrowserItemDataUPP itemDataCallback;
+      DataBrowserItemCompareUPP itemCompareCallback;
+      DataBrowserItemNotificationUPP itemNotificationCallback;
+
+      DataBrowserAddDragItemUPP addDragItemCallback;
+      DataBrowserAcceptDragUPP acceptDragCallback;
+      DataBrowserReceiveDragUPP receiveDragCallback;
+      DataBrowserPostProcessDragUPP postProcessDragCallback;
+
+      DataBrowserItemHelpContentUPP itemHelpContentCallback;
+      DataBrowserGetContextualMenuUPP getContextualMenuCallback;
+      DataBrowserSelectContextualMenuUPP selectContextualMenuCallback;
+    } v1;
+  } u;
+};
+typedef struct DataBrowserCallbacks DataBrowserCallbacks;
+extern OSStatus
+InitDataBrowserCallbacks(DataBrowserCallbacks * callbacks) ;
+extern OSStatus
+GetDataBrowserCallbacks(
+  ControlRef browser,
+  DataBrowserCallbacks * callbacks) ;
+extern OSStatus
+SetDataBrowserCallbacks(
+  ControlRef browser,
+  const DataBrowserCallbacks * callbacks) ;
+
+
+
+
+
+typedef unsigned long DataBrowserDragFlags;
+typedef SInt16 DataBrowserTrackingResult;
+enum {
+  kDataBrowserContentHit = 1,
+  kDataBrowserNothingHit = 0,
+  kDataBrowserStopTracking = -1
+};
+
+typedef void ( * DataBrowserDrawItemProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, DataBrowserItemState itemState, const Rect *theRect, SInt16 gdDepth, Boolean colorDevice);
+typedef Boolean ( * DataBrowserEditItemProcPtr)(ControlRef browser, DataBrowserItemID item, DataBrowserPropertyID property, CFStringRef theString, Rect *maxEditTextRect, Boolean *shrinkToFit);
+typedef Boolean ( * DataBrowserHitTestProcPtr)(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, const Rect *mouseRect);
+typedef DataBrowserTrackingResult ( * DataBrowserTrackingProcPtr)(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, Point startPt, EventModifiers modifiers);
+typedef void ( * DataBrowserItemDragRgnProcPtr)(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, RgnHandle dragRgn);
+typedef DataBrowserDragFlags ( * DataBrowserItemAcceptDragProcPtr)(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, const Rect *theRect, DragReference theDrag);
+typedef Boolean ( * DataBrowserItemReceiveDragProcPtr)(ControlRef browser, DataBrowserItemID itemID, DataBrowserPropertyID property, DataBrowserDragFlags dragFlags, DragReference theDrag);
+typedef DataBrowserDrawItemProcPtr DataBrowserDrawItemUPP;
+typedef DataBrowserEditItemProcPtr DataBrowserEditItemUPP;
+typedef DataBrowserHitTestProcPtr DataBrowserHitTestUPP;
+typedef DataBrowserTrackingProcPtr DataBrowserTrackingUPP;
+typedef DataBrowserItemDragRgnProcPtr DataBrowserItemDragRgnUPP;
+typedef DataBrowserItemAcceptDragProcPtr DataBrowserItemAcceptDragUPP;
+typedef DataBrowserItemReceiveDragProcPtr DataBrowserItemReceiveDragUPP;
+extern DataBrowserDrawItemUPP
+NewDataBrowserDrawItemUPP(DataBrowserDrawItemProcPtr userRoutine) ;
+extern DataBrowserEditItemUPP
+NewDataBrowserEditItemUPP(DataBrowserEditItemProcPtr userRoutine) ;
+extern DataBrowserHitTestUPP
+NewDataBrowserHitTestUPP(DataBrowserHitTestProcPtr userRoutine) ;
+extern DataBrowserTrackingUPP
+NewDataBrowserTrackingUPP(DataBrowserTrackingProcPtr userRoutine) ;
+extern DataBrowserItemDragRgnUPP
+NewDataBrowserItemDragRgnUPP(DataBrowserItemDragRgnProcPtr userRoutine) ;
+extern DataBrowserItemAcceptDragUPP
+NewDataBrowserItemAcceptDragUPP(DataBrowserItemAcceptDragProcPtr userRoutine) ;
+extern DataBrowserItemReceiveDragUPP
+NewDataBrowserItemReceiveDragUPP(DataBrowserItemReceiveDragProcPtr userRoutine) ;
+extern void
+DisposeDataBrowserDrawItemUPP(DataBrowserDrawItemUPP userUPP) ;
+extern void
+DisposeDataBrowserEditItemUPP(DataBrowserEditItemUPP userUPP) ;
+extern void
+DisposeDataBrowserHitTestUPP(DataBrowserHitTestUPP userUPP) ;
+extern void
+DisposeDataBrowserTrackingUPP(DataBrowserTrackingUPP userUPP) ;
+extern void
+DisposeDataBrowserItemDragRgnUPP(DataBrowserItemDragRgnUPP userUPP) ;
+extern void
+DisposeDataBrowserItemAcceptDragUPP(DataBrowserItemAcceptDragUPP userUPP) ;
+extern void
+DisposeDataBrowserItemReceiveDragUPP(DataBrowserItemReceiveDragUPP userUPP) ;
+extern void
+InvokeDataBrowserDrawItemUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property,
+  DataBrowserItemState itemState,
+  const Rect * theRect,
+  SInt16 gdDepth,
+  Boolean colorDevice,
+  DataBrowserDrawItemUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserEditItemUPP(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserPropertyID property,
+  CFStringRef theString,
+  Rect * maxEditTextRect,
+  Boolean * shrinkToFit,
+  DataBrowserEditItemUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserHitTestUPP(
+  ControlRef browser,
+  DataBrowserItemID itemID,
+  DataBrowserPropertyID property,
+  const Rect * theRect,
+  const Rect * mouseRect,
+  DataBrowserHitTestUPP userUPP) ;
+extern DataBrowserTrackingResult
+InvokeDataBrowserTrackingUPP(
+  ControlRef browser,
+  DataBrowserItemID itemID,
+  DataBrowserPropertyID property,
+  const Rect * theRect,
+  Point startPt,
+  EventModifiers modifiers,
+  DataBrowserTrackingUPP userUPP) ;
+extern void
+InvokeDataBrowserItemDragRgnUPP(
+  ControlRef browser,
+  DataBrowserItemID itemID,
+  DataBrowserPropertyID property,
+  const Rect * theRect,
+  RgnHandle dragRgn,
+  DataBrowserItemDragRgnUPP userUPP) ;
+extern DataBrowserDragFlags
+InvokeDataBrowserItemAcceptDragUPP(
+  ControlRef browser,
+  DataBrowserItemID itemID,
+  DataBrowserPropertyID property,
+  const Rect * theRect,
+  DragReference theDrag,
+  DataBrowserItemAcceptDragUPP userUPP) ;
+extern Boolean
+InvokeDataBrowserItemReceiveDragUPP(
+  ControlRef browser,
+  DataBrowserItemID itemID,
+  DataBrowserPropertyID property,
+  DataBrowserDragFlags dragFlags,
+  DragReference theDrag,
+  DataBrowserItemReceiveDragUPP userUPP) ;
+
+
+enum {
+  kDataBrowserLatestCustomCallbacks = 0
+};
+
+struct DataBrowserCustomCallbacks {
+
+  UInt32 version;
+
+  union {
+    struct {
+      DataBrowserDrawItemUPP drawItemCallback;
+      DataBrowserEditItemUPP editTextCallback;
+      DataBrowserHitTestUPP hitTestCallback;
+      DataBrowserTrackingUPP trackingCallback;
+
+      DataBrowserItemDragRgnUPP dragRegionCallback;
+      DataBrowserItemAcceptDragUPP acceptDragCallback;
+      DataBrowserItemReceiveDragUPP receiveDragCallback;
+    } v1;
+  } u;
+};
+typedef struct DataBrowserCustomCallbacks DataBrowserCustomCallbacks;
+extern OSStatus
+InitDataBrowserCustomCallbacks(DataBrowserCustomCallbacks * callbacks) ;
+extern OSStatus
+GetDataBrowserCustomCallbacks(
+  ControlRef browser,
+  DataBrowserCustomCallbacks * callbacks) ;
+extern OSStatus
+SetDataBrowserCustomCallbacks(
+  ControlRef browser,
+  const DataBrowserCustomCallbacks * callbacks) ;
+
+
+
+
+
+
+typedef UInt32 DataBrowserTableViewHiliteStyle;
+enum {
+  kDataBrowserTableViewMinimalHilite = 0,
+  kDataBrowserTableViewFillHilite = 1
+};
+
+typedef UInt32 DataBrowserTableViewPropertyFlags;
+enum {
+
+  kDataBrowserTableViewSelectionColumn = 1 << kDataBrowserViewSpecificFlagsOffset
+};
+
+
+
+typedef UInt32 DataBrowserTableViewRowIndex;
+typedef UInt32 DataBrowserTableViewColumnIndex;
+typedef DataBrowserPropertyID DataBrowserTableViewColumnID;
+typedef DataBrowserPropertyDesc DataBrowserTableViewColumnDesc;
+
+
+
+enum {
+  kDataBrowserTableViewLastColumn = -1
+};
+extern OSStatus
+RemoveDataBrowserTableViewColumn(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column) ;
+extern OSStatus
+GetDataBrowserTableViewColumnCount(
+  ControlRef browser,
+  UInt32 * numColumns) ;
+extern OSStatus
+SetDataBrowserTableViewHiliteStyle(
+  ControlRef browser,
+  DataBrowserTableViewHiliteStyle hiliteStyle) ;
+extern OSStatus
+GetDataBrowserTableViewHiliteStyle(
+  ControlRef browser,
+  DataBrowserTableViewHiliteStyle * hiliteStyle) ;
+extern OSStatus
+SetDataBrowserTableViewRowHeight(
+  ControlRef browser,
+  UInt16 height) ;
+extern OSStatus
+GetDataBrowserTableViewRowHeight(
+  ControlRef browser,
+  UInt16 * height) ;
+extern OSStatus
+SetDataBrowserTableViewColumnWidth(
+  ControlRef browser,
+  UInt16 width) ;
+extern OSStatus
+GetDataBrowserTableViewColumnWidth(
+  ControlRef browser,
+  UInt16 * width) ;
+extern OSStatus
+SetDataBrowserTableViewItemRowHeight(
+  ControlRef browser,
+  DataBrowserItemID item,
+  UInt16 height) ;
+extern OSStatus
+GetDataBrowserTableViewItemRowHeight(
+  ControlRef browser,
+  DataBrowserItemID item,
+  UInt16 * height) ;
+extern OSStatus
+SetDataBrowserTableViewNamedColumnWidth(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  UInt16 width) ;
+extern OSStatus
+GetDataBrowserTableViewNamedColumnWidth(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  UInt16 * width) ;
+extern OSStatus
+SetDataBrowserTableViewGeometry(
+  ControlRef browser,
+  Boolean variableWidthColumns,
+  Boolean variableHeightRows) ;
+extern OSStatus
+GetDataBrowserTableViewGeometry(
+  ControlRef browser,
+  Boolean * variableWidthColumns,
+  Boolean * variableHeightRows) ;
+extern OSStatus
+GetDataBrowserTableViewItemID(
+  ControlRef browser,
+  DataBrowserTableViewRowIndex row,
+  DataBrowserItemID * item) ;
+extern OSStatus
+SetDataBrowserTableViewItemRow(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserTableViewRowIndex row) ;
+extern OSStatus
+GetDataBrowserTableViewItemRow(
+  ControlRef browser,
+  DataBrowserItemID item,
+  DataBrowserTableViewRowIndex * row) ;
+extern OSStatus
+SetDataBrowserTableViewColumnPosition(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  DataBrowserTableViewColumnIndex position) ;
+extern OSStatus
+GetDataBrowserTableViewColumnPosition(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  DataBrowserTableViewColumnIndex * position) ;
+extern OSStatus
+GetDataBrowserTableViewColumnProperty(
+  ControlRef browser,
+  DataBrowserTableViewColumnIndex column,
+  DataBrowserTableViewColumnID * property) ;
+
+
+
+
+
+
+typedef UInt32 DataBrowserListViewPropertyFlags;
+enum {
+
+  kDataBrowserListViewMovableColumn = 1 << (kDataBrowserViewSpecificFlagsOffset + 1),
+  kDataBrowserListViewSortableColumn = 1 << (kDataBrowserViewSpecificFlagsOffset + 2),
+  kDataBrowserListViewSelectionColumn = kDataBrowserTableViewSelectionColumn,
+  kDataBrowserListViewDefaultColumnFlags = kDataBrowserListViewMovableColumn + kDataBrowserListViewSortableColumn
+};
+
+
+enum {
+  kDataBrowserListViewLatestHeaderDesc = 0
+};
+
+struct DataBrowserListViewHeaderDesc {
+  UInt32 version;
+
+  UInt16 minimumWidth;
+  UInt16 maximumWidth;
+
+  SInt16 titleOffset;
+  CFStringRef titleString;
+  DataBrowserSortOrder initialOrder;
+  ControlFontStyleRec btnFontStyle;
+  ControlButtonContentInfo btnContentInfo;
+};
+typedef struct DataBrowserListViewHeaderDesc DataBrowserListViewHeaderDesc;
+struct DataBrowserListViewColumnDesc {
+  DataBrowserTableViewColumnDesc propertyDesc;
+  DataBrowserListViewHeaderDesc headerBtnDesc;
+};
+typedef struct DataBrowserListViewColumnDesc DataBrowserListViewColumnDesc;
+
+enum {
+  kDataBrowserListViewAppendColumn = kDataBrowserTableViewLastColumn
+};
+extern OSStatus
+AutoSizeDataBrowserListViewColumns(ControlRef browser) ;
+extern OSStatus
+AddDataBrowserListViewColumn(
+  ControlRef browser,
+  DataBrowserListViewColumnDesc * columnDesc,
+  DataBrowserTableViewColumnIndex position) ;
+extern OSStatus
+GetDataBrowserListViewHeaderDesc(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  DataBrowserListViewHeaderDesc * desc) ;
+extern OSStatus
+SetDataBrowserListViewHeaderDesc(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  DataBrowserListViewHeaderDesc * desc) ;
+extern OSStatus
+SetDataBrowserListViewHeaderBtnHeight(
+  ControlRef browser,
+  UInt16 height) ;
+extern OSStatus
+GetDataBrowserListViewHeaderBtnHeight(
+  ControlRef browser,
+  UInt16 * height) ;
+extern OSStatus
+SetDataBrowserListViewUsePlainBackground(
+  ControlRef browser,
+  Boolean usePlainBackground) ;
+extern OSStatus
+GetDataBrowserListViewUsePlainBackground(
+  ControlRef browser,
+  Boolean * usePlainBackground) ;
+extern OSStatus
+SetDataBrowserListViewDisclosureColumn(
+  ControlRef browser,
+  DataBrowserTableViewColumnID column,
+  Boolean expandableRows) ;
+extern OSStatus
+GetDataBrowserListViewDisclosureColumn(
+  ControlRef browser,
+  DataBrowserTableViewColumnID * column,
+  Boolean * expandableRows) ;
+extern OSStatus
+GetDataBrowserColumnViewPath(
+  ControlRef browser,
+  Handle path) ;
+extern OSStatus
+GetDataBrowserColumnViewPathLength(
+  ControlRef browser,
+  UInt32 * pathLength) ;
+extern OSStatus
+SetDataBrowserColumnViewPath(
+  ControlRef browser,
+  UInt32 length,
+  const DataBrowserItemID * path) ;
+extern OSStatus
+SetDataBrowserColumnViewDisplayType(
+  ControlRef browser,
+  DataBrowserPropertyType propertyType) ;
+extern OSStatus
+GetDataBrowserColumnViewDisplayType(
+  ControlRef browser,
+  DataBrowserPropertyType * propertyType) ;
+typedef Boolean ( * EditUnicodePostUpdateProcPtr)(UniCharArrayHandle uniText, UniCharCount uniTextLength, UniCharArrayOffset iStartOffset, UniCharArrayOffset iEndOffset, void *refcon);
+typedef EditUnicodePostUpdateProcPtr EditUnicodePostUpdateUPP;
+extern EditUnicodePostUpdateUPP
+NewEditUnicodePostUpdateUPP(EditUnicodePostUpdateProcPtr userRoutine) ;
+extern void
+DisposeEditUnicodePostUpdateUPP(EditUnicodePostUpdateUPP userUPP) ;
+extern Boolean
+InvokeEditUnicodePostUpdateUPP(
+  UniCharArrayHandle uniText,
+  UniCharCount uniTextLength,
+  UniCharArrayOffset iStartOffset,
+  UniCharArrayOffset iEndOffset,
+  void * refcon,
+  EditUnicodePostUpdateUPP userUPP) ;
+
+
+
+enum {
+  kControlEditUnicodeTextPostUpdateProcTag = 'upup'
+};
+
+
+enum {
+  kControlEditUnicodeTextProc = 912,
+  kControlEditUnicodeTextPasswordProc = 914
+};
+
+
+enum {
+  kControlKindEditUnicodeText = 'eutx'
+};
+extern OSStatus
+CreateEditUnicodeTextControl(
+  WindowRef window,
+  const Rect * boundsRect,
+  CFStringRef text,
+  Boolean isPassword,
+  const ControlFontStyleRec * style,
+  ControlRef * outControl) ;
+
+
+
+enum {
+  kControlEditTextSingleLineTag = 'sglc'
+};
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  kTSMTESignature = 'tmTE',
+  kTSMTEInterfaceType = 'tmTE'
+};
+enum {
+  kTSMTEAutoScroll = 1
+};
+
+
+
+
+typedef void ( * TSMTEPreUpdateProcPtr)(TEHandle textH, long refCon);
+typedef void ( * TSMTEPostUpdateProcPtr)(TEHandle textH, long fixLen, long inputAreaStart, long inputAreaEnd, long pinStart, long pinEnd, long refCon);
+typedef TSMTEPreUpdateProcPtr TSMTEPreUpdateUPP;
+typedef TSMTEPostUpdateProcPtr TSMTEPostUpdateUPP;
+
+
+
+struct TSMTERec {
+  TEHandle textH;
+  TSMTEPreUpdateUPP preUpdateProc;
+  TSMTEPostUpdateUPP postUpdateProc;
+  long updateFlag;
+  long refCon;
+};
+typedef struct TSMTERec TSMTERec;
+typedef TSMTERec * TSMTERecPtr;
+typedef TSMTERecPtr * TSMTERecHandle;
+extern TSMTEPreUpdateUPP
+NewTSMTEPreUpdateUPP(TSMTEPreUpdateProcPtr userRoutine) ;
+extern TSMTEPostUpdateUPP
+NewTSMTEPostUpdateUPP(TSMTEPostUpdateProcPtr userRoutine) ;
+extern void
+DisposeTSMTEPreUpdateUPP(TSMTEPreUpdateUPP userUPP) ;
+extern void
+DisposeTSMTEPostUpdateUPP(TSMTEPostUpdateUPP userUPP) ;
+extern void
+InvokeTSMTEPreUpdateUPP(
+  TEHandle textH,
+  long refCon,
+  TSMTEPreUpdateUPP userUPP) ;
+extern void
+InvokeTSMTEPostUpdateUPP(
+  TEHandle textH,
+  long fixLen,
+  long inputAreaStart,
+  long inputAreaEnd,
+  long pinStart,
+  long pinEnd,
+  long refCon,
+  TSMTEPostUpdateUPP userUPP) ;
+extern Boolean
+IsTSMTEDialog(DialogRef dialog) ;
+extern TSMDocumentID
+GetTSMTEDialogDocumentID(DialogRef dialog) ;
+extern TSMTERecHandle
+GetTSMTEDialogTSMTERecHandle(DialogRef dialog) ;
+extern void
+SetTSMTEDialogDocumentID(
+  DialogRef dialog,
+  TSMDocumentID documentID) ;
+extern void
+SetTSMTEDialogTSMTERecHandle(
+  DialogRef dialog,
+  TSMTERecHandle tsmteRecHandle) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  kSupportsFileTranslation = 1,
+  kSupportsScrapTranslation = 2,
+  kTranslatorCanGenerateFilename = 4
+};
+
+
+
+typedef OSType FileType;
+typedef ResType ScrapType;
+
+typedef UInt32 TranslationAttributes;
+enum {
+  taDstDocNeedsResourceFork = 1,
+  taDstIsAppTranslation = 2
+};
+
+
+struct FileTypeSpec {
+  FileType format;
+  long hint;
+  TranslationAttributes flags;
+  OSType catInfoType;
+  OSType catInfoCreator;
+};
+typedef struct FileTypeSpec FileTypeSpec;
+struct FileTranslationList {
+  unsigned long modDate;
+  unsigned long groupCount;
+};
+typedef struct FileTranslationList FileTranslationList;
+typedef FileTranslationList * FileTranslationListPtr;
+typedef FileTranslationListPtr * FileTranslationListHandle;
+
+struct ScrapTypeSpec {
+  ScrapType format;
+  long hint;
+};
+typedef struct ScrapTypeSpec ScrapTypeSpec;
+struct ScrapTranslationList {
+  unsigned long modDate;
+  unsigned long groupCount;
+};
+typedef struct ScrapTranslationList ScrapTranslationList;
+typedef ScrapTranslationList * ScrapTranslationListPtr;
+typedef ScrapTranslationListPtr * ScrapTranslationListHandle;
+
+
+
+
+
+typedef long TranslationRefNum;
+extern OSErr
+SetTranslationAdvertisement(
+  TranslationRefNum refNum,
+  PicHandle advertisement) ;
+extern OSErr
+UpdateTranslationProgress(
+  TranslationRefNum refNum,
+  short percentDone,
+  Boolean * canceled) ;
+
+
+
+
+
+
+
+enum {
+  kTranslateGetFileTranslationList = 0,
+  kTranslateIdentifyFile = 1,
+  kTranslateTranslateFile = 2,
+  kTranslateGetTranslatedFilename = 3,
+  kTranslateGetScrapTranslationList = 10,
+  kTranslateIdentifyScrap = 11,
+  kTranslateTranslateScrap = 12,
+  kTranslateGetScrapTranslationListConsideringData = 13
+};
+
+
+
+
+
+
+
+typedef ComponentResult ( * DoGetFileTranslationListProcPtr)(ComponentInstance self, FileTranslationListHandle translationList);
+typedef ComponentResult ( * DoIdentifyFileProcPtr)(ComponentInstance self, const FSSpec *theDocument, FileType *docType);
+typedef ComponentResult ( * DoTranslateFileProcPtr)(ComponentInstance self, TranslationRefNum refNum, const FSSpec *sourceDocument, FileType srcType, long srcTypeHint, const FSSpec *dstDoc, FileType dstType, long dstTypeHint);
+typedef ComponentResult ( * DoGetTranslatedFilenameProcPtr)(ComponentInstance self, FileType dstType, long dstTypeHint, FSSpec *theDocument);
+typedef ComponentResult ( * DoGetScrapTranslationListProcPtr)(ComponentInstance self, ScrapTranslationListHandle list);
+typedef ComponentResult ( * DoIdentifyScrapProcPtr)(ComponentInstance self, const void *dataPtr, Size dataLength, ScrapType *dataFormat);
+typedef ComponentResult ( * DoTranslateScrapProcPtr)(ComponentInstance self, TranslationRefNum refNum, const void *srcDataPtr, Size srcDataLength, ScrapType srcType, long srcTypeHint, Handle dstData, ScrapType dstType, long dstTypeHint);
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+typedef short DocOpenMethod;
+enum {
+  domCannot = 0,
+  domNative = 1,
+  domTranslateFirst = 2,
+  domWildcard = 3
+};
+
+
+typedef OSType TypesBlock[64];
+typedef OSType * TypesBlockPtr;
+
+enum {
+  kTranslationScrapProgressDialogID = -16555
+};
+
+
+struct FileTranslationSpec {
+  OSType componentSignature;
+  const void * translationSystemInfo;
+  FileTypeSpec src;
+  FileTypeSpec dst;
+};
+typedef struct FileTranslationSpec FileTranslationSpec;
+typedef FileTranslationSpec * FileTranslationSpecArrayPtr;
+typedef FileTranslationSpecArrayPtr * FileTranslationSpecArrayHandle;
+extern OSErr
+GetFileTypesThatAppCanNativelyOpen(
+  short appVRefNumHint,
+  OSType appSignature,
+  FileType * nativeTypes) ;
+extern OSErr
+ExtendFileTypeList(
+  const FileType * originalTypeList,
+  short numberOriginalTypes,
+  FileType * extendedTypeList,
+  short * numberExtendedTypes) ;
+extern OSErr
+CanDocBeOpened(
+  const FSSpec * targetDocument,
+  short appVRefNumHint,
+  OSType appSignature,
+  const FileType * nativeTypes,
+  Boolean onlyNative,
+  DocOpenMethod * howToOpen,
+  FileTranslationSpec * howToTranslate) ;
+extern short
+GetFileTranslationPaths(
+  const FSSpec * srcDocument,
+  FileType dstDocType,
+  unsigned short maxResultCount,
+  FileTranslationSpecArrayPtr resultBuffer) ;
+extern OSErr
+GetPathFromTranslationDialog(
+  const FSSpec * theDocument,
+  const FSSpec * theApplication,
+  TypesBlockPtr typeList,
+  DocOpenMethod * howToOpen,
+  FileTranslationSpec * howToTranslate) ;
+extern OSErr
+TranslateFile(
+  const FSSpec * sourceDocument,
+  const FSSpec * destinationDocument,
+  const FileTranslationSpec * howToTranslate) ;
+extern OSErr
+GetDocumentKindString(
+  short docVRefNum,
+  OSType docType,
+  OSType docCreator,
+  Str63 kindString) ;
+extern OSErr
+GetTranslationExtensionName(
+  const FileTranslationSpec * translationMethod,
+  Str31 extensionName) ;
+typedef OSErr ( * GetScrapDataProcPtr)(ScrapType requestedFormat, Handle dataH, void *srcDataGetterRefCon);
+typedef GetScrapDataProcPtr GetScrapDataUPP;
+extern GetScrapDataUPP
+NewGetScrapDataUPP(GetScrapDataProcPtr userRoutine) ;
+extern void
+DisposeGetScrapDataUPP(GetScrapDataUPP userUPP) ;
+extern OSErr
+InvokeGetScrapDataUPP(
+  ScrapType requestedFormat,
+  Handle dataH,
+  void * srcDataGetterRefCon,
+  GetScrapDataUPP userUPP) ;
+
+typedef GetScrapDataUPP GetScrapData;
+extern OSErr
+TranslateScrap(
+  GetScrapDataUPP sourceDataGetter,
+  void * sourceDataGetterRefCon,
+  ScrapType destinationFormat,
+  Handle destinationData,
+  short progressDialogID) ;
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+
+typedef SInt16 TSCode;
+enum {
+  tsPreviousSelectMode = -1,
+  tsNormalSelectMode = 0,
+  tsNextSelectMode = 1
+};
+
+struct TypeSelectRecord {
+  unsigned long tsrLastKeyTime;
+  ScriptCode tsrScript;
+  Str63 tsrKeyStrokes;
+};
+typedef struct TypeSelectRecord TypeSelectRecord;
+typedef Boolean ( * IndexToStringProcPtr)(short item, ScriptCode *itemsScript, StringPtr *itemsStringPtr, void *yourDataPtr);
+typedef IndexToStringProcPtr IndexToStringUPP;
+extern void
+TypeSelectClear(TypeSelectRecord * tsr) ;
+extern Boolean
+TypeSelectNewKey(
+  const EventRecord * theEvent,
+  TypeSelectRecord * tsr) ;
+extern short
+TypeSelectFindItem(
+  const TypeSelectRecord * tsr,
+  short listSize,
+  TSCode selectMode,
+  IndexToStringUPP getStringProc,
+  void * yourDataPtr) ;
+extern short
+TypeSelectCompare(
+  const TypeSelectRecord * tsr,
+  ScriptCode testStringScript,
+  StringPtr testStringPtr) ;
+extern IndexToStringUPP
+NewIndexToStringUPP(IndexToStringProcPtr userRoutine) ;
+extern void
+DisposeIndexToStringUPP(IndexToStringUPP userUPP) ;
+extern Boolean
+InvokeIndexToStringUPP(
+  short item,
+  ScriptCode * itemsScript,
+  StringPtr * itemsStringPtr,
+  void * yourDataPtr,
+  IndexToStringUPP userUPP) ;
+
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+
+
+
+
+  kUIModeNormal = 0,
+  kUIModeContentSuppressed = 1,
+
+
+
+
+
+
+
+  kUIModeContentHidden = 2,
+  kUIModeAllHidden = 3
+};
+
+typedef UInt32 SystemUIMode;
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+  kUIOptionAutoShowMenuBar = 1 << 0,
+
+
+
+
+  kUIOptionDisableAppleMenu = 1 << 2,
+  kUIOptionDisableProcessSwitch = 1 << 3,
+
+
+
+
+
+
+
+  kUIOptionDisableForceQuit = 1 << 4,
+
+
+
+
+
+
+
+  kUIOptionDisableSessionTerminate = 1 << 5
+};
+
+typedef OptionBits SystemUIOptions;
+extern OSStatus
+SetSystemUIMode(
+  SystemUIMode inMode,
+  SystemUIOptions inOptions) ;
+extern void
+GetSystemUIMode(
+  SystemUIMode * outMode,
+  SystemUIOptions * outOptions) ;
+extern HIObjectRef
+HIApplicationGetCurrent(void) ;
+extern OSStatus
+SetApplicationDockTileImage(CGImageRef inImage) ;
+extern OSStatus
+OverlayApplicationDockTileImage(CGImageRef inImage) ;
+extern OSStatus
+RestoreApplicationDockTileImage(void) ;
+extern CGContextRef
+BeginCGContextForApplicationDockTile(void) ;
+extern void
+EndCGContextForApplicationDockTile(CGContextRef inContext) ;
+extern CGrafPtr
+BeginQDContextForApplicationDockTile(void) ;
+extern void
+EndQDContextForApplicationDockTile(CGrafPtr inContext) ;
+extern OSStatus
+SetApplicationDockTileMenu(MenuRef inMenu) ;
+extern MenuRef
+GetApplicationDockTileMenu(void) ;
+extern OSStatus
+CreateCGImageFromPixMaps(
+  PixMapHandle inImage,
+  PixMapHandle inMask,
+  CGImageRef * outImage) ;
+extern TextEncoding
+GetApplicationTextEncoding(void) ;
+extern ScriptCode
+GetApplicationScript(void) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+
+
+enum {
+  _KeyboardDispatch = 0xAA7A
+};
+
+
+enum {
+  gestaltKeyboardsAttr = 'kbds',
+  gestaltKBPS2Keyboards = 1,
+  gestaltKBPS2SetIDToAny = 2,
+  gestaltKBPS2SetTranslationTable = 4
+};
+
+
+
+
+
+
+enum {
+  errKBPS2KeyboardNotAvailable = -30850,
+  errKBIlligalParameters = -30851,
+  errKBFailSettingID = -30852,
+  errKBFailSettingTranslationTable = -30853,
+  errKBFailWritePreference = -30854
+};
+typedef UInt32 PhysicalKeyboardLayoutType;
+enum {
+
+
+
+
+  kKeyboardJIS = 'JIS ',
+
+
+
+
+  kKeyboardANSI = 'ANSI',
+
+
+
+
+  kKeyboardISO = 'ISO ',
+
+
+
+
+  kKeyboardUnknown = kUnknownType
+};
+extern OSType
+KBGetLayoutType(SInt16 iKeyboardType) ;
+typedef struct OpaqueKeyboardLayoutRef* KeyboardLayoutRef;
+typedef UInt32 KeyboardLayoutPropertyTag;
+enum {
+
+
+
+
+
+  kKLKCHRData = 0,
+
+
+
+
+
+  kKLuchrData = 1,
+
+
+
+
+  kKLIdentifier = 2,
+
+
+
+
+  kKLIcon = 3,
+
+
+
+
+  kKLLocalizedName = 4,
+
+
+
+
+  kKLName = 5,
+
+
+
+
+  kKLGroupIdentifier = 6,
+
+
+
+
+  kKLKind = 7
+};
+typedef SInt32 KeyboardLayoutKind;
+enum {
+
+
+
+
+  kKLKCHRuchrKind = 0,
+
+
+
+
+  kKLKCHRKind = 1,
+
+
+
+
+  kKLuchrKind = 2
+};
+typedef SInt32 KeyboardLayoutIdentifier;
+enum {
+  kKLUSKeyboard = 0
+};
+extern OSStatus
+KLGetKeyboardLayoutCount(CFIndex * oCount) ;
+extern OSStatus
+KLGetKeyboardLayoutAtIndex(
+  CFIndex iIndex,
+  KeyboardLayoutRef * oKeyboardLayout) ;
+extern OSStatus
+KLGetIndexedKeyboardLayout(
+  CFIndex iIndex,
+  KeyboardLayoutRef * oKeyboardLayout) ;
+extern OSStatus
+KLGetKeyboardLayoutProperty(
+  KeyboardLayoutRef iKeyboardLayout,
+  KeyboardLayoutPropertyTag iPropertyTag,
+  const void ** oValue) ;
+extern OSStatus
+KLGetKeyboardLayoutWithIdentifier(
+  SInt32 iIdentifier,
+  KeyboardLayoutRef * oKeyboardLayout) ;
+extern OSStatus
+KLGetKeyboardLayoutWithName(
+  CFStringRef iName,
+  KeyboardLayoutRef * oKeyboardLayout) ;
+extern OSStatus
+KLGetCurrentKeyboardLayout(KeyboardLayoutRef * oKeyboardLayout) ;
+extern OSStatus
+KLSetCurrentKeyboardLayout(KeyboardLayoutRef iKeyboardLayout) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  kIBCarbonRuntimeCantFindNibFile = -10960,
+  kIBCarbonRuntimeObjectNotOfRequestedType = -10961,
+  kIBCarbonRuntimeCantFindObject = -10962
+};
+
+
+typedef struct OpaqueIBNibRef* IBNibRef;
+extern OSStatus
+CreateNibReference(
+  CFStringRef inNibName,
+  IBNibRef * outNibRef) ;
+extern OSStatus
+CreateNibReferenceWithCFBundle(
+  CFBundleRef inBundle,
+  CFStringRef inNibName,
+  IBNibRef * outNibRef) ;
+extern void
+DisposeNibReference(IBNibRef inNibRef) ;
+extern OSStatus
+CreateWindowFromNib(
+  IBNibRef inNibRef,
+  CFStringRef inName,
+  WindowRef * outWindow) ;
+extern OSStatus
+CreateMenuFromNib(
+  IBNibRef inNibRef,
+  CFStringRef inName,
+  MenuRef * outMenuRef) ;
+extern OSStatus
+CreateMenuBarFromNib(
+  IBNibRef inNibRef,
+  CFStringRef inName,
+  Handle * outMenuBar) ;
+extern OSStatus
+SetMenuBarFromNib(
+  IBNibRef inNibRef,
+  CFStringRef inName) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  soundListRsrc = 'snd ',
+  kSoundCodecInfoResourceType = 'snfo'
+};
+
+enum {
+  kSimpleBeepID = 1
+};
+
+enum {
+  rate48khz = (long)0xBB800000,
+  rate44khz = (long)0xAC440000,
+  rate32khz = 0x7D000000,
+  rate22050hz = 0x56220000,
+  rate22khz = 0x56EE8BA3,
+  rate16khz = 0x3E800000,
+  rate11khz = 0x2B7745D1,
+  rate11025hz = 0x2B110000,
+  rate8khz = 0x1F400000
+};
+
+
+enum {
+  sampledSynth = 5
+};
+enum {
+  kMiddleC = 60
+};
+
+enum {
+  kNoVolume = 0,
+  kFullVolume = 0x0100
+};
+
+enum {
+  stdQLength = 128
+};
+
+enum {
+  dataOffsetFlag = 0x8000
+};
+
+enum {
+  kUseOptionalOutputDevice = -1
+};
+
+enum {
+  notCompressed = 0,
+  fixedCompression = -1,
+  variableCompression = -2
+};
+
+enum {
+  twoToOne = 1,
+  eightToThree = 2,
+  threeToOne = 3,
+  sixToOne = 4,
+  sixToOnePacketSize = 8,
+  threeToOnePacketSize = 16
+};
+
+enum {
+  stateBlockSize = 64,
+  leftOverBlockSize = 32
+};
+
+enum {
+  firstSoundFormat = 0x0001,
+  secondSoundFormat = 0x0002
+};
+enum {
+  sysBeepDisable = 0x0000,
+  sysBeepEnable = (1 << 0),
+  sysBeepSynchronous = (1 << 1)
+};
+
+enum {
+  unitTypeNoSelection = 0xFFFF,
+  unitTypeSeconds = 0x0000
+};
+
+enum {
+  stdSH = 0x00,
+  extSH = 0xFF,
+  cmpSH = 0xFE
+};
+
+
+enum {
+  nullCmd = 0,
+  quietCmd = 3,
+  flushCmd = 4,
+  reInitCmd = 5,
+  waitCmd = 10,
+  pauseCmd = 11,
+  resumeCmd = 12,
+  callBackCmd = 13,
+  syncCmd = 14,
+  availableCmd = 24,
+  versionCmd = 25,
+  volumeCmd = 46,
+  getVolumeCmd = 47,
+  clockComponentCmd = 50,
+  getClockComponentCmd = 51,
+  scheduledSoundCmd = 52,
+  linkSoundComponentsCmd = 53,
+  soundCmd = 80,
+  bufferCmd = 81,
+  rateMultiplierCmd = 86,
+  getRateMultiplierCmd = 87
+};
+enum {
+  initChanLeft = 0x0002,
+  initChanRight = 0x0003,
+  initNoInterp = 0x0004,
+  initNoDrop = 0x0008,
+  initMono = 0x0080,
+  initStereo = 0x00C0,
+  initMACE3 = 0x0300,
+  initMACE6 = 0x0400,
+  initPanMask = 0x0003,
+  initSRateMask = 0x0030,
+  initStereoMask = 0x00C0,
+  initCompMask = 0xFF00
+};
+
+
+enum {
+  siActiveChannels = 'chac',
+  siActiveLevels = 'lmac',
+  siAGCOnOff = 'agc ',
+  siAsync = 'asyn',
+  siAVDisplayBehavior = 'avdb',
+  siChannelAvailable = 'chav',
+  siCompressionAvailable = 'cmav',
+  siCompressionFactor = 'cmfa',
+  siCompressionHeader = 'cmhd',
+  siCompressionNames = 'cnam',
+  siCompressionParams = 'evaw',
+  siCompressionSampleRate = 'cprt',
+  siCompressionChannels = 'cpct',
+  siCompressionOutputSampleRate = 'cort',
+  siCompressionInputRateList = 'crtl',
+  siCompressionType = 'comp',
+  siCompressionConfiguration = 'ccfg',
+  siContinuous = 'cont',
+  siDecompressionParams = 'wave',
+  siDecompressionConfiguration = 'dcfg',
+  siDeviceBufferInfo = 'dbin',
+  siDeviceConnected = 'dcon',
+  siDeviceIcon = 'icon',
+  siDeviceName = 'name',
+  siEQSpectrumBands = 'eqsb',
+  siEQSpectrumLevels = 'eqlv',
+  siEQSpectrumOnOff = 'eqlo',
+  siEQSpectrumResolution = 'eqrs',
+  siEQToneControlGain = 'eqtg',
+  siEQToneControlOnOff = 'eqtc',
+  siHardwareBalance = 'hbal',
+  siHardwareBalanceSteps = 'hbls',
+  siHardwareBass = 'hbas',
+  siHardwareBassSteps = 'hbst',
+  siHardwareBusy = 'hwbs',
+  siHardwareFormat = 'hwfm',
+  siHardwareMute = 'hmut',
+  siHardwareMuteNoPrefs = 'hmnp',
+  siHardwareTreble = 'htrb',
+  siHardwareTrebleSteps = 'hwts',
+  siHardwareVolume = 'hvol',
+  siHardwareVolumeSteps = 'hstp',
+  siHeadphoneMute = 'pmut',
+  siHeadphoneVolume = 'pvol',
+  siHeadphoneVolumeSteps = 'hdst',
+  siInputAvailable = 'inav',
+  siInputGain = 'gain',
+  siInputSource = 'sour',
+  siInputSourceNames = 'snam',
+  siLevelMeterOnOff = 'lmet',
+  siModemGain = 'mgai',
+  siMonitorAvailable = 'mnav',
+  siMonitorSource = 'mons',
+  siNumberChannels = 'chan',
+  siOptionsDialog = 'optd',
+  siOSTypeInputSource = 'inpt',
+  siOSTypeInputAvailable = 'inav',
+  siOutputDeviceName = 'onam',
+  siPlayThruOnOff = 'plth',
+  siPostMixerSoundComponent = 'psmx',
+  siPreMixerSoundComponent = 'prmx',
+  siQuality = 'qual',
+  siRateMultiplier = 'rmul',
+  siRecordingQuality = 'qual',
+  siSampleRate = 'srat',
+  siSampleRateAvailable = 'srav',
+  siSampleSize = 'ssiz',
+  siSampleSizeAvailable = 'ssav',
+  siSetupCDAudio = 'sucd',
+  siSetupModemAudio = 'sumd',
+  siSlopeAndIntercept = 'flap',
+  siSoundClock = 'sclk',
+  siUseThisSoundClock = 'sclc',
+  siSpeakerMute = 'smut',
+  siSpeakerVolume = 'svol',
+  siSSpCPULoadLimit = '3dll',
+  siSSpLocalization = '3dif',
+  siSSpSpeakerSetup = '3dst',
+  siStereoInputGain = 'sgai',
+  siSubwooferMute = 'bmut',
+  siTerminalType = 'ttyp',
+  siTwosComplementOnOff = 'twos',
+  siVendorProduct = 'vpro',
+  siVolume = 'volu',
+  siVoxRecordInfo = 'voxr',
+  siVoxStopInfo = 'voxs',
+  siWideStereo = 'wide',
+  siSupportedExtendedFlags = 'exfl',
+  siRateConverterRollOffSlope = 'rcdb',
+  siOutputLatency = 'olte',
+  siHALAudioDeviceID = 'hlid',
+  siHALAudioDeviceUniqueID = 'huid',
+  siClientAcceptsVBR = 'cvbr',
+  siSourceIsExhausted = 'srcx',
+  siMediaContextID = 'uuid',
+  siCompressionMaxPacketSize = 'cmxp'
+};
+
+enum {
+  siCloseDriver = 'clos',
+  siInitializeDriver = 'init',
+  siPauseRecording = 'paus',
+  siUserInterruptProc = 'user'
+};
+
+
+enum {
+  kInvalidSource = (long)0xFFFFFFFF,
+  kNoSource = 'none',
+  kCDSource = 'cd  ',
+  kExtMicSource = 'emic',
+  kSoundInSource = 'sinj',
+  kRCAInSource = 'irca',
+  kTVFMTunerSource = 'tvfm',
+  kDAVInSource = 'idav',
+  kIntMicSource = 'imic',
+  kMediaBaySource = 'mbay',
+  kModemSource = 'modm',
+  kPCCardSource = 'pcm ',
+  kZoomVideoSource = 'zvpc',
+  kDVDSource = 'dvda',
+  kMicrophoneArray = 'mica'
+};
+
+
+enum {
+  kNoSoundComponentType = '****',
+  kSoundComponentType = 'sift',
+  kSoundComponentPPCType = 'nift',
+  kRate8SubType = 'ratb',
+  kRate16SubType = 'ratw',
+  kConverterSubType = 'conv',
+  kSndSourceSubType = 'sour',
+  kMixerType = 'mixr',
+  kMixer8SubType = 'mixb',
+  kMixer16SubType = 'mixw',
+  kSoundInputDeviceType = 'sinp',
+  kWaveInSubType = 'wavi',
+  kWaveInSnifferSubType = 'wisn',
+  kSoundOutputDeviceType = 'sdev',
+  kClassicSubType = 'clas',
+  kASCSubType = 'asc ',
+  kDSPSubType = 'dsp ',
+  kAwacsSubType = 'awac',
+  kGCAwacsSubType = 'awgc',
+  kSingerSubType = 'sing',
+  kSinger2SubType = 'sng2',
+  kWhitSubType = 'whit',
+  kSoundBlasterSubType = 'sbls',
+  kWaveOutSubType = 'wavo',
+  kWaveOutSnifferSubType = 'wosn',
+  kDirectSoundSubType = 'dsnd',
+  kDirectSoundSnifferSubType = 'dssn',
+  kUNIXsdevSubType = 'un1x',
+  kUSBSubType = 'usb ',
+  kBlueBoxSubType = 'bsnd',
+  kHALCustomComponentSubType = 'halx',
+  kSoundCompressor = 'scom',
+  kSoundDecompressor = 'sdec',
+  kAudioComponentType = 'adio',
+  kAwacsPhoneSubType = 'hphn',
+  kAudioVisionSpeakerSubType = 'telc',
+  kAudioVisionHeadphoneSubType = 'telh',
+  kPhilipsFaderSubType = 'tvav',
+  kSGSToneSubType = 'sgs0',
+  kSoundEffectsType = 'snfx',
+  kEqualizerSubType = 'eqal',
+  kSSpLocalizationSubType = 'snd3'
+};
+
+
+enum {
+  kSoundNotCompressed = 'NONE',
+  k8BitOffsetBinaryFormat = 'raw ',
+  k16BitBigEndianFormat = 'twos',
+  k16BitLittleEndianFormat = 'sowt',
+  kFloat32Format = 'fl32',
+  kFloat64Format = 'fl64',
+  k24BitFormat = 'in24',
+  k32BitFormat = 'in32',
+  k32BitLittleEndianFormat = '23ni',
+  kMACE3Compression = 'MAC3',
+  kMACE6Compression = 'MAC6',
+  kCDXA4Compression = 'cdx4',
+  kCDXA2Compression = 'cdx2',
+  kIMACompression = 'ima4',
+  kULawCompression = 'ulaw',
+  kALawCompression = 'alaw',
+  kMicrosoftADPCMFormat = 0x6D730002,
+  kDVIIntelIMAFormat = 0x6D730011,
+  kDVAudioFormat = 'dvca',
+  kQDesignCompression = 'QDMC',
+  kQDesign2Compression = 'QDM2',
+  kQUALCOMMCompression = 'Qclp',
+  kOffsetBinary = k8BitOffsetBinaryFormat,
+  kTwosComplement = k16BitBigEndianFormat,
+  kLittleEndianFormat = k16BitLittleEndianFormat,
+  kMPEGLayer3Format = 0x6D730055,
+  kFullMPEGLay3Format = '.mp3'
+};
+enum {
+  k16BitNativeEndianFormat = k16BitBigEndianFormat,
+  k16BitNonNativeEndianFormat = k16BitLittleEndianFormat
+};
+
+
+
+
+enum {
+  k8BitRawIn = (1 << 0),
+  k8BitTwosIn = (1 << 1),
+  k16BitIn = (1 << 2),
+  kStereoIn = (1 << 3),
+  k8BitRawOut = (1 << 8),
+  k8BitTwosOut = (1 << 9),
+  k16BitOut = (1 << 10),
+  kStereoOut = (1 << 11),
+  kReverse = (1L << 16),
+  kRateConvert = (1L << 17),
+  kCreateSoundSource = (1L << 18),
+  kVMAwareness = (1L << 21),
+  kHighQuality = (1L << 22),
+  kNonRealTime = (1L << 23)
+};
+
+
+enum {
+  kSoundCodecInfoFixedCompression = (1L << 0),
+  kSoundCodecInfoVariableCompression = (1L << 1),
+  kSoundCodecInfoHasRestrictedInputRates = (1L << 2),
+  kSoundCodecInfoCanChangeOutputRate = (1L << 3),
+  kSoundCodecInfoRequiresExternalFraming = (1L << 4)
+};
+
+
+enum {
+  kSourcePaused = (1 << 0),
+  kPassThrough = (1L << 16),
+  kNoSoundComponentChain = (1L << 17)
+};
+
+
+enum {
+  kNoMixing = (1 << 0),
+  kNoSampleRateConversion = (1 << 1),
+  kNoSampleSizeConversion = (1 << 2),
+  kNoSampleFormatConversion = (1 << 3),
+  kNoChannelConversion = (1 << 4),
+  kNoDecompression = (1 << 5),
+  kNoVolumeConversion = (1 << 6),
+  kNoRealtimeProcessing = (1 << 7),
+  kScheduledSource = (1 << 8),
+  kNonInterleavedBuffer = (1 << 9),
+  kNonPagingMixer = (1 << 10),
+  kSoundConverterMixer = (1 << 11),
+  kPagingMixer = (1 << 12),
+  kVMAwareMixer = (1 << 13),
+  kExtendedSoundData = (1 << 14)
+};
+
+
+enum {
+  kBestQuality = (1 << 0)
+};
+
+
+enum {
+  kInputMask = 0x000000FF,
+  kOutputMask = 0x0000FF00,
+  kOutputShift = 8,
+  kActionMask = 0x00FF0000,
+  kSoundComponentBits = 0x00FFFFFF
+};
+
+
+enum {
+  kAudioFormatAtomType = 'frma',
+  kAudioEndianAtomType = 'enda',
+  kAudioVBRAtomType = 'vbra',
+  kAudioTerminatorAtomType = 0
+};
+
+
+enum {
+  kAVDisplayHeadphoneRemove = 0,
+  kAVDisplayHeadphoneInsert = 1,
+  kAVDisplayPlainTalkRemove = 2,
+  kAVDisplayPlainTalkInsert = 3
+};
+
+
+enum {
+
+  audioAllChannels = 0,
+  audioLeftChannel = 1,
+  audioRightChannel = 2,
+
+  audioUnmuted = 0,
+  audioMuted = 1,
+
+  audioDoesMono = (1L << 0),
+  audioDoesStereo = (1L << 1),
+  audioDoesIndependentChannels = (1L << 2)
+};
+
+
+enum {
+  siCDQuality = 'cd  ',
+  siBestQuality = 'best',
+  siBetterQuality = 'betr',
+  siGoodQuality = 'good',
+  siNoneQuality = 'none'
+};
+
+enum {
+  siDeviceIsConnected = 1,
+  siDeviceNotConnected = 0,
+  siDontKnowIfConnected = -1,
+  siReadPermission = 0,
+  siWritePermission = 1
+};
+
+
+enum {
+  kSoundConverterDidntFillBuffer = (1 << 0),
+  kSoundConverterHasLeftOverData = (1 << 1)
+};
+
+
+enum {
+  kExtendedSoundSampleCountNotValid = 1L << 0,
+  kExtendedSoundBufferSizeValid = 1L << 1,
+  kExtendedSoundFrameSizesValid = 1L << 2,
+  kExtendedSoundCommonFrameSizeValid = 1L << 3,
+  kExtendedSoundExtensionsValid = 1L << 4,
+  kExtendedSoundBufferFlagsValid = 1L << 5
+};
+
+
+enum {
+  kExtendedSoundBufferIsDiscontinuous = 1L << 0,
+  kExtendedSoundBufferIsFirstBuffer = 1L << 1
+};
+
+
+
+
+
+
+
+struct SndCommand {
+  unsigned short cmd;
+  short param1;
+  long param2;
+};
+typedef struct SndCommand SndCommand;
+typedef struct SndChannel SndChannel;
+
+typedef SndChannel * SndChannelPtr;
+typedef void ( * SndCallBackProcPtr)(SndChannelPtr chan, SndCommand *cmd);
+typedef SndCallBackProcPtr SndCallBackUPP;
+struct SndChannel {
+  SndChannelPtr nextChan;
+  Ptr firstMod;
+  SndCallBackUPP callBack;
+  long userInfo;
+  long wait;
+  SndCommand cmdInProgress;
+  short flags;
+  short qLength;
+  short qHead;
+  short qTail;
+  SndCommand queue[128];
+};
+extern SndCallBackUPP
+NewSndCallBackUPP(SndCallBackProcPtr userRoutine) ;
+extern void
+DisposeSndCallBackUPP(SndCallBackUPP userUPP) ;
+extern void
+InvokeSndCallBackUPP(
+  SndChannelPtr chan,
+  SndCommand * cmd,
+  SndCallBackUPP userUPP) ;
+
+
+struct StateBlock {
+  short stateVar[64];
+};
+typedef struct StateBlock StateBlock;
+typedef StateBlock * StateBlockPtr;
+struct LeftOverBlock {
+  unsigned long count;
+  SInt8 sampleArea[32];
+};
+typedef struct LeftOverBlock LeftOverBlock;
+typedef LeftOverBlock * LeftOverBlockPtr;
+struct ModRef {
+  unsigned short modNumber;
+  long modInit;
+};
+typedef struct ModRef ModRef;
+struct SndListResource {
+  short format;
+  short numModifiers;
+  ModRef modifierPart[1];
+  short numCommands;
+  SndCommand commandPart[1];
+  UInt8 dataPart[1];
+};
+typedef struct SndListResource SndListResource;
+typedef SndListResource * SndListPtr;
+typedef SndListPtr * SndListHandle;
+typedef SndListHandle SndListHndl;
+
+struct Snd2ListResource {
+  short format;
+  short refCount;
+  short numCommands;
+  SndCommand commandPart[1];
+  UInt8 dataPart[1];
+};
+typedef struct Snd2ListResource Snd2ListResource;
+typedef Snd2ListResource * Snd2ListPtr;
+typedef Snd2ListPtr * Snd2ListHandle;
+typedef Snd2ListHandle Snd2ListHndl;
+struct SoundHeader {
+  Ptr samplePtr;
+  unsigned long length;
+  UnsignedFixed sampleRate;
+  unsigned long loopStart;
+  unsigned long loopEnd;
+  UInt8 encode;
+  UInt8 baseFrequency;
+  UInt8 sampleArea[1];
+};
+typedef struct SoundHeader SoundHeader;
+typedef SoundHeader * SoundHeaderPtr;
+struct CmpSoundHeader {
+  Ptr samplePtr;
+  unsigned long numChannels;
+  UnsignedFixed sampleRate;
+  unsigned long loopStart;
+  unsigned long loopEnd;
+  UInt8 encode;
+  UInt8 baseFrequency;
+  unsigned long numFrames;
+  extended80 AIFFSampleRate;
+  Ptr markerChunk;
+  OSType format;
+  unsigned long futureUse2;
+  StateBlockPtr stateVars;
+  LeftOverBlockPtr leftOverSamples;
+  short compressionID;
+  unsigned short packetSize;
+  unsigned short snthID;
+  unsigned short sampleSize;
+  UInt8 sampleArea[1];
+};
+typedef struct CmpSoundHeader CmpSoundHeader;
+typedef CmpSoundHeader * CmpSoundHeaderPtr;
+struct ExtSoundHeader {
+  Ptr samplePtr;
+  unsigned long numChannels;
+  UnsignedFixed sampleRate;
+  unsigned long loopStart;
+  unsigned long loopEnd;
+  UInt8 encode;
+  UInt8 baseFrequency;
+  unsigned long numFrames;
+  extended80 AIFFSampleRate;
+  Ptr markerChunk;
+  Ptr instrumentChunks;
+  Ptr AESRecording;
+  unsigned short sampleSize;
+  unsigned short futureUse1;
+  unsigned long futureUse2;
+  unsigned long futureUse3;
+  unsigned long futureUse4;
+  UInt8 sampleArea[1];
+};
+typedef struct ExtSoundHeader ExtSoundHeader;
+typedef ExtSoundHeader * ExtSoundHeaderPtr;
+union SoundHeaderUnion {
+  SoundHeader stdHeader;
+  CmpSoundHeader cmpHeader;
+  ExtSoundHeader extHeader;
+};
+typedef union SoundHeaderUnion SoundHeaderUnion;
+struct ConversionBlock {
+  short destination;
+  short unused;
+  CmpSoundHeaderPtr inputPtr;
+  CmpSoundHeaderPtr outputPtr;
+};
+typedef struct ConversionBlock ConversionBlock;
+typedef ConversionBlock * ConversionBlockPtr;
+
+enum {
+  kScheduledSoundDoScheduled = 1 << 0,
+  kScheduledSoundDoCallBack = 1 << 1,
+  kScheduledSoundExtendedHdr = 1 << 2
+};
+
+struct ScheduledSoundHeader {
+  SoundHeaderUnion u;
+  long flags;
+  short reserved;
+  short callBackParam1;
+  long callBackParam2;
+  TimeRecord startTime;
+};
+typedef struct ScheduledSoundHeader ScheduledSoundHeader;
+typedef ScheduledSoundHeader * ScheduledSoundHeaderPtr;
+struct ExtendedScheduledSoundHeader {
+  SoundHeaderUnion u;
+  long flags;
+  short reserved;
+  short callBackParam1;
+  long callBackParam2;
+  TimeRecord startTime;
+  long recordSize;
+  long extendedFlags;
+  long bufferSize;
+  long frameCount;
+  long * frameSizesArray;
+  long commonFrameSize;
+  void * extensionsPtr;
+  long extensionsSize;
+  unsigned long bufferFlags;
+  unsigned long bufferFlagsMask;
+};
+typedef struct ExtendedScheduledSoundHeader ExtendedScheduledSoundHeader;
+typedef ExtendedScheduledSoundHeader * ExtendedScheduledSoundHeaderPtr;
+struct SMStatus {
+  short smMaxCPULoad;
+  short smNumChannels;
+  short smCurCPULoad;
+};
+typedef struct SMStatus SMStatus;
+typedef SMStatus * SMStatusPtr;
+struct SCStatus {
+  UnsignedFixed scStartTime;
+  UnsignedFixed scEndTime;
+  UnsignedFixed scCurrentTime;
+  Boolean scChannelBusy;
+  Boolean scChannelDisposed;
+  Boolean scChannelPaused;
+  Boolean scUnused;
+  unsigned long scChannelAttributes;
+  long scCPULoad;
+};
+typedef struct SCStatus SCStatus;
+typedef SCStatus * SCStatusPtr;
+struct AudioSelection {
+  long unitType;
+  UnsignedFixed selStart;
+  UnsignedFixed selEnd;
+};
+typedef struct AudioSelection AudioSelection;
+typedef AudioSelection * AudioSelectionPtr;
+struct SoundInfoList {
+  short count;
+  Handle infoHandle;
+};
+typedef struct SoundInfoList SoundInfoList;
+typedef SoundInfoList * SoundInfoListPtr;
+struct SoundComponentData {
+  long flags;
+  OSType format;
+  short numChannels;
+  short sampleSize;
+  UnsignedFixed sampleRate;
+  long sampleCount;
+  Byte * buffer;
+  long reserved;
+};
+typedef struct SoundComponentData SoundComponentData;
+typedef SoundComponentData * SoundComponentDataPtr;
+struct ExtendedSoundComponentData {
+  SoundComponentData desc;
+  long recordSize;
+  long extendedFlags;
+  long bufferSize;
+  long frameCount;
+  long * frameSizesArray;
+  long commonFrameSize;
+  void * extensionsPtr;
+  long extensionsSize;
+  unsigned long bufferFlags;
+  unsigned long bufferFlagsMask;
+};
+typedef struct ExtendedSoundComponentData ExtendedSoundComponentData;
+typedef ExtendedSoundComponentData * ExtendedSoundComponentDataPtr;
+typedef struct SoundParamBlock SoundParamBlock;
+typedef SoundParamBlock * SoundParamBlockPtr;
+typedef Boolean ( * SoundParamProcPtr)(SoundParamBlockPtr * pb);
+typedef SoundParamProcPtr SoundParamUPP;
+struct SoundParamBlock {
+  long recordSize;
+  SoundComponentData desc;
+  UnsignedFixed rateMultiplier;
+  short leftVolume;
+  short rightVolume;
+  long quality;
+  ComponentInstance filter;
+  SoundParamUPP moreRtn;
+  SoundParamUPP completionRtn;
+  long refCon;
+  short result;
+};
+
+struct ExtendedSoundParamBlock {
+  SoundParamBlock pb;
+  short reserved;
+  long extendedFlags;
+  long bufferSize;
+  long frameCount;
+  long * frameSizesArray;
+  long commonFrameSize;
+  void * extensionsPtr;
+  long extensionsSize;
+  unsigned long bufferFlags;
+  unsigned long bufferFlagsMask;
+};
+typedef struct ExtendedSoundParamBlock ExtendedSoundParamBlock;
+typedef ExtendedSoundParamBlock * ExtendedSoundParamBlockPtr;
+struct CompressionInfo {
+  long recordSize;
+  OSType format;
+  short compressionID;
+  unsigned short samplesPerPacket;
+  unsigned short bytesPerPacket;
+  unsigned short bytesPerFrame;
+  unsigned short bytesPerSample;
+  unsigned short futureUse1;
+};
+typedef struct CompressionInfo CompressionInfo;
+typedef CompressionInfo * CompressionInfoPtr;
+typedef CompressionInfoPtr * CompressionInfoHandle;
+
+struct SoundSlopeAndInterceptRecord {
+  Float64 slope;
+  Float64 intercept;
+  Float64 minClip;
+  Float64 maxClip;
+};
+typedef struct SoundSlopeAndInterceptRecord SoundSlopeAndInterceptRecord;
+typedef SoundSlopeAndInterceptRecord * SoundSlopeAndInterceptPtr;
+
+typedef struct OpaqueSoundConverter* SoundConverter;
+
+typedef Boolean ( * SoundConverterFillBufferDataProcPtr)(SoundComponentDataPtr *data, void *refCon);
+typedef SoundConverterFillBufferDataProcPtr SoundConverterFillBufferDataUPP;
+
+typedef struct OpaqueSoundSource* SoundSource;
+typedef SoundSource * SoundSourcePtr;
+
+
+struct SoundComponentLink {
+  ComponentDescription description;
+  SoundSource mixerID;
+  SoundSource * linkID;
+};
+typedef struct SoundComponentLink SoundComponentLink;
+typedef SoundComponentLink * SoundComponentLinkPtr;
+struct AudioInfo {
+  long capabilitiesFlags;
+  long reserved;
+  unsigned short numVolumeSteps;
+};
+typedef struct AudioInfo AudioInfo;
+typedef AudioInfo * AudioInfoPtr;
+struct AudioFormatAtom {
+  long size;
+  OSType atomType;
+  OSType format;
+};
+typedef struct AudioFormatAtom AudioFormatAtom;
+typedef AudioFormatAtom * AudioFormatAtomPtr;
+struct AudioEndianAtom {
+  long size;
+  OSType atomType;
+  short littleEndian;
+};
+typedef struct AudioEndianAtom AudioEndianAtom;
+typedef AudioEndianAtom * AudioEndianAtomPtr;
+struct AudioTerminatorAtom {
+  long size;
+  OSType atomType;
+};
+typedef struct AudioTerminatorAtom AudioTerminatorAtom;
+typedef AudioTerminatorAtom * AudioTerminatorAtomPtr;
+struct LevelMeterInfo {
+  short numChannels;
+  UInt8 leftMeter;
+  UInt8 rightMeter;
+};
+typedef struct LevelMeterInfo LevelMeterInfo;
+typedef LevelMeterInfo * LevelMeterInfoPtr;
+struct EQSpectrumBandsRecord {
+  short count;
+  UnsignedFixedPtr frequency;
+};
+typedef struct EQSpectrumBandsRecord EQSpectrumBandsRecord;
+typedef EQSpectrumBandsRecord * EQSpectrumBandsRecordPtr;
+
+
+
+typedef struct SPB SPB;
+typedef SPB * SPBPtr;
+
+
+
+typedef void ( * SIInterruptProcPtr)(SPBPtr inParamPtr, Ptr dataBuffer, short peakAmplitude, long sampleSize);
+typedef void ( * SICompletionProcPtr)(SPBPtr inParamPtr);
+typedef SIInterruptProcPtr SIInterruptUPP;
+typedef SICompletionProcPtr SICompletionUPP;
+
+
+
+struct SPB {
+  long inRefNum;
+  unsigned long count;
+  unsigned long milliseconds;
+  unsigned long bufferLength;
+  Ptr bufferPtr;
+  SICompletionUPP completionRoutine;
+  SIInterruptUPP interruptRoutine;
+  long userLong;
+  OSErr error;
+  long unused1;
+};
+extern SoundParamUPP
+NewSoundParamUPP(SoundParamProcPtr userRoutine) ;
+extern SoundConverterFillBufferDataUPP
+NewSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataProcPtr userRoutine) ;
+extern SIInterruptUPP
+NewSIInterruptUPP(SIInterruptProcPtr userRoutine) ;
+extern SICompletionUPP
+NewSICompletionUPP(SICompletionProcPtr userRoutine) ;
+extern void
+DisposeSoundParamUPP(SoundParamUPP userUPP) ;
+extern void
+DisposeSoundConverterFillBufferDataUPP(SoundConverterFillBufferDataUPP userUPP) ;
+extern void
+DisposeSIInterruptUPP(SIInterruptUPP userUPP) ;
+extern void
+DisposeSICompletionUPP(SICompletionUPP userUPP) ;
+extern Boolean
+InvokeSoundParamUPP(
+  SoundParamBlockPtr * pb,
+  SoundParamUPP userUPP) ;
+extern Boolean
+InvokeSoundConverterFillBufferDataUPP(
+  SoundComponentDataPtr * data,
+  void * refCon,
+  SoundConverterFillBufferDataUPP userUPP) ;
+extern void
+InvokeSIInterruptUPP(
+  SPBPtr inParamPtr,
+  Ptr dataBuffer,
+  short peakAmplitude,
+  long sampleSize,
+  SIInterruptUPP userUPP) ;
+extern void
+InvokeSICompletionUPP(
+  SPBPtr inParamPtr,
+  SICompletionUPP userUPP) ;
+
+typedef void ( * FilePlayCompletionProcPtr)(SndChannelPtr chan);
+typedef FilePlayCompletionProcPtr FilePlayCompletionUPP;
+extern void
+SysBeep(short duration) ;
+extern OSErr
+SndDoCommand(
+  SndChannelPtr chan,
+  const SndCommand * cmd,
+  Boolean noWait) ;
+extern OSErr
+SndDoImmediate(
+  SndChannelPtr chan,
+  const SndCommand * cmd) ;
+extern OSErr
+SndNewChannel(
+  SndChannelPtr * chan,
+  short synth,
+  long init,
+  SndCallBackUPP userRoutine) ;
+extern OSErr
+SndDisposeChannel(
+  SndChannelPtr chan,
+  Boolean quietNow) ;
+extern OSErr
+SndPlay(
+  SndChannelPtr chan,
+  SndListHandle sndHandle,
+  Boolean async) ;
+extern NumVersion
+SndSoundManagerVersion(void) ;
+extern OSErr
+SndChannelStatus(
+  SndChannelPtr chan,
+  short theLength,
+  SCStatusPtr theStatus) ;
+extern OSErr
+SndManagerStatus(
+  short theLength,
+  SMStatusPtr theStatus) ;
+extern void
+SndGetSysBeepState(short * sysBeepState) ;
+extern OSErr
+SndSetSysBeepState(short sysBeepState) ;
+extern OSErr
+GetSysBeepVolume(long * level) ;
+extern OSErr
+SetSysBeepVolume(long level) ;
+extern OSErr
+GetDefaultOutputVolume(long * level) ;
+extern OSErr
+SetDefaultOutputVolume(long level) ;
+extern OSErr
+GetSoundHeaderOffset(
+  SndListHandle sndHandle,
+  long * offset) ;
+extern UnsignedFixed
+UnsignedFixedMulDiv(
+  UnsignedFixed value,
+  UnsignedFixed multiplier,
+  UnsignedFixed divisor);
+extern OSErr
+GetCompressionInfo(
+  short compressionID,
+  OSType format,
+  short numChannels,
+  short sampleSize,
+  CompressionInfoPtr cp) ;
+extern OSErr
+SetSoundPreference(
+  OSType theType,
+  Str255 name,
+  Handle settings) ;
+extern OSErr
+GetSoundPreference(
+  OSType theType,
+  Str255 name,
+  Handle settings) ;
+extern OSErr
+OpenMixerSoundComponent(
+  SoundComponentDataPtr outputDescription,
+  long outputFlags,
+  ComponentInstance * mixerComponent) ;
+extern OSErr
+CloseMixerSoundComponent(ComponentInstance ci) ;
+extern OSErr
+SndGetInfo(
+  SndChannelPtr chan,
+  OSType selector,
+  void * infoPtr) ;
+extern OSErr
+SndSetInfo(
+  SndChannelPtr chan,
+  OSType selector,
+  const void * infoPtr) ;
+extern OSErr
+GetSoundOutputInfo(
+  Component outputDevice,
+  OSType selector,
+  void * infoPtr) ;
+extern OSErr
+SetSoundOutputInfo(
+  Component outputDevice,
+  OSType selector,
+  const void * infoPtr) ;
+extern OSErr
+GetCompressionName(
+  OSType compressionType,
+  Str255 compressionName) ;
+extern OSErr
+SoundConverterOpen(
+  const SoundComponentData * inputFormat,
+  const SoundComponentData * outputFormat,
+  SoundConverter * sc) ;
+extern OSErr
+SoundConverterClose(SoundConverter sc) ;
+extern OSErr
+SoundConverterGetBufferSizes(
+  SoundConverter sc,
+  unsigned long inputBytesTarget,
+  unsigned long * inputFrames,
+  unsigned long * inputBytes,
+  unsigned long * outputBytes) ;
+extern OSErr
+SoundConverterBeginConversion(SoundConverter sc) ;
+extern OSErr
+SoundConverterConvertBuffer(
+  SoundConverter sc,
+  const void * inputPtr,
+  unsigned long inputFrames,
+  void * outputPtr,
+  unsigned long * outputFrames,
+  unsigned long * outputBytes) ;
+extern OSErr
+SoundConverterEndConversion(
+  SoundConverter sc,
+  void * outputPtr,
+  unsigned long * outputFrames,
+  unsigned long * outputBytes) ;
+extern OSErr
+SoundConverterGetInfo(
+  SoundConverter sc,
+  OSType selector,
+  void * infoPtr) ;
+extern OSErr
+SoundConverterSetInfo(
+  SoundConverter sc,
+  OSType selector,
+  void * infoPtr) ;
+extern OSErr
+SoundConverterFillBuffer(
+  SoundConverter sc,
+  SoundConverterFillBufferDataUPP fillBufferDataUPP,
+  void * fillBufferDataRefCon,
+  void * outputBuffer,
+  unsigned long outputBufferByteSize,
+  unsigned long * bytesWritten,
+  unsigned long * framesWritten,
+  unsigned long * outputFlags) ;
+extern OSErr
+SoundManagerGetInfo(
+  OSType selector,
+  void * infoPtr) ;
+extern OSErr
+SoundManagerSetInfo(
+  OSType selector,
+  const void * infoPtr) ;
+extern ComponentResult
+SoundComponentInitOutputDevice(
+  ComponentInstance ti,
+  long actions) ;
+extern ComponentResult
+SoundComponentSetSource(
+  ComponentInstance ti,
+  SoundSource sourceID,
+  ComponentInstance source) ;
+extern ComponentResult
+SoundComponentGetSource(
+  ComponentInstance ti,
+  SoundSource sourceID,
+  ComponentInstance * source) ;
+extern ComponentResult
+SoundComponentGetSourceData(
+  ComponentInstance ti,
+  SoundComponentDataPtr * sourceData) ;
+extern ComponentResult
+SoundComponentSetOutput(
+  ComponentInstance ti,
+  SoundComponentDataPtr requested,
+  SoundComponentDataPtr * actual) ;
+extern ComponentResult
+SoundComponentAddSource(
+  ComponentInstance ti,
+  SoundSource * sourceID) ;
+extern ComponentResult
+SoundComponentRemoveSource(
+  ComponentInstance ti,
+  SoundSource sourceID) ;
+extern ComponentResult
+SoundComponentGetInfo(
+  ComponentInstance ti,
+  SoundSource sourceID,
+  OSType selector,
+  void * infoPtr) ;
+extern ComponentResult
+SoundComponentSetInfo(
+  ComponentInstance ti,
+  SoundSource sourceID,
+  OSType selector,
+  void * infoPtr) ;
+extern ComponentResult
+SoundComponentStartSource(
+  ComponentInstance ti,
+  short count,
+  SoundSource * sources) ;
+extern ComponentResult
+SoundComponentStopSource(
+  ComponentInstance ti,
+  short count,
+  SoundSource * sources) ;
+extern ComponentResult
+SoundComponentPauseSource(
+  ComponentInstance ti,
+  short count,
+  SoundSource * sources) ;
+extern ComponentResult
+SoundComponentPlaySourceBuffer(
+  ComponentInstance ti,
+  SoundSource sourceID,
+  SoundParamBlockPtr pb,
+  long actions) ;
+
+
+
+
+enum {
+    kSoundComponentInitOutputDeviceSelect = 0x0001,
+    kSoundComponentSetSourceSelect = 0x0002,
+    kSoundComponentGetSourceSelect = 0x0003,
+    kSoundComponentGetSourceDataSelect = 0x0004,
+    kSoundComponentSetOutputSelect = 0x0005,
+    kSoundComponentAddSourceSelect = 0x0101,
+    kSoundComponentRemoveSourceSelect = 0x0102,
+    kSoundComponentGetInfoSelect = 0x0103,
+    kSoundComponentSetInfoSelect = 0x0104,
+    kSoundComponentStartSourceSelect = 0x0105,
+    kSoundComponentStopSourceSelect = 0x0106,
+    kSoundComponentPauseSourceSelect = 0x0107,
+    kSoundComponentPlaySourceBufferSelect = 0x0108
+};
+enum {
+  kDelegatedSoundComponentSelectors = 0x0100
+};
+extern NumVersion
+SPBVersion(void) ;
+extern OSErr
+SndRecord(
+  ModalFilterUPP filterProc,
+  Point corner,
+  OSType quality,
+  SndListHandle * sndHandle) ;
+extern OSErr
+SPBSignInDevice(
+  short deviceRefNum,
+  ConstStr255Param deviceName) ;
+extern OSErr
+SPBSignOutDevice(short deviceRefNum) ;
+extern OSErr
+SPBGetIndexedDevice(
+  short count,
+  Str255 deviceName,
+  Handle * deviceIconHandle) ;
+extern OSErr
+SPBOpenDevice(
+  ConstStr255Param deviceName,
+  short permission,
+  long * inRefNum) ;
+extern OSErr
+SPBCloseDevice(long inRefNum) ;
+extern OSErr
+SPBRecord(
+  SPBPtr inParamPtr,
+  Boolean asynchFlag) ;
+extern OSErr
+SPBPauseRecording(long inRefNum) ;
+extern OSErr
+SPBResumeRecording(long inRefNum) ;
+extern OSErr
+SPBStopRecording(long inRefNum) ;
+extern OSErr
+SPBGetRecordingStatus(
+  long inRefNum,
+  short * recordingStatus,
+  short * meterLevel,
+  unsigned long * totalSamplesToRecord,
+  unsigned long * numberOfSamplesRecorded,
+  unsigned long * totalMsecsToRecord,
+  unsigned long * numberOfMsecsRecorded) ;
+extern OSErr
+SPBGetDeviceInfo(
+  long inRefNum,
+  OSType infoType,
+  void * infoData) ;
+extern OSErr
+SPBSetDeviceInfo(
+  long inRefNum,
+  OSType infoType,
+  void * infoData) ;
+extern OSErr
+SPBMillisecondsToBytes(
+  long inRefNum,
+  long * milliseconds) ;
+extern OSErr
+SPBBytesToMilliseconds(
+  long inRefNum,
+  long * byteCount) ;
+extern OSErr
+SetupSndHeader(
+  SndListHandle sndHandle,
+  short numChannels,
+  UnsignedFixed sampleRate,
+  short sampleSize,
+  OSType compressionType,
+  short baseNote,
+  unsigned long numBytes,
+  short * headerLen) ;
+extern OSErr
+SetupAIFFHeader(
+  short fRefNum,
+  short numChannels,
+  UnsignedFixed sampleRate,
+  short sampleSize,
+  OSType compressionType,
+  unsigned long numBytes,
+  unsigned long numFrames) ;
+extern OSErr
+ParseAIFFHeader(
+  short fRefNum,
+  SoundComponentData * sndInfo,
+  unsigned long * numFrames,
+  unsigned long * dataOffset) ;
+extern OSErr
+ParseSndHeader(
+  SndListHandle sndHandle,
+  SoundComponentData * sndInfo,
+  unsigned long * numFrames,
+  unsigned long * dataOffset) ;
+typedef struct SndInputCmpParam SndInputCmpParam;
+typedef SndInputCmpParam * SndInputCmpParamPtr;
+typedef void ( * SICCompletionProcPtr)(SndInputCmpParamPtr SICParmPtr);
+struct SndInputCmpParam {
+  SICCompletionProcPtr ioCompletion;
+  SIInterruptProcPtr ioInterrupt;
+  OSErr ioResult;
+  short pad;
+  unsigned long ioReqCount;
+  unsigned long ioActCount;
+  Ptr ioBuffer;
+  Ptr ioMisc;
+};
+extern ComponentResult
+SndInputReadAsync(
+  ComponentInstance self,
+  SndInputCmpParamPtr SICParmPtr) ;
+extern ComponentResult
+SndInputReadSync(
+  ComponentInstance self,
+  SndInputCmpParamPtr SICParmPtr) ;
+extern ComponentResult
+SndInputPauseRecording(ComponentInstance self) ;
+extern ComponentResult
+SndInputResumeRecording(ComponentInstance self) ;
+extern ComponentResult
+SndInputStopRecording(ComponentInstance self) ;
+extern ComponentResult
+SndInputGetStatus(
+  ComponentInstance self,
+  short * recordingStatus,
+  unsigned long * totalSamplesToRecord,
+  unsigned long * numberOfSamplesRecorded) ;
+extern ComponentResult
+SndInputGetDeviceInfo(
+  ComponentInstance self,
+  OSType infoType,
+  void * infoData) ;
+extern ComponentResult
+SndInputSetDeviceInfo(
+  ComponentInstance self,
+  OSType infoType,
+  void * infoData) ;
+extern ComponentResult
+SndInputInitHardware(ComponentInstance self) ;
+
+
+
+
+enum {
+    kSndInputReadAsyncSelect = 0x0001,
+    kSndInputReadSyncSelect = 0x0002,
+    kSndInputPauseRecordingSelect = 0x0003,
+    kSndInputResumeRecordingSelect = 0x0004,
+    kSndInputStopRecordingSelect = 0x0005,
+    kSndInputGetStatusSelect = 0x0006,
+    kSndInputGetDeviceInfoSelect = 0x0007,
+    kSndInputSetDeviceInfoSelect = 0x0008,
+    kSndInputInitHardwareSelect = 0x0009
+};
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+enum {
+  kOSAComponentType = 'osa '
+};
+
+
+enum {
+  kOSAGenericScriptingComponentSubtype = 'scpt'
+};
+
+
+
+enum {
+  kOSAFileType = 'osas'
+};
+
+
+
+
+
+
+enum {
+  kOSASuite = 'ascr'
+};
+
+
+enum {
+  kOSARecordedText = 'recd'
+};
+
+
+
+enum {
+  kOSAScriptIsModified = 'modi'
+};
+
+
+
+enum {
+  kOSAScriptIsTypeCompiledScript = 'cscr'
+};
+
+
+
+enum {
+  kOSAScriptIsTypeScriptValue = 'valu'
+};
+
+
+
+enum {
+  kOSAScriptIsTypeScriptContext = 'cntx'
+};
+
+
+
+enum {
+  kOSAScriptBestType = 'best'
+};
+
+
+
+
+
+
+
+enum {
+  kOSACanGetSource = 'gsrc'
+};
+
+
+enum {
+  typeOSADialectInfo = 'difo',
+  keyOSADialectName = 'dnam',
+  keyOSADialectCode = 'dcod',
+  keyOSADialectLangCode = 'dlcd',
+  keyOSADialectScriptCode = 'dscd'
+};
+
+typedef ComponentResult OSAError;
+
+typedef unsigned long OSAID;
+
+
+
+
+enum {
+  kOSANullScript = 0L
+};
+
+
+enum {
+  kOSANullMode = 0,
+  kOSAModeNull = 0
+};
+
+
+
+
+
+typedef OSErr ( * OSACreateAppleEventProcPtr)(AEEventClass theAEEventClass, AEEventID theAEEventID, const AEAddressDesc *target, short returnID, long transactionID, AppleEvent *result, long refCon);
+typedef OSErr ( * OSASendProcPtr)(const AppleEvent *theAppleEvent, AppleEvent *reply, AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks, AEIdleUPP idleProc, AEFilterUPP filterProc, long refCon);
+typedef OSACreateAppleEventProcPtr OSACreateAppleEventUPP;
+typedef OSASendProcPtr OSASendUPP;
+extern OSACreateAppleEventUPP
+NewOSACreateAppleEventUPP(OSACreateAppleEventProcPtr userRoutine) ;
+extern OSASendUPP
+NewOSASendUPP(OSASendProcPtr userRoutine) ;
+extern void
+DisposeOSACreateAppleEventUPP(OSACreateAppleEventUPP userUPP) ;
+extern void
+DisposeOSASendUPP(OSASendUPP userUPP) ;
+extern OSErr
+InvokeOSACreateAppleEventUPP(
+  AEEventClass theAEEventClass,
+  AEEventID theAEEventID,
+  const AEAddressDesc * target,
+  short returnID,
+  long transactionID,
+  AppleEvent * result,
+  long refCon,
+  OSACreateAppleEventUPP userUPP) ;
+extern OSErr
+InvokeOSASendUPP(
+  const AppleEvent * theAppleEvent,
+  AppleEvent * reply,
+  AESendMode sendMode,
+  AESendPriority sendPriority,
+  long timeOutInTicks,
+  AEIdleUPP idleProc,
+  AEFilterUPP filterProc,
+  long refCon,
+  OSASendUPP userUPP) ;
+enum {
+  kOSASupportsCompiling = 0x0002,
+  kOSASupportsGetSource = 0x0004,
+  kOSASupportsAECoercion = 0x0008,
+  kOSASupportsAESending = 0x0010,
+  kOSASupportsRecording = 0x0020,
+  kOSASupportsConvenience = 0x0040,
+  kOSASupportsDialects = 0x0080,
+  kOSASupportsEventHandling = 0x0100
+};
+
+
+enum {
+  kOSASelectLoad = 0x0001,
+  kOSASelectStore = 0x0002,
+  kOSASelectExecute = 0x0003,
+  kOSASelectDisplay = 0x0004,
+  kOSASelectScriptError = 0x0005,
+  kOSASelectDispose = 0x0006,
+  kOSASelectSetScriptInfo = 0x0007,
+  kOSASelectGetScriptInfo = 0x0008,
+  kOSASelectSetActiveProc = 0x0009,
+  kOSASelectGetActiveProc = 0x000A
+};
+
+
+enum {
+  kOSASelectScriptingComponentName = 0x0102,
+  kOSASelectCompile = 0x0103,
+  kOSASelectCopyID = 0x0104
+};
+
+enum {
+  kOSASelectCopyScript = 0x0105
+};
+
+
+enum {
+  kOSASelectGetSource = 0x0201
+};
+
+
+enum {
+  kOSASelectCoerceFromDesc = 0x0301,
+  kOSASelectCoerceToDesc = 0x0302
+};
+
+
+enum {
+  kOSASelectSetSendProc = 0x0401,
+  kOSASelectGetSendProc = 0x0402,
+  kOSASelectSetCreateProc = 0x0403,
+  kOSASelectGetCreateProc = 0x0404,
+  kOSASelectSetDefaultTarget = 0x0405
+};
+
+
+enum {
+  kOSASelectStartRecording = 0x0501,
+  kOSASelectStopRecording = 0x0502
+};
+
+
+enum {
+  kOSASelectLoadExecute = 0x0601,
+  kOSASelectCompileExecute = 0x0602,
+  kOSASelectDoScript = 0x0603
+};
+
+
+enum {
+  kOSASelectSetCurrentDialect = 0x0701,
+  kOSASelectGetCurrentDialect = 0x0702,
+  kOSASelectAvailableDialects = 0x0703,
+  kOSASelectGetDialectInfo = 0x0704,
+  kOSASelectAvailableDialectCodeList = 0x0705
+};
+
+
+enum {
+  kOSASelectSetResumeDispatchProc = 0x0801,
+  kOSASelectGetResumeDispatchProc = 0x0802,
+  kOSASelectExecuteEvent = 0x0803,
+  kOSASelectDoEvent = 0x0804,
+  kOSASelectMakeContext = 0x0805
+};
+
+
+enum {
+  kOSADebuggerCreateSession = 0x0901,
+  kOSADebuggerGetSessionState = 0x0902,
+  kOSADebuggerSessionStep = 0x0903,
+  kOSADebuggerDisposeSession = 0x0904,
+  kOSADebuggerGetStatementRanges = 0x0905,
+  kOSADebuggerGetBreakpoint = 0x0910,
+  kOSADebuggerSetBreakpoint = 0x0911,
+  kOSADebuggerGetDefaultBreakpoint = 0x0912,
+  kOSADebuggerGetCurrentCallFrame = 0x0906,
+  kOSADebuggerGetCallFrameState = 0x0907,
+  kOSADebuggerGetVariable = 0x0908,
+  kOSADebuggerSetVariable = 0x0909,
+  kOSADebuggerGetPreviousCallFrame = 0x090A,
+  kOSADebuggerDisposeCallFrame = 0x090B
+};
+
+
+enum {
+  kOSASelectComponentSpecificStart = 0x1001
+};
+enum {
+  kOSAModePreventGetSource = 0x00000001
+};
+enum {
+  kOSAModeNeverInteract = kAENeverInteract,
+  kOSAModeCanInteract = kAECanInteract,
+  kOSAModeAlwaysInteract = kAEAlwaysInteract,
+  kOSAModeDontReconnect = kAEDontReconnect
+};
+enum {
+  kOSAModeCantSwitchLayer = 0x00000040
+};
+enum {
+  kOSAModeDoRecord = 0x00001000
+};
+enum {
+  kOSAModeCompileIntoContext = 0x00000002
+};
+enum {
+  kOSAModeAugmentContext = 0x00000004
+};
+
+
+
+
+
+
+
+enum {
+  kOSAModeDisplayForHumans = 0x00000008
+};
+
+
+
+
+
+
+
+enum {
+  kOSAModeDontStoreParent = 0x00010000
+};
+enum {
+  kOSAModeDispatchToDirectObject = 0x00020000
+};
+
+
+
+
+
+enum {
+  kOSAModeDontGetDataForArguments = 0x00040000
+};
+
+
+
+
+
+
+enum {
+  kOSAModeFullyQualifyDescriptors = 0x00080000
+};
+enum {
+  kOSAScriptResourceType = kOSAGenericScriptingComponentSubtype
+};
+
+
+
+
+
+enum {
+  typeOSAGenericStorage = kOSAScriptResourceType
+};
+extern OSAError
+OSALoad(
+  ComponentInstance scriptingComponent,
+  const AEDesc * scriptData,
+  long modeFlags,
+  OSAID * resultingScriptID) ;
+extern OSAError
+OSAStore(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID,
+  DescType desiredType,
+  long modeFlags,
+  AEDesc * resultingScriptData) ;
+extern OSAError
+OSAExecute(
+  ComponentInstance scriptingComponent,
+  OSAID compiledScriptID,
+  OSAID contextID,
+  long modeFlags,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+OSADisplay(
+  ComponentInstance scriptingComponent,
+  OSAID scriptValueID,
+  DescType desiredType,
+  long modeFlags,
+  AEDesc * resultingText) ;
+extern OSAError
+OSAScriptError(
+  ComponentInstance scriptingComponent,
+  OSType selector,
+  DescType desiredType,
+  AEDesc * resultingErrorDescription) ;
+enum {
+  kOSAErrorNumber = keyErrorNumber
+};
+enum {
+  kOSAErrorMessage = keyErrorString
+};
+enum {
+  kOSAErrorBriefMessage = 'errb'
+};
+enum {
+  kOSAErrorApp = 'erap'
+};
+enum {
+  kOSAErrorPartialResult = 'ptlr'
+};
+enum {
+  kOSAErrorOffendingObject = 'erob'
+};
+
+
+
+
+
+
+enum {
+  kOSAErrorExpectedType = 'errt'
+};
+enum {
+  kOSAErrorRange = 'erng'
+};
+
+
+
+
+
+
+enum {
+  typeOSAErrorRange = 'erng'
+};
+
+
+
+enum {
+  keyOSASourceStart = 'srcs'
+};
+
+
+
+enum {
+  keyOSASourceEnd = 'srce'
+};
+extern OSAError
+OSADispose(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID) ;
+extern OSAError
+OSASetScriptInfo(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID,
+  OSType selector,
+  long value) ;
+extern OSAError
+OSAGetScriptInfo(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID,
+  OSType selector,
+  long * result) ;
+typedef OSErr ( * OSAActiveProcPtr)(long refCon);
+typedef OSAActiveProcPtr OSAActiveUPP;
+extern OSAActiveUPP
+NewOSAActiveUPP(OSAActiveProcPtr userRoutine) ;
+extern void
+DisposeOSAActiveUPP(OSAActiveUPP userUPP) ;
+extern OSErr
+InvokeOSAActiveUPP(
+  long refCon,
+  OSAActiveUPP userUPP) ;
+extern OSAError
+OSASetActiveProc(
+  ComponentInstance scriptingComponent,
+  OSAActiveUPP activeProc,
+  long refCon) ;
+extern OSAError
+OSAGetActiveProc(
+  ComponentInstance scriptingComponent,
+  OSAActiveUPP * activeProc,
+  long * refCon) ;
+extern OSAError
+OSAScriptingComponentName(
+  ComponentInstance scriptingComponent,
+  AEDesc * resultingScriptingComponentName) ;
+extern OSAError
+OSACompile(
+  ComponentInstance scriptingComponent,
+  const AEDesc * sourceData,
+  long modeFlags,
+  OSAID * previousAndResultingScriptID) ;
+extern OSAError
+OSACopyID(
+  ComponentInstance scriptingComponent,
+  OSAID fromID,
+  OSAID * toID) ;
+extern OSAError
+OSAGetSource(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID,
+  DescType desiredType,
+  AEDesc * resultingSourceData) ;
+extern OSAError
+OSACoerceFromDesc(
+  ComponentInstance scriptingComponent,
+  const AEDesc * scriptData,
+  long modeFlags,
+  OSAID * resultingScriptID) ;
+extern OSAError
+OSACoerceToDesc(
+  ComponentInstance scriptingComponent,
+  OSAID scriptID,
+  DescType desiredType,
+  long modeFlags,
+  AEDesc * result) ;
+extern OSAError
+OSASetSendProc(
+  ComponentInstance scriptingComponent,
+  OSASendUPP sendProc,
+  long refCon) ;
+extern OSAError
+OSAGetSendProc(
+  ComponentInstance scriptingComponent,
+  OSASendUPP * sendProc,
+  long * refCon) ;
+extern OSAError
+OSASetCreateProc(
+  ComponentInstance scriptingComponent,
+  OSACreateAppleEventUPP createProc,
+  long refCon) ;
+extern OSAError
+OSAGetCreateProc(
+  ComponentInstance scriptingComponent,
+  OSACreateAppleEventUPP * createProc,
+  long * refCon) ;
+extern OSAError
+OSASetDefaultTarget(
+  ComponentInstance scriptingComponent,
+  const AEAddressDesc * target) ;
+extern OSAError
+OSAStartRecording(
+  ComponentInstance scriptingComponent,
+  OSAID * compiledScriptToModifyID) ;
+extern OSAError
+OSAStopRecording(
+  ComponentInstance scriptingComponent,
+  OSAID compiledScriptID) ;
+extern OSAError
+OSALoadExecute(
+  ComponentInstance scriptingComponent,
+  const AEDesc * scriptData,
+  OSAID contextID,
+  long modeFlags,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+OSACompileExecute(
+  ComponentInstance scriptingComponent,
+  const AEDesc * sourceData,
+  OSAID contextID,
+  long modeFlags,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+OSADoScript(
+  ComponentInstance scriptingComponent,
+  const AEDesc * sourceData,
+  OSAID contextID,
+  DescType desiredType,
+  long modeFlags,
+  AEDesc * resultingText) ;
+extern OSAError
+OSASetCurrentDialect(
+  ComponentInstance scriptingComponent,
+  short dialectCode) ;
+extern OSAError
+OSAGetCurrentDialect(
+  ComponentInstance scriptingComponent,
+  short * resultingDialectCode) ;
+extern OSAError
+OSAAvailableDialects(
+  ComponentInstance scriptingComponent,
+  AEDesc * resultingDialectInfoList) ;
+extern OSAError
+OSAGetDialectInfo(
+  ComponentInstance scriptingComponent,
+  short dialectCode,
+  OSType selector,
+  AEDesc * resultingDialectInfo) ;
+extern OSAError
+OSAAvailableDialectCodeList(
+  ComponentInstance scriptingComponent,
+  AEDesc * resultingDialectCodeList) ;
+extern OSAError
+OSASetResumeDispatchProc(
+  ComponentInstance scriptingComponent,
+  AEEventHandlerUPP resumeDispatchProc,
+  long refCon) ;
+enum {
+  kOSAUseStandardDispatch = kAEUseStandardDispatch
+};
+enum {
+  kOSANoDispatch = kAENoDispatch
+};
+enum {
+  kOSADontUsePhac = 0x0001
+};
+extern OSAError
+OSAGetResumeDispatchProc(
+  ComponentInstance scriptingComponent,
+  AEEventHandlerUPP * resumeDispatchProc,
+  long * refCon) ;
+extern OSAError
+OSAExecuteEvent(
+  ComponentInstance scriptingComponent,
+  const AppleEvent * theAppleEvent,
+  OSAID contextID,
+  long modeFlags,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+OSADoEvent(
+  ComponentInstance scriptingComponent,
+  const AppleEvent * theAppleEvent,
+  OSAID contextID,
+  long modeFlags,
+  AppleEvent * reply) ;
+extern OSAError
+OSAMakeContext(
+  ComponentInstance scriptingComponent,
+  const AEDesc * contextName,
+  OSAID parentContext,
+  OSAID * resultingContextID) ;
+typedef OSAID OSADebugSessionRef;
+typedef OSAID OSADebugCallFrameRef;
+
+
+
+typedef UInt32 OSAProgramState;
+enum {
+  eNotStarted = 0,
+  eRunnable = 1,
+  eRunning = 2,
+  eStopped = 3,
+  eTerminated = 4
+};
+
+typedef UInt32 OSADebugStepKind;
+enum {
+  eStepOver = 0,
+  eStepIn = 1,
+  eStepOut = 2,
+  eRun = 3
+};
+
+
+
+
+enum {
+  keyProgramState = 'dsps'
+};
+
+
+
+
+struct StatementRange {
+  unsigned long startPos;
+  unsigned long endPos;
+};
+typedef struct StatementRange StatementRange;
+enum {
+  typeStatementRange = 'srng'
+};
+
+enum {
+  keyProcedureName = 'dfnm',
+  keyStatementRange = 'dfsr',
+  keyLocalsNames = 'dfln',
+  keyGlobalsNames = 'dfgn',
+  keyParamsNames = 'dfpn'
+};
+extern OSAError
+OSADebuggerCreateSession(
+  ComponentInstance scriptingComponent,
+  OSAID inScript,
+  OSAID inContext,
+  OSADebugSessionRef * outSession) ;
+extern OSAError
+OSADebuggerGetSessionState(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  AERecord * outState) ;
+extern OSAError
+OSADebuggerSessionStep(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  OSADebugStepKind inKind) ;
+extern OSAError
+OSADebuggerDisposeSession(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession) ;
+extern OSAError
+OSADebuggerGetStatementRanges(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  AEDescList * outStatementRangeArray) ;
+extern OSAError
+OSADebuggerGetBreakpoint(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  UInt32 inSrcOffset,
+  OSAID * outBreakpoint) ;
+extern OSAError
+OSADebuggerSetBreakpoint(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  UInt32 inSrcOffset,
+  OSAID inBreakpoint) ;
+extern OSAError
+OSADebuggerGetDefaultBreakpoint(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  OSAID * outBreakpoint) ;
+extern OSAError
+OSADebuggerGetCurrentCallFrame(
+  ComponentInstance scriptingComponent,
+  OSADebugSessionRef inSession,
+  OSADebugCallFrameRef * outCallFrame) ;
+extern OSAError
+OSADebuggerGetCallFrameState(
+  ComponentInstance scriptingComponent,
+  OSADebugCallFrameRef inCallFrame,
+  AERecord * outState) ;
+extern OSAError
+OSADebuggerGetVariable(
+  ComponentInstance scriptingComponent,
+  OSADebugCallFrameRef inCallFrame,
+  const AEDesc * inVariableName,
+  OSAID * outVariable) ;
+extern OSAError
+OSADebuggerSetVariable(
+  ComponentInstance scriptingComponent,
+  OSADebugCallFrameRef inCallFrame,
+  const AEDesc * inVariableName,
+  OSAID inVariable) ;
+extern OSAError
+OSADebuggerGetPreviousCallFrame(
+  ComponentInstance scriptingComponent,
+  OSADebugCallFrameRef inCurrentFrame,
+  OSADebugCallFrameRef * outPrevFrame) ;
+extern OSAError
+OSADebuggerDisposeCallFrame(
+  ComponentInstance scriptingComponent,
+  OSADebugCallFrameRef inCallFrame) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+extern OSErr
+OSAGetStorageType(
+  AEDataStorage scriptData,
+  DescType * dscType) ;
+extern OSErr
+OSAAddStorageType(
+  AEDataStorage scriptData,
+  DescType dscType) ;
+extern OSErr
+OSARemoveStorageType(AEDataStorage scriptData) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+
+  kGenericComponentVersion = 0x0100
+};
+
+enum {
+  kGSSSelectGetDefaultScriptingComponent = 0x1001,
+  kGSSSelectSetDefaultScriptingComponent = 0x1002,
+  kGSSSelectGetScriptingComponent = 0x1003,
+  kGSSSelectGetScriptingComponentFromStored = 0x1004,
+  kGSSSelectGenericToRealID = 0x1005,
+  kGSSSelectRealToGenericID = 0x1006,
+  kGSSSelectOutOfRange = 0x1007
+};
+
+typedef OSType ScriptingComponentSelector;
+typedef OSAID GenericID;
+extern OSAError
+OSAGetDefaultScriptingComponent(
+  ComponentInstance genericScriptingComponent,
+  ScriptingComponentSelector * scriptingSubType) ;
+extern OSAError
+OSASetDefaultScriptingComponent(
+  ComponentInstance genericScriptingComponent,
+  ScriptingComponentSelector scriptingSubType) ;
+extern OSAError
+OSAGetScriptingComponent(
+  ComponentInstance genericScriptingComponent,
+  ScriptingComponentSelector scriptingSubType,
+  ComponentInstance * scriptingInstance) ;
+extern OSAError
+OSAGetScriptingComponentFromStored(
+  ComponentInstance genericScriptingComponent,
+  const AEDesc * scriptData,
+  ScriptingComponentSelector * scriptingSubType) ;
+extern OSAError
+OSAGenericToRealID(
+  ComponentInstance genericScriptingComponent,
+  OSAID * theScriptID,
+  ComponentInstance * theExactComponent) ;
+extern OSAError
+OSARealToGenericID(
+  ComponentInstance genericScriptingComponent,
+  OSAID * theScriptID,
+  ComponentInstance theExactComponent) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+  typeAppleScript = 'ascr',
+  kAppleScriptSubtype = typeAppleScript,
+  typeASStorage = typeAppleScript
+};
+
+
+
+
+
+enum {
+  kASSelectInit = 0x1001,
+  kASSelectSetSourceStyles = 0x1002,
+  kASSelectGetSourceStyles = 0x1003,
+  kASSelectGetSourceStyleNames = 0x1004
+};
+
+
+
+
+
+enum {
+  kASHasOpenHandler = 'hsod'
+};
+extern OSAError
+ASInit(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  long minStackSize,
+  long preferredStackSize,
+  long maxStackSize,
+  long minHeapSize,
+  long preferredHeapSize,
+  long maxHeapSize) ;
+enum {
+  kASDefaultMinStackSize = 4 * 1024,
+  kASDefaultPreferredStackSize = 16 * 1024,
+  kASDefaultMaxStackSize = 16 * 1024,
+  kASDefaultMinHeapSize = 4 * 1024,
+  kASDefaultPreferredHeapSize = 16 * 1024,
+  kASDefaultMaxHeapSize = 32L * 1024 * 1024
+};
+extern OSAError
+ASSetSourceStyles(
+  ComponentInstance scriptingComponent,
+  STHandle sourceStyles) ;
+extern OSAError
+ASGetSourceStyles(
+  ComponentInstance scriptingComponent,
+  STHandle * resultingSourceStyles) ;
+extern OSAError
+ASGetSourceStyleNames(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  AEDescList * resultingSourceStyleNamesList) ;
+enum {
+  kASSourceStyleUncompiledText = 0,
+  kASSourceStyleNormalText = 1,
+  kASSourceStyleLanguageKeyword = 2,
+  kASSourceStyleApplicationKeyword = 3,
+  kASSourceStyleComment = 4,
+  kASSourceStyleLiteral = 5,
+  kASSourceStyleUserSymbol = 6,
+  kASSourceStyleObjectSpecifier = 7,
+  kASNumberOfSourceStyles = 8
+};
+
+
+
+
+}
+
+
+
+extern "C" {
+enum {
+  kOSAModeDontDefine = 0x0001
+};
+
+
+
+
+enum {
+  kASSelectSetPropertyObsolete = 0x1101,
+  kASSelectGetPropertyObsolete = 0x1102,
+  kASSelectSetHandlerObsolete = 0x1103,
+  kASSelectGetHandlerObsolete = 0x1104,
+  kASSelectGetAppTerminologyObsolete = 0x1105,
+  kASSelectSetProperty = 0x1106,
+  kASSelectGetProperty = 0x1107,
+  kASSelectSetHandler = 0x1108,
+  kASSelectGetHandler = 0x1109,
+  kASSelectGetAppTerminology = 0x110A,
+  kASSelectGetSysTerminology = 0x110B,
+  kASSelectGetPropertyNames = 0x110C,
+  kASSelectGetHandlerNames = 0x110D
+};
+extern OSAError
+OSASetProperty(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  const AEDesc * variableName,
+  OSAID scriptValueID) ;
+extern OSAError
+OSAGetProperty(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  const AEDesc * variableName,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+OSAGetPropertyNames(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  AEDescList * resultingPropertyNames) ;
+extern OSAError
+OSASetHandler(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  const AEDesc * handlerName,
+  OSAID compiledScriptID) ;
+extern OSAError
+OSAGetHandler(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  const AEDesc * handlerName,
+  OSAID * resultingCompiledScriptID) ;
+extern OSAError
+OSAGetHandlerNames(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  OSAID contextID,
+  AEDescList * resultingHandlerNames) ;
+extern OSAError
+OSAGetAppTerminology(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  FSSpec * fileSpec,
+  short terminologyID,
+  Boolean * didLaunch,
+  AEDesc * terminologyList) ;
+extern OSAError
+OSAGetSysTerminology(
+  ComponentInstance scriptingComponent,
+  long modeFlags,
+  short terminologyID,
+  AEDesc * terminologyList) ;
+extern OSAError
+ASSetProperty(
+  ComponentInstance scriptingComponent,
+  OSAID contextID,
+  const AEDesc * variableName,
+  OSAID scriptValueID) ;
+extern OSAError
+ASGetProperty(
+  ComponentInstance scriptingComponent,
+  OSAID contextID,
+  const AEDesc * variableName,
+  OSAID * resultingScriptValueID) ;
+extern OSAError
+ASSetHandler(
+  ComponentInstance scriptingComponent,
+  OSAID contextID,
+  const AEDesc * handlerName,
+  OSAID compiledScriptID) ;
+extern OSAError
+ASGetHandler(
+  ComponentInstance scriptingComponent,
+  OSAID contextID,
+  const AEDesc * handlerName,
+  OSAID * resultingCompiledScriptID) ;
+extern OSAError
+ASGetAppTerminology(
+  ComponentInstance scriptingComponent,
+  FSSpec * fileSpec,
+  short terminologID,
+  Boolean * didLaunch,
+  AEDesc * terminologyList) ;
+}
+
+
+
+enum {
+  keyAETarget = 'targ',
+  keySubjectAttr = 'subj',
+  keyASReturning = 'Krtn',
+  kASAppleScriptSuite = 'ascr',
+  kASScriptEditorSuite = 'ToyS',
+  kASTypeNamesSuite = 'tpnm',
+  typeAETE = 'aete',
+  typeAEUT = 'aeut',
+  kGetAETE = 'gdte',
+  kGetAEUT = 'gdut',
+  kUpdateAEUT = 'udut',
+  kUpdateAETE = 'udte',
+  kCleanUpAEUT = 'cdut',
+  kASComment = 'cmnt',
+  kASLaunchEvent = 'noop',
+  keyScszResource = 'scsz',
+  typeScszResource = 'scsz',
+  kASSubroutineEvent = 'psbr',
+  keyASSubroutineName = 'snam',
+  kASPrepositionalSubroutine = 'psbr',
+  keyASPositionalArgs = 'parg'
+};
+
+enum {
+
+  keyAppHandledCoercion = 'idas'
+};
+
+enum {
+
+  kASStartLogEvent = 'log1',
+  kASStopLogEvent = 'log0',
+  kASCommentEvent = 'cmnt'
+};
+
+
+
+enum {
+
+  kASAdd = '+   ',
+  kASSubtract = '-   ',
+  kASMultiply = '*   ',
+  kASDivide = '/   ',
+  kASQuotient = 'div ',
+  kASRemainder = 'mod ',
+  kASPower = '^   ',
+  kASEqual = kAEEquals,
+  kASNotEqual = '­   ',
+  kASGreaterThan = kAEGreaterThan,
+  kASGreaterThanOrEqual = kAEGreaterThanEquals,
+  kASLessThan = kAELessThan,
+  kASLessThanOrEqual = kAELessThanEquals,
+  kASComesBefore = 'cbfr',
+  kASComesAfter = 'cafr',
+  kASConcatenate = 'ccat',
+  kASStartsWith = kAEBeginsWith,
+  kASEndsWith = kAEEndsWith,
+  kASContains = kAEContains
+};
+
+enum {
+  kASAnd = kAEAND,
+  kASOr = kAEOR,
+  kASNot = kAENOT,
+  kASNegate = 'neg ',
+  keyASArg = 'arg '
+};
+
+enum {
+
+  kASErrorEventCode = 'err ',
+  kOSAErrorArgs = 'erra',
+  keyAEErrorObject = 'erob',
+  pLength = 'leng',
+  pReverse = 'rvse',
+  pRest = 'rest',
+  pInherits = 'c@#^',
+  pProperties = 'pALL',
+  keyASUserRecordFields = 'usrf',
+  typeUserRecordFields = typeAEList
+};
+
+
+enum {
+  keyASPrepositionAt = 'at  ',
+  keyASPrepositionIn = 'in  ',
+  keyASPrepositionFrom = 'from',
+  keyASPrepositionFor = 'for ',
+  keyASPrepositionTo = 'to  ',
+  keyASPrepositionThru = 'thru',
+  keyASPrepositionThrough = 'thgh',
+  keyASPrepositionBy = 'by  ',
+  keyASPrepositionOn = 'on  ',
+  keyASPrepositionInto = 'into',
+  keyASPrepositionOnto = 'onto',
+  keyASPrepositionBetween = 'btwn',
+  keyASPrepositionAgainst = 'agst',
+  keyASPrepositionOutOf = 'outo',
+  keyASPrepositionInsteadOf = 'isto',
+  keyASPrepositionAsideFrom = 'asdf',
+  keyASPrepositionAround = 'arnd',
+  keyASPrepositionBeside = 'bsid',
+  keyASPrepositionBeneath = 'bnth',
+  keyASPrepositionUnder = 'undr'
+};
+
+enum {
+  keyASPrepositionOver = 'over',
+  keyASPrepositionAbove = 'abve',
+  keyASPrepositionBelow = 'belw',
+  keyASPrepositionApartFrom = 'aprt',
+  keyASPrepositionGiven = 'givn',
+  keyASPrepositionWith = 'with',
+  keyASPrepositionWithout = 'wout',
+  keyASPrepositionAbout = 'abou',
+  keyASPrepositionSince = 'snce',
+  keyASPrepositionUntil = 'till'
+};
+
+enum {
+
+  kDialectBundleResType = 'Dbdl',
+  cConstant = typeEnumerated,
+  cClassIdentifier = pClass,
+  cObjectBeingExamined = typeObjectBeingExamined,
+  cList = typeAEList,
+  cSmallReal = typeSMFloat,
+  cReal = typeFloat,
+  cRecord = typeAERecord,
+  cReference = cObjectSpecifier,
+  cUndefined = 'undf',
+  cMissingValue = 'msng',
+  cSymbol = 'symb',
+  cLinkedList = 'llst',
+  cVector = 'vect',
+  cEventIdentifier = 'evnt',
+  cKeyIdentifier = 'kyid',
+  cUserIdentifier = 'uid ',
+  cPreposition = 'prep',
+  cKeyForm = enumKeyForm,
+  cScript = 'scpt',
+  cHandler = 'hand',
+  cProcedure = 'proc'
+};
+
+enum {
+  cHandleBreakpoint = 'brak'
+};
+
+enum {
+  cClosure = 'clsr',
+  cRawData = 'rdat',
+  cStringClass = typeChar,
+  cNumber = 'nmbr',
+  cListElement = 'celm',
+  cListOrRecord = 'lr  ',
+  cListOrString = 'ls  ',
+  cListRecordOrString = 'lrs ',
+  cNumberOrString = 'ns  ',
+  cNumberOrDateTime = 'nd  ',
+  cNumberDateTimeOrString = 'nds ',
+  cAliasOrString = 'sf  ',
+  cSeconds = 'scnd',
+  typeSound = 'snd ',
+  enumBooleanValues = 'boov',
+  kAETrue = typeTrue,
+  kAEFalse = typeFalse,
+  enumMiscValues = 'misc',
+  kASCurrentApplication = 'cura',
+  formUserPropertyID = 'usrp'
+};
+
+enum {
+  cString = cStringClass
+};
+
+enum {
+
+  pASIt = 'it  ',
+  pASMe = 'me  ',
+  pASResult = 'rslt',
+  pASSpace = 'spac',
+  pASReturn = 'ret ',
+  pASTab = 'tab ',
+  pASPi = 'pi  ',
+  pASParent = 'pare',
+  kASInitializeEventCode = 'init',
+  pASPrintLength = 'prln',
+  pASPrintDepth = 'prdp',
+  pASTopLevelScript = 'ascr'
+};
+
+enum {
+
+  kAECase = 'case',
+  kAEDiacritic = 'diac',
+  kAEWhiteSpace = 'whit',
+  kAEHyphens = 'hyph',
+  kAEExpansion = 'expa',
+  kAEPunctuation = 'punc',
+  kAEZenkakuHankaku = 'zkhk',
+  kAESmallKana = 'skna',
+  kAEKataHiragana = 'hika',
+  kASConsiderReplies = 'rmte',
+  enumConsiderations = 'cons'
+};
+
+
+enum {
+  kAECaseConsiderMask = 0x00000001,
+  kAEDiacriticConsiderMask = 0x00000002,
+  kAEWhiteSpaceConsiderMask = 0x00000004,
+  kAEHyphensConsiderMask = 0x00000008,
+  kAEExpansionConsiderMask = 0x00000010,
+  kAEPunctuationConsiderMask = 0x00000020,
+  kASConsiderRepliesConsiderMask = 0x00000040,
+  kAECaseIgnoreMask = 0x00010000,
+  kAEDiacriticIgnoreMask = 0x00020000,
+  kAEWhiteSpaceIgnoreMask = 0x00040000,
+  kAEHyphensIgnoreMask = 0x00080000,
+  kAEExpansionIgnoreMask = 0x00100000,
+  kAEPunctuationIgnoreMask = 0x00200000,
+  kASConsiderRepliesIgnoreMask = 0x00400000,
+  enumConsidsAndIgnores = 'csig'
+};
+
+enum {
+  cCoercion = 'coec',
+  cCoerceUpperCase = 'txup',
+  cCoerceLowerCase = 'txlo',
+  cCoerceRemoveDiacriticals = 'txdc',
+  cCoerceRemovePunctuation = 'txpc',
+  cCoerceRemoveHyphens = 'txhy',
+  cCoerceOneByteToTwoByte = 'txex',
+  cCoerceRemoveWhiteSpace = 'txws',
+  cCoerceSmallKana = 'txsk',
+  cCoerceZenkakuhankaku = 'txze',
+  cCoerceKataHiragana = 'txkh',
+  cZone = 'zone',
+  cMachine = 'mach',
+  cAddress = 'addr',
+  cRunningAddress = 'radd',
+  cStorage = 'stor'
+};
+
+enum {
+
+  pASWeekday = 'wkdy',
+  pASMonth = 'mnth',
+  pASDay = 'day ',
+  pASYear = 'year',
+  pASTime = 'time',
+  pASDateString = 'dstr',
+  pASTimeString = 'tstr',
+  cMonth = pASMonth,
+  cJanuary = 'jan ',
+  cFebruary = 'feb ',
+  cMarch = 'mar ',
+  cApril = 'apr ',
+  cMay = 'may ',
+  cJune = 'jun ',
+  cJuly = 'jul ',
+  cAugust = 'aug ',
+  cSeptember = 'sep ',
+  cOctober = 'oct ',
+  cNovember = 'nov ',
+  cDecember = 'dec '
+};
+
+enum {
+
+  cWeekday = pASWeekday,
+  cSunday = 'sun ',
+  cMonday = 'mon ',
+  cTuesday = 'tue ',
+  cWednesday = 'wed ',
+  cThursday = 'thu ',
+  cFriday = 'fri ',
+  cSaturday = 'sat ',
+  pASQuote = 'quot',
+  pASSeconds = 'secs',
+  pASMinutes = 'min ',
+  pASHours = 'hour',
+  pASDays = 'days',
+  pASWeeks = 'week',
+  cWritingCodeInfo = 'citl',
+  pScriptCode = 'pscd',
+  pLangCode = 'plcd',
+  kASMagicTellEvent = 'tell',
+  kASMagicEndTellEvent = 'tend'
+};
+
+
+
+enum {
+  kAEFinderSuite = 'fndr'
+};
+
+
+
+
+
+
+enum {
+  kAECleanUp = 'fclu',
+  kAEEject = 'ejct',
+  kAEEmpty = 'empt',
+  kAEErase = 'fera',
+  kAEGestalt = 'gstl',
+  kAEPutAway = 'ptwy',
+  kAERebuildDesktopDB = 'rddb',
+  kAESync = 'fupd',
+  kAEInterceptOpen = 'fopn'
+};
+
+
+enum {
+  kAEDatabaseSuite = 'DATA',
+  kAESort = 'SORT'
+};
+enum {
+  cInternalFinderObject = 'obj '
+};
+
+
+
+
+
+enum {
+
+
+
+  cAliasFile = 'alia',
+  cApplicationFile = 'appf',
+  cControlPanelFile = 'ccdv',
+  cDeskAccessoryFile = 'dafi',
+  cDocumentFile = 'docf',
+  cFontFile = 'fntf',
+  cSoundFile = 'sndf',
+  cClippingFile = 'clpf',
+  cContainer = 'ctnr',
+  cDesktop = 'cdsk',
+  cSharableContainer = 'sctr',
+  cDisk = 'cdis',
+  cFolder = 'cfol',
+  cSuitcase = 'stcs',
+  cAccessorySuitcase = 'dsut',
+  cFontSuitcase = 'fsut',
+  cTrash = 'ctrs',
+  cDesktopPrinter = 'dskp',
+  cPackage = 'pack',
+  cContentSpace = 'dwnd',
+  cContainerWindow = 'cwnd',
+  cInfoWindow = 'iwnd',
+  cSharingWindow = 'swnd',
+  cStatusWindow = 'qwnd',
+  cClippingWindow = 'lwnd',
+  cPreferencesWindow = 'pwnd',
+  cDTPWindow = 'dtpw',
+  cProcess = 'prcs',
+  cAccessoryProcess = 'pcda',
+  cApplicationProcess = 'pcap',
+  cGroup = 'sgrp',
+  cUser = 'cuse',
+  cSharingPrivileges = 'priv',
+  cPreferences = 'cprf',
+  cLabel = 'clbl',
+  cSound = 'snd ',
+  cAliasList = 'alst',
+  cSpecialFolders = 'spfl',
+  cOnlineDisk = 'cods',
+  cOnlineLocalDisk = 'clds',
+  cOnlineRemoteDisk = 'crds',
+  cEntireContents = 'ects',
+  cIconFamily = 'ifam'
+};
+enum {
+
+  pComment = 'comt',
+  pContainer = cContainer,
+  pContentSpace = cContentSpace,
+  pCreationDateOld = 'crtd',
+  pCreationDate = 'ascd',
+  pDescription = 'dscr',
+  pDisk = cDisk,
+  pFolderOld = cFolder,
+  pFolder = 'asdr',
+  pIconBitmap = 'iimg',
+  pInfoWindow = cInfoWindow,
+  pKind = 'kind',
+  pLabelIndex = 'labi',
+  pModificationDateOld = 'modd',
+  pModificationDate = 'asmo',
+
+  pPhysicalSize = 'phys',
+  pPosition = 'posn',
+  pIsSelected = 'issl',
+  pSize = pPointSize,
+  pWindow = cWindow,
+  pPreferencesWindow = cPreferencesWindow
+};
+
+
+
+enum {
+  pFileCreator = 'fcrt',
+  pFileType = 'asty',
+  pFileTypeOld = 'fitp',
+  pIsLocked = 'aslk',
+  pIsLockedOld = 'islk',
+
+
+  pProductVersion = 'ver2'
+};
+
+
+
+enum {
+  pOriginalItem = 'orig'
+};
+
+
+enum {
+  pMinAppPartition = 'mprt',
+  pAppPartition = 'appt',
+  pSuggestedAppPartition = 'sprt',
+  pIsScriptable = 'isab'
+};
+
+
+enum {
+  pInternetLocation = 'iloc'
+};
+
+
+enum {
+  pSound = 'snd '
+};
+enum {
+  pShowFolderSize = 'sfsz',
+  pShowComment = 'scom',
+  pShowDate = 'sdat',
+  pShowCreationDate = 'scda',
+  pShowKind = 'sknd',
+  pShowLabel = 'slbl',
+  pShowSize = 'ssiz',
+  pShowVersion = 'svrs',
+  pSortDirection = 'sord',
+  pShowDiskInfo = 'sdin',
+  pListViewIconSize = 'lvis',
+  pGridIcons = 'fgrd',
+  pStaggerIcons = 'fstg',
+  pViewFont = 'vfnt',
+  pViewFontSize = 'vfsz'
+};
+
+
+enum {
+  pCompletelyExpanded = 'pexc',
+  pContainerWindow = cContainerWindow,
+  pEntireContents = cEntireContents,
+  pExpandable = 'pexa',
+  pExpanded = 'pexp',
+  pPreviousView = 'svew',
+  pView = 'pvew',
+  pIconSize = pListViewIconSize,
+  pKeepArranged = 'arrg',
+  pKeepArrangedBy = 'arby'
+};
+
+
+enum {
+  pStartupDisk = 'sdsk',
+  pTrash = 'trsh'
+};
+
+
+enum {
+  pOwner = 'sown',
+  pOwnerPrivileges = 'ownr',
+  pGroup = cGroup,
+  pGroupPrivileges = 'gppr',
+  pGuestPrivileges = 'gstp',
+  pArePrivilegesInherited = 'iprv',
+  pExported = 'sexp',
+  pMounted = 'smou',
+  pSharingProtection = 'spro',
+  pSharing = 'shar',
+  pSharingWindow = cSharingWindow
+};
+
+
+enum {
+  pCapacity = 'capa',
+  pEjectable = 'isej',
+  pFreeSpace = 'frsp',
+  pLocal = 'isrv',
+  pIsStartup = 'istd'
+};
+
+
+enum {
+  pWarnOnEmpty = 'warn'
+};
+
+
+enum {
+  pIsZoomedFull = 'zumf',
+  pIsPopup = 'drwr',
+  pIsPulledOpen = 'pull',
+  pIsCollapsed = 'wshd'
+};
+
+
+enum {
+  pObject = cObject
+};
+
+
+enum {
+  pSharableContainer = cSharableContainer
+};
+
+
+enum {
+  pInfoPanel = 'panl'
+};
+
+
+
+enum {
+  pFileShareOn = 'fshr',
+  pFileShareStartingUp = 'fsup',
+  pProgramLinkingOn = 'iac '
+};
+
+
+enum {
+
+
+  pShowModificationDate = pShowDate,
+  pUseRelativeDate = 'urdt',
+  pDelayBeforeSpringing = 'dela',
+  pSpringOpenFolders = 'sprg',
+  pUseShortMenus = 'usme',
+  pUseWideGrid = 'uswg',
+  pLabel1 = 'lbl1',
+  pLabel2 = 'lbl2',
+  pLabel3 = 'lbl3',
+  pLabel4 = 'lbl4',
+  pLabel5 = 'lbl5',
+  pLabel6 = 'lbl6',
+  pLabel7 = 'lbl7',
+  pDefaultIconViewIconSize = 'iisz',
+  pDefaultButtonViewIconSize = 'bisz',
+  pDefaultListViewIconSize = 'lisz',
+  pIconViewArrangement = 'iarr',
+  pButtonViewArrangement = 'barr'
+};
+
+
+
+
+
+enum {
+  pNoArrangement = 'narr',
+  pSnapToGridArrangement = 'grda',
+  pByNameArrangement = 'nama',
+  pByModificationDateArrangement = 'mdta',
+  pByCreationDateArrangement = 'cdta',
+  pBySizeArrangement = 'siza',
+  pByKindArrangement = 'kina',
+  pByLabelArrangement = 'laba'
+};
+
+
+
+
+enum {
+
+  pFile = cFile,
+
+
+
+  pPartitionSpaceUsed = 'pusd',
+
+  pLocalAndRemoteEvents = 'revt',
+  pHasScriptingTerminology = 'hscr'
+};
+
+
+enum {
+  pDeskAccessoryFile = cDeskAccessoryFile
+};
+
+
+enum {
+  pApplicationFile = cApplicationFile
+};
+enum {
+
+
+
+
+
+
+  pCanConnect = 'ccon',
+  pCanChangePassword = 'ccpw',
+  pCanDoProgramLinking = 'ciac',
+  pIsOwner = 'isow',
+  pARADialIn = 'arad',
+  pShouldCallBack = 'calb',
+  pCallBackNumber = 'cbnm'
+};
+
+
+
+
+
+enum {
+  pAboutMacintosh = 'abbx',
+  pAppleMenuItemsFolder = 'amnu',
+
+  pControlPanelsFolder = 'ctrl',
+  pDesktop = 'desk',
+  pExtensionsFolder = 'extn',
+
+  pFinderPreferences = 'pfrp',
+  pFontsFolder = 'font',
+  pFontsFolderPreAllegro = 'ffnt',
+
+
+  pLargestFreeBlock = 'mfre',
+  pPreferencesFolder = 'pref',
+
+
+
+  pShortCuts = 'scut',
+  pShutdownFolder = 'shdf',
+  pStartupItemsFolder = 'strt',
+  pSystemFolder = 'macs',
+  pTemporaryFolder = 'temp',
+
+  pViewPreferences = 'pvwp',
+  pStartingUp = 'awak'
+};
+
+
+enum {
+  pSeeFiles = 'prvr',
+  pSeeFolders = 'prvs',
+  pMakeChanges = 'prvw'
+};
+enum {
+  pSmallIcon = 'smic',
+  pSmallButton = 'smbu',
+  pLargeButton = 'lgbu',
+  pGrid = 'grid'
+};
+
+
+
+
+
+
+
+enum {
+  enumViewBy = 'vwby',
+  enumGestalt = 'gsen',
+  enumConflicts = 'cflc',
+  enumExistingItems = 'exsi',
+  enumOlderItems = 'oldr'
+};
+
+enum {
+  enumDate = 'enda',
+  enumAnyDate = 'anyd',
+  enumToday = 'tday',
+  enumYesterday = 'yday',
+  enumThisWeek = 'twek',
+  enumLastWeek = 'lwek',
+  enumThisMonth = 'tmon',
+  enumLastMonth = 'lmon',
+  enumThisYear = 'tyer',
+  enumLastYear = 'lyer',
+  enumBeforeDate = 'bfdt',
+  enumAfterDate = 'afdt',
+  enumBetweenDate = 'btdt',
+  enumOnDate = 'ondt'
+};
+
+enum {
+  enumAllDocuments = 'alld',
+  enumFolders = 'fold',
+  enumAliases = 'alia',
+  enumStationery = 'stat'
+};
+
+enum {
+  enumWhere = 'wher',
+  enumAllLocalDisks = 'aldk',
+  enumAllRemoteDisks = 'ardk',
+  enumAllDisks = 'alld',
+  enumAllOpenFolders = 'aofo'
+};
+
+
+enum {
+  enumIconSize = 'isiz',
+  enumSmallIconSize = pSmallIcon,
+  enumMiniIconSize = 'miic',
+  enumLargeIconSize = 'lgic'
+};
+
+enum {
+  enumSortDirection = 'sodr',
+  enumSortDirectionNormal = 'snrm',
+  enumSortDirectionReverse = 'srvs'
+};
+
+enum {
+  enumArrangement = 'earr'
+};
+
+
+enum {
+  enumInfoWindowPanel = 'ipnl',
+  enumGeneralPanel = 'gpnl',
+  enumSharingPanel = 'spnl',
+  enumStatusNConfigPanel = 'scnl',
+  enumFontsPanel = 'fpnl',
+  enumMemoryPanel = 'mpnl'
+};
+
+
+
+enum {
+  enumPrefsWindowPanel = 'pple',
+  enumPrefsGeneralPanel = 'pgnp',
+  enumPrefsLabelPanel = 'plbp',
+  enumPrefsIconViewPanel = 'pivp',
+  enumPrefsButtonViewPanel = 'pbvp',
+  enumPrefsListViewPanel = 'plvp'
+};
+
+
+
+
+
+
+
+enum {
+  typeIconFamily = cIconFamily,
+  typeIconAndMask = 'ICN#',
+  type8BitMask = 'l8mk',
+  type32BitIcon = 'il32',
+  type8BitIcon = 'icl8',
+  type4BitIcon = 'icl4',
+  typeSmallIconAndMask = 'ics#',
+  typeSmall8BitMask = 's8mk',
+  typeSmall32BitIcon = 'is32',
+  typeSmall8BitIcon = 'ics8',
+  typeSmall4BitIcon = 'ics4',
+  typeRelativeTime = 'rtim',
+  typeConceptualTime = 'timc'
+};
+
+
+
+
+
+
+
+enum {
+  keyIconAndMask = 'ICN#',
+  key32BitIcon = 'il32',
+  key8BitIcon = 'icl8',
+  key4BitIcon = 'icl4',
+  key8BitMask = 'l8mk',
+  keySmallIconAndMask = 'ics#',
+  keySmall8BitIcon = 'ics8',
+  keySmall4BitIcon = 'ics4',
+  keySmall32BitIcon = 'is32',
+  keySmall8BitMask = 's8mk',
+  keyMini1BitMask = 'icm#',
+  keyMini4BitIcon = 'icm4',
+  keyMini8BitIcon = 'icm8',
+  keyAEUsing = 'usin',
+  keyAEReplacing = 'alrp',
+  keyAENoAutoRouting = 'rout',
+  keyLocalPositionList = 'mvpl',
+  keyGlobalPositionList = 'mvpg',
+  keyRedirectedDocumentList = 'fpdl'
+};
+
+
+
+
+
+
+
+enum {
+  keyASPrepositionHas = 'has ',
+  keyAll = 'kyal',
+  keyOldFinderItems = 'fsel'
+};
+
+
+
+
+
+
+
+enum {
+  formAlias = typeAlias,
+  formCreator = pFileCreator
+};
+enum {
+  errFinderIsBusy = -15260,
+  errFinderWindowNotOpen = -15261,
+  errFinderCannotPutAway = -15262,
+  errFinderWindowMustBeIconView = -15263,
+  errFinderWindowMustBeListView = -15264,
+  errFinderCantMoveToDestination = -15265,
+  errFinderCantMoveSource = -15266,
+  errFinderCantOverwrite = -15267,
+  errFinderIncestuousMove = -15268,
+  errFinderCantMoveToAncestor = -15269,
+  errFinderCantUseTrashedItems = -15270,
+  errFinderItemAlreadyInDest = -15271,
+  errFinderUnknownUser = -15272,
+  errFinderSharePointsCantInherit = -15273,
+  errFinderWindowWrongType = -15274,
+  errFinderPropertyNowWindowBased = -15275,
+  errFinderAppFolderProtected = -15276,
+  errFinderSysFolderProtected = -15277,
+  errFinderBoundsWrong = -15278,
+  errAEValueOutOfRange = -15279,
+  errFinderPropertyDoesNotApply = -15280,
+  errFinderFileSharingMustBeOn = -15281,
+  errFinderMustBeActive = -15282,
+  errFinderVolumeNotFound = -15283,
+  errFinderLockedItemsInTrash = -15284,
+  errFinderOnlyLockedItemsInTrash = -15285,
+  errFinderProgramLinkingMustBeOn = -15286,
+  errFinderWindowMustBeButtonView = -15287,
+  errFinderBadPackageContents = -15288,
+  errFinderUnsupportedInsidePackages = -15289,
+  errFinderCorruptOpenFolderList = -15290,
+  errFinderNoInvisibleFiles = -15291,
+  errFinderCantDeleteImmediately = -15292,
+  errFinderLastReserved = -15379
+};
+
+
+
+enum {
+  kDigiHubEventClass = 'dhub'
+};
+
+
+
+enum {
+  kDigiHubMusicCD = 'aucd',
+  kDigiHubPictureCD = 'picd',
+  kDigiHubVideoDVD = 'vdvd',
+  kDigiHubBlankCD = 'bcd ',
+  kDigiHubBlankDVD = 'bdvd'
+};
+
+
+
+extern "C" {
+
+
+
+typedef void ( * PMItemProcPtr)(DialogRef theDialog, short item);
+typedef void ( * PMPrintDialogInitProcPtr)(PMPrintSettings printSettings, PMDialog *theDialog);
+typedef void ( * PMPageSetupDialogInitProcPtr)(PMPageFormat pageFormat, PMDialog *theDialog);
+typedef void ( * PMSheetDoneProcPtr)(PMPrintSession printSession, WindowRef documentWindow, Boolean accepted);
+typedef PMItemProcPtr PMItemUPP;
+typedef PMPrintDialogInitProcPtr PMPrintDialogInitUPP;
+typedef PMPageSetupDialogInitProcPtr PMPageSetupDialogInitUPP;
+typedef PMSheetDoneProcPtr PMSheetDoneUPP;
+extern PMItemUPP
+NewPMItemUPP(PMItemProcPtr userRoutine) ;
+extern PMPrintDialogInitUPP
+NewPMPrintDialogInitUPP(PMPrintDialogInitProcPtr userRoutine) ;
+extern PMPageSetupDialogInitUPP
+NewPMPageSetupDialogInitUPP(PMPageSetupDialogInitProcPtr userRoutine) ;
+extern PMSheetDoneUPP
+NewPMSheetDoneUPP(PMSheetDoneProcPtr userRoutine) ;
+extern void
+DisposePMItemUPP(PMItemUPP userUPP) ;
+extern void
+DisposePMPrintDialogInitUPP(PMPrintDialogInitUPP userUPP) ;
+extern void
+DisposePMPageSetupDialogInitUPP(PMPageSetupDialogInitUPP userUPP) ;
+extern void
+DisposePMSheetDoneUPP(PMSheetDoneUPP userUPP) ;
+extern void
+InvokePMItemUPP(
+  DialogRef theDialog,
+  short item,
+  PMItemUPP userUPP) ;
+extern void
+InvokePMPrintDialogInitUPP(
+  PMPrintSettings printSettings,
+  PMDialog * theDialog,
+  PMPrintDialogInitUPP userUPP) ;
+extern void
+InvokePMPageSetupDialogInitUPP(
+  PMPageFormat pageFormat,
+  PMDialog * theDialog,
+  PMPageSetupDialogInitUPP userUPP) ;
+extern void
+InvokePMSheetDoneUPP(
+  PMPrintSession printSession,
+  WindowRef documentWindow,
+  Boolean accepted,
+  PMSheetDoneUPP userUPP) ;
+extern OSStatus
+PMSessionBeginDocument(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat pageFormat) ;
+extern OSStatus
+PMSessionEndDocument(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionBeginPage(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  const PMRect * pageFrame) ;
+extern OSStatus
+PMSessionEndPage(PMPrintSession printSession) ;
+extern OSStatus
+PMSessionPageSetupDialog(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  Boolean * accepted) ;
+extern OSStatus
+PMSessionPrintDialog(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat constPageFormat,
+  Boolean * accepted) ;
+extern OSStatus
+PMSessionPageSetupDialogInit(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  PMDialog * newDialog) ;
+extern OSStatus
+PMSessionPrintDialogInit(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat constPageFormat,
+  PMDialog * newDialog) ;
+extern OSStatus
+PMSessionPrintDialogMain(
+  PMPrintSession printSession,
+  PMPrintSettings printSettings,
+  PMPageFormat constPageFormat,
+  Boolean * accepted,
+  PMPrintDialogInitUPP myInitProc) ;
+extern OSStatus
+PMSessionPageSetupDialogMain(
+  PMPrintSession printSession,
+  PMPageFormat pageFormat,
+  Boolean * accepted,
+  PMPageSetupDialogInitUPP myInitProc) ;
+extern OSStatus
+PMSessionUseSheets(
+  PMPrintSession printSession,
+  WindowRef documentWindow,
+  PMSheetDoneUPP sheetDoneProc) ;
+extern OSStatus
+PMGetDialogPtr(
+  PMDialog pmDialog,
+  DialogRef * theDialog) ;
+extern OSStatus
+PMGetModalFilterProc(
+  PMDialog pmDialog,
+  ModalFilterUPP * filterProc) ;
+extern OSStatus
+PMSetModalFilterProc(
+  PMDialog pmDialog,
+  ModalFilterUPP filterProc) ;
+extern OSStatus
+PMGetItemProc(
+  PMDialog pmDialog,
+  PMItemUPP * itemProc) ;
+extern OSStatus
+PMSetItemProc(
+  PMDialog pmDialog,
+  PMItemUPP itemProc) ;
+extern OSStatus
+PMGetDialogAccepted(
+  PMDialog pmDialog,
+  Boolean * process) ;
+extern OSStatus
+PMSetDialogAccepted(
+  PMDialog pmDialog,
+  Boolean process) ;
+extern OSStatus
+PMGetDialogDone(
+  PMDialog pmDialog,
+  Boolean * done) ;
+extern OSStatus
+PMSetDialogDone(
+  PMDialog pmDialog,
+  Boolean done) ;
+extern OSStatus
+PMSessionEnablePrinterPresets(
+  PMPrintSession session,
+  CFStringRef graphicsType) ;
+extern OSStatus
+PMSessionDisablePrinterPresets(PMPrintSession session) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef UInt32 NavAskSaveChangesAction;
+enum {
+
+  kNavSaveChangesClosingDocument = 1,
+  kNavSaveChangesQuittingApplication = 2,
+  kNavSaveChangesOther = 0
+};
+
+
+typedef UInt32 NavAskSaveChangesResult;
+enum {
+
+  kNavAskSaveChangesSave = 1,
+  kNavAskSaveChangesCancel = 2,
+  kNavAskSaveChangesDontSave = 3
+};
+
+
+typedef UInt32 NavAskDiscardChangesResult;
+enum {
+
+  kNavAskDiscardChanges = 1,
+  kNavAskDiscardChangesCancel = 2
+};
+
+
+typedef SInt16 NavFilterModes;
+enum {
+
+  kNavFilteringBrowserList = 0,
+  kNavFilteringFavorites = 1,
+  kNavFilteringRecents = 2,
+  kNavFilteringShortCutVolumes = 3,
+  kNavFilteringLocationPopup = 4
+};
+
+
+enum {
+  kNavFileOrFolderVersion = 1
+};
+
+struct NavFileOrFolderInfo {
+  UInt16 version;
+  Boolean isFolder;
+  Boolean visible;
+  UInt32 creationDate;
+  UInt32 modificationDate;
+  union {
+    struct {
+      Boolean locked;
+      Boolean resourceOpen;
+      Boolean dataOpen;
+      Boolean reserved1;
+      UInt32 dataSize;
+      UInt32 resourceSize;
+      FInfo finderInfo;
+      FXInfo finderXInfo;
+    } fileInfo;
+    struct {
+      Boolean shareable;
+      Boolean sharePoint;
+      Boolean mounted;
+      Boolean readable;
+      Boolean writeable;
+      Boolean reserved2;
+      UInt32 numberOfFiles;
+      DInfo finderDInfo;
+      DXInfo finderDXInfo;
+      OSType folderType;
+      OSType folderCreator;
+      char reserved3[206];
+    } folderInfo;
+
+  } fileAndFolder;
+};
+typedef struct NavFileOrFolderInfo NavFileOrFolderInfo;
+union NavEventDataInfo {
+  EventRecord * event;
+  void * param;
+};
+typedef union NavEventDataInfo NavEventDataInfo;
+struct NavEventData {
+  NavEventDataInfo eventDataParms;
+  SInt16 itemHit;
+};
+typedef struct NavEventData NavEventData;
+typedef struct __NavDialog* NavDialogRef;
+typedef UInt32 NavUserAction;
+enum {
+
+
+
+
+
+  kNavUserActionNone = 0,
+
+
+
+
+  kNavUserActionCancel = 1,
+
+
+
+
+  kNavUserActionOpen = 2,
+
+
+
+
+  kNavUserActionSaveAs = 3,
+
+
+
+
+
+  kNavUserActionChoose = 4,
+
+
+
+
+  kNavUserActionNewFolder = 5,
+
+
+
+
+  kNavUserActionSaveChanges = 6,
+
+
+
+
+  kNavUserActionDontSaveChanges = 7,
+
+
+
+
+
+  kNavUserActionDiscardChanges = 8,
+
+
+
+
+
+  kNavUserActionReviewDocuments = 9,
+
+
+
+
+
+  kNavUserActionDiscardDocuments = 10
+};
+
+
+
+enum {
+  kNavCBRecVersion = 1
+};
+struct NavCBRec {
+
+
+
+
+  UInt16 version;
+
+
+
+
+  NavDialogRef context;
+
+
+
+
+  WindowRef window;
+
+
+
+
+  Rect customRect;
+
+
+
+
+  Rect previewRect;
+
+
+
+
+  NavEventData eventData;
+
+
+
+
+
+  NavUserAction userAction;
+
+
+
+
+  char reserved[218];
+};
+typedef struct NavCBRec NavCBRec;
+typedef NavCBRec * NavCBRecPtr;
+
+
+
+
+
+
+
+typedef SInt32 NavEventCallbackMessage;
+enum {
+
+
+
+
+
+  kNavCBEvent = 0,
+
+
+
+
+
+
+
+  kNavCBCustomize = 1,
+
+
+
+
+
+
+  kNavCBStart = 2,
+
+
+
+
+  kNavCBTerminate = 3,
+
+
+
+
+
+
+  kNavCBAdjustRect = 4,
+
+
+
+
+
+
+
+  kNavCBNewLocation = 5,
+
+
+
+
+  kNavCBShowDesktop = 6,
+
+
+
+
+
+
+  kNavCBSelectEntry = 7,
+  kNavCBPopupMenuSelect = 8,
+
+
+
+
+  kNavCBAccept = 9,
+
+
+
+
+  kNavCBCancel = 10,
+
+
+
+
+
+
+  kNavCBAdjustPreview = 11,
+
+
+
+
+
+
+
+  kNavCBUserAction = 12,
+
+
+
+
+
+
+  kNavCBOpenSelection = (long)0x80000000
+};
+
+
+typedef void * NavCallBackUserData;
+
+typedef void ( * NavEventProcPtr)(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, void *callBackUD);
+
+typedef Boolean ( * NavPreviewProcPtr)(NavCBRecPtr callBackParms, void *callBackUD);
+
+typedef Boolean ( * NavObjectFilterProcPtr)(AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode);
+typedef NavEventProcPtr NavEventUPP;
+typedef NavPreviewProcPtr NavPreviewUPP;
+typedef NavObjectFilterProcPtr NavObjectFilterUPP;
+extern NavEventUPP
+NewNavEventUPP(NavEventProcPtr userRoutine) ;
+extern NavPreviewUPP
+NewNavPreviewUPP(NavPreviewProcPtr userRoutine) ;
+extern NavObjectFilterUPP
+NewNavObjectFilterUPP(NavObjectFilterProcPtr userRoutine) ;
+extern void
+DisposeNavEventUPP(NavEventUPP userUPP) ;
+extern void
+DisposeNavPreviewUPP(NavPreviewUPP userUPP) ;
+extern void
+DisposeNavObjectFilterUPP(NavObjectFilterUPP userUPP) ;
+extern void
+InvokeNavEventUPP(
+  NavEventCallbackMessage callBackSelector,
+  NavCBRecPtr callBackParms,
+  void * callBackUD,
+  NavEventUPP userUPP) ;
+extern Boolean
+InvokeNavPreviewUPP(
+  NavCBRecPtr callBackParms,
+  void * callBackUD,
+  NavPreviewUPP userUPP) ;
+extern Boolean
+InvokeNavObjectFilterUPP(
+  AEDesc * theItem,
+  void * info,
+  void * callBackUD,
+  NavFilterModes filterMode,
+  NavObjectFilterUPP userUPP) ;
+
+typedef SInt32 NavCustomControlMessage;
+enum {
+  kNavCtlShowDesktop = 0,
+  kNavCtlSortBy = 1,
+  kNavCtlSortOrder = 2,
+  kNavCtlScrollHome = 3,
+  kNavCtlScrollEnd = 4,
+  kNavCtlPageUp = 5,
+  kNavCtlPageDown = 6,
+  kNavCtlGetLocation = 7,
+  kNavCtlSetLocation = 8,
+  kNavCtlGetSelection = 9,
+  kNavCtlSetSelection = 10,
+  kNavCtlShowSelection = 11,
+  kNavCtlOpenSelection = 12,
+  kNavCtlEjectVolume = 13,
+  kNavCtlNewFolder = 14,
+  kNavCtlCancel = 15,
+  kNavCtlAccept = 16,
+  kNavCtlIsPreviewShowing = 17,
+  kNavCtlAddControl = 18,
+  kNavCtlAddControlList = 19,
+  kNavCtlGetFirstControlID = 20,
+  kNavCtlSelectCustomType = 21,
+  kNavCtlSelectAllType = 22,
+  kNavCtlGetEditFileName = 23,
+  kNavCtlSetEditFileName = 24,
+  kNavCtlSelectEditFileName = 25,
+  kNavCtlBrowserSelectAll = 26,
+  kNavCtlGotoParent = 27,
+  kNavCtlSetActionState = 28,
+  kNavCtlBrowserRedraw = 29,
+  kNavCtlTerminate = 30
+};
+
+typedef UInt32 NavActionState;
+enum {
+  kNavNormalState = 0x00000000,
+  kNavDontOpenState = 0x00000001,
+  kNavDontSaveState = 0x00000002,
+  kNavDontChooseState = 0x00000004,
+  kNavDontNewFolderState = 0x00000010
+};
+
+typedef UInt16 NavPopupMenuItem;
+enum {
+  kNavAllKnownFiles = 0,
+  kNavAllReadableFiles = 1,
+  kNavAllFiles = 2
+};
+
+typedef UInt16 NavSortKeyField;
+enum {
+  kNavSortNameField = 0,
+  kNavSortDateField = 1
+};
+
+
+typedef UInt16 NavSortOrder;
+enum {
+  kNavSortAscending = 0,
+  kNavSortDescending = 1
+};
+
+
+typedef UInt32 NavDialogOptionFlags;
+enum {
+  kNavDefaultNavDlogOptions = 0x000000E4,
+  kNavNoTypePopup = 0x00000001,
+  kNavDontAutoTranslate = 0x00000002,
+  kNavDontAddTranslateItems = 0x00000004,
+  kNavAllFilesInPopup = 0x00000010,
+  kNavAllowStationery = 0x00000020,
+  kNavAllowPreviews = 0x00000040,
+  kNavAllowMultipleFiles = 0x00000080,
+  kNavAllowInvisibleFiles = 0x00000100,
+  kNavDontResolveAliases = 0x00000200,
+  kNavSelectDefaultLocation = 0x00000400,
+  kNavSelectAllReadableItem = 0x00000800,
+  kNavSupportPackages = 0x00001000,
+  kNavAllowOpenPackages = 0x00002000,
+  kNavDontAddRecents = 0x00004000,
+  kNavDontUseCustomFrame = 0x00008000,
+  kNavDontConfirmReplacement = 0x00010000,
+  kNavPreserveSaveFileExtension = 0x00020000
+};
+
+
+typedef UInt32 NavTranslationOptions;
+enum {
+  kNavTranslateInPlace = 0,
+  kNavTranslateCopy = 1
+};
+
+
+enum {
+  kNavMenuItemSpecVersion = 0
+};
+
+struct NavMenuItemSpec {
+  UInt16 version;
+  OSType menuCreator;
+  OSType menuType;
+  Str255 menuItemName;
+  char reserved[245];
+};
+typedef struct NavMenuItemSpec NavMenuItemSpec;
+typedef NavMenuItemSpec * NavMenuItemSpecArrayPtr;
+typedef NavMenuItemSpecArrayPtr * NavMenuItemSpecArrayHandle;
+typedef NavMenuItemSpecArrayPtr NavMenuItemSpecPtr;
+typedef NavMenuItemSpecArrayHandle NavMenuItemSpecHandle;
+enum {
+  kNavGenericSignature = '****'
+};
+
+struct NavTypeList {
+  OSType componentSignature;
+  short reserved;
+  short osTypeCount;
+  OSType osType[1];
+};
+typedef struct NavTypeList NavTypeList;
+typedef NavTypeList * NavTypeListPtr;
+typedef NavTypeListPtr * NavTypeListHandle;
+enum {
+  kNavDialogOptionsVersion = 0
+};
+
+struct NavDialogOptions {
+  UInt16 version;
+  NavDialogOptionFlags dialogOptionFlags;
+  Point location;
+  Str255 clientName;
+  Str255 windowTitle;
+  Str255 actionButtonLabel;
+  Str255 cancelButtonLabel;
+  Str255 savedFileName;
+  Str255 message;
+  UInt32 preferenceKey;
+  NavMenuItemSpecArrayHandle popupExtension;
+  char reserved[494];
+};
+typedef struct NavDialogOptions NavDialogOptions;
+enum {
+  kNavReplyRecordVersion = 2
+};
+struct NavReplyRecord {
+
+
+
+
+
+
+  UInt16 version;
+
+
+
+
+  Boolean validRecord;
+
+
+
+
+
+
+
+  Boolean replacing;
+
+
+
+
+
+  Boolean isStationery;
+
+
+
+
+
+  Boolean translationNeeded;
+  AEDescList selection;
+
+
+
+
+
+  ScriptCode keyScript;
+
+
+
+
+
+
+
+  FileTranslationSpecArrayHandle fileTranslation;
+
+
+
+
+  UInt32 reserved1;
+
+
+
+
+
+
+
+  CFStringRef saveFileName;
+  Boolean saveFileExtensionHidden;
+
+
+
+
+  UInt8 reserved2;
+
+
+
+
+  char reserved[225];
+};
+typedef struct NavReplyRecord NavReplyRecord;
+extern OSErr
+NavLoad(void);
+extern OSErr
+NavUnload(void);
+extern UInt32
+NavLibraryVersion(void) ;
+extern OSErr
+NavGetDefaultDialogOptions(NavDialogOptions * dialogOptions) ;
+extern OSErr
+NavGetFile(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  NavPreviewUPP previewProc,
+  NavObjectFilterUPP filterProc,
+  NavTypeListHandle typeList,
+  void * callBackUD) ;
+extern OSErr
+NavPutFile(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  OSType fileType,
+  OSType fileCreator,
+  void * callBackUD) ;
+extern OSErr
+NavAskSaveChanges(
+  NavDialogOptions * dialogOptions,
+  NavAskSaveChangesAction action,
+  NavAskSaveChangesResult * reply,
+  NavEventUPP eventProc,
+  void * callBackUD) ;
+extern OSErr
+NavCustomAskSaveChanges(
+  NavDialogOptions * dialogOptions,
+  NavAskSaveChangesResult * reply,
+  NavEventUPP eventProc,
+  void * callBackUD) ;
+extern OSErr
+NavAskDiscardChanges(
+  NavDialogOptions * dialogOptions,
+  NavAskDiscardChangesResult * reply,
+  NavEventUPP eventProc,
+  void * callBackUD) ;
+extern OSErr
+NavChooseFile(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  NavPreviewUPP previewProc,
+  NavObjectFilterUPP filterProc,
+  NavTypeListHandle typeList,
+  void * callBackUD) ;
+extern OSErr
+NavChooseFolder(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  NavObjectFilterUPP filterProc,
+  void * callBackUD) ;
+extern OSErr
+NavChooseVolume(
+  AEDesc * defaultSelection,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  NavObjectFilterUPP filterProc,
+  void * callBackUD) ;
+extern OSErr
+NavChooseObject(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  NavObjectFilterUPP filterProc,
+  void * callBackUD) ;
+extern OSErr
+NavNewFolder(
+  AEDesc * defaultLocation,
+  NavReplyRecord * reply,
+  NavDialogOptions * dialogOptions,
+  NavEventUPP eventProc,
+  void * callBackUD) ;
+extern OSErr
+NavTranslateFile(
+  NavReplyRecord * reply,
+  NavTranslationOptions howToTranslate) ;
+extern OSErr
+NavCompleteSave(
+  NavReplyRecord * reply,
+  NavTranslationOptions howToTranslate) ;
+extern OSErr
+NavCustomControl(
+  NavDialogRef dialog,
+  NavCustomControlMessage selector,
+  void * parms) ;
+extern OSErr
+NavCreatePreview(
+  AEDesc * theObject,
+  OSType previewDataType,
+  const void * previewData,
+  Size previewDataSize) ;
+extern OSErr
+NavDisposeReply(NavReplyRecord * reply) ;
+extern Boolean
+NavServicesCanRun(void);
+    inline Boolean NavServicesAvailable() { return true; }
+enum {
+  kNavDialogCreationOptionsVersion = 0
+};
+struct NavDialogCreationOptions {
+
+
+
+
+
+  UInt16 version;
+
+
+
+
+
+  NavDialogOptionFlags optionFlags;
+
+
+
+
+
+
+  Point location;
+  CFStringRef clientName;
+
+
+
+
+
+  CFStringRef windowTitle;
+
+
+
+
+
+  CFStringRef actionButtonLabel;
+
+
+
+
+
+  CFStringRef cancelButtonLabel;
+
+
+
+
+
+  CFStringRef saveFileName;
+
+
+
+
+
+
+  CFStringRef message;
+  UInt32 preferenceKey;
+
+
+
+
+
+
+  CFArrayRef popupExtension;
+
+
+
+
+
+
+
+  WindowModality modality;
+
+
+
+
+
+  WindowRef parentWindow;
+
+
+
+
+  char reserved[16];
+};
+typedef struct NavDialogCreationOptions NavDialogCreationOptions;
+extern OSStatus
+NavGetDefaultDialogCreationOptions(NavDialogCreationOptions * outOptions) ;
+extern OSStatus
+NavCreateGetFileDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavTypeListHandle inTypeList,
+  NavEventUPP inEventProc,
+  NavPreviewUPP inPreviewProc,
+  NavObjectFilterUPP inFilterProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreatePutFileDialog(
+  const NavDialogCreationOptions * inOptions,
+  OSType inFileType,
+  OSType inFileCreator,
+  NavEventUPP inEventProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateAskReviewDocumentsDialog(
+  const NavDialogCreationOptions * inOptions,
+  UInt32 inDocumentCount,
+  NavEventUPP inEventProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateAskSaveChangesDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavAskSaveChangesAction inAction,
+  NavEventUPP inEventProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateAskDiscardChangesDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavEventUPP inEventProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateChooseFileDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavTypeListHandle inTypeList,
+  NavEventUPP inEventProc,
+  NavPreviewUPP inPreviewProc,
+  NavObjectFilterUPP inFilterProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateChooseFolderDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavEventUPP inEventProc,
+  NavObjectFilterUPP inFilterProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateChooseVolumeDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavEventUPP inEventProc,
+  NavObjectFilterUPP inFilterProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateChooseObjectDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavEventUPP inEventProc,
+  NavPreviewUPP inPreviewProc,
+  NavObjectFilterUPP inFilterProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavCreateNewFolderDialog(
+  const NavDialogCreationOptions * inOptions,
+  NavEventUPP inEventProc,
+  void * inClientData,
+  NavDialogRef * outDialog) ;
+extern OSStatus
+NavDialogRun(NavDialogRef inDialog) ;
+extern void
+NavDialogDispose(NavDialogRef inDialog) ;
+extern WindowRef
+NavDialogGetWindow(NavDialogRef inDialog) ;
+extern NavUserAction
+NavDialogGetUserAction(NavDialogRef inDialog) ;
+extern OSStatus
+NavDialogGetReply(
+  NavDialogRef inDialog,
+  NavReplyRecord * outReply) ;
+extern CFStringRef
+NavDialogGetSaveFileName(NavDialogRef inPutFileDialog) ;
+extern OSStatus
+NavDialogSetSaveFileName(
+  NavDialogRef inPutFileDialog,
+  CFStringRef inFileName) ;
+extern Boolean
+NavDialogGetSaveFileExtensionHidden(NavDialogRef inPutFileDialog) ;
+extern OSStatus
+NavDialogSetSaveFileExtensionHidden(
+  NavDialogRef inPutFileDialog,
+  Boolean inHidden) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+
+  kMaximumSmallFract = 0x0000FFFF
+};
+
+enum {
+  kDefaultColorPickerWidth = 383,
+  kDefaultColorPickerHeight = 238
+};
+
+typedef SInt16 DialogPlacementSpec;
+enum {
+  kAtSpecifiedOrigin = 0,
+  kDeepestColorScreen = 1,
+  kCenterOnMainScreen = 2
+};
+
+
+
+enum {
+  kColorPickerDialogIsMoveable = 1,
+  kColorPickerDialogIsModal = 2,
+  kColorPickerCanModifyPalette = 4,
+  kColorPickerCanAnimatePalette = 8,
+  kColorPickerAppIsColorSyncAware = 16,
+  kColorPickerInSystemDialog = 32,
+  kColorPickerInApplicationDialog = 64,
+  kColorPickerInPickerDialog = 128,
+  kColorPickerDetachedFromChoices = 256,
+  kColorPickerCallColorProcLive = 512
+};
+typedef unsigned short SmallFract;
+
+
+
+
+struct HSVColor {
+  SmallFract hue;
+  SmallFract saturation;
+  SmallFract value;
+};
+typedef struct HSVColor HSVColor;
+struct HSLColor {
+  SmallFract hue;
+  SmallFract saturation;
+  SmallFract lightness;
+};
+typedef struct HSLColor HSLColor;
+struct CMYColor {
+  SmallFract cyan;
+  SmallFract magenta;
+  SmallFract yellow;
+};
+typedef struct CMYColor CMYColor;
+struct PMColor {
+  CMProfileHandle profile;
+  CMColor color;
+};
+typedef struct PMColor PMColor;
+typedef PMColor * PMColorPtr;
+struct NPMColor {
+  CMProfileRef profile;
+  CMColor color;
+};
+typedef struct NPMColor NPMColor;
+typedef NPMColor * NPMColorPtr;
+typedef struct OpaquePicker* Picker;
+typedef Picker picker;
+struct PickerMenuItemInfo {
+  short editMenuID;
+  short cutItem;
+  short copyItem;
+  short pasteItem;
+  short clearItem;
+  short undoItem;
+};
+typedef struct PickerMenuItemInfo PickerMenuItemInfo;
+
+
+
+
+typedef void ( * ColorChangedProcPtr)(long userData, PMColor *newColor);
+typedef void ( * NColorChangedProcPtr)(long userData, NPMColor *newColor);
+typedef Boolean ( * UserEventProcPtr)(EventRecord * event);
+typedef ColorChangedProcPtr ColorChangedUPP;
+typedef NColorChangedProcPtr NColorChangedUPP;
+typedef UserEventProcPtr UserEventUPP;
+struct ColorPickerInfo {
+  PMColor theColor;
+  CMProfileHandle dstProfile;
+  UInt32 flags;
+  DialogPlacementSpec placeWhere;
+  Point dialogOrigin;
+  OSType pickerType;
+  UserEventUPP eventProc;
+  ColorChangedUPP colorProc;
+  UInt32 colorProcData;
+  Str255 prompt;
+  PickerMenuItemInfo mInfo;
+  Boolean newColorChosen;
+  SInt8 filler;
+};
+typedef struct ColorPickerInfo ColorPickerInfo;
+struct NColorPickerInfo {
+  NPMColor theColor;
+  CMProfileRef dstProfile;
+  UInt32 flags;
+  DialogPlacementSpec placeWhere;
+  Point dialogOrigin;
+  OSType pickerType;
+  UserEventUPP eventProc;
+  NColorChangedUPP colorProc;
+  UInt32 colorProcData;
+  Str255 prompt;
+  PickerMenuItemInfo mInfo;
+  Boolean newColorChosen;
+  UInt8 reserved;
+};
+typedef struct NColorPickerInfo NColorPickerInfo;
+extern SmallFract
+Fix2SmallFract(Fixed f);
+extern Fixed
+SmallFract2Fix(SmallFract s);
+extern void
+CMY2RGB(
+  const CMYColor * cColor,
+  RGBColor * rColor);
+extern void
+RGB2CMY(
+  const RGBColor * rColor,
+  CMYColor * cColor);
+extern void
+HSL2RGB(
+  const HSLColor * hColor,
+  RGBColor * rColor);
+extern void
+RGB2HSL(
+  const RGBColor * rColor,
+  HSLColor * hColor);
+extern void
+HSV2RGB(
+  const HSVColor * hColor,
+  RGBColor * rColor);
+extern void
+RGB2HSV(
+  const RGBColor * rColor,
+  HSVColor * hColor);
+extern Boolean
+GetColor(
+  Point where,
+  ConstStr255Param prompt,
+  const RGBColor * inColor,
+  RGBColor * outColor);
+extern OSErr
+PickColor(ColorPickerInfo * theColorInfo);
+extern OSErr
+NPickColor(NColorPickerInfo * theColorInfo);
+extern ColorChangedUPP
+NewColorChangedUPP(ColorChangedProcPtr userRoutine);
+extern NColorChangedUPP
+NewNColorChangedUPP(NColorChangedProcPtr userRoutine);
+extern UserEventUPP
+NewUserEventUPP(UserEventProcPtr userRoutine);
+extern void
+DisposeColorChangedUPP(ColorChangedUPP userUPP);
+extern void
+DisposeNColorChangedUPP(NColorChangedUPP userUPP);
+extern void
+DisposeUserEventUPP(UserEventUPP userUPP);
+extern void
+InvokeColorChangedUPP(
+  long userData,
+  PMColor * newColor,
+  ColorChangedUPP userUPP);
+extern void
+InvokeNColorChangedUPP(
+  long userData,
+  NPMColor * newColor,
+  NColorChangedUPP userUPP);
+extern Boolean
+InvokeUserEventUPP(
+  EventRecord * event,
+  UserEventUPP userUPP);
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef void ( * CalibrateEventProcPtr)(EventRecord * event);
+typedef CalibrateEventProcPtr CalibrateEventUPP;
+
+
+
+enum {
+  kCalibratorNamePrefix = 'cali'
+};
+
+struct CalibratorInfo {
+  UInt32 dataSize;
+  CMDisplayIDType displayID;
+  UInt32 profileLocationSize;
+  CMProfileLocation * profileLocationPtr;
+  CalibrateEventUPP eventProc;
+  Boolean isGood;
+};
+typedef struct CalibratorInfo CalibratorInfo;
+typedef Boolean ( * CanCalibrateProcPtr)(CMDisplayIDType displayID, Str255 errMessage);
+typedef OSErr ( * CalibrateProcPtr)(CalibratorInfo * theInfo);
+typedef CanCalibrateProcPtr CanCalibrateUPP;
+typedef CalibrateProcPtr CalibrateUPP;
+extern CalibrateEventUPP
+NewCalibrateEventUPP(CalibrateEventProcPtr userRoutine) ;
+extern CanCalibrateUPP
+NewCanCalibrateUPP(CanCalibrateProcPtr userRoutine);
+extern CalibrateUPP
+NewCalibrateUPP(CalibrateProcPtr userRoutine);
+extern void
+DisposeCalibrateEventUPP(CalibrateEventUPP userUPP) ;
+extern void
+DisposeCanCalibrateUPP(CanCalibrateUPP userUPP);
+extern void
+DisposeCalibrateUPP(CalibrateUPP userUPP);
+extern void
+InvokeCalibrateEventUPP(
+  EventRecord * event,
+  CalibrateEventUPP userUPP) ;
+extern Boolean
+InvokeCanCalibrateUPP(
+  CMDisplayIDType displayID,
+  Str255 errMessage,
+  CanCalibrateUPP userUPP);
+extern OSErr
+InvokeCalibrateUPP(
+  CalibratorInfo * theInfo,
+  CalibrateUPP userUPP);
+extern OSErr
+CMCalibrateDisplay(CalibratorInfo * theInfo) ;
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef UInt32 NSLDialogOptionFlags;
+enum {
+  kNSLDefaultNSLDlogOptions = 0x00000000,
+  kNSLNoURLTEField = 0x00000001,
+  kNSLAddServiceTypes = 0x00000002,
+  kNSLClientHandlesRecents = 0x00000004
+};
+
+
+struct NSLDialogOptions {
+  UInt16 version;
+  NSLDialogOptionFlags dialogOptionFlags;
+  Str255 windowTitle;
+  Str255 actionButtonLabel;
+  Str255 cancelButtonLabel;
+  Str255 message;
+};
+typedef struct NSLDialogOptions NSLDialogOptions;
+typedef Boolean ( * NSLURLFilterProcPtr)(char *url, Str255 displayString);
+
+typedef void ( * NSLEventProcPtr)(EventRecord *newEvent, void *userContext);
+typedef NSLURLFilterProcPtr NSLURLFilterUPP;
+typedef NSLEventProcPtr NSLEventUPP;
+extern NSLURLFilterUPP
+NewNSLURLFilterUPP(NSLURLFilterProcPtr userRoutine);
+extern NSLEventUPP
+NewNSLEventUPP(NSLEventProcPtr userRoutine);
+extern void
+DisposeNSLURLFilterUPP(NSLURLFilterUPP userUPP);
+extern void
+DisposeNSLEventUPP(NSLEventUPP userUPP);
+extern Boolean
+InvokeNSLURLFilterUPP(
+  char * url,
+  Str255 displayString,
+  NSLURLFilterUPP userUPP);
+extern void
+InvokeNSLEventUPP(
+  EventRecord * newEvent,
+  void * userContext,
+  NSLEventUPP userUPP);
+extern OSStatus
+NSLStandardGetURL(
+  NSLDialogOptions * dialogOptions,
+  NSLEventUPP eventProc,
+  void * eventProcContextPtr,
+  NSLURLFilterUPP filterProc,
+  char * serviceTypeList,
+  char ** userSelectedURL);
+extern OSStatus
+NSLGetDefaultDialogOptions(NSLDialogOptions * dialogOptions);
+extern char *
+NSLFreeURL(char * url);
+extern OSErr
+NSLSaveURLAliasToFolder(
+  OSType folderSelectorType,
+  const char * url,
+  const char * userFriendlyName);
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+
+extern "C" {
+
+
+enum {
+
+
+
+
+  kEventClassFont = 'font'
+};
+
+
+
+
+
+
+enum {
+
+
+
+
+
+
+
+  kHICommandShowHideFontPanel = 'shfp'
+};
+enum {
+
+
+
+
+
+  kEventFontPanelClosed = 1,
+  kEventFontSelection = 2
+};
+enum {
+  typeATSUFontID = typeUInt32,
+  typeATSUSize = typeFixed,
+  typeFMFontFamily = typeSInt16,
+  typeFMFontStyle = typeSInt16,
+  typeFMFontSize = typeSInt16,
+  typeFontColor = typeRGBColor,
+  kEventParamATSUFontID = 'auid',
+  kEventParamATSUFontSize = 'ausz',
+  kEventParamFMFontFamily = 'fmfm',
+  kEventParamFMFontStyle = 'fmst',
+  kEventParamFMFontSize = 'fmsz',
+  kEventParamFontColor = 'fclr'
+};
+enum {
+  fontPanelShowErr = -8880,
+  fontPanelSelectionStyleErr = -8881,
+  fontPanelFontSelectionQDStyleVersionErr = -8882
+};
+
+
+
+
+
+
+enum {
+  kFontSelectionATSUIType = 'astl',
+  kFontSelectionQDType = 'qstl'
+};
+
+
+
+
+
+enum {
+  kFontSelectionQDStyleVersionZero = 0
+};
+struct FontSelectionQDStyle {
+  UInt32 version;
+  FMFontFamilyInstance instance;
+  FMFontSize size;
+  Boolean hasColor;
+  UInt8 reserved;
+  RGBColor color;
+};
+typedef struct FontSelectionQDStyle FontSelectionQDStyle;
+typedef FontSelectionQDStyle * FontSelectionQDStylePtr;
+extern Boolean
+FPIsFontPanelVisible(void) ;
+extern OSStatus
+FPShowHideFontPanel(void) ;
+extern OSStatus
+SetFontInfoForSelection(
+  OSType iStyleType,
+  UInt32 iNumStyles,
+  void * iStyles,
+  HIObjectRef iFPEventTarget) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef struct OpaqueHRReference* HRReference;
+extern OSStatus
+HRGetHTMLRenderingLibVersion(NumVersion * returnVers) ;
+    inline Boolean HRHTMLRenderingLibAvailable() { return true; }
+
+
+
+
+
+enum {
+  kHRRendererHTML32Type = 'ht32'
+};
+extern OSStatus
+HRNewReference(
+  HRReference * hrRef,
+  OSType rendererType,
+  GrafPtr grafPtr) ;
+extern OSStatus
+HRNewReferenceInWindow(
+  HRReference * hrRef,
+  OSType rendererType,
+  WindowRef inWindowRef) ;
+extern OSStatus
+HRDisposeReference(HRReference hrRef) ;
+extern SInt32
+HRFreeMemory(Size inBytesNeeded) ;
+extern void
+HRScreenConfigurationChanged(void) ;
+extern Boolean
+HRIsHREvent(const EventRecord * eventRecord) ;
+extern OSStatus
+HRSetGrafPtr(
+  HRReference hrRef,
+  GrafPtr grafPtr) ;
+extern OSStatus
+HRSetWindowRef(
+  HRReference hrRef,
+  WindowRef windowRef) ;
+extern OSStatus
+HRSetEmbeddingControl(
+  HRReference hrRef,
+  ControlRef controlRef) ;
+extern OSStatus
+HRActivate(HRReference hrRef) ;
+extern OSStatus
+HRDeactivate(HRReference hrRef) ;
+extern OSStatus
+HRDraw(
+  HRReference hrRef,
+  RgnHandle updateRgnH) ;
+extern OSStatus
+HRDrawInPort(
+  HRReference hrRef,
+  RgnHandle updateRgnH,
+  CGrafPtr grafPtr) ;
+extern OSStatus
+HRSetRenderingRect(
+  HRReference hrRef,
+  const Rect * renderingRect) ;
+extern OSStatus
+HRGetRenderedImageSize(
+  HRReference hrRef,
+  Point * renderingSize) ;
+extern OSStatus
+HRGetRenderedImageSize32(
+  HRReference hrRef,
+  UInt32 * height,
+  UInt32 * width) ;
+extern OSStatus
+HRScrollToLocation(
+  HRReference hrRef,
+  Point * location) ;
+extern OSStatus
+HRScrollToImageLocation32(
+  HRReference hrRef,
+  SInt32 h,
+  SInt32 v) ;
+extern OSStatus
+HRForceQuickdraw(
+  HRReference hrRef,
+  Boolean forceQuickdraw) ;
+
+
+typedef SInt16 HRScrollbarState;
+enum {
+  eHRScrollbarOn = 0,
+  eHRScrollbarOff = 1,
+  eHRScrollbarAuto = 2
+};
+extern OSStatus
+HRSetScrollbarState(
+  HRReference hrRef,
+  HRScrollbarState hScrollbarState,
+  HRScrollbarState vScrollbarState) ;
+extern OSStatus
+HRSetDrawBorder(
+  HRReference hrRef,
+  Boolean drawBorder) ;
+extern OSStatus
+HRSetGrowboxCutout(
+  HRReference hrRef,
+  Boolean allowCutout) ;
+extern OSStatus
+HRGoToFile(
+  HRReference hrRef,
+  const FSSpec * fsspec,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGoToURL(
+  HRReference hrRef,
+  const char * url,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGoToAnchor(
+  HRReference hrRef,
+  const char * anchorName) ;
+extern OSStatus
+HRGoToPtr(
+  HRReference hrRef,
+  char * buffer,
+  UInt32 bufferSize,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGoToFSRef(
+  HRReference hrRef,
+  const FSRef * fref,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGoToCFURL(
+  HRReference hrRef,
+  CFURLRef url,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGoToAnchorCFString(
+  HRReference hrRef,
+  CFStringRef anchorName) ;
+extern OSStatus
+HRGoToData(
+  HRReference hrRef,
+  CFDataRef data,
+  Boolean addToHistory,
+  Boolean forceRefresh) ;
+extern OSStatus
+HRGetRootURL(
+  HRReference hrRef,
+  Handle rootURLH) ;
+extern OSStatus
+HRGetBaseURL(
+  HRReference hrRef,
+  Handle baseURLH) ;
+extern OSStatus
+HRGetHTMLURL(
+  HRReference hrRef,
+  Handle HTMLURLH) ;
+extern OSStatus
+HRGetTitle(
+  HRReference hrRef,
+  StringPtr title) ;
+extern OSStatus
+HRGetHTMLFile(
+  HRReference hrRef,
+  FSSpec * fsspec) ;
+extern OSStatus
+HRGetRootURLAsCFString(
+  HRReference hrRef,
+  CFStringRef * rootString) ;
+extern OSStatus
+HRGetBaseURLAsCFString(
+  HRReference hrRef,
+  CFStringRef * baseString) ;
+extern OSStatus
+HRGetHTMLURLAsCFURL(
+  HRReference hrRef,
+  CFURLRef * theURL) ;
+extern OSStatus
+HRGetTitleAsCFString(
+  HRReference hrRef,
+  CFStringRef * title) ;
+extern OSStatus
+HRGetHTMLFileAsFSRef(
+  HRReference hrRef,
+  FSRef * fref) ;
+extern OSStatus
+HRUtilCreateFullURL(
+  const char * rootURL,
+  const char * linkURL,
+  Handle fullURLH) ;
+extern OSStatus
+HRUtilGetFSSpecFromURL(
+  const char * rootURL,
+  const char * linkURL,
+  FSSpec * destSpec) ;
+extern OSStatus
+HRUtilGetURLFromFSSpec(
+  const FSSpec * fsspec,
+  Handle urlHandle) ;
+extern OSStatus
+HRUtilCreateFullCFURL(
+  CFStringRef rootString,
+  CFStringRef linkString,
+  CFURLRef * url) ;
+extern OSStatus
+HRUtilGetFSRefFromURL(
+  CFStringRef rootString,
+  CFStringRef linkString,
+  FSRef * destRef) ;
+extern OSStatus
+HRUtilGetURLFromFSRef(
+  const FSRef * fileRef,
+  CFURLRef * url) ;
+typedef Boolean ( * HRWasURLVisitedProcPtr)(const char *url, void *refCon);
+typedef HRWasURLVisitedProcPtr HRWasURLVisitedUPP;
+extern void
+HRRegisterWasURLVisitedUPP(
+  HRWasURLVisitedUPP inWasURLVisitedUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterWasURLVisitedUPP(HRReference hrRef) ;
+typedef Boolean ( * HRWasCFURLVisitedProcPtr)(CFURLRef url, void *refCon);
+typedef HRWasCFURLVisitedProcPtr HRWasCFURLVisitedUPP;
+extern void
+HRRegisterWasCFURLVisitedUPP(
+  HRWasCFURLVisitedUPP inWasCFURLVisitedUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterWasCFURLVisitedUPP(HRReference hrRef) ;
+typedef OSStatus ( * HRNewURLProcPtr)(const char *url, const char *targetFrame, Boolean addToHistory, void *refCon);
+typedef HRNewURLProcPtr HRNewURLUPP;
+extern void
+HRRegisterNewURLUPP(
+  HRNewURLUPP inNewURLUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterNewURLUPP(HRReference hrRef) ;
+typedef OSStatus ( * HRNewCFURLProcPtr)(CFURLRef url, CFStringRef targetString, Boolean addToHistory, void *refCon);
+typedef HRNewCFURLProcPtr HRNewCFURLUPP;
+extern void
+HRRegisterNewCFURLUPP(
+  HRNewCFURLUPP inURLUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterNewCFURLUPP(HRReference hrRef) ;
+typedef UInt16 URLSourceType;
+enum {
+  kHRLookingForHTMLSource = 1,
+  kHRLookingForImage = 2,
+  kHRLookingForEmbedded = 3,
+  kHRLookingForImageMap = 4,
+  kHRLookingForFrame = 5
+};
+
+typedef OSStatus ( * HRURLToFSSpecProcPtr)(const char *rootURL, const char *linkURL, FSSpec *fsspec, URLSourceType urlSourceType, void *refCon);
+typedef HRURLToFSSpecProcPtr HRURLToFSSpecUPP;
+extern void
+HRRegisterURLToFSSpecUPP(
+  HRURLToFSSpecUPP inURLToFSSpecUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterURLToFSSpecUPP(HRReference hrRef) ;
+typedef OSStatus ( * HRURLToFSRefProcPtr)(CFStringRef rootString, CFStringRef linkString, FSRef *fref, URLSourceType urlSourceType, void *refCon);
+typedef HRURLToFSRefProcPtr HRURLToFSRefUPP;
+extern void
+HRRegisterURLToFSRefUPP(
+  HRURLToFSRefUPP inURLToFSRefUPP,
+  HRReference hrRef,
+  void * inRefCon) ;
+extern void
+HRUnregisterURLToFSRefUPP(HRReference hrRef) ;
+extern HRWasURLVisitedUPP
+NewHRWasURLVisitedUPP(HRWasURLVisitedProcPtr userRoutine) ;
+extern HRWasCFURLVisitedUPP
+NewHRWasCFURLVisitedUPP(HRWasCFURLVisitedProcPtr userRoutine) ;
+extern HRNewURLUPP
+NewHRNewURLUPP(HRNewURLProcPtr userRoutine) ;
+extern HRNewCFURLUPP
+NewHRNewCFURLUPP(HRNewCFURLProcPtr userRoutine) ;
+extern HRURLToFSSpecUPP
+NewHRURLToFSSpecUPP(HRURLToFSSpecProcPtr userRoutine) ;
+extern HRURLToFSRefUPP
+NewHRURLToFSRefUPP(HRURLToFSRefProcPtr userRoutine) ;
+extern void
+DisposeHRWasURLVisitedUPP(HRWasURLVisitedUPP userUPP) ;
+extern void
+DisposeHRWasCFURLVisitedUPP(HRWasCFURLVisitedUPP userUPP) ;
+extern void
+DisposeHRNewURLUPP(HRNewURLUPP userUPP) ;
+extern void
+DisposeHRNewCFURLUPP(HRNewCFURLUPP userUPP) ;
+extern void
+DisposeHRURLToFSSpecUPP(HRURLToFSSpecUPP userUPP) ;
+extern void
+DisposeHRURLToFSRefUPP(HRURLToFSRefUPP userUPP) ;
+extern Boolean
+InvokeHRWasURLVisitedUPP(
+  const char * url,
+  void * refCon,
+  HRWasURLVisitedUPP userUPP) ;
+extern Boolean
+InvokeHRWasCFURLVisitedUPP(
+  CFURLRef url,
+  void * refCon,
+  HRWasCFURLVisitedUPP userUPP) ;
+extern OSStatus
+InvokeHRNewURLUPP(
+  const char * url,
+  const char * targetFrame,
+  Boolean addToHistory,
+  void * refCon,
+  HRNewURLUPP userUPP) ;
+extern OSStatus
+InvokeHRNewCFURLUPP(
+  CFURLRef url,
+  CFStringRef targetString,
+  Boolean addToHistory,
+  void * refCon,
+  HRNewCFURLUPP userUPP) ;
+extern OSStatus
+InvokeHRURLToFSSpecUPP(
+  const char * rootURL,
+  const char * linkURL,
+  FSSpec * fsspec,
+  URLSourceType urlSourceType,
+  void * refCon,
+  HRURLToFSSpecUPP userUPP) ;
+extern OSStatus
+InvokeHRURLToFSRefUPP(
+  CFStringRef rootString,
+  CFStringRef linkString,
+  FSRef * fref,
+  URLSourceType urlSourceType,
+  void * refCon,
+  HRURLToFSRefUPP userUPP) ;
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+
+enum {
+  kSRNotAvailable = -5100,
+  kSRInternalError = -5101,
+  kSRComponentNotFound = -5102,
+  kSROutOfMemory = -5103,
+  kSRNotASpeechObject = -5104,
+  kSRBadParameter = -5105,
+  kSRParamOutOfRange = -5106,
+  kSRBadSelector = -5107,
+  kSRBufferTooSmall = -5108,
+  kSRNotARecSystem = -5109,
+  kSRFeedbackNotAvail = -5110,
+  kSRCantSetProperty = -5111,
+  kSRCantGetProperty = -5112,
+  kSRCantSetDuringRecognition = -5113,
+  kSRAlreadyListening = -5114,
+  kSRNotListeningState = -5115,
+  kSRModelMismatch = -5116,
+  kSRNoClientLanguageModel = -5117,
+  kSRNoPendingUtterances = -5118,
+  kSRRecognitionCanceled = -5119,
+  kSRRecognitionDone = -5120,
+  kSROtherRecAlreadyModal = -5121,
+  kSRHasNoSubItems = -5122,
+  kSRSubItemNotFound = -5123,
+  kSRLanguageModelTooBig = -5124,
+  kSRAlreadyReleased = -5125,
+  kSRAlreadyFinished = -5126,
+  kSRWordNotFound = -5127,
+  kSRNotFinishedWithRejection = -5128,
+  kSRExpansionTooDeep = -5129,
+  kSRTooManyElements = -5130,
+  kSRCantAdd = -5131,
+  kSRSndInSourceDisconnected = -5132,
+  kSRCantReadLanguageObject = -5133,
+
+  kSRNotImplementedYet = -5199
+};
+
+
+
+typedef struct OpaqueSRSpeechObject* SRSpeechObject;
+typedef SRSpeechObject SRRecognitionSystem;
+typedef SRSpeechObject SRRecognizer;
+typedef SRSpeechObject SRSpeechSource;
+typedef SRSpeechSource SRRecognitionResult;
+typedef SRSpeechObject SRLanguageObject;
+typedef SRLanguageObject SRLanguageModel;
+typedef SRLanguageObject SRPath;
+typedef SRLanguageObject SRPhrase;
+typedef SRLanguageObject SRWord;
+
+typedef unsigned short SRSpeedSetting;
+
+typedef unsigned short SRRejectionLevel;
+
+
+
+struct SRCallBackStruct {
+  long what;
+  long message;
+  SRRecognizer instance;
+  OSErr status;
+  short flags;
+  long refCon;
+};
+typedef struct SRCallBackStruct SRCallBackStruct;
+
+typedef void ( * SRCallBackProcPtr)(SRCallBackStruct * param);
+typedef SRCallBackProcPtr SRCallBackUPP;
+extern SRCallBackUPP
+NewSRCallBackUPP(SRCallBackProcPtr userRoutine) ;
+extern void
+DisposeSRCallBackUPP(SRCallBackUPP userUPP) ;
+extern void
+InvokeSRCallBackUPP(
+  SRCallBackStruct * param,
+  SRCallBackUPP userUPP) ;
+
+struct SRCallBackParam {
+  SRCallBackUPP callBack;
+  long refCon;
+};
+typedef struct SRCallBackParam SRCallBackParam;
+
+enum {
+  kSRDefaultRecognitionSystemID = 0
+};
+
+
+enum {
+  kSRFeedbackAndListeningModes = 'fbwn',
+  kSRRejectedWord = 'rejq',
+  kSRCleanupOnClientExit = 'clup'
+};
+
+enum {
+  kSRNoFeedbackNoListenModes = 0,
+  kSRHasFeedbackHasListenModes = 1,
+  kSRNoFeedbackHasListenModes = 2
+};
+
+
+enum {
+  kSRDefaultSpeechSource = 0,
+  kSRLiveDesktopSpeechSource = 'dklv',
+  kSRCanned22kHzSpeechSource = 'ca22'
+};
+
+
+
+enum {
+  kSRNotifyRecognitionBeginning = 1L << 0,
+  kSRNotifyRecognitionDone = 1L << 1
+};
+
+
+
+enum {
+  kAESpeechSuite = 'sprc'
+};
+
+
+enum {
+  kAESpeechDone = 'srsd',
+  kAESpeechDetected = 'srbd'
+};
+
+
+enum {
+  keySRRecognizer = 'krec',
+  keySRSpeechResult = 'kspr',
+  keySRSpeechStatus = 'ksst'
+};
+
+
+enum {
+  typeSRRecognizer = 'trec',
+  typeSRSpeechResult = 'tspr'
+};
+
+
+
+enum {
+  kSRNotificationParam = 'noti',
+  kSRCallBackParam = 'call',
+  kSRSearchStatusParam = 'stat',
+  kSRAutoFinishingParam = 'afin',
+  kSRForegroundOnly = 'fgon',
+  kSRBlockBackground = 'blbg',
+  kSRBlockModally = 'blmd',
+  kSRWantsResultTextDrawn = 'txfb',
+  kSRWantsAutoFBGestures = 'dfbr',
+  kSRSoundInVolume = 'volu',
+  kSRReadAudioFSSpec = 'aurd',
+  kSRCancelOnSoundOut = 'caso',
+  kSRSpeedVsAccuracyParam = 'sped'
+};
+
+
+
+enum {
+  kSRUseToggleListen = 0,
+  kSRUsePushToTalk = 1
+};
+
+enum {
+  kSRListenKeyMode = 'lkmd',
+  kSRListenKeyCombo = 'lkey',
+  kSRListenKeyName = 'lnam',
+  kSRKeyWord = 'kwrd',
+  kSRKeyExpected = 'kexp'
+};
+
+
+enum {
+  kSRIdleRecognizer = 1L << 0,
+  kSRSearchInProgress = 1L << 1,
+  kSRSearchWaitForAllClients = 1L << 2,
+  kSRMustCancelSearch = 1L << 3,
+  kSRPendingSearch = 1L << 4
+};
+
+
+enum {
+  kSRTEXTFormat = 'TEXT',
+  kSRPhraseFormat = 'lmph',
+  kSRPathFormat = 'lmpt',
+  kSRLanguageModelFormat = 'lmfm'
+};
+
+
+enum {
+  kSRSpelling = 'spel',
+  kSRLMObjType = 'lmtp',
+  kSRRefCon = 'refc',
+  kSROptional = 'optl',
+  kSREnabled = 'enbl',
+  kSRRepeatable = 'rptb',
+  kSRRejectable = 'rjbl',
+
+  kSRRejectionLevel = 'rjct'
+};
+
+
+enum {
+  kSRLanguageModelType = 'lmob',
+  kSRPathType = 'path',
+  kSRPhraseType = 'phra',
+  kSRWordType = 'word'
+};
+
+
+enum {
+  kSRDefaultRejectionLevel = 50
+};
+extern OSErr
+SROpenRecognitionSystem(
+  SRRecognitionSystem * system,
+  OSType systemID) ;
+extern OSErr
+SRCloseRecognitionSystem(SRRecognitionSystem system) ;
+extern OSErr
+SRSetProperty(
+  SRSpeechObject srObject,
+  OSType selector,
+  const void * property,
+  Size propertyLen) ;
+extern OSErr
+SRGetProperty(
+  SRSpeechObject srObject,
+  OSType selector,
+  void * property,
+  Size * propertyLen) ;
+extern OSErr
+SRReleaseObject(SRSpeechObject srObject) ;
+extern OSErr
+SRGetReference(
+  SRSpeechObject srObject,
+  SRSpeechObject * newObjectRef) ;
+extern OSErr
+SRNewRecognizer(
+  SRRecognitionSystem system,
+  SRRecognizer * recognizer,
+  OSType sourceID) ;
+extern OSErr
+SRStartListening(SRRecognizer recognizer) ;
+extern OSErr
+SRStopListening(SRRecognizer recognizer) ;
+extern OSErr
+SRSetLanguageModel(
+  SRRecognizer recognizer,
+  SRLanguageModel languageModel) ;
+extern OSErr
+SRGetLanguageModel(
+  SRRecognizer recognizer,
+  SRLanguageModel * languageModel) ;
+extern OSErr
+SRContinueRecognition(SRRecognizer recognizer) ;
+extern OSErr
+SRCancelRecognition(SRRecognizer recognizer) ;
+extern OSErr
+SRIdle(void) ;
+extern OSErr
+SRNewLanguageModel(
+  SRRecognitionSystem system,
+  SRLanguageModel * model,
+  const void * name,
+  Size nameLength) ;
+extern OSErr
+SRNewPath(
+  SRRecognitionSystem system,
+  SRPath * path) ;
+extern OSErr
+SRNewPhrase(
+  SRRecognitionSystem system,
+  SRPhrase * phrase,
+  const void * text,
+  Size textLength) ;
+extern OSErr
+SRNewWord(
+  SRRecognitionSystem system,
+  SRWord * word,
+  const void * text,
+  Size textLength) ;
+extern OSErr
+SRPutLanguageObjectIntoHandle(
+  SRLanguageObject languageObject,
+  Handle lobjHandle) ;
+extern OSErr
+SRPutLanguageObjectIntoDataFile(
+  SRLanguageObject languageObject,
+  short fRefNum) ;
+extern OSErr
+SRNewLanguageObjectFromHandle(
+  SRRecognitionSystem system,
+  SRLanguageObject * languageObject,
+  Handle lObjHandle) ;
+extern OSErr
+SRNewLanguageObjectFromDataFile(
+  SRRecognitionSystem system,
+  SRLanguageObject * languageObject,
+  short fRefNum) ;
+extern OSErr
+SREmptyLanguageObject(SRLanguageObject languageObject) ;
+extern OSErr
+SRChangeLanguageObject(
+  SRLanguageObject languageObject,
+  const void * text,
+  Size textLength) ;
+extern OSErr
+SRAddLanguageObject(
+  SRLanguageObject base,
+  SRLanguageObject addon) ;
+extern OSErr
+SRAddText(
+  SRLanguageObject base,
+  const void * text,
+  Size textLength,
+  long refCon) ;
+extern OSErr
+SRRemoveLanguageObject(
+  SRLanguageObject base,
+  SRLanguageObject toRemove) ;
+extern OSErr
+SRCountItems(
+  SRSpeechObject container,
+  long * count) ;
+extern OSErr
+SRGetIndexedItem(
+  SRSpeechObject container,
+  SRSpeechObject * item,
+  long index) ;
+extern OSErr
+SRSetIndexedItem(
+  SRSpeechObject container,
+  SRSpeechObject item,
+  long index) ;
+extern OSErr
+SRRemoveIndexedItem(
+  SRSpeechObject container,
+  long index) ;
+extern OSErr
+SRDrawText(
+  SRRecognizer recognizer,
+  const void * dispText,
+  Size dispLength) ;
+extern OSErr
+SRDrawRecognizedText(
+  SRRecognizer recognizer,
+  const void * dispText,
+  Size dispLength) ;
+extern OSErr
+SRSpeakText(
+  SRRecognizer recognizer,
+  const void * speakText,
+  Size speakLength) ;
+extern OSErr
+SRSpeakAndDrawText(
+  SRRecognizer recognizer,
+  const void * text,
+  Size textLength) ;
+extern OSErr
+SRStopSpeech(SRRecognizer recognizer) ;
+extern Boolean
+SRSpeechBusy(SRRecognizer recognizer) ;
+extern OSErr
+SRProcessBegin(
+  SRRecognizer recognizer,
+  Boolean failed) ;
+extern OSErr
+SRProcessEnd(
+  SRRecognizer recognizer,
+  Boolean failed) ;
+
+
+
+
+
+
+
+}
+
+
+
+extern "C" {
+extern OSStatus
+KCAddAppleSharePassword(
+  AFPServerSignature * serverSignature,
+  StringPtr serverAddress,
+  StringPtr serverName,
+  StringPtr volumeName,
+  StringPtr accountName,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+KCAddInternetPassword(
+  StringPtr serverName,
+  StringPtr securityDomain,
+  StringPtr accountName,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+KCAddInternetPasswordWithPath(
+  StringPtr serverName,
+  StringPtr securityDomain,
+  StringPtr accountName,
+  StringPtr path,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+KCAddGenericPassword(
+  StringPtr serviceName,
+  StringPtr accountName,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+KCAddItem(KCItemRef item) ;
+extern OSStatus
+KCUnlock(
+  KCRef keychain,
+  StringPtr password) ;
+extern OSStatus
+KCCreateKeychain(
+  StringPtr password,
+  KCRef * keychain) ;
+extern OSStatus
+KCChangeSettings(KCRef keychain) ;
+extern OSStatus
+kcunlock(
+  KCRef keychain,
+  const char * password) ;
+extern OSStatus
+kccreatekeychain(
+  const char * password,
+  KCRef * keychain) ;
+extern OSStatus
+kcaddapplesharepassword(
+  AFPServerSignature * serverSignature,
+  const char * serverAddress,
+  const char * serverName,
+  const char * volumeName,
+  const char * accountName,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+kcaddinternetpassword(
+  const char * serverName,
+  const char * securityDomain,
+  const char * accountName,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+kcaddinternetpasswordwithpath(
+  const char * serverName,
+  const char * securityDomain,
+  const char * accountName,
+  const char * path,
+  UInt16 port,
+  OSType protocol,
+  OSType authType,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+extern OSStatus
+kcaddgenericpassword(
+  const char * serviceName,
+  const char * accountName,
+  UInt32 passwordLength,
+  const void * passwordData,
+  KCItemRef * item) ;
+}
+
+
+
+extern "C" {
+
+
+
+
+typedef struct OpaqueURLReference* URLReference;
+typedef UInt32 URLOpenFlags;
+enum {
+  kURLReplaceExistingFlag = 1 << 0,
+  kURLBinHexFileFlag = 1 << 1,
+  kURLExpandFileFlag = 1 << 2,
+  kURLDisplayProgressFlag = 1 << 3,
+  kURLDisplayAuthFlag = 1 << 4,
+  kURLUploadFlag = 1 << 5,
+  kURLIsDirectoryHintFlag = 1 << 6,
+  kURLDoNotTryAnonymousFlag = 1 << 7,
+  kURLDirectoryListingFlag = 1 << 8,
+  kURLExpandAndVerifyFlag = 1 << 9,
+  kURLNoAutoRedirectFlag = 1 << 10,
+  kURLDebinhexOnlyFlag = 1 << 11,
+  kURLDoNotDeleteOnErrorFlag = 1 << 12,
+
+
+  kURLResumeDownloadFlag = 1 << 13,
+
+
+  kURLReservedFlag = (unsigned long)(1 << 31)
+};
+
+typedef UInt32 URLState;
+enum {
+  kURLNullState = 0,
+  kURLInitiatingState = 1,
+  kURLLookingUpHostState = 2,
+  kURLConnectingState = 3,
+  kURLResourceFoundState = 4,
+  kURLDownloadingState = 5,
+  kURLDataAvailableState = 0x10 + kURLDownloadingState,
+  kURLTransactionCompleteState = 6,
+  kURLErrorOccurredState = 7,
+  kURLAbortingState = 8,
+  kURLCompletedState = 9,
+  kURLUploadingState = 10
+};
+
+typedef UInt32 URLEvent;
+enum {
+  kURLInitiatedEvent = kURLInitiatingState,
+  kURLResourceFoundEvent = kURLResourceFoundState,
+  kURLDownloadingEvent = kURLDownloadingState,
+  kURLAbortInitiatedEvent = kURLAbortingState,
+  kURLCompletedEvent = kURLCompletedState,
+  kURLErrorOccurredEvent = kURLErrorOccurredState,
+  kURLDataAvailableEvent = kURLDataAvailableState,
+  kURLTransactionCompleteEvent = kURLTransactionCompleteState,
+  kURLUploadingEvent = kURLUploadingState,
+  kURLSystemEvent = 29,
+  kURLPercentEvent = 30,
+  kURLPeriodicEvent = 31,
+  kURLPropertyChangedEvent = 32
+};
+
+typedef unsigned long URLEventMask;
+enum {
+  kURLInitiatedEventMask = 1 << (kURLInitiatedEvent - 1),
+  kURLResourceFoundEventMask = 1 << (kURLResourceFoundEvent - 1),
+  kURLDownloadingMask = 1 << (kURLDownloadingEvent - 1),
+  kURLUploadingMask = 1 << (kURLUploadingEvent - 1),
+  kURLAbortInitiatedMask = 1 << (kURLAbortInitiatedEvent - 1),
+  kURLCompletedEventMask = 1 << (kURLCompletedEvent - 1),
+  kURLErrorOccurredEventMask = 1 << (kURLErrorOccurredEvent - 1),
+  kURLDataAvailableEventMask = 1 << (kURLDataAvailableEvent - 1),
+  kURLTransactionCompleteEventMask = 1 << (kURLTransactionCompleteEvent - 1),
+  kURLSystemEventMask = 1 << (kURLSystemEvent - 1),
+  kURLPercentEventMask = 1 << (kURLPercentEvent - 1),
+  kURLPeriodicEventMask = 1 << (kURLPeriodicEvent - 1),
+  kURLPropertyChangedEventMask = 1 << (kURLPropertyChangedEvent - 1),
+  kURLAllBufferEventsMask = kURLDataAvailableEventMask + kURLTransactionCompleteEventMask,
+  kURLAllNonBufferEventsMask = kURLInitiatedEventMask + kURLDownloadingMask + kURLUploadingMask + kURLAbortInitiatedMask + kURLCompletedEventMask + kURLErrorOccurredEventMask + kURLPercentEventMask + kURLPeriodicEventMask + kURLPropertyChangedEventMask,
+  kURLAllEventsMask = (long)0xFFFFFFFF
+};
+
+
+struct URLCallbackInfo {
+  UInt32 version;
+  URLReference urlRef;
+  const char * property;
+  UInt32 currentSize;
+  EventRecord * systemEvent;
+};
+typedef struct URLCallbackInfo URLCallbackInfo;
+
+
+enum {
+  kUserNameAndPasswordFlag = 0x00000001
+};
+extern OSStatus
+URLGetURLAccessVersion(UInt32 * returnVers) ;
+    inline Boolean URLAccessAvailable() { return true; }
+
+
+
+
+
+typedef OSStatus ( * URLNotifyProcPtr)(void *userContext, URLEvent event, URLCallbackInfo *callbackInfo);
+typedef OSStatus ( * URLSystemEventProcPtr)(void *userContext, EventRecord *event);
+typedef URLNotifyProcPtr URLNotifyUPP;
+typedef URLSystemEventProcPtr URLSystemEventUPP;
+extern URLNotifyUPP
+NewURLNotifyUPP(URLNotifyProcPtr userRoutine) ;
+extern URLSystemEventUPP
+NewURLSystemEventUPP(URLSystemEventProcPtr userRoutine) ;
+extern void
+DisposeURLNotifyUPP(URLNotifyUPP userUPP) ;
+extern void
+DisposeURLSystemEventUPP(URLSystemEventUPP userUPP) ;
+extern OSStatus
+InvokeURLNotifyUPP(
+  void * userContext,
+  URLEvent event,
+  URLCallbackInfo * callbackInfo,
+  URLNotifyUPP userUPP) ;
+extern OSStatus
+InvokeURLSystemEventUPP(
+  void * userContext,
+  EventRecord * event,
+  URLSystemEventUPP userUPP) ;
+extern OSStatus
+URLSimpleDownload(
+  const char * url,
+  FSSpec * destination,
+  Handle destinationHandle,
+  URLOpenFlags openFlags,
+  URLSystemEventUPP eventProc,
+  void * userContext) ;
+extern OSStatus
+URLDownload(
+  URLReference urlRef,
+  FSSpec * destination,
+  Handle destinationHandle,
+  URLOpenFlags openFlags,
+  URLSystemEventUPP eventProc,
+  void * userContext) ;
+extern OSStatus
+URLSimpleUpload(
+  const char * url,
+  const FSSpec * source,
+  URLOpenFlags openFlags,
+  URLSystemEventUPP eventProc,
+  void * userContext) ;
+extern OSStatus
+URLUpload(
+  URLReference urlRef,
+  const FSSpec * source,
+  URLOpenFlags openFlags,
+  URLSystemEventUPP eventProc,
+  void * userContext) ;
+extern OSStatus
+URLNewReference(
+  const char * url,
+  URLReference * urlRef) ;
+extern OSStatus
+URLDisposeReference(URLReference urlRef) ;
+extern OSStatus
+URLOpen(
+  URLReference urlRef,
+  FSSpec * fileSpec,
+  URLOpenFlags openFlags,
+  URLNotifyUPP notifyProc,
+  URLEventMask eventRegister,
+  void * userContext) ;
+extern OSStatus
+URLAbort(URLReference urlRef) ;
+extern OSStatus
+URLGetDataAvailable(
+  URLReference urlRef,
+  Size * dataSize) ;
+extern OSStatus
+URLGetBuffer(
+  URLReference urlRef,
+  void ** buffer,
+  Size * bufferSize) ;
+extern OSStatus
+URLReleaseBuffer(
+  URLReference urlRef,
+  void * buffer) ;
+extern OSStatus
+URLGetProperty(
+  URLReference urlRef,
+  const char * property,
+  void * propertyBuffer,
+  Size bufferSize) ;
+extern OSStatus
+URLGetPropertySize(
+  URLReference urlRef,
+  const char * property,
+  Size * propertySize) ;
+extern OSStatus
+URLSetProperty(
+  URLReference urlRef,
+  const char * property,
+  void * propertyBuffer,
+  Size bufferSize) ;
+extern OSStatus
+URLGetCurrentState(
+  URLReference urlRef,
+  URLState * state) ;
+extern OSStatus
+URLGetError(
+  URLReference urlRef,
+  OSStatus * urlError) ;
+extern OSStatus
+URLIdle(void) ;
+extern OSStatus
+URLGetFileInfo(
+  StringPtr fName,
+  OSType * fType,
+  OSType * fCreator) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+enum {
+  kAHInternalErr = -10790,
+  kAHInternetConfigPrefErr = -10791
+};
+
+
+typedef SInt16 AHTOCType;
+enum {
+  kAHTOCTypeUser = 0,
+  kAHTOCTypeDeveloper = 1
+};
+extern OSStatus
+AHSearch(
+  CFStringRef bookname,
+  CFStringRef query) ;
+extern OSStatus
+AHGotoMainTOC(AHTOCType toctype) ;
+extern OSStatus
+AHGotoPage(
+  CFStringRef bookname,
+  CFStringRef path,
+  CFStringRef anchor) ;
+extern OSStatus
+AHLookupAnchor(
+  CFStringRef bookname,
+  CFStringRef anchor) ;
+extern OSStatus
+AHRegisterHelpBook(const FSRef * appBundleRef) ;
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+
+typedef struct OpaqueICAObject* ICAObject;
+typedef struct OpaqueICAProperty* ICAProperty;
+typedef struct OpaqueICAConnectionID* ICAConnectionID;
+typedef struct OpaqueICAEventDataCookie* ICAEventDataCookie;
+typedef struct OpaqueICAScannerSessionID* ICAScannerSessionID;
+
+
+
+
+enum {
+  kICACommunicationErr = -9900,
+  kICADeviceNotFoundErr = -9901,
+  kICADeviceNotOpenErr = -9902,
+  kICAFileCorruptedErr = -9903,
+  kICAIOPendingErr = -9904,
+  kICAInvalidObjectErr = -9905,
+  kICAInvalidPropertyErr = -9906,
+  kICAIndexOutOfRangeErr = -9907,
+  kICAPropertyTypeNotFoundErr = -9908
+};
+
+
+enum {
+  kICADevice = 'icdv',
+  kICADeviceCamera = 'cmra',
+  kICADeviceScanner = 'scan',
+  kICADeviceMFP = 'mfp ',
+  kICAList = 'objl',
+  kICADirectory = 'dire',
+  kICAFile = 'file',
+  kICAFileImage = 'imag',
+  kICAFileMovie = 'moov',
+  kICAFileAudio = 'audo',
+  kICAFileFirmware = 'firm',
+  kICAFileOther = 'othe'
+};
+
+
+enum {
+  kICAProperty = 'prop',
+
+
+
+  kICAPropertyImageWidth = '0100',
+  kICAPropertyImageHeight = '0101',
+  kICAPropertyImageBitDepth = '0102',
+  kICAPropertyImageDPI = '011A',
+  kICAPropertyImageExposureTime = '829A',
+  kICAPropertyImageFNumber = '829D',
+  kICAPropertyImageDateOriginal = '9003',
+  kICAPropertyImageDateDigitized = '9004',
+  kICAPropertyImageShutterSpeed = '9201',
+  kICAPropertyImageAperture = '9202',
+  kICAPropertyImageFlash = '9209',
+  kICAPropertyColorSpace = 'A001',
+  kICAPropertyImageFilename = 'ifil',
+  kICAPropertyImageSize = 'isiz',
+  kICAPropertyImageData = 'idat',
+  kICAPropertyImageThumbnail = 'thum',
+  kICAPropertyColorSyncProfile = 'prof'
+};
+
+
+enum {
+  kICAMessageConnect = 'open',
+  kICAMessageDisconnect = 'clos',
+  kICAMessageReset = 'rese',
+  kICAMessageCheckDevice = 'chkd'
+};
+
+
+
+enum {
+  kICATypeUInt16 = 'ui16',
+  kICATypeUInt32 = 'ui32',
+  kICATypeUInt64 = 'ui64',
+  kICATypeSInt16 = 'si16',
+  kICATypeSInt32 = 'si32',
+  kICATypeSInt64 = 'si64',
+  kICATypeFixed = 'sing',
+  kICATypeBoolean = 'bool',
+  kICATypeString = 'TEXT',
+  kICATypeData = 'data',
+  kICATypeThumbnail = 'thum'
+};
+
+
+
+enum {
+  kICAFlagReadWriteAccess = 1L << 0,
+  kICAFlagReadAccess = 1L << 1
+};
+
+
+
+
+enum {
+  kICAEventCancelTransaction = 'ecnt',
+  kICAEventObjectAdded = 'eoba',
+  kICAEventObjectRemoved = 'eobr',
+  kICAEventStoreAdded = 'esta',
+  kICAEventStoreRemoved = 'estr',
+  kICAEventDeviceAdded = 'edea',
+  kICAEventDeviceRemoved = 'eder',
+  kICAEventDevicePropChanged = 'edpc',
+  kICAEventObjectInfoChanged = 'eoic',
+  kICAEventDeviceInfoChanged = 'edic',
+  kICAEventRequestObjectTransfer = 'erot',
+  kICAEventStoreFull = 'estf',
+  kICAEventDeviceReset = 'edvr',
+  kICAEventStorageInfoChanged = 'esic',
+  kICAEventCaptureComplete = 'ecpc',
+  kICAEventUnreportedStatus = 'eurs'
+};
+
+
+
+enum {
+  kICAStartAtBeginning = 0,
+  kICAEntireLength = -1
+};
+
+
+enum {
+  kDeleteAfterDownload = 0x00000001,
+  kCreateCustomIcon = 0x00000002,
+  kAddMetaDataToFinderComment = 0x00000004,
+  kAdjustCreationDate = 0x00000008,
+  kSetFileTypeAndCreator = 0x00000010,
+  kEmbedColorSyncProfile = 0x00000020,
+  kRotateImage = 0x00000040
+};
+
+
+enum {
+  kExtendedNotificationPB = 'extd',
+  kMessageGetEventData = 'mged',
+  kEventClassPTPStandard = 'PTPs',
+  kEventClassPTPVendor = 'PTPv'
+};
+
+
+
+
+struct ICAObjectInfo {
+  OSType objectType;
+  OSType objectSubtype;
+};
+typedef struct ICAObjectInfo ICAObjectInfo;
+
+
+struct ICAPropertyInfo {
+  OSType propertyType;
+  OSType dataType;
+  UInt32 dataSize;
+  UInt32 dataFlags;
+};
+typedef struct ICAPropertyInfo ICAPropertyInfo;
+
+
+struct ICAMessage {
+  OSType messageType;
+  UInt32 startByte;
+  void * dataPtr;
+  UInt32 dataSize;
+  OSType dataType;
+};
+typedef struct ICAMessage ICAMessage;
+
+
+struct ICAThumbnail {
+  UInt32 width;
+  UInt32 height;
+  UInt32 dataSize;
+  UInt8 data[1];
+};
+typedef struct ICAThumbnail ICAThumbnail;
+enum {
+  kICAPBVersion = 0x00010000
+};
+typedef struct ICAHeader ICAHeader;
+typedef void ( * ICACompletion)(ICAHeader * pb);
+
+
+
+
+
+struct ICAHeader {
+  OSErr err;
+  UInt32 refcon;
+};
+
+
+
+
+
+
+struct ICAGetChildCountPB {
+  ICAHeader header;
+  ICAObject object;
+  UInt32 count;
+};
+typedef struct ICAGetChildCountPB ICAGetChildCountPB;
+
+
+struct ICAGetNthChildPB {
+  ICAHeader header;
+  ICAObject parentObject;
+  UInt32 index;
+  ICAObject childObject;
+  ICAObjectInfo childInfo;
+};
+typedef struct ICAGetNthChildPB ICAGetNthChildPB;
+
+
+struct ICAGetObjectInfoPB {
+  ICAHeader header;
+  ICAObject object;
+  ICAObjectInfo objectInfo;
+};
+typedef struct ICAGetObjectInfoPB ICAGetObjectInfoPB;
+
+
+struct ICAGetParentOfObjectPB {
+  ICAHeader header;
+  ICAObject object;
+  ICAObject parentObject;
+  ICAObjectInfo parentInfo;
+};
+typedef struct ICAGetParentOfObjectPB ICAGetParentOfObjectPB;
+
+
+struct ICAGetRootOfObjectPB {
+  ICAHeader header;
+  ICAObject object;
+  ICAObject rootObject;
+  ICAObjectInfo rootInfo;
+};
+typedef struct ICAGetRootOfObjectPB ICAGetRootOfObjectPB;
+
+
+struct ICAGetObjectRefConPB {
+  ICAHeader header;
+  ICAObject object;
+  UInt32 objectRefCon;
+};
+typedef struct ICAGetObjectRefConPB ICAGetObjectRefConPB;
+
+
+struct ICASetObjectRefConPB {
+  ICAHeader header;
+  ICAObject object;
+  UInt32 objectRefCon;
+};
+typedef struct ICASetObjectRefConPB ICASetObjectRefConPB;
+
+
+
+
+
+struct ICAGetPropertyCountPB {
+  ICAHeader header;
+  ICAObject object;
+  UInt32 count;
+};
+typedef struct ICAGetPropertyCountPB ICAGetPropertyCountPB;
+
+
+struct ICAGetNthPropertyPB {
+  ICAHeader header;
+  ICAObject object;
+  UInt32 index;
+  ICAProperty property;
+  ICAPropertyInfo propertyInfo;
+};
+typedef struct ICAGetNthPropertyPB ICAGetNthPropertyPB;
+
+
+struct ICAGetPropertyByTypePB {
+  ICAHeader header;
+  ICAObject object;
+  OSType propertyType;
+  ICAProperty property;
+  ICAPropertyInfo propertyInfo;
+};
+typedef struct ICAGetPropertyByTypePB ICAGetPropertyByTypePB;
+
+
+struct ICAGetPropertyInfoPB {
+  ICAHeader header;
+  ICAProperty property;
+  ICAPropertyInfo propertyInfo;
+};
+typedef struct ICAGetPropertyInfoPB ICAGetPropertyInfoPB;
+
+
+struct ICAGetPropertyDataPB {
+  ICAHeader header;
+  ICAProperty property;
+  UInt32 startByte;
+  UInt32 requestedSize;
+  void * dataPtr;
+  UInt32 actualSize;
+  OSType dataType;
+};
+typedef struct ICAGetPropertyDataPB ICAGetPropertyDataPB;
+
+
+struct ICASetPropertyDataPB {
+  ICAHeader header;
+  ICAProperty property;
+  UInt32 startByte;
+  void * dataPtr;
+  UInt32 dataSize;
+  OSType dataType;
+};
+typedef struct ICASetPropertyDataPB ICASetPropertyDataPB;
+
+
+struct ICAGetParentOfPropertyPB {
+  ICAHeader header;
+  ICAProperty property;
+  ICAObject parentObject;
+  ICAObjectInfo parentInfo;
+};
+typedef struct ICAGetParentOfPropertyPB ICAGetParentOfPropertyPB;
+
+
+struct ICAGetRootOfPropertyPB {
+  ICAHeader header;
+  ICAProperty property;
+  ICAObject rootObject;
+  ICAObjectInfo rootInfo;
+};
+typedef struct ICAGetRootOfPropertyPB ICAGetRootOfPropertyPB;
+
+
+struct ICAGetPropertyRefConPB {
+  ICAHeader header;
+  ICAProperty property;
+  UInt32 propertyRefCon;
+};
+typedef struct ICAGetPropertyRefConPB ICAGetPropertyRefConPB;
+
+
+struct ICASetPropertyRefConPB {
+  ICAHeader header;
+  ICAProperty property;
+  UInt32 propertyRefCon;
+};
+typedef struct ICASetPropertyRefConPB ICASetPropertyRefConPB;
+
+
+
+
+
+struct ICAGetDeviceListPB {
+  ICAHeader header;
+  ICAObject object;
+};
+typedef struct ICAGetDeviceListPB ICAGetDeviceListPB;
+
+
+struct ICAObjectSendMessagePB {
+  ICAHeader header;
+  ICAObject object;
+  ICAMessage message;
+  UInt32 result;
+};
+typedef struct ICAObjectSendMessagePB ICAObjectSendMessagePB;
+
+
+struct ICARegisterEventNotificationPB {
+  ICAHeader header;
+  ICAObject object;
+  OSType notifyType;
+  ICACompletion notifyProc;
+};
+typedef struct ICARegisterEventNotificationPB ICARegisterEventNotificationPB;
+
+
+struct ICAExtendedRegisterEventNotificationPB {
+  ICAHeader header;
+  ICAObject object;
+  OSType extd;
+  ICACompletion notifyProc;
+
+  UInt32 rawEventType;
+  OSType eventType;
+  OSType eventClass;
+  UInt32 eventDataSize;
+  ICAEventDataCookie eventDataCookie;
+  ICAObject deviceObject;
+};
+typedef struct ICAExtendedRegisterEventNotificationPB ICAExtendedRegisterEventNotificationPB;
+
+
+struct ICADownloadFilePB {
+  ICAHeader header;
+  ICAObject object;
+  FSRef * dirFSRef;
+  UInt32 flags;
+  OSType fileType;
+  OSType fileCreator;
+  Fixed rotationAngle;
+  FSRef * fileFSRef;
+};
+typedef struct ICADownloadFilePB ICADownloadFilePB;
+
+
+struct ICACopyObjectPropertyDictionaryPB {
+  ICAHeader header;
+  ICAObject object;
+  CFDictionaryRef * theDict;
+};
+typedef struct ICACopyObjectPropertyDictionaryPB ICACopyObjectPropertyDictionaryPB;
+extern OSErr
+ICAGetChildCount(
+  ICAGetChildCountPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetNthChild(
+  ICAGetNthChildPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetObjectInfo(
+  ICAGetObjectInfoPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetParentOfObject(
+  ICAGetParentOfObjectPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetRootOfObject(
+  ICAGetRootOfObjectPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetObjectRefCon(
+  ICAGetObjectRefConPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICASetObjectRefCon(
+  ICASetObjectRefConPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetPropertyCount(
+  ICAGetPropertyCountPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetNthProperty(
+  ICAGetNthPropertyPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetPropertyByType(
+  ICAGetPropertyByTypePB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetPropertyInfo(
+  ICAGetPropertyInfoPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetPropertyData(
+  ICAGetPropertyDataPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICASetPropertyData(
+  ICASetPropertyDataPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetParentOfProperty(
+  ICAGetParentOfPropertyPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetRootOfProperty(
+  ICAGetRootOfPropertyPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetPropertyRefCon(
+  ICAGetPropertyRefConPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICASetPropertyRefCon(
+  ICASetPropertyRefConPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAGetDeviceList(
+  ICAGetDeviceListPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAObjectSendMessage(
+  ICAObjectSendMessagePB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICARegisterEventNotification(
+  ICARegisterEventNotificationPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICADownloadFile(
+  ICADownloadFilePB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICACopyObjectPropertyDictionary(
+  ICACopyObjectPropertyDictionaryPB * pb,
+  ICACompletion completion) ;
+
+
+
+
+
+
+struct ICAScannerOpenSessionPB {
+  ICAHeader header;
+  ICAObject object;
+  ICAScannerSessionID sessionID;
+};
+typedef struct ICAScannerOpenSessionPB ICAScannerOpenSessionPB;
+
+
+struct ICAScannerCloseSessionPB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+};
+typedef struct ICAScannerCloseSessionPB ICAScannerCloseSessionPB;
+
+
+struct ICAScannerInitializePB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+};
+typedef struct ICAScannerInitializePB ICAScannerInitializePB;
+
+
+struct ICAScannerGetParametersPB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+  CFMutableDictionaryRef theDict;
+};
+typedef struct ICAScannerGetParametersPB ICAScannerGetParametersPB;
+
+
+struct ICAScannerSetParametersPB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+  CFMutableDictionaryRef theDict;
+};
+typedef struct ICAScannerSetParametersPB ICAScannerSetParametersPB;
+
+
+struct ICAScannerStatusPB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+  UInt32 status;
+};
+typedef struct ICAScannerStatusPB ICAScannerStatusPB;
+
+
+struct ICAScannerStartPB {
+  ICAHeader header;
+  ICAScannerSessionID sessionID;
+};
+typedef struct ICAScannerStartPB ICAScannerStartPB;
+extern OSErr
+ICAScannerOpenSession(
+  ICAScannerOpenSessionPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerCloseSession(
+  ICAScannerCloseSessionPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerInitialize(
+  ICAScannerInitializePB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerGetParameters(
+  ICAScannerGetParametersPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerSetParameters(
+  ICAScannerSetParametersPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerStatus(
+  ICAScannerStatusPB * pb,
+  ICACompletion completion) ;
+extern OSErr
+ICAScannerStart(
+  ICAScannerStartPB * pb,
+  ICACompletion completion) ;
+
+
+
+
+
+}
+
+
+
+extern "C" {
+
+
+typedef struct ICDHeader ICDHeader;
+typedef void ( * ICDCompletion)(ICDHeader * pb);
+
+
+
+struct ICDHeader {
+  OSErr err;
+  UInt32 refcon;
+};
+
+
+
+
+struct ICD_NewObjectPB {
+  ICDHeader header;
+
+  ICAObject parentObject;
+  ICAObjectInfo objectInfo;
+
+  ICAObject object;
+};
+typedef struct ICD_NewObjectPB ICD_NewObjectPB;
+struct ICD_DisposeObjectPB {
+  ICDHeader header;
+
+  ICAObject object;
+};
+typedef struct ICD_DisposeObjectPB ICD_DisposeObjectPB;
+
+
+
+struct ICD_NewPropertyPB {
+  ICDHeader header;
+
+  ICAObject object;
+  ICAPropertyInfo propertyInfo;
+
+  ICAProperty property;
+};
+typedef struct ICD_NewPropertyPB ICD_NewPropertyPB;
+struct ICD_DisposePropertyPB {
+  ICDHeader header;
+
+  ICAProperty property;
+};
+typedef struct ICD_DisposePropertyPB ICD_DisposePropertyPB;
+extern OSErr
+ICDNewObject(
+  ICD_NewObjectPB * pb,
+  ICDCompletion completion) ;
+extern OSErr
+ICDDisposeObject(
+  ICD_DisposeObjectPB * pb,
+  ICDCompletion completion) ;
+extern OSErr
+ICDNewProperty(
+  ICD_NewPropertyPB * pb,
+  ICDCompletion completion) ;
+extern OSErr
+ICDDisposeProperty(
+  ICD_DisposePropertyPB * pb,
+  ICDCompletion completion) ;
+
+
+
+
+
+
+
+
+
+}
+
+
+
+enum {
+
+
+
+  kICAPropertyCameraBatteryLevel = '5001',
+  kICAPropertyCameraFunctionalMode = '5002',
+  kICAPropertyCameraImageSize = '5003',
+  kICAPropertyCameraCompressionSetting = '5004',
+  kICAPropertyCameraWhiteBalance = '5005',
+  kICAPropertyCameraRGBGain = '5006',
+  kICAPropertyCameraFNumber = '5007',
+  kICAPropertyCameraFocalLength = '5008',
+  kICAPropertyCameraFocusDistance = '5009',
+  kICAPropertyCameraFocusMode = '500A',
+  kICAPropertyCameraExposureMeteringMode = '500B',
+  kICAPropertyCameraFlashMode = '500C',
+  kICAPropertyCameraExposureTime = '500D',
+  kICAPropertyCameraExposureProgramMode = '500E',
+  kICAPropertyCameraExposureIndex = '500F',
+  kICAPropertyCameraExposureBiasCompensation = '5010',
+  kICAPropertyCameraDateTime = '5011',
+  kICAPropertyCameraCaptureDelay = '5012',
+  kICAPropertyCameraStillCaptureMode = '5013',
+  kICAPropertyCameraContrast = '5014',
+  kICAPropertyCameraSharpness = '5015',
+  kICAPropertyCameraDigitalZoom = '5016',
+  kICAPropertyCameraEffectMode = '5017',
+  kICAPropertyCameraBurstNumber = '5018',
+  kICAPropertyCameraBurstInterval = '5019',
+  kICAPropertyCameraTimelapseNumber = '501A',
+  kICAPropertyCameraTimelapseInterval = '501B',
+  kICAPropertyCameraFocusMeteringMode = '501C'
+};
+
+enum {
+
+  kICAPropertyCameraStorageType = 'stor',
+  kICAPropertyCameraFilesystemType = 'fsys',
+  kICAPropertyCameraAccessCapability = 'acap',
+  kICAPropertyCameraMaxCapacity = 'maxc',
+  kICAPropertyCameraFreeSpaceInBytes = 'fres',
+  kICAPropertyCameraFreeSpaceInImages = 'frei',
+  kICAPropertyCameraStorageDescription = 'stod',
+  kICAPropertyCameraVolumeLabel = 'voll'
+};
+
+enum {
+
+  kICAPropertyCameraIcon = 'icon',
+  kICAPropertyCameraSupportedMessages = 'msgs'
+};
+
+enum {
+
+  kICAStorageFixedROM = 0x0001,
+  kICAStorageRemovableROM = 0x0002,
+  kICAStorageFixedRAM = 0x0003,
+  kICAStorageRemovableRAM = 0x0004
+};
+
+enum {
+
+  kICAFileystemGenericFlat = 0x0001,
+  kICAFileystemGenericHierarchical = 0x0002,
+  kICAFileystemDCF = 0x0003
+};
+
+enum {
+
+  kICAAccessReadWrite = 0x0000,
+  kICAAccessReadOnly = 0x0001,
+  kICAAccessReadOnlyWithObjectDeletion = 0x0002
+};
+
+enum {
+
+  kICAMessageCameraCaptureNewImage = 'ccni',
+  kICAMessageCameraDeleteOne = 'del1',
+  kICAMessageCameraDeleteAll = 'dela',
+  kICAMessageCameraSyncClock = 'sclk',
+  kICAMessageCameraUploadData = 'load'
+};
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+enum {
+
+
+
+        kSCStatusOK = 0,
+        kSCStatusFailed = 1001,
+        kSCStatusInvalidArgument = 1002,
+        kSCStatusAccessError = 1003,
+
+
+
+        kSCStatusNoKey = 1004,
+        kSCStatusKeyExists = 1005,
+        kSCStatusLocked = 1006,
+        kSCStatusNeedLock = 1007,
+
+
+
+        kSCStatusNoStoreSession = 2001,
+        kSCStatusNoStoreServer = 2002,
+        kSCStatusNotifierActive = 2003,
+
+
+
+        kSCStatusNoPrefsSession = 3001,
+        kSCStatusPrefsBusy = 3002,
+        kSCStatusNoConfigFile = 3003,
+        kSCStatusNoLink = 3004,
+        kSCStatusStale = 3005,
+        kSCStatusMaxLink = 3006,
+
+
+
+        kSCStatusReachabilityUnknown = 4001,
+};
+
+
+
+extern "C" {
+void closelog (void);
+void openlog (const char *, int, int);
+int setlogmask (int);
+void syslog (int, const char *, ...);
+void vsyslog (int, const char *, __builtin_va_list);
+}
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+typedef const struct __SCDynamicStore * SCDynamicStoreRef;
+
+
+
+
+typedef struct {
+        CFIndex version;
+        void * info;
+        const void *(*retain)(const void *info);
+        void (*release)(const void *info);
+        CFStringRef (*copyDescription)(const void *info);
+} SCDynamicStoreContext;
+typedef void (*SCDynamicStoreCallBack) (
+                                        SCDynamicStoreRef store,
+                                        CFArrayRef changedKeys,
+                                        void *info
+                                        );
+
+
+extern "C" {
+
+
+
+
+
+CFTypeID
+SCDynamicStoreGetTypeID (void);
+SCDynamicStoreRef
+SCDynamicStoreCreate (
+                                        CFAllocatorRef allocator,
+                                        CFStringRef name,
+                                        SCDynamicStoreCallBack callout,
+                                        SCDynamicStoreContext *context
+                                        );
+CFRunLoopSourceRef
+SCDynamicStoreCreateRunLoopSource (
+                                        CFAllocatorRef allocator,
+                                        SCDynamicStoreRef store,
+                                        CFIndex order
+                                        );
+CFArrayRef
+SCDynamicStoreCopyKeyList (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef pattern
+                                        );
+Boolean
+SCDynamicStoreAddValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key,
+                                        CFPropertyListRef value
+                                        );
+Boolean
+SCDynamicStoreAddTemporaryValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key,
+                                        CFPropertyListRef value
+                                        );
+CFPropertyListRef
+SCDynamicStoreCopyValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key
+                                        );
+CFDictionaryRef
+SCDynamicStoreCopyMultiple (
+                                        SCDynamicStoreRef store,
+                                        CFArrayRef keys,
+                                        CFArrayRef patterns
+                                        );
+Boolean
+SCDynamicStoreSetValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key,
+                                        CFPropertyListRef value
+                                        );
+Boolean
+SCDynamicStoreSetMultiple (
+                                        SCDynamicStoreRef store,
+                                        CFDictionaryRef keysToSet,
+                                        CFArrayRef keysToRemove,
+                                        CFArrayRef keysToNotify
+                                        );
+Boolean
+SCDynamicStoreRemoveValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key
+                                        );
+Boolean
+SCDynamicStoreNotifyValue (
+                                        SCDynamicStoreRef store,
+                                        CFStringRef key
+                                        );
+Boolean
+SCDynamicStoreSetNotificationKeys (
+                                        SCDynamicStoreRef store,
+                                        CFArrayRef keys,
+                                        CFArrayRef patterns
+                                        );
+CFArrayRef
+SCDynamicStoreCopyNotifiedKeys (
+                                        SCDynamicStoreRef store
+                                        );
+
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+
+
+
+
+
+
+
+extern "C" {
+CFStringRef
+SCDynamicStoreKeyCreate (
+                                                CFAllocatorRef allocator,
+                                                CFStringRef fmt,
+                                                ...
+                                                );
+
+
+
+
+CFStringRef
+SCDynamicStoreKeyCreateNetworkGlobalEntity (
+                                                CFAllocatorRef allocator,
+                                                CFStringRef domain,
+                                                CFStringRef entity
+                                                );
+
+
+
+
+CFStringRef
+SCDynamicStoreKeyCreateNetworkInterface (
+                                                CFAllocatorRef allocator,
+                                                CFStringRef domain
+                                                );
+
+
+
+
+CFStringRef
+SCDynamicStoreKeyCreateNetworkInterfaceEntity (
+                                                CFAllocatorRef allocator,
+                                                CFStringRef domain,
+                                                CFStringRef ifname,
+                                                CFStringRef entity
+                                                );
+
+
+
+
+CFStringRef
+SCDynamicStoreKeyCreateNetworkServiceEntity (
+                                                CFAllocatorRef allocator,
+                                                CFStringRef domain,
+                                                CFStringRef serviceID,
+                                                CFStringRef entity
+                                                );
+CFStringRef
+SCDynamicStoreKeyCreateComputerName (
+                                                CFAllocatorRef allocator
+                                                );
+CFStringRef
+SCDynamicStoreKeyCreateConsoleUser (
+                                                CFAllocatorRef allocator
+                                                );
+CFStringRef
+SCDynamicStoreKeyCreateHostNames (
+                                                CFAllocatorRef allocator
+                                                );
+CFStringRef
+SCDynamicStoreKeyCreateLocation (
+                                                CFAllocatorRef allocator
+                                                );
+CFStringRef
+SCDynamicStoreKeyCreateProxies (
+                                                CFAllocatorRef allocator
+                                                );
+
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+extern "C" {
+CFStringRef
+SCDynamicStoreCopyComputerName (
+                                        SCDynamicStoreRef store,
+                                        CFStringEncoding *nameEncoding
+                                        );
+CFStringRef
+SCDynamicStoreCopyConsoleUser (
+                                        SCDynamicStoreRef session,
+                                        uid_t *uid,
+                                        gid_t *gid
+                                        );
+CFStringRef
+SCDynamicStoreCopyLocalHostName (
+                                        SCDynamicStoreRef store
+                                        );
+CFStringRef
+SCDynamicStoreCopyLocation (
+                                        SCDynamicStoreRef store
+                                        );
+CFDictionaryRef
+SCDynamicStoreCopyProxies (
+                                        SCDynamicStoreRef store
+                                        );
+
+}
+
+
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+typedef const struct __SCPreferences * SCPreferencesRef;
+
+
+extern "C" {
+
+
+
+
+
+CFTypeID
+SCPreferencesGetTypeID (void);
+SCPreferencesRef
+SCPreferencesCreate (
+                                CFAllocatorRef allocator,
+                                CFStringRef name,
+                                CFStringRef prefsID
+                                );
+Boolean
+SCPreferencesLock (
+                                SCPreferencesRef session,
+                                Boolean wait
+                                );
+Boolean
+SCPreferencesCommitChanges (
+                                SCPreferencesRef session
+                                );
+Boolean
+SCPreferencesApplyChanges (
+                                SCPreferencesRef session
+                                );
+Boolean
+SCPreferencesUnlock (
+                                SCPreferencesRef session
+                                );
+CFDataRef
+SCPreferencesGetSignature (
+                                SCPreferencesRef session
+                                );
+CFArrayRef
+SCPreferencesCopyKeyList (
+                                SCPreferencesRef session
+                                );
+CFPropertyListRef
+SCPreferencesGetValue (
+                                SCPreferencesRef session,
+                                CFStringRef key
+                                );
+Boolean
+SCPreferencesAddValue (
+                                SCPreferencesRef session,
+                                CFStringRef key,
+                                CFPropertyListRef value
+                                );
+Boolean
+SCPreferencesSetValue (
+                                SCPreferencesRef session,
+                                CFStringRef key,
+                                CFPropertyListRef value
+                                );
+Boolean
+SCPreferencesRemoveValue (
+                                SCPreferencesRef session,
+                                CFStringRef key
+                                );
+
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+extern "C" {
+CFStringRef
+SCPreferencesPathCreateUniqueChild (
+                                        SCPreferencesRef session,
+                                        CFStringRef prefix
+                                        );
+CFDictionaryRef
+SCPreferencesPathGetValue (
+                                        SCPreferencesRef session,
+                                        CFStringRef path
+                                        );
+CFStringRef
+SCPreferencesPathGetLink (
+                                        SCPreferencesRef session,
+                                        CFStringRef path
+                                        );
+Boolean
+SCPreferencesPathSetValue (
+                                        SCPreferencesRef session,
+                                        CFStringRef path,
+                                        CFDictionaryRef value
+                                        );
+Boolean
+SCPreferencesPathSetLink (
+                                        SCPreferencesRef session,
+                                        CFStringRef path,
+                                        CFStringRef link
+                                        );
+Boolean
+SCPreferencesPathRemoveValue (
+                                        SCPreferencesRef session,
+                                        CFStringRef path
+                                        );
+
+}
+
+
+
+
+typedef u_char sa_family_t;
+struct linger {
+        int l_onoff;
+        int l_linger;
+};
+struct sockaddr {
+        u_char sa_len;
+        u_char sa_family;
+        char sa_data[14];
+};
+
+
+
+
+
+
+struct sockproto {
+        u_short sp_family;
+        u_short sp_protocol;
+};
+struct sockaddr_storage {
+        u_char ss_len;
+        sa_family_t ss_family;
+        char __ss_pad1[((sizeof(int64_t)) - sizeof(u_char) - sizeof(sa_family_t))];
+        int64_t __ss_align;
+        char __ss_pad2[(128 - sizeof(u_char) - sizeof(sa_family_t) - ((sizeof(int64_t)) - sizeof(u_char) - sizeof(sa_family_t)) - (sizeof(int64_t)))];
+};
+struct msghdr {
+        caddr_t msg_name;
+        u_int msg_namelen;
+        struct iovec *msg_iov;
+        u_int msg_iovlen;
+        caddr_t msg_control;
+        u_int msg_controllen;
+        int msg_flags;
+};
+struct cmsghdr {
+        u_int cmsg_len;
+        int cmsg_level;
+        int cmsg_type;
+
+};
+struct osockaddr {
+        u_short sa_family;
+        char sa_data[14];
+};
+
+
+
+
+struct omsghdr {
+        caddr_t msg_name;
+        int msg_namelen;
+        struct iovec *msg_iov;
+        int msg_iovlen;
+        caddr_t msg_accrights;
+        int msg_accrightslen;
+};
+extern "C" {
+int accept (int, struct sockaddr *, int *);
+int bind (int, const struct sockaddr *, int);
+int connect (int, const struct sockaddr *, int);
+int getpeername (int, struct sockaddr *, int *);
+int getsockname (int, struct sockaddr *, int *);
+int getsockopt (int, int, int, void *, int *);
+int listen (int, int);
+ssize_t recv (int, void *, size_t, int);
+ssize_t recvfrom (int, void *, size_t, int, struct sockaddr *, int *);
+ssize_t recvmsg (int, struct msghdr *, int);
+ssize_t send (int, const void *, size_t, int);
+ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, int);
+
+ssize_t sendmsg (int, const struct msghdr *, int);
+
+
+
+int setsockopt (int, int, int, const void *, int);
+int shutdown (int, int);
+int socket (int, int, int);
+int socketpair (int, int, int, int *);
+
+void pfctlinput (int, struct sockaddr *);
+}
+
+
+extern double acos (double);
+extern double asin (double);
+extern double atan (double);
+extern double atan2 (double, double);
+extern double ceil (double);
+extern double cos (double);
+extern double cosh (double);
+extern double exp (double);
+extern double fabs (double);
+extern double floor (double);
+extern double fmod (double, double);
+extern double frexp (double, int *);
+extern double ldexp (double, int);
+extern double log10 (double);
+extern double log (double);
+extern double modf (double, double *);
+extern double pow (double, double);
+extern double sin (double);
+extern double sinh (double);
+extern double sqrt (double);
+extern double tan (double);
+extern double tanh (double);
+
+
+typedef enum {
+        kSCNetworkFlagsTransientConnection = 1<<0,
+        kSCNetworkFlagsReachable = 1<<1,
+        kSCNetworkFlagsConnectionRequired = 1<<2,
+        kSCNetworkFlagsConnectionAutomatic = 1<<3,
+        kSCNetworkFlagsInterventionRequired = 1<<4,
+} SCNetworkConnectionFlags;
+
+
+extern "C" {
+Boolean
+SCNetworkCheckReachabilityByAddress (
+                                        const struct sockaddr *address,
+                                        const int addrlen,
+                                        SCNetworkConnectionFlags *flags
+                                        );
+Boolean
+SCNetworkCheckReachabilityByName (
+                                        const char *nodename,
+                                        SCNetworkConnectionFlags *flags
+                                        );
+
+}
+
+extern "C" {
+
+
+
+
+
+
+int SCError ();
+const char * SCErrorString (int status);
+
+}
+
+
+
+extern "C" {
+typedef GDHandle AGLDevice;
+
+
+
+
+typedef CGrafPtr AGLDrawable;
+
+
+
+
+typedef struct __AGLRendererInfoRec *AGLRendererInfo;
+typedef struct __AGLPixelFormatRec *AGLPixelFormat;
+typedef struct __AGLContextRec *AGLContext;
+extern AGLPixelFormat aglChoosePixelFormat(const AGLDevice *gdevs, GLint ndev, const GLint *attribs);
+extern void aglDestroyPixelFormat(AGLPixelFormat pix);
+extern AGLPixelFormat aglNextPixelFormat(AGLPixelFormat pix);
+extern GLboolean aglDescribePixelFormat(AGLPixelFormat pix, GLint attrib, GLint *value);
+extern AGLDevice *aglDevicesOfPixelFormat(AGLPixelFormat pix, GLint *ndevs);
+
+
+
+
+extern AGLRendererInfo aglQueryRendererInfo(const AGLDevice *gdevs, GLint ndev);
+extern void aglDestroyRendererInfo(AGLRendererInfo rend);
+extern AGLRendererInfo aglNextRendererInfo(AGLRendererInfo rend);
+extern GLboolean aglDescribeRenderer(AGLRendererInfo rend, GLint prop, GLint *value);
+
+
+
+
+extern AGLContext aglCreateContext(AGLPixelFormat pix, AGLContext share);
+extern GLboolean aglDestroyContext(AGLContext ctx);
+extern GLboolean aglCopyContext(AGLContext src, AGLContext dst, GLuint mask);
+extern GLboolean aglUpdateContext(AGLContext ctx);
+
+
+
+
+extern GLboolean aglSetCurrentContext(AGLContext ctx);
+extern AGLContext aglGetCurrentContext(void);
+
+
+
+
+extern GLboolean aglSetDrawable(AGLContext ctx, AGLDrawable draw);
+extern GLboolean aglSetOffScreen(AGLContext ctx, GLsizei width, GLsizei height, GLsizei rowbytes, GLvoid *baseaddr);
+extern GLboolean aglSetFullScreen(AGLContext ctx, GLsizei width, GLsizei height, GLsizei freq, GLint device);
+extern AGLDrawable aglGetDrawable(AGLContext ctx);
+
+
+
+
+extern GLboolean aglSetVirtualScreen(AGLContext ctx, GLint screen);
+extern GLint aglGetVirtualScreen(AGLContext ctx);
+
+
+
+
+extern void aglGetVersion(GLint *major, GLint *minor);
+
+
+
+
+extern GLboolean aglConfigure(GLenum pname, GLuint param);
+
+
+
+
+extern void aglSwapBuffers(AGLContext ctx);
+
+
+
+
+extern GLboolean aglEnable(AGLContext ctx, GLenum pname);
+extern GLboolean aglDisable(AGLContext ctx, GLenum pname);
+extern GLboolean aglIsEnabled(AGLContext ctx, GLenum pname);
+extern GLboolean aglSetInteger(AGLContext ctx, GLenum pname, const GLint *params);
+extern GLboolean aglGetInteger(AGLContext ctx, GLenum pname, GLint *params);
+
+
+
+
+extern GLboolean aglUseFont(AGLContext ctx, GLint fontID, Style face, GLint size, GLint first, GLint count, GLint base);
+
+
+
+
+extern GLenum aglGetError(void);
+extern const GLubyte *aglErrorString(GLenum code);
+
+
+
+
+extern void aglResetLibrary(void);
+
+
+
+
+extern void aglSurfaceTexture (AGLContext context, GLenum target, GLenum internalformat, AGLContext surfacecontext);
+
+
+}
+
+
+
+// we have to include any #defines from Apple's headers that we need here
+#define InstallWindowEventHandler( t, h, n, l, u, r ) \
+       InstallEventHandler( GetWindowEventTarget( t ), (h), (n), (l), (u), (r) )
+#define InstallControlEventHandler( t, h, n, l, u, r ) \
+        InstallEventHandler( GetControlEventTarget( t ), (h), (n), (l), (u), (r) )
+#define InstallMenuEventHandler( t, h, n, l, u, r ) \
+      InstallEventHandler( GetMenuEventTarget( t ), (h), (n), (l), (u), (r) )
+
+#define AGL_VERSION_2_0  1
+#define AGL_NONE                   0
+#define AGL_ALL_RENDERERS          1  /* choose from all available renderers          */
+#define AGL_BUFFER_SIZE            2  /* depth of the index buffer                    */
+#define AGL_LEVEL                  3  /* level in plane stacking                      */
+#define AGL_RGBA                   4  /* choose an RGBA format                        */
+#define AGL_DOUBLEBUFFER           5  /* double buffering supported                   */
+#define AGL_STEREO                 6  /* stereo buffering supported                   */
+#define AGL_AUX_BUFFERS            7  /* number of aux buffers                        */
+#define AGL_RED_SIZE               8  /* number of red component bits                 */
+#define AGL_GREEN_SIZE             9  /* number of green component bits               */
+#define AGL_BLUE_SIZE             10  /* number of blue component bits                */
+#define AGL_ALPHA_SIZE            11  /* number of alpha component bits               */
+#define AGL_DEPTH_SIZE            12  /* number of depth bits                         */
+#define AGL_STENCIL_SIZE          13  /* number of stencil bits                       */
+#define AGL_ACCUM_RED_SIZE        14  /* number of red accum bits                     */
+#define AGL_ACCUM_GREEN_SIZE      15  /* number of green accum bits                   */
+#define AGL_ACCUM_BLUE_SIZE       16  /* number of blue accum bits                    */
+#define AGL_ACCUM_ALPHA_SIZE      17  /* number of alpha accum bits                   */
+#define AGL_PIXEL_SIZE            50  /* frame buffer bits per pixel                  */
+#define AGL_MINIMUM_POLICY        51  /* never choose smaller buffers than requested  */
+#define AGL_MAXIMUM_POLICY        52  /* choose largest buffers of type requested     */
+#define AGL_OFFSCREEN             53  /* choose an off-screen capable renderer        */
+#define AGL_FULLSCREEN            54  /* choose a full-screen capable renderer        */
+#define AGL_SAMPLE_BUFFERS_ARB    55  /* number of multi sample buffers               */
+#define AGL_SAMPLES_ARB                  56  /* number of samples per multi sample buffer    */
+#define AGL_AUX_DEPTH_STENCIL    57  /* independent depth and/or stencil buffers for the aux buffer */
+#define AGL_RENDERER_ID           70  /* request renderer by ID                       */
+#define AGL_SINGLE_RENDERER       71  /* choose a single renderer for all screens     */
+#define AGL_NO_RECOVERY           72  /* disable all failure recovery systems         */
+#define AGL_ACCELERATED           73  /* choose a hardware accelerated renderer       */
+#define AGL_CLOSEST_POLICY        74  /* choose the closest color buffer to request   */
+#define AGL_ROBUST                75  /* renderer does not need failure recovery      */
+#define AGL_BACKING_STORE         76  /* back buffer contents are valid after swap    */
+#define AGL_MP_SAFE               78  /* renderer is multi-processor safe             */
+#define AGL_WINDOW                80  /* can be used to render to an onscreen window  */
+#define AGL_MULTISCREEN           81  /* single window can span multiple screens      */
+#define AGL_VIRTUAL_SCREEN        82  /* virtual screen number                        */
+#define AGL_COMPLIANT             83  /* renderer is opengl compliant                 */
+/* #define AGL_OFFSCREEN          53 */
+/* #define AGL_FULLSCREEN         54 */
+/* #define AGL_RENDERER_ID        70 */
+/* #define AGL_ACCELERATED        73 */
+/* #define AGL_ROBUST             75 */
+/* #define AGL_BACKING_STORE      76 */
+/* #define AGL_MP_SAFE            78 */
+/* #define AGL_WINDOW             80 */
+/* #define AGL_MULTISCREEN        81 */
+/* #define AGL_COMPLIANT          83 */
+#define AGL_BUFFER_MODES         100
+#define AGL_MIN_LEVEL            101
+#define AGL_MAX_LEVEL            102
+#define AGL_COLOR_MODES          103
+#define AGL_ACCUM_MODES          104
+#define AGL_DEPTH_MODES          105
+#define AGL_STENCIL_MODES        106
+#define AGL_MAX_AUX_BUFFERS      107
+#define AGL_VIDEO_MEMORY         120
+#define AGL_TEXTURE_MEMORY       121
+#define AGL_SWAP_RECT           200  /* Enable or set the swap rectangle              */
+#define AGL_BUFFER_RECT          202  /* Enable or set the buffer rectangle            */
+#define AGL_SWAP_LIMIT           203  /* Enable or disable the swap async limit        */
+#define AGL_COLORMAP_TRACKING    210  /* Enable or disable colormap tracking           */
+#define AGL_COLORMAP_ENTRY       212  /* Set a colormap entry to {index, r, g, b}      */
+#define AGL_RASTERIZATION        220  /* Enable or disable all rasterization           */
+#define AGL_SWAP_INTERVAL        222  /* 0 -> Don't sync, n -> Sync every n retrace    */
+#define AGL_STATE_VALIDATION     230  /* Validate state for multi-screen functionality */
+#define AGL_BUFFER_NAME          231  /* Set the buffer name. Allows for multi ctx to share a buffer */
+#define AGL_ORDER_CONTEXT_TO_FRONT  232  /* Order the current context in front of all the other contexts. */
+#define AGL_CONTEXT_SURFACE_ID   233  /* aglGetInteger only - returns the ID of the drawable surface for the context */
+#define AGL_CONTEXT_DISPLAY_ID   234  /* aglGetInteger only - returns the display ID(s) of all displays touched by the context, up to a maximum of 32 displays */
+#define AGL_SURFACE_ORDER        235  /* Position of OpenGL surface relative to window: 1 -> Above window, -1 -> Below Window */
+#define AGL_SURFACE_OPACITY      236  /* Opacity of OpenGL surface: 1 -> Surface is opaque (default), 0 -> non-opaque */
+#define AGL_CLIP_REGION          254  /* Enable or set the drawable clipping region */
+#define AGL_FS_CAPTURE_SINGLE    255  /* Enable the capture of only a single display for aglFullScreen, normally disabled */
+#define AGL_FORMAT_CACHE_SIZE    501  /* Set the size of the pixel format cache        */
+#define AGL_CLEAR_FORMAT_CACHE   502  /* Reset the pixel format cache                  */
+#define AGL_RETAIN_RENDERERS     503  /* Whether to retain loaded renderers in memory  */
+#define AGL_MONOSCOPIC_BIT       0x00000001
+#define AGL_STEREOSCOPIC_BIT     0x00000002
+#define AGL_SINGLEBUFFER_BIT     0x00000004
+#define AGL_DOUBLEBUFFER_BIT     0x00000008
+#define AGL_0_BIT                0x00000001
+#define AGL_1_BIT                0x00000002
+#define AGL_2_BIT                0x00000004
+#define AGL_3_BIT                0x00000008
+#define AGL_4_BIT                0x00000010
+#define AGL_5_BIT                0x00000020
+#define AGL_6_BIT                0x00000040
+#define AGL_8_BIT                0x00000080
+#define AGL_10_BIT               0x00000100
+#define AGL_12_BIT               0x00000200
+#define AGL_16_BIT               0x00000400
+#define AGL_24_BIT               0x00000800
+#define AGL_32_BIT               0x00001000
+#define AGL_48_BIT               0x00002000
+#define AGL_64_BIT               0x00004000
+#define AGL_96_BIT               0x00008000
+#define AGL_128_BIT              0x00010000
+#define AGL_RGB8_BIT             0x00000001  /* 8 rgb bit/pixel,     RGB=7:0, inverse colormap         */
+#define AGL_RGB8_A8_BIT          0x00000002  /* 8-8 argb bit/pixel,  A=7:0, RGB=7:0, inverse colormap  */
+#define AGL_BGR233_BIT           0x00000004  /* 8 rgb bit/pixel,     B=7:6, G=5:3, R=2:0               */
+#define AGL_BGR233_A8_BIT        0x00000008  /* 8-8 argb bit/pixel,  A=7:0, B=7:6, G=5:3, R=2:0        */
+#define AGL_RGB332_BIT           0x00000010  /* 8 rgb bit/pixel,     R=7:5, G=4:2, B=1:0               */
+#define AGL_RGB332_A8_BIT        0x00000020  /* 8-8 argb bit/pixel,  A=7:0, R=7:5, G=4:2, B=1:0        */
+#define AGL_RGB444_BIT           0x00000040  /* 16 rgb bit/pixel,    R=11:8, G=7:4, B=3:0              */
+#define AGL_ARGB4444_BIT         0x00000080  /* 16 argb bit/pixel,   A=15:12, R=11:8, G=7:4, B=3:0     */
+#define AGL_RGB444_A8_BIT        0x00000100  /* 8-16 argb bit/pixel, A=7:0, R=11:8, G=7:4, B=3:0       */
+#define AGL_RGB555_BIT           0x00000200  /* 16 rgb bit/pixel,    R=14:10, G=9:5, B=4:0             */
+#define AGL_ARGB1555_BIT         0x00000400  /* 16 argb bit/pixel,   A=15, R=14:10, G=9:5, B=4:0       */
+#define AGL_RGB555_A8_BIT        0x00000800  /* 8-16 argb bit/pixel, A=7:0, R=14:10, G=9:5, B=4:0      */
+#define AGL_RGB565_BIT           0x00001000  /* 16 rgb bit/pixel,    R=15:11, G=10:5, B=4:0            */
+#define AGL_RGB565_A8_BIT        0x00002000  /* 8-16 argb bit/pixel, A=7:0, R=15:11, G=10:5, B=4:0     */
+#define AGL_RGB888_BIT           0x00004000  /* 32 rgb bit/pixel,    R=23:16, G=15:8, B=7:0            */
+#define AGL_ARGB8888_BIT         0x00008000  /* 32 argb bit/pixel,   A=31:24, R=23:16, G=15:8, B=7:0   */
+#define AGL_RGB888_A8_BIT        0x00010000  /* 8-32 argb bit/pixel, A=7:0, R=23:16, G=15:8, B=7:0     */
+#define AGL_RGB101010_BIT        0x00020000  /* 32 rgb bit/pixel,    R=29:20, G=19:10, B=9:0           */
+#define AGL_ARGB2101010_BIT      0x00040000  /* 32 argb bit/pixel,   A=31:30  R=29:20, G=19:10, B=9:0  */
+#define AGL_RGB101010_A8_BIT     0x00080000  /* 8-32 argb bit/pixel, A=7:0  R=29:20, G=19:10, B=9:0    */
+#define AGL_RGB121212_BIT        0x00100000  /* 48 rgb bit/pixel,    R=35:24, G=23:12, B=11:0          */
+#define AGL_ARGB12121212_BIT     0x00200000  /* 48 argb bit/pixel,   A=47:36, R=35:24, G=23:12, B=11:0 */
+#define AGL_RGB161616_BIT        0x00400000  /* 64 rgb bit/pixel,    R=47:32, G=31:16, B=15:0          */
+#define AGL_ARGB16161616_BIT     0x00800000  /* 64 argb bit/pixel,   A=63:48, R=47:32, G=31:16, B=15:0 */
+#define AGL_INDEX8_BIT           0x20000000  /* 8 bit color look up table                              */
+#define AGL_INDEX16_BIT          0x40000000  /* 16 bit color look up table                             */
+#define AGL_NO_ERROR                 0 /* no error                        */
+#define AGL_BAD_ATTRIBUTE        10000 /* invalid pixel format attribute  */
+#define AGL_BAD_PROPERTY         10001 /* invalid renderer property       */
+#define AGL_BAD_PIXELFMT         10002 /* invalid pixel format            */
+#define AGL_BAD_RENDINFO         10003 /* invalid renderer info           */
+#define AGL_BAD_CONTEXT          10004 /* invalid context                 */
+#define AGL_BAD_DRAWABLE         10005 /* invalid drawable                */
+#define AGL_BAD_GDEV             10006 /* invalid graphics device         */
+#define AGL_BAD_STATE            10007 /* invalid context state           */
+#define AGL_BAD_VALUE            10008 /* invalid numerical value         */
+#define AGL_BAD_MATCH            10009 /* invalid share context           */
+#define AGL_BAD_ENUM             10010 /* invalid enumerant               */
+#define AGL_BAD_OFFSCREEN        10011 /* invalid offscreen drawable      */
+#define AGL_BAD_FULLSCREEN       10012 /* invalid offscreen drawable      */
+#define AGL_BAD_WINDOW           10013 /* invalid window                  */
+#define AGL_BAD_POINTER          10014 /* invalid pointer                 */
+#define AGL_BAD_MODULE           10015 /* invalid code module             */
+#define AGL_BAD_ALLOC            10016 /* memory allocation failure       */
+
+
+#define kSCPropNetOverridePrimary                SCSTR("OverridePrimary")                 /* CFNumber (0 or 1) */
+#define kSCPropNetServiceOrder                   SCSTR("ServiceOrder")                    /* CFArray[CFString] */
+#define kSCPropNetPPPOverridePrimary             SCSTR("PPPOverridePrimary")              /* CFNumber (0 or 1) */
+#define kSCPropNetInterfaces                     SCSTR("Interfaces")                      /* CFArray[CFString] */
+#define kSCPropNetLocalHostName                  SCSTR("LocalHostName")                   /* CFString */
+#define kSCPropNetAirPortAllowNetCreation        SCSTR("AllowNetCreation")                /* CFNumber (0 or 1) */
+#define kSCPropNetAirPortAuthPassword            SCSTR("AuthPassword")                    /* CFData */
+#define kSCPropNetAirPortAuthPasswordEncryption  SCSTR("AuthPasswordEncryption")          /* CFString */
+#define kSCPropNetAirPortJoinMode                SCSTR("JoinMode")                        /* CFString */
+#define kSCPropNetAirPortPowerEnabled            SCSTR("PowerEnabled")                    /* CFNumber (0 or 1) */
+#define kSCPropNetAirPortPreferredNetwork        SCSTR("PreferredNetwork")                /* CFString */
+#define kSCPropNetAirPortSavePasswords           SCSTR("SavePasswords")                   /* CFNumber (0 or 1) */
+/* kSCPropNetAirPortJoinMode values */
+#define kSCPropNetAppleTalkComputerName          SCSTR("ComputerName")                    /* CFString */
+#define kSCPropNetAppleTalkComputerNameEncoding  SCSTR("ComputerNameEncoding")            /* CFNumber */
+#define kSCPropNetAppleTalkConfigMethod          SCSTR("ConfigMethod")                    /* CFString */
+#define kSCPropNetAppleTalkDefaultZone           SCSTR("DefaultZone")                     /* CFString */
+#define kSCPropNetAppleTalkNetworkID             SCSTR("NetworkID")                       /* CFNumber */
+#define kSCPropNetAppleTalkNetworkRange          SCSTR("NetworkRange")                    /* CFArray[CFNumber] */
+#define kSCPropNetAppleTalkNodeID                SCSTR("NodeID")                          /* CFNumber */
+#define kSCPropNetAppleTalkSeedNetworkRange      SCSTR("SeedNetworkRange")                /* CFArray[CFNumber] */
+#define kSCPropNetAppleTalkSeedZones             SCSTR("SeedZones")                       /* CFArray[CFString] */
+/* kSCPropNetAppleTalkConfigMethod values */
+#define kSCPropNetDNSDomainName                  SCSTR("DomainName")                      /* CFString */
+#define kSCPropNetDNSSearchDomains               SCSTR("SearchDomains")                   /* CFArray[CFString] */
+#define kSCPropNetDNSServerAddresses             SCSTR("ServerAddresses")                 /* CFArray[CFString] */
+#define kSCPropNetDNSSortList                    SCSTR("SortList")                        /* CFArray[CFString] */
+#define kSCPropNetInterfaceDeviceName            SCSTR("DeviceName")                      /* CFString */
+#define kSCPropNetInterfaceHardware              SCSTR("Hardware")                        /* CFString */
+#define kSCPropNetInterfaceType                  SCSTR("Type")                            /* CFString */
+#define kSCPropNetInterfaceSubType               SCSTR("SubType")                         /* CFString */
+#define kSCPropNetInterfaceSupportsModemOnHold   SCSTR("SupportsModemOnHold")             /* CFNumber (0 or 1) */
+/* kSCPropNetInterfaceType values */
+/* kSCPropNetServiceSubType values (for PPP) */
+#define kSCPropNetIPv4Addresses                  SCSTR("Addresses")                       /* CFArray[CFString] */
+#define kSCPropNetIPv4ConfigMethod               SCSTR("ConfigMethod")                    /* CFString */
+#define kSCPropNetIPv4DHCPClientID               SCSTR("DHCPClientID")                    /* CFString */
+#define kSCPropNetIPv4Router                     SCSTR("Router")                          /* CFString */
+#define kSCPropNetIPv4SubnetMasks                SCSTR("SubnetMasks")                     /* CFArray[CFString] */
+#define kSCPropNetIPv4DestAddresses              SCSTR("DestAddresses")                   /* CFArray[CFString] */
+#define kSCPropNetIPv4BroadcastAddresses         SCSTR("BroadcastAddresses")              /* CFArray[CFString] */
+/* kSCPropNetIPv4ConfigMethod values */
+#define kSCPropNetIPv6Addresses                  SCSTR("Addresses")                       /* CFArray[CFString] */
+#define kSCPropNetIPv6ConfigMethod               SCSTR("ConfigMethod")                    /* CFString */
+#define kSCPropNetLinkActive                     SCSTR("Active")                          /* CFBoolean */
+#define kSCPropNetLinkDetaching                  SCSTR("Detaching")                       /* CFBoolean */
+#define kSCPropNetModemConnectionScript          SCSTR("ConnectionScript")                /* CFString */
+#define kSCPropNetModemConnectSpeed              SCSTR("ConnectSpeed")                    /* CFNumber */
+#define kSCPropNetModemDataCompression           SCSTR("DataCompression")                 /* CFNumber (0 or 1) */
+#define kSCPropNetModemDialMode                  SCSTR("DialMode")                        /* CFString */
+#define kSCPropNetModemErrorCorrection           SCSTR("ErrorCorrection")                 /* CFNumber (0 or 1) */
+#define kSCPropNetModemHoldCallWaitingAudibleAlert SCSTR("HoldCallWaitingAudibleAlert")     /* CFNumber (0 or 1) */
+#define kSCPropNetModemHoldDisconnectOnAnswer    SCSTR("HoldDisconnectOnAnswer")          /* CFNumber (0 or 1) */
+#define kSCPropNetModemHoldEnabled               SCSTR("HoldEnabled")                     /* CFNumber (0 or 1) */
+#define kSCPropNetModemHoldReminder              SCSTR("HoldReminder")                    /* CFNumber (0 or 1) */
+#define kSCPropNetModemHoldReminderTime          SCSTR("HoldReminderTime")                /* CFNumber */
+#define kSCPropNetModemNote                      SCSTR("Note")                            /* CFString */
+#define kSCPropNetModemPulseDial                 SCSTR("PulseDial")                       /* CFNumber (0 or 1) */
+#define kSCPropNetModemSpeaker                   SCSTR("Speaker")                         /* CFNumber (0 or 1) */
+#define kSCPropNetModemSpeed                     SCSTR("Speed")                           /* CFNumber */
+/* kSCPropNetModemDialMode values */
+#define kSCPropNetNetInfoBindingMethods          SCSTR("BindingMethods")                  /* CFString */
+#define kSCPropNetNetInfoServerAddresses         SCSTR("ServerAddresses")                 /* CFArray[CFString] */
+#define kSCPropNetNetInfoServerTags              SCSTR("ServerTags")                      /* CFArray[CFString] */
+#define kSCPropNetNetInfoBroadcastServerTag      SCSTR("BroadcastServerTag")              /* CFString */
+/* kSCPropNetNetInfoBindingMethods values */
+/* kSCPropNetNetInfoBroadcastServerTag default value */
+#define kSCPropNetPPPConnectTime                 SCSTR("ConnectTime")                     /* CFNumber */
+#define kSCPropNetPPPDeviceLastCause             SCSTR("DeviceLastCause")                 /* CFNumber */
+#define kSCPropNetPPPDialOnDemand                SCSTR("DialOnDemand")                    /* CFNumber (0 or 1) */
+#define kSCPropNetPPPDisconnectOnIdle            SCSTR("DisconnectOnIdle")                /* CFNumber (0 or 1) */
+#define kSCPropNetPPPDisconnectOnIdleTimer       SCSTR("DisconnectOnIdleTimer")           /* CFNumber */
+#define kSCPropNetPPPDisconnectOnLogout          SCSTR("DisconnectOnLogout")              /* CFNumber (0 or 1) */
+#define kSCPropNetPPPDisconnectOnSleep           SCSTR("DisconnectOnSleep")               /* CFNumber (0 or 1) */
+#define kSCPropNetPPPIdleReminderTimer           SCSTR("IdleReminderTimer")               /* CFNumber */
+#define kSCPropNetPPPIdleReminder                SCSTR("IdleReminder")                    /* CFNumber (0 or 1) */
+#define kSCPropNetPPPLastCause                   SCSTR("LastCause")                       /* CFNumber */
+#define kSCPropNetPPPLogfile                     SCSTR("Logfile")                         /* CFString */
+#define kSCPropNetPPPPlugins                     SCSTR("Plugins")                         /* CFArray[CFString] */
+#define kSCPropNetPPPSessionTimer                SCSTR("SessionTimer")                    /* CFNumber */
+#define kSCPropNetPPPStatus                      SCSTR("Status")                          /* CFString */
+#define kSCPropNetPPPUseSessionTimer             SCSTR("UseSessionTimer")                 /* CFNumber (0 or 1) */
+#define kSCPropNetPPPVerboseLogging              SCSTR("VerboseLogging")                  /* CFNumber (0 or 1) */
+#define kSCPropNetPPPAuthName                    SCSTR("AuthName")                        /* CFString */
+#define kSCPropNetPPPAuthPassword                SCSTR("AuthPassword")                    /* CFString */
+#define kSCPropNetPPPAuthPasswordEncryption      SCSTR("AuthPasswordEncryption")          /* CFString */
+#define kSCPropNetPPPAuthProtocol                SCSTR("AuthProtocol")                    /* CFArray[CFString] */
+/* kSCPropNetPPPAuthProtocol values */
+#define kSCPropNetPPPCommAlternateRemoteAddress  SCSTR("CommAlternateRemoteAddress")      /* CFString */
+#define kSCPropNetPPPCommConnectDelay            SCSTR("CommConnectDelay")                /* CFNumber */
+#define kSCPropNetPPPCommDisplayTerminalWindow   SCSTR("CommDisplayTerminalWindow")       /* CFNumber (0 or 1) */
+#define kSCPropNetPPPCommRedialCount             SCSTR("CommRedialCount")                 /* CFNumber */
+#define kSCPropNetPPPCommRedialEnabled           SCSTR("CommRedialEnabled")               /* CFNumber (0 or 1) */
+#define kSCPropNetPPPCommRedialInterval          SCSTR("CommRedialInterval")              /* CFNumber */
+#define kSCPropNetPPPCommRemoteAddress           SCSTR("CommRemoteAddress")               /* CFString */
+#define kSCPropNetPPPCommTerminalScript          SCSTR("CommTerminalScript")              /* CFString */
+#define kSCPropNetPPPCommUseTerminalScript       SCSTR("CommUseTerminalScript")           /* CFNumber (0 or 1) */
+#define kSCPropNetPPPCCPEnabled                  SCSTR("CCPEnabled")                      /* CFNumber (0 or 1) */
+#define kSCPropNetPPPIPCPCompressionVJ           SCSTR("IPCPCompressionVJ")               /* CFNumber (0 or 1) */
+#define kSCPropNetPPPLCPEchoEnabled              SCSTR("LCPEchoEnabled")                  /* CFNumber (0 or 1) */
+#define kSCPropNetPPPLCPEchoFailure              SCSTR("LCPEchoFailure")                  /* CFNumber */
+#define kSCPropNetPPPLCPEchoInterval             SCSTR("LCPEchoInterval")                 /* CFNumber */
+#define kSCPropNetPPPLCPCompressionACField       SCSTR("LCPCompressionACField")           /* CFNumber (0 or 1) */
+#define kSCPropNetPPPLCPCompressionPField        SCSTR("LCPCompressionPField")            /* CFNumber (0 or 1) */
+#define kSCPropNetPPPLCPMRU                      SCSTR("LCPMRU")                          /* CFNumber */
+#define kSCPropNetPPPLCPMTU                      SCSTR("LCPMTU")                          /* CFNumber */
+#define kSCPropNetPPPLCPReceiveACCM              SCSTR("LCPReceiveACCM")                  /* CFNumber */
+#define kSCPropNetPPPLCPTransmitACCM             SCSTR("LCPTransmitACCM")                 /* CFNumber */
+#define kSCPropNetProxiesExceptionsList          SCSTR("ExceptionsList")                  /* CFArray[CFString] */
+#define kSCPropNetProxiesFTPEnable               SCSTR("FTPEnable")                       /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesFTPPassive              SCSTR("FTPPassive")                      /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesFTPPort                 SCSTR("FTPPort")                         /* CFNumber */
+#define kSCPropNetProxiesFTPProxy                SCSTR("FTPProxy")                        /* CFString */
+#define kSCPropNetProxiesGopherEnable            SCSTR("GopherEnable")                    /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesGopherPort              SCSTR("GopherPort")                      /* CFNumber */
+#define kSCPropNetProxiesGopherProxy             SCSTR("GopherProxy")                     /* CFString */
+#define kSCPropNetProxiesHTTPEnable              SCSTR("HTTPEnable")                      /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesHTTPPort                SCSTR("HTTPPort")                        /* CFNumber */
+#define kSCPropNetProxiesHTTPProxy               SCSTR("HTTPProxy")                       /* CFString */
+#define kSCPropNetProxiesHTTPSEnable             SCSTR("HTTPSEnable")                     /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesHTTPSPort               SCSTR("HTTPSPort")                       /* CFNumber */
+#define kSCPropNetProxiesHTTPSProxy              SCSTR("HTTPSProxy")                      /* CFString */
+#define kSCPropNetProxiesRTSPEnable              SCSTR("RTSPEnable")                      /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesRTSPPort                SCSTR("RTSPPort")                        /* CFNumber */
+#define kSCPropNetProxiesRTSPProxy               SCSTR("RTSPProxy")                       /* CFString */
+#define kSCPropNetProxiesSOCKSEnable             SCSTR("SOCKSEnable")                     /* CFNumber (0 or 1) */
+#define kSCPropNetProxiesSOCKSPort               SCSTR("SOCKSPort")                       /* CFNumber */
+#define kSCPropNetProxiesSOCKSProxy              SCSTR("SOCKSProxy")                      /* CFString */
+
+#define CFSTR(cStr)  __CFStringMakeConstantString("" cStr "")
+#define  SCSTR(s) CFSTR(s)
+
+CFDictionaryRef
+SCDynamicStoreCopyProxies               (
+                                        SCDynamicStoreRef       store
+                                        );
+
+